From: Hans Verkuil <hverkuil@xs4all.nl> To: Smitha T Murthy <smitha.t@samsung.com>, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: kyungmin.park@samsung.com, kamil@wypas.org, jtp.park@samsung.com, a.hajda@samsung.com, mchehab@kernel.org, pankaj.dubey@samsung.com, krzk@kernel.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com Subject: Re: [Patch v5 12/12] Documention: v4l: Documentation for HEVC CIDs Date: Thu, 20 Jul 2017 16:50:38 +0200 [thread overview] Message-ID: <44dec947-83e8-d8fe-4da1-425aed3d0fb6@xs4all.nl> (raw) In-Reply-To: <1497849055-26583-13-git-send-email-smitha.t@samsung.com> On 19/06/17 07:10, Smitha T Murthy wrote: > Added V4l2 controls for HEVC encoder > > Signed-off-by: Smitha T Murthy <smitha.t@samsung.com> > --- > Documentation/media/uapi/v4l/extended-controls.rst | 364 +++++++++++++++++++++ > 1 file changed, 364 insertions(+) > > diff --git a/Documentation/media/uapi/v4l/extended-controls.rst b/Documentation/media/uapi/v4l/extended-controls.rst > index abb1057..7767c70 100644 > --- a/Documentation/media/uapi/v4l/extended-controls.rst > +++ b/Documentation/media/uapi/v4l/extended-controls.rst > @@ -1960,6 +1960,370 @@ enum v4l2_vp8_golden_frame_sel - > 1, 2 and 3 corresponding to encoder profiles 0, 1, 2 and 3. > > > +High Efficiency Video Coding (HEVC/H.265) Control Reference > +----------------------------------------------------------- > + > +The HEVC/H.265 controls include controls for encoding parameters of HEVC/H.265 > +video codec. > + > + > +.. _hevc-control-id: > + > +HEVC/H.265 Control IDs > +^^^^^^^^^^^^^^^^^^^^^^ > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (integer)`` > + Minimum quantization parameter for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (integer)`` > + Maximum quantization parameter for HEVC. It's a bit ambiguous. Are these supposed to be read-only parameters? Normally min-max is already implied in the control range, so this is a bit odd. Perhaps it is clear for people who know HEVC, but I'm not quite sure what to make of it. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (integer)`` > + Quantization parameter for an I frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (integer)`` > + Quantization parameter for a P frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (integer)`` > + Quantization parameter for a B frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (boolean)`` > + HIERARCHICAL_QP allows host to specify the quantization parameter values > + for each temporal layer through HIERARCHICAL_QP_LAYER. This is valid only > + if HIERARCHICAL_CODING_LAYER is greater than 1. Setting the control value > + to 1 enables setting of the QP values for the layers. > + > +.. _v4l2-hevc-hier-coding-type: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_hier_coding_type - > + Selects the hierarchical coding type for encoding. Possible values are: > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B`` > + - Use the B frame for hierarchical coding. > + * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P`` > + - Use the P frame for hierarchical coding. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (integer)`` > + Selects the hierarchical coding layer. In normal encoding > + (non-hierarchial coding), it should be zero. Possible values are 0 ~ 6. > + 0 indicates HIERARCHICAL CODING LAYER 0, 1 indicates HIERARCHICAL CODING > + LAYER 1 and so on. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER_QP (integer)`` > + Indicates the hierarchical coding layer quantization parameter. > + For HEVC it can have a value of 0-51. Hence in the control value passed > + the LSB 16 bits will indicate the quantization parameter. The MSB 16 bit > + will pass the layer(0-6) it is meant for. This is ugly. Why not make this an array control? This really is an array of 7 values, right? An alternative is to split this in 7 controls just as you did with V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L?_BR. The way it is now doesn't work either since G_CTRL(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER_QP) would just return the QP for whatever was the last layer you set it for and you can't query it for another layer. > + > +.. _v4l2-hevc-profile: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_PROFILE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_profile - > + Select the desired profile for HEVC encoder. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN`` > + - Main profile. > + * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE`` > + - Main still picture profile. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +.. _v4l2-hevc-level: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LEVEL`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_level - > + Selects the desired level for HEVC encoder. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_1`` > + - Level 1.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_2`` > + - Level 2.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1`` > + - Level 2.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_3`` > + - Level 3.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1`` > + - Level 3.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_4`` > + - Level 4.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1`` > + - Level 4.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5`` > + - Level 5.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1`` > + - Level 5.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2`` > + - Level 5.2 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6`` > + - Level 6.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1`` > + - Level 6.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2`` > + - Level 6.2 > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (integer)`` > + Indicates the number of evenly spaced subintervals, called ticks, within > + one second. This is a 16bit unsigned integer and has a maximum value up to 16bit -> 16 bit > + 0xffff. Is there a HEVC-defined minimum value as well? You mention the max value, but not the min value, so it made me wonder... > + > +.. _v4l2-hevc-tier-flag: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TIER_FLAG`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_tier_flag - > + TIER_FLAG specifies tiers information of the HEVC encoded picture. Tier > + were made to deal with applications that differ in terms of maximum bit > + rate. Setting the flag to 0 selects HEVC tier_flag as Main tier and setting > + this flag to 1 indicates High tier. High tier is for applications requiring > + high bit rates. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_TIER_MAIN`` > + - Main tier. > + * - ``V4L2_MPEG_VIDEO_HEVC_TIER_HIGH`` > + - High tier. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (integer)`` > + Selects HEVC maximum coding unit depth. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF (boolean)`` > + Indicates loop filtering. Control value 1 indicates loop filtering > + is enabled and when set to 0 indicates loop filtering is disabled. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_SLICE_BOUNDARY (boolean)`` > + Selects whether to apply the loop filter across the slice boundary or not. > + If the value is 0, loop filter will not be applied across the slice boundary. > + If the value is 1, loop filter will be applied across the slice boundary. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (integer)`` > + Selects HEVC loop filter beta offset. The valid range is [-6, +6]. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (integer)`` > + Selects HEVC loop filter tc offset. The valid range is [-6, +6]. > + > +.. _v4l2-hevc-refresh-type: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_hier_refresh_type - > + Selects refresh type for HEVC encoder. > + Host has to specify the period into > + HEVC_REFRESH_PERIOD. 'into HEVC_REFRESH_PERIOD' -> with the ``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD`` control > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE`` > + - Use the B frame for hierarchical coding. > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA`` > + - Use CRA (Clean Random Access Unit) picture encoding. > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR`` > + - Use IDR picture encoding. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (integer)`` > + Selects the refresh period for HEVC encoder. > + This specifies the number of I pictures between two CRA/IDR pictures. > + This is valid only if REFRESH_TYPE is not 0. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (boolean)`` > + Indicates HEVC lossless encoding. Setting it to 0 disables lossless > + encoding. Setting it to 1 enables lossless encoding. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (boolean)`` > + Indicates constant intra prediction for HEVC encoder. Specifies the > + constrained intra prediction in which intra largest coding unit (LCU) > + prediction is performed by using residual data and decoded samples of > + neighboring intra LCU only. Setting the value to 1 enables constant intra > + prediction and setting the value to 0 disables constant inta prediction. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (boolean)`` > + Indicates wavefront parallel processing for HEVC encoder. Setting it to 0 > + disables the feature and setting it to 1 enables the wavefront parallel > + processing. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (boolean)`` > + Setting the value to 1 enables combination of P and B frame for HEVC > + encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (boolean)`` > + Indicates temporal identifier for HEVC encoder which is enabled by > + setting the value to 1. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (boolean)`` > + Indicates bi-linear interpolation is conditionally used in the intra > + prediction filtering process in the CVS when set to 1. Indicates bi-linear > + interpolation is not used in the CVS when set to 0. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (integer)`` > + Indicates maximum number of merge candidate motion vectors. > + Values are from zero to four. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (boolean)`` > + Indicates temporal motion vector prediction for HEVC encoder. Setting it to > + 1 enables the prediction. Setting it to 0 disables the prediction. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (boolean)`` > + Specifies if HEVC generates a stream with a size of the length field > + instead of start code pattern. The size of the length field is configurable > + through the V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD control. Setting > + the value to 0 disables encoding without startcode pattern. Setting the > + value to 1 will enables encoding without startcode pattern. > + > +.. _v4l2-hevc-size-of-length-field: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD`` > +(enum) > + > +enum v4l2_mpeg_video_hevc_size_of_length_field - > + Indicates the size of length field. > + This is valid when encoding WITHOUT_STARTCODE_ENABLE is enabled. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_0`` > + - Generate start code pattern (Normal). > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_1`` > + - Generate size of length field instead of start code pattern and length is 1. > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_2`` > + - Generate size of length field instead of start code pattern and length is 2. > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_4`` > + - Generate size of length field instead of start code pattern and length is 4. > + > +.. raw:: latex > + > + \end{adjustbox} > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 0 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 1 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 2 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 3 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 4 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 5 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 6 for HEVC encoder. > + > + > +MFC 10.10 MPEG Controls > +----------------------- > + > +The following MPEG class controls deal with MPEG decoding and encoding > +settings that are specific to the Multi Format Codec 10.10 device present > +in the S5P and Exynos family of SoCs by Samsung. > + > + > +.. _mfc1010-control-id: > + > +MFC 10.10 Control IDs > +^^^^^^^^^^^^^^^^^^^^^ > + > +``V4L2_CID_MPEG_MFC10_VIDEO_HEVC_REF_NUMBER_FOR_PFRAMES (integer)`` > + Selects number of P reference pictures required for HEVC encoder. > + P-Frame can use 1 or 2 frames for reference. > + > +``V4L2_CID_MPEG_MFC10_VIDEO_HEVC_PREPEND_SPSPPS_TO_IDR (integer)`` > + Indicates whether to generate SPS and PPS at every IDR. Setting it to 0 > + disables generating SPS and PPS at every IDR. Setting it to one enables > + generating SPS and PPS at every IDR. > + > + > .. _camera-controls: > > Camera Control Reference > Regards, Hans
WARNING: multiple messages have this Message-ID (diff)
From: hverkuil@xs4all.nl (Hans Verkuil) To: linux-arm-kernel@lists.infradead.org Subject: [Patch v5 12/12] Documention: v4l: Documentation for HEVC CIDs Date: Thu, 20 Jul 2017 16:50:38 +0200 [thread overview] Message-ID: <44dec947-83e8-d8fe-4da1-425aed3d0fb6@xs4all.nl> (raw) In-Reply-To: <1497849055-26583-13-git-send-email-smitha.t@samsung.com> On 19/06/17 07:10, Smitha T Murthy wrote: > Added V4l2 controls for HEVC encoder > > Signed-off-by: Smitha T Murthy <smitha.t@samsung.com> > --- > Documentation/media/uapi/v4l/extended-controls.rst | 364 +++++++++++++++++++++ > 1 file changed, 364 insertions(+) > > diff --git a/Documentation/media/uapi/v4l/extended-controls.rst b/Documentation/media/uapi/v4l/extended-controls.rst > index abb1057..7767c70 100644 > --- a/Documentation/media/uapi/v4l/extended-controls.rst > +++ b/Documentation/media/uapi/v4l/extended-controls.rst > @@ -1960,6 +1960,370 @@ enum v4l2_vp8_golden_frame_sel - > 1, 2 and 3 corresponding to encoder profiles 0, 1, 2 and 3. > > > +High Efficiency Video Coding (HEVC/H.265) Control Reference > +----------------------------------------------------------- > + > +The HEVC/H.265 controls include controls for encoding parameters of HEVC/H.265 > +video codec. > + > + > +.. _hevc-control-id: > + > +HEVC/H.265 Control IDs > +^^^^^^^^^^^^^^^^^^^^^^ > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (integer)`` > + Minimum quantization parameter for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (integer)`` > + Maximum quantization parameter for HEVC. It's a bit ambiguous. Are these supposed to be read-only parameters? Normally min-max is already implied in the control range, so this is a bit odd. Perhaps it is clear for people who know HEVC, but I'm not quite sure what to make of it. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (integer)`` > + Quantization parameter for an I frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (integer)`` > + Quantization parameter for a P frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (integer)`` > + Quantization parameter for a B frame for HEVC. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (boolean)`` > + HIERARCHICAL_QP allows host to specify the quantization parameter values > + for each temporal layer through HIERARCHICAL_QP_LAYER. This is valid only > + if HIERARCHICAL_CODING_LAYER is greater than 1. Setting the control value > + to 1 enables setting of the QP values for the layers. > + > +.. _v4l2-hevc-hier-coding-type: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_hier_coding_type - > + Selects the hierarchical coding type for encoding. Possible values are: > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B`` > + - Use the B frame for hierarchical coding. > + * - ``V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P`` > + - Use the P frame for hierarchical coding. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (integer)`` > + Selects the hierarchical coding layer. In normal encoding > + (non-hierarchial coding), it should be zero. Possible values are 0 ~ 6. > + 0 indicates HIERARCHICAL CODING LAYER 0, 1 indicates HIERARCHICAL CODING > + LAYER 1 and so on. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER_QP (integer)`` > + Indicates the hierarchical coding layer quantization parameter. > + For HEVC it can have a value of 0-51. Hence in the control value passed > + the LSB 16 bits will indicate the quantization parameter. The MSB 16 bit > + will pass the layer(0-6) it is meant for. This is ugly. Why not make this an array control? This really is an array of 7 values, right? An alternative is to split this in 7 controls just as you did with V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L?_BR. The way it is now doesn't work either since G_CTRL(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER_QP) would just return the QP for whatever was the last layer you set it for and you can't query it for another layer. > + > +.. _v4l2-hevc-profile: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_PROFILE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_profile - > + Select the desired profile for HEVC encoder. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN`` > + - Main profile. > + * - ``V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE`` > + - Main still picture profile. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +.. _v4l2-hevc-level: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LEVEL`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_level - > + Selects the desired level for HEVC encoder. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_1`` > + - Level 1.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_2`` > + - Level 2.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1`` > + - Level 2.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_3`` > + - Level 3.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1`` > + - Level 3.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_4`` > + - Level 4.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1`` > + - Level 4.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5`` > + - Level 5.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1`` > + - Level 5.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2`` > + - Level 5.2 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6`` > + - Level 6.0 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1`` > + - Level 6.1 > + * - ``V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2`` > + - Level 6.2 > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (integer)`` > + Indicates the number of evenly spaced subintervals, called ticks, within > + one second. This is a 16bit unsigned integer and has a maximum value up to 16bit -> 16 bit > + 0xffff. Is there a HEVC-defined minimum value as well? You mention the max value, but not the min value, so it made me wonder... > + > +.. _v4l2-hevc-tier-flag: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TIER_FLAG`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_tier_flag - > + TIER_FLAG specifies tiers information of the HEVC encoded picture. Tier > + were made to deal with applications that differ in terms of maximum bit > + rate. Setting the flag to 0 selects HEVC tier_flag as Main tier and setting > + this flag to 1 indicates High tier. High tier is for applications requiring > + high bit rates. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_TIER_MAIN`` > + - Main tier. > + * - ``V4L2_MPEG_VIDEO_HEVC_TIER_HIGH`` > + - High tier. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (integer)`` > + Selects HEVC maximum coding unit depth. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF (boolean)`` > + Indicates loop filtering. Control value 1 indicates loop filtering > + is enabled and when set to 0 indicates loop filtering is disabled. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_SLICE_BOUNDARY (boolean)`` > + Selects whether to apply the loop filter across the slice boundary or not. > + If the value is 0, loop filter will not be applied across the slice boundary. > + If the value is 1, loop filter will be applied across the slice boundary. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (integer)`` > + Selects HEVC loop filter beta offset. The valid range is [-6, +6]. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (integer)`` > + Selects HEVC loop filter tc offset. The valid range is [-6, +6]. > + > +.. _v4l2-hevc-refresh-type: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE`` > + (enum) > + > +enum v4l2_mpeg_video_hevc_hier_refresh_type - > + Selects refresh type for HEVC encoder. > + Host has to specify the period into > + HEVC_REFRESH_PERIOD. 'into HEVC_REFRESH_PERIOD' -> with the ``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD`` control > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE`` > + - Use the B frame for hierarchical coding. > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA`` > + - Use CRA (Clean Random Access Unit) picture encoding. > + * - ``V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR`` > + - Use IDR picture encoding. > + > +.. raw:: latex > + > + \end{adjustbox} > + > + > +``V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (integer)`` > + Selects the refresh period for HEVC encoder. > + This specifies the number of I pictures between two CRA/IDR pictures. > + This is valid only if REFRESH_TYPE is not 0. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (boolean)`` > + Indicates HEVC lossless encoding. Setting it to 0 disables lossless > + encoding. Setting it to 1 enables lossless encoding. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (boolean)`` > + Indicates constant intra prediction for HEVC encoder. Specifies the > + constrained intra prediction in which intra largest coding unit (LCU) > + prediction is performed by using residual data and decoded samples of > + neighboring intra LCU only. Setting the value to 1 enables constant intra > + prediction and setting the value to 0 disables constant inta prediction. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (boolean)`` > + Indicates wavefront parallel processing for HEVC encoder. Setting it to 0 > + disables the feature and setting it to 1 enables the wavefront parallel > + processing. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (boolean)`` > + Setting the value to 1 enables combination of P and B frame for HEVC > + encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (boolean)`` > + Indicates temporal identifier for HEVC encoder which is enabled by > + setting the value to 1. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (boolean)`` > + Indicates bi-linear interpolation is conditionally used in the intra > + prediction filtering process in the CVS when set to 1. Indicates bi-linear > + interpolation is not used in the CVS when set to 0. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (integer)`` > + Indicates maximum number of merge candidate motion vectors. > + Values are from zero to four. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (boolean)`` > + Indicates temporal motion vector prediction for HEVC encoder. Setting it to > + 1 enables the prediction. Setting it to 0 disables the prediction. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (boolean)`` > + Specifies if HEVC generates a stream with a size of the length field > + instead of start code pattern. The size of the length field is configurable > + through the V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD control. Setting > + the value to 0 disables encoding without startcode pattern. Setting the > + value to 1 will enables encoding without startcode pattern. > + > +.. _v4l2-hevc-size-of-length-field: > + > +``V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD`` > +(enum) > + > +enum v4l2_mpeg_video_hevc_size_of_length_field - > + Indicates the size of length field. > + This is valid when encoding WITHOUT_STARTCODE_ENABLE is enabled. > + > +.. raw:: latex > + > + \begin{adjustbox}{width=\columnwidth} > + > +.. tabularcolumns:: |p{11.0cm}|p{10.0cm}| > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_0`` > + - Generate start code pattern (Normal). > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_1`` > + - Generate size of length field instead of start code pattern and length is 1. > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_2`` > + - Generate size of length field instead of start code pattern and length is 2. > + * - ``V4L2_MPEG_VIDEO_HEVC_SIZE_4`` > + - Generate size of length field instead of start code pattern and length is 4. > + > +.. raw:: latex > + > + \end{adjustbox} > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 0 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 1 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 2 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 3 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 4 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 5 for HEVC encoder. > + > +``V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (integer)`` > + Indicates bit rate for hierarchical coding layer 6 for HEVC encoder. > + > + > +MFC 10.10 MPEG Controls > +----------------------- > + > +The following MPEG class controls deal with MPEG decoding and encoding > +settings that are specific to the Multi Format Codec 10.10 device present > +in the S5P and Exynos family of SoCs by Samsung. > + > + > +.. _mfc1010-control-id: > + > +MFC 10.10 Control IDs > +^^^^^^^^^^^^^^^^^^^^^ > + > +``V4L2_CID_MPEG_MFC10_VIDEO_HEVC_REF_NUMBER_FOR_PFRAMES (integer)`` > + Selects number of P reference pictures required for HEVC encoder. > + P-Frame can use 1 or 2 frames for reference. > + > +``V4L2_CID_MPEG_MFC10_VIDEO_HEVC_PREPEND_SPSPPS_TO_IDR (integer)`` > + Indicates whether to generate SPS and PPS at every IDR. Setting it to 0 > + disables generating SPS and PPS at every IDR. Setting it to one enables > + generating SPS and PPS at every IDR. > + > + > .. _camera-controls: > > Camera Control Reference > Regards, Hans
next prev parent reply other threads:[~2017-07-20 14:50 UTC|newest] Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <CGME20170619052453epcas1p426ebca32768cee57390f39b53d835e81@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 00/12] Add MFC v10.10 support Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052455epcas5p3b0c71e840af3b9022bf69d1058cc94e5@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 01/12] [media] s5p-mfc: Rename IS_MFCV8 macro Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052458epcas5p3ffbe45cb390e87df6bb11980cd7498aa@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 02/12] [media] s5p-mfc: Adding initial support for MFC v10.10 Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052500epcas1p477df788aee11a5a0d3e2defac97e9ae3@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 03/12] [media] s5p-mfc: Use min scratch buffer size as provided by F/W Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052502epcas1p41e0ba072755ca63278f2d4cfdc03ed06@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 04/12] [media] s5p-mfc: Support MFCv10.10 buffer requirements Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-06-27 20:30 ` Kamil Debski 2017-06-27 20:30 ` Kamil Debski 2017-06-28 5:06 ` Smitha T Murthy 2017-06-28 5:06 ` Smitha T Murthy [not found] ` <CGME20170619052505epcas5p33a78ee709263cc9ae33cd9383794ca06@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 05/12] [media] videodev2.h: Add v4l2 definition for HEVC Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-07-07 14:56 ` Stanimir Varbanov 2017-07-07 14:56 ` Stanimir Varbanov 2017-07-17 11:12 ` Smitha T Murthy 2017-07-17 11:12 ` Smitha T Murthy 2017-07-20 13:07 ` Hans Verkuil 2017-07-20 13:07 ` Hans Verkuil 2017-07-24 4:29 ` Smitha T Murthy 2017-07-24 4:29 ` Smitha T Murthy [not found] ` <CGME20170619052507epcas1p406fa9f6d84baa9c11050b1998021788a@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 06/12] [media] v4l2-ioctl: add HEVC format description Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-07-20 13:07 ` Hans Verkuil 2017-07-20 13:07 ` Hans Verkuil 2017-07-24 4:28 ` Smitha T Murthy 2017-07-24 4:28 ` Smitha T Murthy [not found] ` <CGME20170619052509epcas1p4841f9c3733280a232d35c8624fe80576@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 07/12] Documentation: v4l: Documentation for HEVC v4l2 definition Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052511epcas1p4e79efd3c9f0f8062eeac1ab4884b709e@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 08/12] [media] s5p-mfc: Add support for HEVC decoder Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052514epcas1p45d4b590d673a0ff2a3cf0117d55e656a@epcas1p4.samsung.com> 2017-06-19 5:10 ` [Patch v5 09/12] [media] s5p-mfc: Add VP9 decoder support Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy [not found] ` <CGME20170619052516epcas5p349b080cc6c242444d2db1f3c0e1c6f68@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 10/12] [media] v4l2: Add v4l2 control IDs for HEVC encoder Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-07-20 13:13 ` Hans Verkuil 2017-07-20 13:13 ` Hans Verkuil 2017-07-24 4:30 ` Smitha T Murthy 2017-07-24 4:30 ` Smitha T Murthy [not found] ` <CGME20170619052519epcas5p3bacba6c01bf2f135e5cd628226f8d24b@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 11/12] [media] s5p-mfc: Add support " Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-07-20 13:32 ` Hans Verkuil 2017-07-20 13:32 ` Hans Verkuil 2017-07-24 4:40 ` Smitha T Murthy 2017-07-24 4:40 ` Smitha T Murthy [not found] ` <CGME20170619052521epcas5p36a0bc384d10809dcfe775e6da87ed37b@epcas5p3.samsung.com> 2017-06-19 5:10 ` [Patch v5 12/12] Documention: v4l: Documentation for HEVC CIDs Smitha T Murthy 2017-06-19 5:10 ` Smitha T Murthy 2017-06-28 20:04 ` Kamil Debski 2017-06-28 20:04 ` Kamil Debski 2017-06-30 3:24 ` Smitha T Murthy 2017-06-30 3:24 ` Smitha T Murthy 2017-07-07 14:59 ` Stanimir Varbanov 2017-07-07 14:59 ` Stanimir Varbanov 2017-07-17 11:18 ` Smitha T Murthy 2017-07-17 11:18 ` Smitha T Murthy 2017-07-20 15:46 ` Stanimir Varbanov 2017-07-20 15:46 ` Stanimir Varbanov 2017-07-25 4:53 ` Smitha T Murthy 2017-07-25 4:53 ` Smitha T Murthy 2017-08-17 14:43 ` Stanimir Varbanov 2017-08-17 14:43 ` Stanimir Varbanov 2017-07-20 14:50 ` Hans Verkuil [this message] 2017-07-20 14:50 ` Hans Verkuil 2017-07-25 4:48 ` Smitha T Murthy 2017-07-25 4:48 ` Smitha T Murthy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=44dec947-83e8-d8fe-4da1-425aed3d0fb6@xs4all.nl \ --to=hverkuil@xs4all.nl \ --cc=a.hajda@samsung.com \ --cc=jtp.park@samsung.com \ --cc=kamil@wypas.org \ --cc=krzk@kernel.org \ --cc=kyungmin.park@samsung.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --cc=mchehab@kernel.org \ --cc=pankaj.dubey@samsung.com \ --cc=s.nawrocki@samsung.com \ --cc=smitha.t@samsung.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.