mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 18:56:24 +00:00
media: venus: vdec: fix format enumeration
find_format_by_index() stops enumerating formats as soon as the index matches, and returns NULL if venus_helper_check_codec() finds out that the format is not supported. This prevents formats to be properly enumerated if a non-supported format is present, as the enumeration will end with it. Fix this by moving the call to venus_helper_check_codec() into the loop, and keep enumerating when it fails. Fixes: 29f0133ec6 media: venus: use helper function to check supported codecs Signed-off-by: Alexandre Courbot <acourbot@chromium.org> Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
890f27693f
commit
82e071e254
@ -135,20 +135,21 @@ find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
bool valid;
|
||||
|
||||
if (fmt[i].type != type)
|
||||
continue;
|
||||
if (k == index)
|
||||
valid = type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE ||
|
||||
venus_helper_check_codec(inst, fmt[i].pixfmt);
|
||||
if (k == index && valid)
|
||||
break;
|
||||
k++;
|
||||
if (valid)
|
||||
k++;
|
||||
}
|
||||
|
||||
if (i == size)
|
||||
return NULL;
|
||||
|
||||
if (type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE &&
|
||||
!venus_helper_check_codec(inst, fmt[i].pixfmt))
|
||||
return NULL;
|
||||
|
||||
return &fmt[i];
|
||||
}
|
||||
|
||||
|
@ -120,20 +120,21 @@ find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
bool valid;
|
||||
|
||||
if (fmt[i].type != type)
|
||||
continue;
|
||||
if (k == index)
|
||||
valid = type != V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE ||
|
||||
venus_helper_check_codec(inst, fmt[i].pixfmt);
|
||||
if (k == index && valid)
|
||||
break;
|
||||
k++;
|
||||
if (valid)
|
||||
k++;
|
||||
}
|
||||
|
||||
if (i == size)
|
||||
return NULL;
|
||||
|
||||
if (type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
|
||||
!venus_helper_check_codec(inst, fmt[i].pixfmt))
|
||||
return NULL;
|
||||
|
||||
return &fmt[i];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user