This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: venus: Add a handling of QC08C compressed format
Author:  Stanimir Varbanov <[email protected]>
Date:    Thu Mar 3 15:06:33 2022 +0000

This adds QC08C compressed pixel format in the Venus driver, and
make it possible to discover from v4l2 clients.

Signed-off-by: Stanimir Varbanov <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/platform/qcom/venus/helpers.c |  2 ++
 drivers/media/platform/qcom/venus/vdec.c    | 18 +++++++++++++++---
 2 files changed, 17 insertions(+), 3 deletions(-)

---

diff --git a/drivers/media/platform/qcom/venus/helpers.c 
b/drivers/media/platform/qcom/venus/helpers.c
index b8ceda0aa322..0589066c510b 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -608,6 +608,8 @@ static u32 to_hfi_raw_fmt(u32 v4l2_fmt)
                return HFI_COLOR_FORMAT_NV12;
        case V4L2_PIX_FMT_NV21:
                return HFI_COLOR_FORMAT_NV21;
+       case V4L2_PIX_FMT_QC08C:
+               return HFI_COLOR_FORMAT_NV12_UBWC;
        default:
                break;
        }
diff --git a/drivers/media/platform/qcom/venus/vdec.c 
b/drivers/media/platform/qcom/venus/vdec.c
index 4ac113247ede..b7408e0845a6 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -31,6 +31,10 @@
  */
 static const struct venus_format vdec_formats[] = {
        {
+               .pixfmt = V4L2_PIX_FMT_QC08C,
+               .num_planes = 1,
+               .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
+       }, {
                .pixfmt = V4L2_PIX_FMT_NV12,
                .num_planes = 1,
                .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
@@ -106,6 +110,10 @@ find_format(struct venus_inst *inst, u32 pixfmt, u32 type)
            !venus_helper_check_codec(inst, fmt[i].pixfmt))
                return NULL;
 
+       if (V4L2_TYPE_IS_CAPTURE(type) &&
+           !venus_helper_check_format(inst, fmt[i].pixfmt))
+               return NULL;
+
        return &fmt[i];
 }
 
@@ -124,8 +132,12 @@ find_format_by_index(struct venus_inst *inst, unsigned int 
index, u32 type)
 
                if (fmt[i].type != type)
                        continue;
-               valid = type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE ||
-                       venus_helper_check_codec(inst, fmt[i].pixfmt);
+
+               if (V4L2_TYPE_IS_OUTPUT(type))
+                       valid = venus_helper_check_codec(inst, fmt[i].pixfmt);
+               else if (V4L2_TYPE_IS_CAPTURE(type))
+                       valid = venus_helper_check_format(inst, fmt[i].pixfmt);
+
                if (k == index && valid)
                        break;
                if (valid)
@@ -1527,7 +1539,7 @@ static const struct hfi_inst_ops vdec_hfi_ops = {
 static void vdec_inst_init(struct venus_inst *inst)
 {
        inst->hfi_codec = HFI_VIDEO_CODEC_H264;
-       inst->fmt_out = &vdec_formats[6];
+       inst->fmt_out = &vdec_formats[7];
        inst->fmt_cap = &vdec_formats[0];
        inst->width = frame_width_min(inst);
        inst->height = ALIGN(frame_height_min(inst), 32);

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to