mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +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
2 changed files with 14 additions and 12 deletions
|
@ -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…
Reference in a new issue