mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
media: qcom: iris: vdec: update find_format to handle 8bit and 10bit formats
The 10bit pixel format can be only used when the decoder identifies the stream as decoding into 10bit pixel format buffers, so update the find_format helper to filter the formats and only allow the proper formats when setting or trying a capture format. Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Tested-by: Wangao Wang <wangao.wang@oss.qualcomm.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
This commit is contained in:
parent
2f2f76d433
commit
20c3ef4c7c
|
|
@ -17,6 +17,7 @@ struct iris_inst;
|
|||
|
||||
#define REGISTER_BIT_DEPTH(luma, chroma) ((luma) << 16 | (chroma))
|
||||
#define BIT_DEPTH_8 REGISTER_BIT_DEPTH(8, 8)
|
||||
#define BIT_DEPTH_10 REGISTER_BIT_DEPTH(10, 10)
|
||||
#define CODED_FRAMES_PROGRESSIVE 0x0
|
||||
#define DEFAULT_MAX_HOST_BUF_COUNT 64
|
||||
#define DEFAULT_MAX_HOST_BURST_BUF_COUNT 256
|
||||
|
|
|
|||
|
|
@ -93,10 +93,23 @@ static bool check_format(struct iris_inst *inst, u32 pixfmt, u32 type)
|
|||
|
||||
for (i = 0; i < size; i++) {
|
||||
if (fmt[i] == pixfmt)
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
if (i == size)
|
||||
return false;
|
||||
|
||||
if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
|
||||
if (iris_fmt_is_8bit(pixfmt) &&
|
||||
inst->fw_caps[BIT_DEPTH].value == BIT_DEPTH_10)
|
||||
return false;
|
||||
|
||||
if (iris_fmt_is_10bit(pixfmt) &&
|
||||
inst->fw_caps[BIT_DEPTH].value != BIT_DEPTH_10)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static u32 find_format_by_index(struct iris_inst *inst, u32 index, u32 type)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user