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

Subject: media: uapi: mpeg2: Move reference buffer fields
Author:  Ezequiel Garcia <[email protected]>
Date:    Thu Apr 29 16:48:13 2021 +0200

The forward and backwards references are specified per-picture
and not per-slice. Move it to V4L2_CID_MPEG_VIDEO_MPEG2_PICTURE.

Signed-off-by: Ezequiel Garcia <[email protected]>
Tested-by: Jernej Skrabec <[email protected]>
Reviewed-by: Jernej Skrabec <[email protected]>
Tested-by: Daniel Almeida <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 .../userspace-api/media/v4l/ext-ctrls-codec.rst    | 28 +++++++++++-----------
 drivers/staging/media/hantro/hantro_g1_mpeg2_dec.c |  6 ++---
 .../staging/media/hantro/rk3399_vpu_hw_mpeg2_dec.c |  6 ++---
 drivers/staging/media/sunxi/cedrus/cedrus_mpeg2.c  |  4 ++--
 include/media/mpeg2-ctrls.h                        | 16 ++++++-------
 5 files changed, 28 insertions(+), 32 deletions(-)

---

diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst 
b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
index f96a2dcb22cc..1765b2a1129d 100644
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
@@ -1636,20 +1636,6 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
     * - __u32
       - ``data_bit_offset``
       - Offset (in bits) to the video data in the current slice data.
-    * - __u64
-      - ``backward_ref_ts``
-      - Timestamp of the V4L2 capture buffer to use as backward reference, used
-        with B-coded and P-coded frames. The timestamp refers to the
-       ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
-       :c:func:`v4l2_timeval_to_ns()` function to convert the struct
-       :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
-    * - __u64
-      - ``forward_ref_ts``
-      - Timestamp for the V4L2 capture buffer to use as forward reference, used
-        with B-coded frames. The timestamp refers to the ``timestamp`` field in
-       struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
-       function to convert the struct :c:type:`timeval` in struct
-       :c:type:`v4l2_buffer` to a __u64.
     * - __u32
       - ``quantiser_scale_code``
       - Code used to determine the quantization scale to use for the IDCT.
@@ -1742,6 +1728,20 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
     :stub-columns: 0
     :widths:       1 1 2
 
+    * - __u64
+      - ``backward_ref_ts``
+      - Timestamp of the V4L2 capture buffer to use as backward reference, used
+        with B-coded and P-coded frames. The timestamp refers to the
+       ``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
+       :c:func:`v4l2_timeval_to_ns()` function to convert the struct
+       :c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
+    * - __u64
+      - ``forward_ref_ts``
+      - Timestamp for the V4L2 capture buffer to use as forward reference, used
+        with B-coded frames. The timestamp refers to the ``timestamp`` field in
+       struct :c:type:`v4l2_buffer`. Use the :c:func:`v4l2_timeval_to_ns()`
+       function to convert the struct :c:type:`timeval` in struct
+       :c:type:`v4l2_buffer` to a __u64.
     * - __u32
       - ``flags``
       - See :ref:`MPEG-2 Picture Flags <mpeg2_picture_flags>`.
diff --git a/drivers/staging/media/hantro/hantro_g1_mpeg2_dec.c 
b/drivers/staging/media/hantro/hantro_g1_mpeg2_dec.c
index fd61e1fae30e..19c897cbd348 100644
--- a/drivers/staging/media/hantro/hantro_g1_mpeg2_dec.c
+++ b/drivers/staging/media/hantro/hantro_g1_mpeg2_dec.c
@@ -101,12 +101,10 @@ hantro_g1_mpeg2_dec_set_buffers(struct hantro_dev *vpu, 
struct hantro_ctx *ctx,
 
        switch (pic->picture_coding_type) {
        case V4L2_MPEG2_PIC_CODING_TYPE_B:
-               backward_addr = hantro_get_ref(ctx,
-                                              slice_params->backward_ref_ts);
+               backward_addr = hantro_get_ref(ctx, pic->backward_ref_ts);
                fallthrough;
        case V4L2_MPEG2_PIC_CODING_TYPE_P:
-               forward_addr = hantro_get_ref(ctx,
-                                             slice_params->forward_ref_ts);
+               forward_addr = hantro_get_ref(ctx, pic->forward_ref_ts);
        }
 
        /* Source bitstream buffer */
diff --git a/drivers/staging/media/hantro/rk3399_vpu_hw_mpeg2_dec.c 
b/drivers/staging/media/hantro/rk3399_vpu_hw_mpeg2_dec.c
index 5b383906af59..18bd14704ebf 100644
--- a/drivers/staging/media/hantro/rk3399_vpu_hw_mpeg2_dec.c
+++ b/drivers/staging/media/hantro/rk3399_vpu_hw_mpeg2_dec.c
@@ -104,12 +104,10 @@ rk3399_vpu_mpeg2_dec_set_buffers(struct hantro_dev *vpu,
 
        switch (pic->picture_coding_type) {
        case V4L2_MPEG2_PIC_CODING_TYPE_B:
-               backward_addr = hantro_get_ref(ctx,
-                                              slice_params->backward_ref_ts);
+               backward_addr = hantro_get_ref(ctx, pic->backward_ref_ts);
                fallthrough;
        case V4L2_MPEG2_PIC_CODING_TYPE_P:
-               forward_addr = hantro_get_ref(ctx,
-                                             slice_params->forward_ref_ts);
+               forward_addr = hantro_get_ref(ctx, pic->forward_ref_ts);
        }
 
        /* Source bitstream buffer */
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_mpeg2.c 
b/drivers/staging/media/sunxi/cedrus/cedrus_mpeg2.c
index 65a175c6a5c2..16e99792cf42 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_mpeg2.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_mpeg2.c
@@ -128,14 +128,14 @@ static void cedrus_mpeg2_setup(struct cedrus_ctx *ctx, 
struct cedrus_run *run)
 
        vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
 
-       forward_idx = vb2_find_timestamp(vq, slice_params->forward_ref_ts, 0);
+       forward_idx = vb2_find_timestamp(vq, pic->forward_ref_ts, 0);
        fwd_luma_addr = cedrus_dst_buf_addr(ctx, forward_idx, 0);
        fwd_chroma_addr = cedrus_dst_buf_addr(ctx, forward_idx, 1);
 
        cedrus_write(dev, VE_DEC_MPEG_FWD_REF_LUMA_ADDR, fwd_luma_addr);
        cedrus_write(dev, VE_DEC_MPEG_FWD_REF_CHROMA_ADDR, fwd_chroma_addr);
 
-       backward_idx = vb2_find_timestamp(vq, slice_params->backward_ref_ts, 0);
+       backward_idx = vb2_find_timestamp(vq, pic->backward_ref_ts, 0);
        bwd_luma_addr = cedrus_dst_buf_addr(ctx, backward_idx, 0);
        bwd_chroma_addr = cedrus_dst_buf_addr(ctx, backward_idx, 1);
 
diff --git a/include/media/mpeg2-ctrls.h b/include/media/mpeg2-ctrls.h
index b4a6aa16d4c0..922ca2243f44 100644
--- a/include/media/mpeg2-ctrls.h
+++ b/include/media/mpeg2-ctrls.h
@@ -77,6 +77,12 @@ struct v4l2_ctrl_mpeg2_sequence {
  * All the members on this structure match the picture header and picture
  * coding extension syntaxes as specified by the MPEG-2 specification.
  *
+ * @backward_ref_ts: timestamp of the V4L2 capture buffer to use as
+ * reference for backward prediction.
+ * @forward_ref_ts: timestamp of the V4L2 capture buffer to use as
+ * reference for forward prediction. These timestamp refers to the
+ * timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns()
+ * to convert the struct timeval to a __u64.
  * @flags: see V4L2_MPEG2_PIC_FLAG_{}.
  * @f_code[2][2]: see MPEG-2 specification.
  * @picture_coding_type: see MPEG-2 specification.
@@ -85,6 +91,8 @@ struct v4l2_ctrl_mpeg2_sequence {
  * @reserved: padding field. Should be zeroed by applications.
  */
 struct v4l2_ctrl_mpeg2_picture {
+       __u64   backward_ref_ts;
+       __u64   forward_ref_ts;
        __u32   flags;
        __u8    f_code[2][2];
        __u8    picture_coding_type;
@@ -96,12 +104,6 @@ struct v4l2_ctrl_mpeg2_picture {
 /**
  * struct v4l2_ctrl_mpeg2_slice_params - MPEG-2 slice header
  *
- * @backward_ref_ts: timestamp of the V4L2 capture buffer to use as
- * reference for backward prediction.
- * @forward_ref_ts: timestamp of the V4L2 capture buffer to use as
- * reference for forward prediction. These timestamp refers to the
- * timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns()
- * to convert the struct timeval to a __u64.
  * @quantiser_scale_code: quantiser scale integer matching an
  * homonymous syntax element.
  * @reserved: padding field. Should be zeroed by applications.
@@ -109,8 +111,6 @@ struct v4l2_ctrl_mpeg2_picture {
 struct v4l2_ctrl_mpeg2_slice_params {
        __u32   bit_size;
        __u32   data_bit_offset;
-       __u64   backward_ref_ts;
-       __u64   forward_ref_ts;
        __u32   quantiser_scale_code;
        __u32   reserved;
 };

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

Reply via email to