c87ca955ba3bd53f9ad540f93cd2238b4acc2017
[openwrt/staging/rmilecki.git] /
1 From 9a7b20e4a376a2cccb2fb8d3e87eb4358c17d2e8 Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <dave.stevenson@raspberrypi.com>
3 Date: Thu, 15 Apr 2021 11:07:55 +0100
4 Subject: [PATCH] staging/bcm2835-codec: Do not update crop from S_FMT
5 after res change
6
7 During decode, setting the CAPTURE queue format was setting the crop
8 rectangle to the requested height before aligning up the format to
9 cater for simple clients that weren't expecting to deal with cropping
10 and the SELECTION API.
11 This caused problems on some resolution change events if the client
12 didn't also then use the selection API.
13
14 Disable the crop update after a resolution change.
15
16 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
17 ---
18 .../vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 7 +++++++
19 1 file changed, 7 insertions(+)
20
21 --- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
22 +++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
23 @@ -999,6 +999,13 @@ static void handle_fmt_changed(struct bc
24
25 q_data->crop_width = format->es.video.crop.width;
26 q_data->crop_height = format->es.video.crop.height;
27 + /*
28 + * Stop S_FMT updating crop_height should it be unaligned.
29 + * Client can still update the crop region via S_SELECTION should it
30 + * really want to, but the decoder is likely to complain that the
31 + * format then doesn't match.
32 + */
33 + q_data->selection_set = true;
34 q_data->bytesperline = get_bytesperline(format->es.video.width,
35 q_data->fmt);
36