RE: [RFC/PATCH v2] v4l: add control definitions for codec devices.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

> -----Original Message-----
> From: Kamil Debski [mailto:k.debski@xxxxxxxxxxx]
> Sent: Thursday, June 02, 2011 11:44 PM
> To: jtp.park@xxxxxxxxxxx; linux-media@xxxxxxxxxxxxxxx
> Cc: jaeryul.oh@xxxxxxxxxxx; june.bae@xxxxxxxxxxx; janghyuck.kim@xxxxxxxxxxx; kyungmin.park@xxxxxxxxxxx;
> younglak1004.kim@xxxxxxxxxxx; 'Marek Szyprowski'
> Subject: RE: [RFC/PATCH v2] v4l: add control definitions for codec devices.
> 
> > From: Jeongtae Park [mailto:jtp.park@xxxxxxxxxxx]
> > Sent: 02 June 2011 09:44
> > To: 'Kamil Debski'; linux-media@xxxxxxxxxxxxxxx
> > Cc: jaeryul.oh@xxxxxxxxxxx; june.bae@xxxxxxxxxxx; janghyuck.kim@xxxxxxxxxxx;
> > kyungmin.park@xxxxxxxxxxx; younglak1004.kim@xxxxxxxxxxx; 'Marek Szyprowski'
> > Subject: RE: [RFC/PATCH v2] v4l: add control definitions for codec devices.
> >
> > Hi,
> >
> > Thank you for your nice work. Here are my some comments.
> 
> Hi,
> 
> Thanks for your comments. I think I must have posted the wrong patch file...
> I will send the proper one, with some of your suggestion in a minute.
> 
> >
> > > -----Original Message-----
> > > From: Kamil Debski [mailto:k.debski@xxxxxxxxxxx]
> > > Sent: Tuesday, May 31, 2011 6:08 PM
> > > Cc: m.szyprowski@xxxxxxxxxxx; kyungmin.park@xxxxxxxxxxx;
> > k.debski@xxxxxxxxxxx; jaeryul.oh@xxxxxxxxxxx;
> > > hverkuil@xxxxxxxxx; laurent.pinchart@xxxxxxxxxxxxxxxx;
> > jtp.park@xxxxxxxxxxx
> > > Subject: [RFC/PATCH v2] v4l: add control definitions for codec devices.
> > >
> > > Hi,
> > >
> > > This is a second version of the patch that adds controls for the codec
> > family of
> > > devices. I have implemented the suggestions I got from Hans Verkuil on the
> > #v4l
> > > channel.
> > >
> > > Change log:
> > > - rename V4L2_CID_MIN_REQ_BUFS_(CAP/OUT) to
> > V4L2_CID_MIN_BUFFERS_FOR_(CAPTURE/OUTPUT)
> > > - use existing controls for GOP size, number of frames and GOP closure
> > > - remove frame rate controls (in favour of the S_PARM call)
> > > - split level into separate controls for MPEG4 and H264
> > >
> > > I would welcome further comments.
> > >
> > > Best regards,
> > > Kamil Debski
> > >
> > > Signed-off-by: Kamil Debski <k.debski@xxxxxxxxxxx>
> > > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
> > > ---
> > >  Documentation/DocBook/v4l/controls.xml |  733
> > ++++++++++++++++++++++++++++++++
> > >  include/linux/videodev2.h              |  147 +++++++
> > >  2 files changed, 880 insertions(+), 0 deletions(-)
> > >
> > > diff --git a/Documentation/DocBook/v4l/controls.xml
> > b/Documentation/DocBook/v4l/controls.xml
> > > index 6880798..7c2df42 100644
> > > --- a/Documentation/DocBook/v4l/controls.xml
> > > +++ b/Documentation/DocBook/v4l/controls.xml
> > > @@ -325,6 +325,22 @@ minimum value disables backlight
> > compensation.</entry>
> > >  <constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry>
> > >  	  </row>
> > >  	  <row>
> > > +
> 
> [snip]
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MAX_REF_PIC</constant>&nbsp;</en
> > try>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">The maximum number of reference
> > pictures used for encoding.</entry>
> > > +	      </row>
> >
> > Is it boolean type?
> 
> It is not, a copy-paste mistake on my side.
> 
> [snip]
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA</constant>
> > &nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Loop filter alpha coefficient,
> > defined in the standard.</entry>
> > > +	      </row>
> >
> > alpha -> beta.
> 
> I agree.
> 
> [snip]
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant>&nbsp;
> > </entry>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Padding enable - use a color
> > instead of repeating border pixels.</entry>
> > > +	      </row>
> >
> > The description may be wrong.
> 
> Thanks for pointing this out.
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MB_RC_ENABLE</constant>&nbs
> > p;</entry>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Macroblock level rate control
> > enable for H264.</entry>
> > > +	      </row>
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RATE_NOMINATOR</constant>&
> > nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Frames per second -
> > nominator.</entry>
> > > +	      </row>
> >
> > Removed as you mentioned.
> 
> Yes, I think I had to mix up the patches that got sent.
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RATE_DENOMINATOR</constant
> > >&nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Frames per second -
> > denominator</entry>
> > > +	      </row>
> > > +
> >
> > Removed as you mentioned.
> 
> Ditto.
> 
> [snip]
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_BUF_SIZE</constant>&nbsp;</e
> > ntry>
> > > +		<entry>integer</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Quantization parameter for an P
> > frame.</entry>
> > > +	      </row>
> >
> > The description may be wrong, How about this?
> > 'The VBV buffer size in kilo bytes, it used as a limitation of frame skip'
> 
> I agree.
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_OPEN_GOP</constant>&nbsp;</
> > entry>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Enable open GOP in H264.</entry>
> > > +	      </row>
> >
> > I cannot find V4L2_CID_MPEG_VIDEO_H264_OPEN_GOP definition at videodev2.h,
> > we will use V4L2_CID_MPEG_VIDEO_GOP_CLOSURE instead, right?
> 
> Yes, we've switched to GOP_CLOSURE.
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant>&nbsp;
> > </entry>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Frame level rate control
> > enable.</entry>
> > > +	      </row>
> >
> > I saw the same CID above, previous definition have to remove.
> 
> Agree.
> 
> > > +
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MB_RC_ENABLE</constant>&nbs
> > p;</entry>
> > > +		<entry>boolean</entry>
> > > +	      </row>
> > > +	      <row><entry spanname="descr">Macroblock level rate control
> > enable.</entry>
> > > +	      </row>
> > > +
> > > +	    </tbody>
> > > +	  </tgroup>
> > > +	</table>
> > > +      </section>
> > > +
> > > +      <section>
> > > +	<title>MFC 5.1 MPEG Controls</title>
> > > +
> > > +	<para>The following MPEG class controls deal with MPEG
> > > +decoding and encoding settings that are specific to the MFC 5.1 device
> > present
> > > +in the S5P family of SoCs by Samsung.
> > > +</para>
> > > +
> > > +	<table pgwide="1" frame="none" id="mfc51-control-id">
> > > +	  <title>MFC 5.1 Control IDs</title>
> > > +	  <tgroup cols="4">
> > > +	    <colspec colname="c1" colwidth="1*" />
> > > +	    <colspec colname="c2" colwidth="6*" />
> > > +	    <colspec colname="c3" colwidth="2*" />
> > > +	    <colspec colname="c4" colwidth="6*" />
> > > +	    <spanspec namest="c1" nameend="c2" spanname="id" />
> > > +	    <spanspec namest="c2" nameend="c4" spanname="descr" />
> > > +	    <thead>
> > > +	      <row>
> > > +		<entry spanname="id" align="left">ID</entry>
> > > +		<entry align="left">Type</entry>
> > > +	      </row><row><entry spanname="descr"
> > align="left">Description</entry>
> > > +	      </row>
> > > +	    </thead>
> > > +	    <tbody valign="top">
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > >
> > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_MPEG4_DEBLOCK_FILT
> > ER</constant>&nbsp;</entry>
> > > +		<entry>boolean</entry>
> > > +	      </row><row><entry spanname="descr">Enabled the deblocking post
> > processing filter for MPEG4
> > > decoder.</entry>
> > > +	      </row>
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > >
> > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY
> > _ENABLE</constant>&nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row><row><entry spanname="descr">If the display delay is
> > enabled then the decoder has to return an
> > > +CAPTURE buffer after processing a certain number of OUTPUT buffers. If
> > this number is low, then it may result in
> > > +buffers not being dequeued in display order. In addition hardware may
> > still use those buffers as reference, thus
> > > +application should not write to those buffers. This feature can be used
> > for example for generating thumbnails of
> > > videos.
> > > +	      </entry>
> > > +	      </row>
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > >
> > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY
> > </constant>&nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row><row><entry spanname="descr">Display delay value for H264
> > decoder.</entry>
> > > +	      </row>
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_NUM_REF_PIC_FOR_P</constan
> > t>&nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row><row><entry spanname="descr">The number of reference
> > pictures used for encoding a P
> > > picture.</entry>
> > > +	      </row>
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V;4L2_CID_MPEG_MFC51_VIDEO_PADDING</constant>&nbsp;<
> > /entry>
> >
> > There is a miss typing(;).
> 
> Thanks.
> 
> [snip]
> 
> > <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_VBV_LIMIT</constant>&nbsp;<
> > /entry>
> > > +		      <entry>Frame skip mode enabled and buffer limit is set by
> > the VBV buffer size control.</entry>
> > > +		    </row>
> > > +		  </tbody>
> > > +		</entrytbl>
> > > +	      </row>
> > > +	      <row><entry></entry></row>
> > > +	      <row>
> > > +		<entry
> > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT</const
> > ant>&nbsp;</entry>
> > > +		<entry>integer</entry>
> > > +	      </row><row><entry spanname="descr"></entry>
> >
> > How about below description?
> > ' Enable rate-control with fixed target bit. If enabled encoder targets
> > bitrate in GOP, else try to meet average bitrate.'
> 
> Thanks.
> 
> [snip]
> 
> > > diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> > > index 6168da0..5ec2aba 100644
> > > --- a/include/linux/videodev2.h
> > > +++ b/include/linux/videodev2.h
> > > @@ -1157,6 +1157,10 @@ enum v4l2_colorfx {
> > >  /* last CID + 1 */
> > >  #define V4L2_CID_LASTP1                         (V4L2_CID_BASE+39)
> > >
> > > +/* Minimum number of buffer neede by the device */
> > > +#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE	(V4L2_CID_BASE+40)
> > > +#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT		(V4L2_CID_BASE+41)
> > > +
> > >  /*  MPEG-class control IDs defined by V4L2 */
> > >  #define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG |
> > 0x900)
> > >  #define V4L2_CID_MPEG_CLASS 			(V4L2_CTRL_CLASS_MPEG |
> 1)
> > > @@ -1328,6 +1332,118 @@ enum v4l2_mpeg_video_bitrate_mode {
> > >  #define V4L2_CID_MPEG_VIDEO_MUTE 		(V4L2_CID_MPEG_BASE+210)
> > >  #define V4L2_CID_MPEG_VIDEO_MUTE_YUV 		(V4L2_CID_MPEG_BASE+211)
> > >
> > > +#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE
> > 	(V4L2_CID_MPEG_BASE+212)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_VUI_AR_ENABLE
> > 	(V4L2_CID_MPEG_BASE+213)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_VUI_AR_IDC
> > 	(V4L2_CID_MPEG_BASE+214)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_EXT_SAR_WIDTH
> > 	(V4L2_CID_MPEG_BASE+215)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_EXT_SAR_HEIGHT
> > 	(V4L2_CID_MPEG_BASE+216)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_LEVEL
> > 	(V4L2_CID_MPEG_BASE+217)
> > > +enum v4l2_mpeg_video_h264_level {
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_1_0	= 0,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_1B	= 1,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_1_1	= 2,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_1_2	= 3,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_1_3	= 4,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_2_0	= 5,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_2_1	= 6,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_2_2	= 7,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_3_0	= 8,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_3_1	= 9,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_3_2	= 10,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_4_0	= 11,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_4_1	= 12,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_4_2	= 13,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_5_0	= 14,
> > > +	V4L2_MPEG_VIDEO_H264_LEVEL_5_1	= 15,
> > > +};
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL
> > 	(V4L2_CID_MPEG_BASE+218)
> > > +enum v4l2_mpeg_video_mpeg4_level {
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_0	= 0,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B	= 1,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_1	= 2,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_2	= 3,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_3	= 4,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B	= 5,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_4	= 6,
> > > +	V4L2_MPEG_VIDEO_MPEG4_LEVEL_5	= 7,
> > > +};
> > > +#define V4L2_CID_MPEG_VIDEO_H264_PROFILE	(V4L2_CID_MPEG_BASE+219)
> > > +enum v4l2_mpeg_video_h264_profile {
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE			= 0,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE	= 1,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_MAIN			= 2,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED			= 3,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH			= 4,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10			= 5,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422			= 6,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE	= 7,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA		= 8,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA		= 9,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA		= 10,
> > > +	V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA		= 11,
> > > +};
> >
> > How about include SVC, MVC extension profiles?
> 
> Yes, it wasn't present in the standard definition I have used, but I have a
> newer version of that document with the SVC and MVC added.
> 
> [snip]
> 
> > > +#define V4L2_CID_MPEG_VIDEO_INTERLACE		(V4L2_CID_MPEG_BASE+231)
> >
> > MFC encoder supports only H.264 the interlace encoding, and
> > how about use v4l2_field in struct v4l2_pix_format_mplane with VIDIOC_*_FMT
> > ioctl?
> 
> Yes, that is a good idea. I think we have discussed this earlier, but I forgot to
> send it in this patch - I had posted the wrong file...
> 
>  > > +#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM
> > 	(V4L2_CID_MPEG_BASE+232)
> > > +#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_MB	(V4L2_CID_MPEG_BASE+233)
> > > +#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE	(V4L2_CID_MPEG_BASE+234)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_MB_RC_ENABLE
> > 	(V4L2_CID_MPEG_BASE+235)
> > > +#define V4L2_CID_MPEG_VIDEO_RC_BITRATE		(V4L2_CID_MPEG_BASE+236)
> >
> > How about use V4L2_CID_MPEG_VIDEO_BITRATE?
> 
> Good catch, it means the same.
> 
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL		(V4L2_CID_MPEG_BASE+237)
> > > +#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP	(V4L2_CID_MPEG_BASE+238)
> > > +#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP
> > 	(V4L2_CID_MPEG_BASE+239)
> > > +#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP
> > 	(V4L2_CID_MPEG_BASE+240)
> > > +#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP	(V4L2_CID_MPEG_BASE+241)
> > > +#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP	(V4L2_CID_MPEG_BASE+242)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP	(V4L2_CID_MPEG_BASE+243)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP
> > 	(V4L2_CID_MPEG_BASE+244)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP
> > 	(V4L2_CID_MPEG_BASE+245)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP	(V4L2_CID_MPEG_BASE+246)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP	(V4L2_CID_MPEG_BASE+247)
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP	(V4L2_CID_MPEG_BASE+248)
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP	(V4L2_CID_MPEG_BASE+249)
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP	(V4L2_CID_MPEG_BASE+250)
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP	(V4L2_CID_MPEG_BASE+251)
> > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP	(V4L2_CID_MPEG_BASE+252)
> >
> > There are only V4L2_CID_MPEG_VIDEO_[I,P,B]_FRAME_QP descriptions in
> > controls.xml.
> 
> I have also added this in the next patch.
> 
> >
> > > +#define V4L2_CID_MPEG_VIDEO_VBV_BUF_SIZE	(V4L2_CID_MPEG_BASE+253)
> > > +#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD	(V4L2_CID_MPEG_BASE+255)
> > > +#define V4L2_CID_MPEG_VIDEO_HEADER_MODE
> > 	(V4L2_CID_MPEG_BASE+256)
> > > +enum v4l2_mpeg_video_header_mode {
> > > +	V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE			= 0,
> > > +	V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME	= 1,
> > > +
> > > +};
> > > +
> > >  /*  MPEG-class control IDs specific to the CX2341x driver as defined by
> > V4L2 */
> > >  #define V4L2_CID_MPEG_CX2341X_BASE
> > 	(V4L2_CTRL_CLASS_MPEG | 0x1000)
> > >  #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE
> > 	(V4L2_CID_MPEG_CX2341X_BASE+0)
> > > @@ -1369,6 +1485,37 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type {
> > >  #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP
> > 	(V4L2_CID_MPEG_CX2341X_BASE+10)
> > >  #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS
> > 	(V4L2_CID_MPEG_CX2341X_BASE+11)
> > >
> > > +/*  MPEG-class control IDs specific to the Samsung MFC 5.1 driver as
> > defined by V4L2 */
> > > +#define V4L2_CID_MPEG_MFC51_BASE 			(V4L2_CTRL_CLASS_MPEG
> > | 0x1000)
> > > +
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER
> > 	(V4L2_CID_MPEG_MFC51_BASE+0)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY
> > 	(V4L2_CID_MPEG_MFC51_BASE+1)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE
> > 	(V4L2_CID_MPEG_MFC51_BASE+2)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_NUM_REF_PIC_FOR_P
> > 	(V4L2_CID_MPEG_MFC51_BASE+3)
> >
> > Support in H.264 only.
> 
> Right, this is a MFC 5.1 specific control, so it can have the H264 in the name.
> 
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING
> > 	(V4L2_CID_MPEG_MFC51_BASE+4)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV
> > 	(V4L2_CID_MPEG_MFC51_BASE+5)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF
> > 	(V4L2_CID_MPEG_MFC51_BASE+8)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK
> > 	(V4L2_CID_MPEG_MFC51_BASE+9)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH
> > 	(V4L2_CID_MPEG_MFC51_BASE+10)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC
> > 	(V4L2_CID_MPEG_MFC51_BASE+11)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY
> > 	(V4L2_CID_MPEG_MFC51_BASE+12)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE
> > 	(V4L2_CID_MPEG_MFC51_BASE+13)
> > > +enum v4l2_mpeg_mfc51_video_frame_skip_mode {
> > > +	V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED		= 0,
> > > +	V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT	= 1,
> > > +	V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_VBV_LIMIT		= 2,
> > > +};
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT
> > 	(V4L2_CID_MPEG_MFC51_BASE+14)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_TIME_RES
> > 	(V4L2_CID_MPEG_MFC51_BASE+15)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_FRAME_DELTA
> > 	(V4L2_CID_MPEG_MFC51_BASE+16)
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE
> > 	(V4L2_CID_MPEG_MFC51_BASE+17)
> > > +enum v4l2_mpeg_mfc51_video_force_frame_type {
> > > +	V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED		= 0,
> > > +	V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME		= 1,
> > > +	V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED	= 2,
> > > +};
> > > +#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TAG
> (V4L2_CID_MPEG_MFC51_BASE+18)
> > > +
> >
> > I remember that you try to add extra frame type(SKIPPED or NOT_CODED) to
> > V4L2_BUF_FLAG_*.
> > How is it going?
> >
> 
> As you can see there was no discussion so far on the list about it.
> 
> Now my priority is merging the driver in the mainline. So I have focused on
> adding
> new pixel formats and the necessary controls. After the driver gets merged it is
> still possible to add new code and extend functionality.
> 
> Pixel formats are already discussed and discussion of controls is (hopefully)
> close
> to the end. Adding another topic will last weeks, and will delay merging.
> 
> Let's get the driver merged with basic functionality and then extend it,
> otherwise
> it will be delayed again and again.

I can't agree with you anymore. I hope MFC driver would be merge ASAP too.

> 
> 
> Best regards,
> --
> Kamil Debski
> Linux Platform Group
> Samsung Poland R&D Center

Best regards

/jtpark

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux