Merge branch 'kcsan.2021.05.18a' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / include / media / hevc-ctrls.h
index 226fcfa..53c0038 100644 (file)
@@ -19,6 +19,7 @@
 #define V4L2_CID_MPEG_VIDEO_HEVC_SPS           (V4L2_CID_CODEC_BASE + 1008)
 #define V4L2_CID_MPEG_VIDEO_HEVC_PPS           (V4L2_CID_CODEC_BASE + 1009)
 #define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS  (V4L2_CID_CODEC_BASE + 1010)
+#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 1012)
 #define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE   (V4L2_CID_CODEC_BASE + 1015)
 #define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE    (V4L2_CID_CODEC_BASE + 1016)
 
@@ -26,6 +27,7 @@
 #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120
 #define V4L2_CTRL_TYPE_HEVC_PPS 0x0121
 #define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122
+#define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124
 
 enum v4l2_mpeg_video_hevc_decode_mode {
        V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED,
@@ -75,8 +77,7 @@ struct v4l2_ctrl_hevc_sps {
        __u8    num_short_term_ref_pic_sets;
        __u8    num_long_term_ref_pics_sps;
        __u8    chroma_format_idc;
-
-       __u8    padding;
+       __u8    sps_max_sub_layers_minus1;
 
        __u64   flags;
 };
@@ -100,10 +101,14 @@ struct v4l2_ctrl_hevc_sps {
 #define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER       (1ULL << 16)
 #define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT          (1ULL << 17)
 #define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT   (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING                     (1ULL << 20)
 
 struct v4l2_ctrl_hevc_pps {
        /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */
        __u8    num_extra_slice_header_bits;
+       __u8    num_ref_idx_l0_default_active_minus1;
+       __u8    num_ref_idx_l1_default_active_minus1;
        __s8    init_qp_minus26;
        __u8    diff_cu_qp_delta_depth;
        __s8    pps_cb_qp_offset;
@@ -191,18 +196,10 @@ struct v4l2_ctrl_hevc_slice_params {
        __u8    pic_struct;
 
        /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */
-       __u8    num_active_dpb_entries;
        __u8    ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
        __u8    ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
 
-       __u8    num_rps_poc_st_curr_before;
-       __u8    num_rps_poc_st_curr_after;
-       __u8    num_rps_poc_lt_curr;
-
-       __u8    padding;
-
-       /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */
-       struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+       __u8    padding[5];
 
        /* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */
        struct v4l2_hevc_pred_weight_table pred_weight_table;
@@ -210,4 +207,34 @@ struct v4l2_ctrl_hevc_slice_params {
        __u64   flags;
 };
 
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC           0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC            0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR  0x4
+
+struct v4l2_ctrl_hevc_decode_params {
+       __s32   pic_order_cnt_val;
+       __u8    num_active_dpb_entries;
+       struct  v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+       __u8    num_poc_st_curr_before;
+       __u8    num_poc_st_curr_after;
+       __u8    num_poc_lt_curr;
+       __u8    poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+       __u8    poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+       __u8    poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+       __u64   flags;
+};
+
+/*  MPEG-class control IDs specific to the Hantro driver as defined by V4L2 */
+#define V4L2_CID_CODEC_HANTRO_BASE                             (V4L2_CTRL_CLASS_CODEC | 0x1200)
+/*
+ * V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP -
+ * the number of data (in bits) to skip in the
+ * slice segment header.
+ * If non-IDR, the bits to be skipped go from syntax element "pic_output_flag"
+ * to before syntax element "slice_temporal_mvp_enabled_flag".
+ * If IDR, the skipped bits are just "pic_output_flag"
+ * (separate_colour_plane_flag is not supported).
+ */
+#define V4L2_CID_HANTRO_HEVC_SLICE_HEADER_SKIP (V4L2_CID_CODEC_HANTRO_BASE + 0)
+
 #endif