Hi Hans, > From: Hans Verkuil [mailto:hverkuil@xxxxxxxxx] > > Hi Kamil! > > On Thursday, June 02, 2011 16:48:41 Kamil Debski wrote: > > Hi, > > > > This is a third version of the patch that adds controls for the codec > family of > > devices. I have implemented the suggestions to v1 I got from Hans Verkuil > on the #v4l > > channel. Also I have addressed comments to v2 by Jeongtae Park. > > > > Changes from v2 to v3: > > - added MVC anc SVC profiles to H264 > > - some fixes in in the documentation > > - remove V4L2_CID_MPEG_VIDEO_INTERLACE in favour of interlace v4l2_field > in v4l2_pix_format > > > > Changes from v1 to v2: > > - 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. > > I have a number of comments below, but I will need to find the actual > standards > documents at work to verify some others parts of this RFC. So I'll get back > with > more comments, hopefully on Tuesday. > > I also have a few more generic comments: > > 1) I understand that the MFC supports H264, MPEG4 and H263, right? How does > one > select between them? I assume that V4L2_CID_MPEG_VIDEO_ENCODING should be > used > for that, but that is missing MPEG4 and H263. The codec used is determined by the pixelformat of the capture queue. So if it is V4L2_PIX_FMT_H264 then H264 elementary stream would be produced. This control would only be used for multiplexed streams - when the pixelformat is set to V4L2_PIX_FMT_MPEG. > 2) It is sometimes hard to figure out for which video encodings certain > controls > are valid. I think all the video controls should have a list of the video > encodings > for which that control is valid (except where the name of the control makes > it > unambiguous). You mean the documentation, yes? If so it is a good idea, I could add a list of supported video codecs for such controls. > 3) Is there public documentation from Samsung regarding the MFC-specific > controls? > If so, then a link to that documentation would be very handy. If not, then I > think > some of the documentation for these controls should be extended. I am not sure whether the documentation is available for download on the web. I actually doubt it... So I will think which controls should have more documentation. > > Note that this third version of the RFC looks much better than the earlier > ones. > I think we are close to finalizing this. Thanks. > > > > > 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 | 774 > ++++++++++++++++++++++++++++++++ > > include/linux/videodev2.h | 149 ++++++ > > 2 files changed, 923 insertions(+), 0 deletions(-) > > > > diff --git a/Documentation/DocBook/v4l/controls.xml > b/Documentation/DocBook/v4l/controls.xml > > index 6880798..3c3c709 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> > > + > <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_CAPTURE</constant></entry> > > + <entry>integer</entry> > > + <entry>This is a read only control that can be read by the > application > > typo: read-only > > > +and used as a hint to determine the number of CAPTURE buffer to pass to > REQBUFS. > > typo: buffers > > > +The value is the minimum number of CAPTURE buffer that it necessary for > hardware > > typo: 'buffers that is' > > > +to work.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_CID_MIN_BUFFERSS_FOR_OUTPUT</constant></entry> > > typo: BUFFERSS -> BUFFERS > > > + <entry>integer</entry> > > + <entry>This is a read only control that can br read by the > application > > typo: read-only > typo: br -> be > > > +and used as a hint to determine the number of OUTPUT buffer to pass to > REQBUFS. > > typo: buffers > > > +The value is the minimum number of OUTPUT buffer that it necessary for > hardware > > typo: buffers that is > > > +to work.</entry> > > + </row> > > + <row> > > <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry> > > <entry></entry> > > <entry>ID of the first custom (driver specific) control. > > @@ -1409,6 +1425,764 @@ of the video. The supplied 32-bit integer is > interpreted as follows (bit > > </tbody> > > </entrytbl> > > </row> > > + > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constan > t> </entry> > > + <entry>boolean</entry> > > + </row> > > + <row><entry spanname="descr">If enabled the decoder expects a > single slice in one buffer, otherwise > > +the decoder expects a single frame in one input buffer.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_AR_ENABLE</constant>&nb > sp;</entry> > > + <entry>boolean</entry> > > + </row> > > + <row><entry spanname="descr">Enable writing aspect ratio in the > Video Usability Information.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_AR_IDC</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">VUI aspect ratio IDC for H.264 > encoding. The value is defined in VUI Table > > +E-1 in the standard. > > What does IDC stand for? Shouldn't this be a menu control? How does this > compare > to V4L2_CID_MPEG_VIDEO_ASPECT? IDC stands for 'indicator', this abbreviation is commonly used in the H264 standard. If I understand correctly the meaning of this control is different than V4L2_CID_MPEG_VIDEO_ASPECT and I think I should change its name to V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (AR -> SAR). This control defines the sample aspect ratio - this the aspect ratio of the pixels. So SAR equal to 1:1 can be used to describe a 1280x720 movie that has overall aspect ratio of 16:9. And yes, it is a good catch that it should be a menu control. > > + </entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_EXT_SAR_WIDTH</constant>&nb > sp;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Extended sample aspect ratio width > for H.264 VUI encoding.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_EXT_SAR_HEIGHT</constant>&n > bsp;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Extended sample aspect ratio height > for H.264 VUI encoding.</entry> > > + </row> > > Either all VUI related controls should have 'VUI' in their name, or not. > Right now it is inconsistent between the 'AR' and 'EXT_SAR' settings. Right, I think it's a good idea to add 'VUI' to the names of the controls you have mentioned. > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_LEVEL</constant> </entry> > > + <entry>enum v4l2_mpeg_level</entry> > > + </row> > > + <row><entry spanname="descr">The level information for stream. > > Instead of 'stream' I would use 'the video'. This to prevent confusion with > a > multiplexed MPEG stream. Ok. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0</constant> </entry> > > + <entry>Level 0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0B</constant> </entry> > > + <entry>Level 0b</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1</constant> </entry> > > + <entry>Level 1.0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1_1</constant> </entry> > > + <entry>Level 1.1</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1_2</constant> </entry> > > + <entry>Level 1.2</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1_3</constant> </entry> > > + <entry>Level 1.3</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2</constant> </entry> > > + <entry>Level 2.0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2_1</constant> </entry> > > + <entry>Level 2.1</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2_2</constant> </entry> > > + <entry>Level 2.2</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3</constant> </entry> > > + <entry>Level 3.0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3B</constant> </entry> > > + <entry>Level 3b</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3_1</constant> </entry> > > + <entry>Level 3.1</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3_2</constant> </entry> > > + <entry>Level 3.2</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4</constant> </entry> > > + <entry>Level 4.0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4_1</constant> </entry> > > + <entry>Level 4.1</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4_2</constant> </entry> > > + <entry>Level 4.2</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_5</constant> </entry> > > + <entry>Level 5.0</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_LEVEL_5_1</constant> </entry> > > + <entry>Level 5.1</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > There is some mismatch here with the level table here: > > http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC > > If your source is the standard, then that's of course leading. My bad, I forgot to change the documentation after we've decided to split V4L2_CID_MPEG_LEVEL into V4L2_CID_MPEG_H264_LEVEL and V4L2_CID_MPEG_MPEG4_LEVEL. > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant> </e > ntry> > > + <entry>enum v4l2_mpeg_h264_profile</entry> > > + </row> > > + <row><entry spanname="descr">The profile information for H264. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE</constant> </ent > ry> > > + <entry>Baseline profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE</constant > > </entry> > > + <entry>Constrained Baseline profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MAIN</constant> </entry> > > + <entry>Main profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10</constant> </entr > y> > > + <entry>High 10 profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422</constant> </ent > ry> > > + <entry>High 422 profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE</constant> > </entry> > > + <entry>High 444 Predictive profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA</constant> > </entry> > > + <entry>High 10 Intra profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA</constant>  > ;</entry> > > + <entry>High 422 Intra profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA</constant>  > ;</entry> > > + <entry>High 444 Intra profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA</constant>&nbs > p;</entry> > > + <entry>CAVLC 444 Intra profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE</constant>&n > bsp;</entry> > > + <entry>Scalable Baseline profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH</constant> > </entry> > > + <entry>Scalable High profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA</constant> > </entry> > > + <entry>Scalable High Intra profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH</constant>  > ;</entry> > > + <entry>Multiview High profile</entry> > > + </row> > > There seem to be two profiles missing here: > > Extended Profile > Stereo High Profile Thanks, I have missed the Extended profile. The Stereo one was missing from my H264 spec, so I think I might have an outdated version. > > + > > + </tbody> > > + </entrytbl> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant> </ > entry> > > + <entry>enum v4l2_mpeg_mpeg4_profile</entry> > > + </row> > > + <row><entry spanname="descr">The profile information for MPEG4. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE</constant> </entry> > > + <entry>Simple profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE</constant> </e > ntry> > > + <entry>Advanced Simple profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_PROFILE_CORE</constant> </entry> > > + <entry>Core profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE</constant> </e > ntry> > > + <entry>Simple Scalable profile</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY</constan > t> </entry> > > + <entry></entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MAX_REF_PIC</constant> </en > try> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">The maximum number of reference > pictures used for encoding.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant>  > ;</entry> > > + <entry>enum v4l2_mpeg_multi_slice_mode</entry> > > + </row> > > + <row><entry spanname="descr">Determines how multiple slices are > handled. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE</constant> </e > ntry> > > + <entry>Single slice per frame.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant> </e > ntry> > > + <entry>Multiple slices with set maximum number of > macroblocks per slice.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BITS</constant> < > /entry> > > + <entry>Multiple slice with set maximum size in bits per > slice.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB</constant>&nb > sp;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">The upper limit of macroblocks of a > slice.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BITS</constant>& > nbsp;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">The upper limit of size in bits of > a slice.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant> > </entry> > > + <entry>enum v4l2_mpeg_h264_loop_filter_mode</entry> > > + </row> > > + <row><entry spanname="descr">Loop filter mode for H264. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED</constant>&nb > sp;</entry> > > + <entry>Loop filter is enabled.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED</constant>&n > bsp;</entry> > > + <entry>Loop filter is disabled.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOU > NDARY</constant> </entry> > > + <entry>Loop filter is disabled at the slice > boundary.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA</constant > > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Loop filter alpha coefficient, > defined in the standard.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Loop filter beta coefficient, > defined in the standard.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SYMBOL_MODE</constant>  > ;</entry> > > + <entry>enum v4l2_mpeg_h264_symbol_mode</entry> > > + </row> > > + <row><entry spanname="descr">Symbol mode for H264 - CABAC/CAVALC. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_SYMBOL_MODE_CAVLC</constant> </en > try> > > + <entry>Use CAVLC entropy coding.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_H264_SYMBOL_MODE_CABAC</constant> </en > try> > > + <entry>Use CABAC entropy coding.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM</constant>&nb > sp;</entry> > > + <entry>boolean</entry> > > + </row> > > + <row><entry spanname="descr">Enable 8X8 transform for > H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_MB</constant>  > ;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Period of random intra macroblock > refresh.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant> > </entry> > > + <entry>boolean</entry> > > + </row> > > + <row><entry spanname="descr">Frame level rate control > enable.</entry> > > + </row> > > + > > + <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_MPEG4_QPEL</constant> </ent > ry> > > + <entry>boolean</entry> > > + </row> > > + <row><entry spanname="descr">Quarter pixel motion estimation for > MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an I > frame for H263.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant> </en > try> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Minimum quantization parameter for > H263.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MAX_QP</constant> </en > try> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Maximum quantization parameter for > H263.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an P > frame for H263.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an B > frame for H263.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an I > frame for H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MIN_QP</constant> </en > try> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Minimum quantization parameter for > H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MAX_QP</constant> </en > try> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Maximum quantization parameter for > H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an P > frame for H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP</constant> > </entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an B > frame for H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP</constant>  > ;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an I > frame for MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP</constant> </e > ntry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Minimum quantization parameter for > MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP</constant> </e > ntry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Maximum quantization parameter for > MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP</constant>  > ;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an P > frame for MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP</constant>  > ;</entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Quantization parameter for an B > frame for MPEG4.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_BUF_SIZE</constant> </e > ntry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">The VBV buffer size in kilobytes, > it used as a limitation of frame skip.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_PERIOD</constant> </ > entry> > > + <entry>integer</entry> > > + </row> > > + <row><entry spanname="descr">Period between I frames in open GOP > for H264.</entry> > > + </row> > > + > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant> </en > try> > > + <entry>enum v4l2_mpeg_header_mode</entry> > > + </row> > > + <row><entry spanname="descr">Determines whether the header is > returned as the first buffer or is > > +it returned together with the first frame. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE</constant> </entr > y> > > + <entry>The stream header is returned separately in the > first buffer.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME</constant > > </entry> > > + <entry>The stream header is returned together with the > first encoded frame.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </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> </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> </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> </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_H264_NUM_REF_PIC_FOR_P</co > nstant> </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>V4L2_CID_MPEG_MFC51_VIDEO_PADDING</constant> </ > entry> > > + <entry>boolean</entry> > > + </row><row><entry spanname="descr">Padding enable - use a color > instead of repeating border pixels.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV</constant>&nbs > p;</entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Padding color. The supplied > 32-bit integer is interpreted as follows (bit > > +0 = least significant bit):</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + <entry>Bit 0:7</entry> > > + <entry>V chrominance information</entry> > > + </row> > > + <row> > > + <entry>Bit 8:15</entry> > > + <entry>U chrominance information</entry> > > + </row> > > + <row> > > + <entry>Bit 16:23</entry> > > + <entry>Y luminance information</entry> > > + </row> > > + <row> > > + <entry>Bit 24:31</entry> > > + <entry>Must be zero.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF</constan > t> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Reaction coefficient for MFC > rate control.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK</con > stant> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Adaptive rate control for > dark region.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH</c > onstant> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Adaptive rate control for > smooth region.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC</c > onstant> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Adaptive rate control for > static region.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY< > /constant> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Adaptive rate control for > activity region.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant> > </entry> > > + <entry>enum v4l2_mpeg_mfc51_frame_skip_mode</entry> > > + </row> > > + <row><entry spanname="descr"> > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED</constant> </ > entry> > > + <entry>Frame skip mode is disabled.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT</constant>  > ;</entry> > > + <entry>Frame skip mode enabled and buffer limit is set by > the chosen level.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_VBV_LIMIT</constant> < > /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> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Enable rate-control with > fixed target bit. If enabled encoder targets bitrate in GOP, else try to > meet average bitrate.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_TIME_RES</consta > nt> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Used to compute > vop_time_increment and modulo_time_base in MPEG4.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_FRAME_DELTA</con > stant> </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Used to compute > vop_time_increment and modulo_time_base in MPEG4.</entry> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant > > </entry> > > + <entry>enum v4l2_mpeg_mfc51_force_frame_type</entry> > > + </row> > > + <row><entry spanname="descr">Force a frame type for the next > queued buffer. > > +Possible values are:</entry> > > + </row> > > + <row> > > + <entrytbl spanname="descr" cols="2"> > > + <tbody valign="top"> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED</constant> < > /entry> > > + <entry>Forcing a specific frame type disabled.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME</constant> </ > entry> > > + <entry>Force an I-frame.</entry> > > + </row> > > + <row> > > + > <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED</constant> > </entry> > > + <entry>Force a non-coded frame.</entry> > > + </row> > > + </tbody> > > + </entrytbl> > > + </row> > > + <row><entry></entry></row> > > + <row> > > + <entry > spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TAG</constant> > </entry> > > + <entry>integer</entry> > > + </row><row><entry spanname="descr">Frame tag is assigned to an > input buffer passed to hardware, and > > +the same frame tag is then assigned to the buffer that contains the > > +result of processing that frame. > > + </entry> > > + </row> > > </tbody> > > </tgroup> > > </table> > > diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h > > index 6168da0..879a5d5 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,120 @@ 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, > > + V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12, > > + V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13, > > + V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14, > > + V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 15, > > +}; > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+220) > > +enum v4l2_mpeg_video_mpeg4_profile { > > + V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0, > > + V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1, > > + V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2, > > + V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3, > > + V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4, > > +}; > > +#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC > (V4L2_CID_MPEG_BASE+221) > > +#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+222) > > +enum v4l2_mpeg_video_multi_slice_mode { > > + V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0, > > + V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1, > > + V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BITS = 2, > > +}; > > +#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB > (V4L2_CID_MPEG_BASE+223) > > +#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BITS > (V4L2_CID_MPEG_BASE+224) > > +#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE > (V4L2_CID_MPEG_BASE+225) > > +enum v4l2_mpeg_video_h264_loop_filter_mode { > > + V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0, > > + V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1, > > + V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2, > > +}; > > +#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA > (V4L2_CID_MPEG_BASE+226) > > +#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA > (V4L2_CID_MPEG_BASE+227) > > +#define V4L2_CID_MPEG_VIDEO_H264_SYMBOL_MODE > (V4L2_CID_MPEG_BASE+228) > > +enum v4l2_mpeg_video_h264_symbol_mode { > > + V4L2_MPEG_VIDEO_H264_SYMBOL_MODE_CAVLC = 0, > > + V4L2_MPEG_VIDEO_H264_SYMBOL_MODE_CABAC = 1, > > +}; > > + > > +#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM > (V4L2_CID_MPEG_BASE+229) > > +#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+230) > > +#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+231) > > +#define V4L2_CID_MPEG_VIDEO_H264_MB_RC_ENABLE > (V4L2_CID_MPEG_BASE+232) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+233) > > +#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+234) > > +#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP > (V4L2_CID_MPEG_BASE+235) > > +#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP > (V4L2_CID_MPEG_BASE+236) > > +#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+237) > > +#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+238) > > +#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+239) > > +#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP > (V4L2_CID_MPEG_BASE+240) > > +#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP > (V4L2_CID_MPEG_BASE+241) > > +#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+242) > > +#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+243) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+244) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+245) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+246) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+247) > > +#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+248) > > +#define V4L2_CID_MPEG_VIDEO_VBV_BUF_SIZE (V4L2_CID_MPEG_BASE+249) > > +#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+250) > > +#define V4L2_CID_MPEG_VIDEO_HEADER_MODE > (V4L2_CID_MPEG_BASE+251) > > +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 +1487,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_H264_NUM_REF_PIC_FOR_P > (V4L2_CID_MPEG_MFC51_BASE+3) > > +#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+6) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK > (V4L2_CID_MPEG_MFC51_BASE+7) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH > (V4L2_CID_MPEG_MFC51_BASE+8) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC > (V4L2_CID_MPEG_MFC51_BASE+9) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY > (V4L2_CID_MPEG_MFC51_BASE+10) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE > (V4L2_CID_MPEG_MFC51_BASE+11) > > +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+12) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_TIME_RES > (V4L2_CID_MPEG_MFC51_BASE+13) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_FRAME_DELTA > (V4L2_CID_MPEG_MFC51_BASE+14) > > +#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE > (V4L2_CID_MPEG_MFC51_BASE+15) > > +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+16) > > + > > /* Camera class control IDs */ > > #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900) > > #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1) > > Best wishes, -- Kamil Debski Linux Platform Group Samsung Poland R&D Center -- 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