Message ID | 20180319093229.76253-1-acourbot@chromium.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Hi Alex, Thanks! On 03/19/2018 11:32 AM, Alexandre Courbot wrote: > 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> > --- > drivers/media/platform/qcom/venus/vdec.c | 13 +++++++------ > drivers/media/platform/qcom/venus/venc.c | 13 +++++++------ > 2 files changed, 14 insertions(+), 12 deletions(-) Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Hi Hans, Could you take this patch it not too late. On 20.03.2018 15:42, Stanimir Varbanov wrote: > Hi Alex, > > Thanks! > > On 03/19/2018 11:32 AM, Alexandre Courbot wrote: >> 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> >> --- >> drivers/media/platform/qcom/venus/vdec.c | 13 +++++++------ >> drivers/media/platform/qcom/venus/venc.c | 13 +++++++------ >> 2 files changed, 14 insertions(+), 12 deletions(-) > > Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> > regards, Stan -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c index c9e9576bb08a..49bbd1861d3a 100644 --- a/drivers/media/platform/qcom/venus/vdec.c +++ b/drivers/media/platform/qcom/venus/vdec.c @@ -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]; } diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c index e3a10a852cad..6b2ce479584e 100644 --- a/drivers/media/platform/qcom/venus/venc.c +++ b/drivers/media/platform/qcom/venus/venc.c @@ -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]; }
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> --- drivers/media/platform/qcom/venus/vdec.c | 13 +++++++------ drivers/media/platform/qcom/venus/venc.c | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-)