diff mbox

[1/4,v9] v4l: add fourcc definitions for compressed formats.

Message ID 1308069416-24723-2-git-send-email-k.debski@samsung.com (mailing list archive)
State RFC
Headers show

Commit Message

Kamil Debski June 14, 2011, 4:36 p.m. UTC
Add fourcc definitions and documentation for the following
compressed formats: H264, H264 without start codes,
MPEG1/2/4 ES, DIVX versions 3.11, 4, 5.0-5.0.2, 5.03 and up,
XVID, VC1 Annex G and Annex L compliant.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 Documentation/DocBook/media/v4l/controls.xml |    7 ++-
 Documentation/DocBook/media/v4l/pixfmt.xml   |   67 +++++++++++++++++++++++++-
 include/linux/videodev2.h                    |   21 +++++++--
 3 files changed, 88 insertions(+), 7 deletions(-)

Comments

Hans Verkuil June 15, 2011, 6:39 a.m. UTC | #1
On Tuesday, June 14, 2011 18:36:53 Kamil Debski wrote:
> Add fourcc definitions and documentation for the following
> compressed formats: H264, H264 without start codes,
> MPEG1/2/4 ES, DIVX versions 3.11, 4, 5.0-5.0.2, 5.03 and up,
> XVID, VC1 Annex G and Annex L compliant.
> 
> Signed-off-by: Kamil Debski <k.debski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  Documentation/DocBook/media/v4l/controls.xml |    7 ++-
>  Documentation/DocBook/media/v4l/pixfmt.xml   |   67 +++++++++++++++++++++++++-
>  include/linux/videodev2.h                    |   21 +++++++--
>  3 files changed, 88 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
> index a920ee8..6880798 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -670,7 +670,8 @@ caption of a Tab page in a GUI, for example.</entry>
>  	      </row><row><entry spanname="descr">The MPEG-1, -2 or -4
>  output stream type. One cannot assume anything here. Each hardware
>  MPEG encoder tends to support different subsets of the available MPEG
> -stream types. The currently defined stream types are:</entry>
> +stream types. This control is specific to multiplexed MPEG streams.
> +The currently defined stream types are:</entry>
>  	      </row>
>  	      <row>
>  		<entrytbl spanname="descr" cols="2">
> @@ -800,6 +801,7 @@ frequency. Possible values are:</entry>
>  		<entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant>&nbsp;</entry>
>  		<entry>enum&nbsp;v4l2_mpeg_audio_encoding</entry>
>  	      </row><row><entry spanname="descr">MPEG Audio encoding.
> +This control is specific to multiplexed MPEG streams.
>  Possible values are:</entry>
>  	      </row>
>  	      <row>
> @@ -1250,7 +1252,8 @@ and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry>
>  		<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant>&nbsp;</entry>
>  		<entry>enum&nbsp;v4l2_mpeg_video_encoding</entry>
>  	      </row><row><entry spanname="descr">MPEG Video encoding
> -method. Possible values are:</entry>
> +method. This control is specific to multiplexed MPEG streams.
> +Possible values are:</entry>
>  	      </row>
>  	      <row>
>  		<entrytbl spanname="descr" cols="2">
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
> index 88e5c21..7f0f447 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -741,10 +741,75 @@ information.</para>
>  	  <row id="V4L2-PIX-FMT-MPEG">
>  	    <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry>
>  	    <entry>'MPEG'</entry>
> -	    <entry>MPEG stream. The actual format is determined by
> +	    <entry>MPEG multiplexed stream. The actual format is determined by
>  extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see
>  <xref linkend="mpeg-control-id" />.</entry>
>  	  </row>
> +	  <row id="V4L2-PIX-FMT-H264">
> +		<entry><constant>V4L2_PIX_FMT_H264</constant></entry>
> +		<entry>'H264'</entry>
> +		<entry>H264 video elementary stream with start codes.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-H264-NO-SC">
> +		<entry><constant>V4L2_PIX_FMT_H264_NO_SC</constant></entry>
> +		<entry>'AVC1'</entry>
> +		<entry>H264 video elementary stream without start codes.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-H263">
> +		<entry><constant>V4L2_PIX_FMT_H263</constant></entry>
> +		<entry>'H263'</entry>
> +		<entry>H263 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-MPEG1">
> +		<entry><constant>V4L2_PIX_FMT_MPEG1</constant></entry>
> +		<entry>'MPG1'</entry>
> +		<entry>MPEG1 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-MPEG2">
> +		<entry><constant>V4L2_PIX_FMT_MPEG2</constant></entry>
> +		<entry>'MPG2'</entry>
> +		<entry>MPEG2 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-MPEG4">
> +		<entry><constant>V4L2_PIX_FMT_MPEG4</constant></entry>
> +		<entry>'MPG4'</entry>
> +		<entry>MPEG4 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-DIVX3">
> +		<entry><constant>V4L2_PIX_FMT_DIVX3</constant></entry>
> +		<entry>'DIV3'</entry>
> +		<entry>Divx 3.11 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-DIVX4">
> +		<entry><constant>V4L2_PIX_FMT_DIVX4</constant></entry>
> +		<entry>'DIV4'</entry>
> +		<entry>Divx 4 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-DIVX500">
> +		<entry><constant>V4L2_PIX_FMT_DIVX500</constant></entry>
> +		<entry>'DX50'</entry>
> +		<entry>Divx 5.0-5.0.2 video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-DIVX5">
> +		<entry><constant>V4L2_PIX_FMT_DIVX5</constant></entry>
> +		<entry>'DIV5'</entry>
> +		<entry>Divx 5.0.3+ video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-XVID">
> +		<entry><constant>V4L2_PIX_FMT_XVID</constant></entry>
> +		<entry>'XVID'</entry>
> +		<entry>Xvid video elementary stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-VC1-ANNEX-G">
> +		<entry><constant>V4L2_PIX_FMT_VC1_ANNEX_G</constant></entry>
> +		<entry>'VC1G'</entry>
> +		<entry>VC1, SMPTE 421M Annex G compliant stream.</entry>
> +	  </row>
> +	  <row id="V4L2-PIX-FMT-VC1-ANNEX-L">
> +		<entry><constant>V4L2_PIX_FMT_VC1_ANNEX_L</constant></entry>
> +		<entry>'VC1L'</entry>
> +		<entry>VC1, SMPTE 421M Annex L compliant stream.</entry>
> +	  </row>
>  	</tbody>
>        </tgroup>
>      </table>
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index 8a4c309..65bcb61 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -376,7 +376,20 @@ struct v4l2_pix_format {
>  #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
>  #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */
>  #define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */
> -#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4    */
> +#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
> +#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
> +#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */
> +#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
> +#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
> +#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */
> +#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 ES     */
> +#define V4L2_PIX_FMT_DIVX3    v4l2_fourcc('D', 'I', 'V', '3') /* DivX 3.11     */
> +#define V4L2_PIX_FMT_DIVX4    v4l2_fourcc('D', 'I', 'V', '4') /* DivX 4.12     */
> +#define V4L2_PIX_FMT_DIVX500  v4l2_fourcc('D', 'X', '5', '0') /* DivX 5.00 - 5.02  */
> +#define V4L2_PIX_FMT_DIVX5    v4l2_fourcc('D', 'I', 'V', '5') /* DivX 5.03 - x  */

Wasn't DIVX removed due to licensing issues?

> +#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
> +#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
> +#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */

Just to verify: are all these formats actually used in the driver?

>  
>  /*  Vendor-specific formats   */
>  #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
> @@ -1151,7 +1164,7 @@ enum v4l2_colorfx {
>  #define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG | 0x900)
>  #define V4L2_CID_MPEG_CLASS 			(V4L2_CTRL_CLASS_MPEG | 1)
>  
> -/*  MPEG streams */
> +/*  MPEG streams, specific to multiplexed streams */
>  #define V4L2_CID_MPEG_STREAM_TYPE 		(V4L2_CID_MPEG_BASE+0)
>  enum v4l2_mpeg_stream_type {
>  	V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
> @@ -1173,7 +1186,7 @@ enum v4l2_mpeg_stream_vbi_fmt {
>  	V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV format */
>  };
>  
> -/*  MPEG audio */
> +/*  MPEG audio controls specific to multiplexed streams  */
>  #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ 	(V4L2_CID_MPEG_BASE+100)
>  enum v4l2_mpeg_audio_sampling_freq {
>  	V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
> @@ -1289,7 +1302,7 @@ enum v4l2_mpeg_audio_ac3_bitrate {
>  	V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
>  };
>  
> -/*  MPEG video */
> +/*  MPEG video controls specific to multiplexed streams */

The 'multiplexed' part of this comment is only true for VIDEO_ENCODING. The
other controls are valid for elementary streams as well.

>  #define V4L2_CID_MPEG_VIDEO_ENCODING 		(V4L2_CID_MPEG_BASE+200)
>  enum v4l2_mpeg_video_encoding {
>  	V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,
> 

Regards,

	Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kamil Debski June 15, 2011, 8:05 a.m. UTC | #2
Hi,


> -----Original Message-----
> From: Hans Verkuil [mailto:hverkuil@xs4all.nl]
> Sent: 15 June 2011 08:40
> To: Kamil Debski
> Cc: linux-media@vger.kernel.org; m.szyprowski@samsung.com;
> kyungmin.park@samsung.com; jaeryul.oh@samsung.com;
> laurent.pinchart@ideasonboard.com; jtp.park@samsung.com
> Subject: Re: [PATCH 1/4 v9] v4l: add fourcc definitions for compressed
> formats.
> 
> On Tuesday, June 14, 2011 18:36:53 Kamil Debski wrote:
> > Add fourcc definitions and documentation for the following
> > compressed formats: H264, H264 without start codes,
> > MPEG1/2/4 ES, DIVX versions 3.11, 4, 5.0-5.0.2, 5.03 and up,
> > XVID, VC1 Annex G and Annex L compliant.
> >
> > Signed-off-by: Kamil Debski <k.debski@samsung.com>
> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> > ---
> >  Documentation/DocBook/media/v4l/controls.xml |    7 ++-
> >  Documentation/DocBook/media/v4l/pixfmt.xml   |   67
> +++++++++++++++++++++++++-
> >  include/linux/videodev2.h                    |   21 +++++++--
> >  3 files changed, 88 insertions(+), 7 deletions(-)
> >
> > diff --git a/Documentation/DocBook/media/v4l/controls.xml
> b/Documentation/DocBook/media/v4l/controls.xml

[snip]

> > diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> > index 8a4c309..65bcb61 100644
> > --- a/include/linux/videodev2.h
> > +++ b/include/linux/videodev2.h
> > @@ -376,7 +376,20 @@ struct v4l2_pix_format {
> >  #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-
> JPEG   */
> >  #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF
> JPEG     */
> >  #define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394
> */
> > -#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-
> 1/2/4    */
> > +#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-
> 1/2/4 Multiplexed */
> > +#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264
> with start codes */
> > +#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264
> without start codes */
> > +#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263
> */
> > +#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1
> ES     */
> > +#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2
> ES     */
> > +#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4
> ES     */
> > +#define V4L2_PIX_FMT_DIVX3    v4l2_fourcc('D', 'I', 'V', '3') /* DivX
> 3.11     */
> > +#define V4L2_PIX_FMT_DIVX4    v4l2_fourcc('D', 'I', 'V', '4') /* DivX
> 4.12     */
> > +#define V4L2_PIX_FMT_DIVX500  v4l2_fourcc('D', 'X', '5', '0') /* DivX
> 5.00 - 5.02  */
> > +#define V4L2_PIX_FMT_DIVX5    v4l2_fourcc('D', 'I', 'V', '5') /* DivX
> 5.03 - x  */
> 
> Wasn't DIVX removed due to licensing issues?

The idea is to have a separate patch that will add DIVX support to the driver.
I thought that I could leave the pixel format definitions here - if any other
driver cares to use them.

There is no problem to remove it from videodev2.h also and have the DIVX patch
add it. Do you think we should do it this way?
 
> > +#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid
> */
> > +#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE
> 421M Annex G compliant stream */
> > +#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE
> 421M Annex L compliant stream */
> 
> Just to verify: are all these formats actually used in the driver?

All but the DIVX and V4L2_PIX_FMT_H264_NO_SC pixel format.
V4L2_PIX_FMT_H264_NO_SC pixel format was requested by Laurent.

> >
> >  /*  Vendor-specific formats   */
> >  #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1
> YUV */
> > @@ -1151,7 +1164,7 @@ enum v4l2_colorfx {
> >  #define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG |
> 0x900)
> >  #define V4L2_CID_MPEG_CLASS 			(V4L2_CTRL_CLASS_MPEG |
1)
> >
> > -/*  MPEG streams */
> > +/*  MPEG streams, specific to multiplexed streams */
> >  #define V4L2_CID_MPEG_STREAM_TYPE 		(V4L2_CID_MPEG_BASE+0)
> >  enum v4l2_mpeg_stream_type {
> >  	V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
> > @@ -1173,7 +1186,7 @@ enum v4l2_mpeg_stream_vbi_fmt {
> >  	V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV
> format */
> >  };
> >
> > -/*  MPEG audio */
> > +/*  MPEG audio controls specific to multiplexed streams  */
> >  #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ 	(V4L2_CID_MPEG_BASE+100)
> >  enum v4l2_mpeg_audio_sampling_freq {
> >  	V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
> > @@ -1289,7 +1302,7 @@ enum v4l2_mpeg_audio_ac3_bitrate {
> >  	V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
> >  };
> >
> > -/*  MPEG video */
> > +/*  MPEG video controls specific to multiplexed streams */
> 
> The 'multiplexed' part of this comment is only true for VIDEO_ENCODING. The
> other controls are valid for elementary streams as well.

Ok, I will remove this comment.

> 
> >  #define V4L2_CID_MPEG_VIDEO_ENCODING 		(V4L2_CID_MPEG_BASE+200)
> >  enum v4l2_mpeg_video_encoding {
> >  	V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,
> >
> 
> Regards,
> 
> 	Hans

Best regards,
--
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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laurent Pinchart June 15, 2011, 8:09 a.m. UTC | #3
Hi Kamil,

On Wednesday 15 June 2011 10:05:42 Kamil Debski wrote:
> On 15 June 2011 08:40 Hans Verkuil wrote:
> > On Tuesday, June 14, 2011 18:36:53 Kamil Debski wrote:
> > > Add fourcc definitions and documentation for the following
> > > compressed formats: H264, H264 without start codes,
> > > MPEG1/2/4 ES, DIVX versions 3.11, 4, 5.0-5.0.2, 5.03 and up,
> > > XVID, VC1 Annex G and Annex L compliant.
> > > 
> > > Signed-off-by: Kamil Debski <k.debski@samsung.com>
> > > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>

[snip]

> > Just to verify: are all these formats actually used in the driver?
> 
> All but the DIVX and V4L2_PIX_FMT_H264_NO_SC pixel format.
> V4L2_PIX_FMT_H264_NO_SC pixel format was requested by Laurent.

I'm fine with adding it later when a driver will use it.
diff mbox

Patch

diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index a920ee8..6880798 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -670,7 +670,8 @@  caption of a Tab page in a GUI, for example.</entry>
 	      </row><row><entry spanname="descr">The MPEG-1, -2 or -4
 output stream type. One cannot assume anything here. Each hardware
 MPEG encoder tends to support different subsets of the available MPEG
-stream types. The currently defined stream types are:</entry>
+stream types. This control is specific to multiplexed MPEG streams.
+The currently defined stream types are:</entry>
 	      </row>
 	      <row>
 		<entrytbl spanname="descr" cols="2">
@@ -800,6 +801,7 @@  frequency. Possible values are:</entry>
 		<entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant>&nbsp;</entry>
 		<entry>enum&nbsp;v4l2_mpeg_audio_encoding</entry>
 	      </row><row><entry spanname="descr">MPEG Audio encoding.
+This control is specific to multiplexed MPEG streams.
 Possible values are:</entry>
 	      </row>
 	      <row>
@@ -1250,7 +1252,8 @@  and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry>
 		<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant>&nbsp;</entry>
 		<entry>enum&nbsp;v4l2_mpeg_video_encoding</entry>
 	      </row><row><entry spanname="descr">MPEG Video encoding
-method. Possible values are:</entry>
+method. This control is specific to multiplexed MPEG streams.
+Possible values are:</entry>
 	      </row>
 	      <row>
 		<entrytbl spanname="descr" cols="2">
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 88e5c21..7f0f447 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -741,10 +741,75 @@  information.</para>
 	  <row id="V4L2-PIX-FMT-MPEG">
 	    <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry>
 	    <entry>'MPEG'</entry>
-	    <entry>MPEG stream. The actual format is determined by
+	    <entry>MPEG multiplexed stream. The actual format is determined by
 extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see
 <xref linkend="mpeg-control-id" />.</entry>
 	  </row>
+	  <row id="V4L2-PIX-FMT-H264">
+		<entry><constant>V4L2_PIX_FMT_H264</constant></entry>
+		<entry>'H264'</entry>
+		<entry>H264 video elementary stream with start codes.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-H264-NO-SC">
+		<entry><constant>V4L2_PIX_FMT_H264_NO_SC</constant></entry>
+		<entry>'AVC1'</entry>
+		<entry>H264 video elementary stream without start codes.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-H263">
+		<entry><constant>V4L2_PIX_FMT_H263</constant></entry>
+		<entry>'H263'</entry>
+		<entry>H263 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-MPEG1">
+		<entry><constant>V4L2_PIX_FMT_MPEG1</constant></entry>
+		<entry>'MPG1'</entry>
+		<entry>MPEG1 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-MPEG2">
+		<entry><constant>V4L2_PIX_FMT_MPEG2</constant></entry>
+		<entry>'MPG2'</entry>
+		<entry>MPEG2 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-MPEG4">
+		<entry><constant>V4L2_PIX_FMT_MPEG4</constant></entry>
+		<entry>'MPG4'</entry>
+		<entry>MPEG4 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-DIVX3">
+		<entry><constant>V4L2_PIX_FMT_DIVX3</constant></entry>
+		<entry>'DIV3'</entry>
+		<entry>Divx 3.11 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-DIVX4">
+		<entry><constant>V4L2_PIX_FMT_DIVX4</constant></entry>
+		<entry>'DIV4'</entry>
+		<entry>Divx 4 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-DIVX500">
+		<entry><constant>V4L2_PIX_FMT_DIVX500</constant></entry>
+		<entry>'DX50'</entry>
+		<entry>Divx 5.0-5.0.2 video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-DIVX5">
+		<entry><constant>V4L2_PIX_FMT_DIVX5</constant></entry>
+		<entry>'DIV5'</entry>
+		<entry>Divx 5.0.3+ video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-XVID">
+		<entry><constant>V4L2_PIX_FMT_XVID</constant></entry>
+		<entry>'XVID'</entry>
+		<entry>Xvid video elementary stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-VC1-ANNEX-G">
+		<entry><constant>V4L2_PIX_FMT_VC1_ANNEX_G</constant></entry>
+		<entry>'VC1G'</entry>
+		<entry>VC1, SMPTE 421M Annex G compliant stream.</entry>
+	  </row>
+	  <row id="V4L2-PIX-FMT-VC1-ANNEX-L">
+		<entry><constant>V4L2_PIX_FMT_VC1_ANNEX_L</constant></entry>
+		<entry>'VC1L'</entry>
+		<entry>VC1, SMPTE 421M Annex L compliant stream.</entry>
+	  </row>
 	</tbody>
       </tgroup>
     </table>
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 8a4c309..65bcb61 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -376,7 +376,20 @@  struct v4l2_pix_format {
 #define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
 #define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */
 #define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */
-#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4    */
+#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
+#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
+#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */
+#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
+#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
+#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */
+#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 ES     */
+#define V4L2_PIX_FMT_DIVX3    v4l2_fourcc('D', 'I', 'V', '3') /* DivX 3.11     */
+#define V4L2_PIX_FMT_DIVX4    v4l2_fourcc('D', 'I', 'V', '4') /* DivX 4.12     */
+#define V4L2_PIX_FMT_DIVX500  v4l2_fourcc('D', 'X', '5', '0') /* DivX 5.00 - 5.02  */
+#define V4L2_PIX_FMT_DIVX5    v4l2_fourcc('D', 'I', 'V', '5') /* DivX 5.03 - x  */
+#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
+#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
+#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
 
 /*  Vendor-specific formats   */
 #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
@@ -1151,7 +1164,7 @@  enum v4l2_colorfx {
 #define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG | 0x900)
 #define V4L2_CID_MPEG_CLASS 			(V4L2_CTRL_CLASS_MPEG | 1)
 
-/*  MPEG streams */
+/*  MPEG streams, specific to multiplexed streams */
 #define V4L2_CID_MPEG_STREAM_TYPE 		(V4L2_CID_MPEG_BASE+0)
 enum v4l2_mpeg_stream_type {
 	V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
@@ -1173,7 +1186,7 @@  enum v4l2_mpeg_stream_vbi_fmt {
 	V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV format */
 };
 
-/*  MPEG audio */
+/*  MPEG audio controls specific to multiplexed streams  */
 #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ 	(V4L2_CID_MPEG_BASE+100)
 enum v4l2_mpeg_audio_sampling_freq {
 	V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
@@ -1289,7 +1302,7 @@  enum v4l2_mpeg_audio_ac3_bitrate {
 	V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
 };
 
-/*  MPEG video */
+/*  MPEG video controls specific to multiplexed streams */
 #define V4L2_CID_MPEG_VIDEO_ENCODING 		(V4L2_CID_MPEG_BASE+200)
 enum v4l2_mpeg_video_encoding {
 	V4L2_MPEG_VIDEO_ENCODING_MPEG_1     = 0,