The KS_VIDEOINFOHEADER2 structure describes the details of a video stream, including bob or weave settings, copy protection, and pixel aspect ratio.


typedef struct tagKS_VIDEOINFOHEADER2 {
  RECT                rcSource;
  RECT                rcTarget;
  DWORD               dwBitRate;
  DWORD               dwBitErrorRate;
  REFERENCE_TIME      AvgTimePerFrame;
  DWORD               dwInterlaceFlags;
  DWORD               dwCopyProtectFlags;
  DWORD               dwPictAspectRatioX;
  DWORD               dwPictAspectRatioY;
  union {
    DWORD dwControlFlags;
    DWORD dwReserved1;
  DWORD               dwReserved2;



Specifies a clipping rectangle that selects the portion of the active video signal to use.


Specifies a rectangle that indicates what part of the target buffer to use.


Specifies a value that indicates the video stream's appropriate data rate, in bits per second.


Specifies a value that indicates the video stream's data error rate, in bit errors per second.


Specifies the average time per frame, in 100-nanosecond units.


Specifies interlace information. Undefined flags must be set to zero, or the connection may be rejected. This member can be set to one or more (logical OR) values that are defined in ksmedia.h:

Flag Meaning
KS_INTERLACE_IsInterlaced Indicates an interlace stream. If 0, then the other KS_INTERLACE_Xxx bits are irrelevant.
KS_INTERLACE_1FieldPerSample Indicates one field per media sample. If zero, indicates two fields per media sample.
KS_INTERLACE_Field1First Indicates that Field 1 is first. If zero, indicates that Field 2 is first. Top field in PAL is Field 1, top field in NTSC is Field 2.
KS_INTERLACE_FieldPatternMask Indicates the bits used to specify field pattern.
KS_INTERLACE_FieldPatField1Only Indicates that a stream never contains a Field 2.
KS_INTERLACE_FieldPatField2Only Indicates that a stream never contains a Field 1.
KS_INTERLACE_FieldPatBothRegular Indicates that there will be a Field 2 for every Field 1.
KS_INTERLACE_FieldPatBothIrregular Indicates a random pattern of Field 1s and Field 2s.
KS_INTERLACE_DisplayModeMask Invalid for video capture.
KS_INTERLACE_DisplayModeBobOnly Invalid for video capture.
KS_INTERLACE_DisplayModeWeaveOnly Invalid for video capture.
KS_INTERLACE_DisplayModeBobOrWeave Invalid for video capture.


Specifies a KSCOPYPROTECTRestrictDuplication value (0x00000001) to indicate if duplication of a stream should be restricted. If undefined, specify zero or the connection will be rejected.


Specifies the x dimension of the picture-aspect ratio (for example, 16 for a 16 × 9 display). The value is expressed in inches-by-inches, not pixels-by-pixels.


Specifies the y dimension of the picture aspect ratio (for example, 9 for 16 × 9 display). The value is expressed in inches-by-inches, not pixels-by-pixels.





Reserved for system use. Must be set to zero or the connection will be rejected.


Indicates a KS_BITMAPINFOHEADER structure that contains color and dimension information for the video image bitmap.


To describe a video stream without bob or weave settings, use KS_VIDEOINFOHEADER.

The KS_VIDEOINFOHEADER2 structure is identical to the DirectShow VIDEOINFOHEADER2 structure.

Capture minidrivers that produce video fields (instead of frames) must use the KS_DATARANGE_VIDEO2 structure, which contains the KS_VIDEOINFOHEADER2 structure.

A source filter can request that the sink filter take only a section of the video by providing values that effectively define a clipping rectangle in the rcSource member. However, if the sink filter does not check for the clipping rectangle on connection, the sink filter simply renders all of the video, effectively ignoring any clipping information passed from the source filter to the sink filter.

Ideally, a sink filter checks rcSource and if the sink filter does not support image extraction, and the rectangle is not empty, then it rejects the connection. A filter should use the Win32 function SetRectEmpty to reset a rectangle to all zeros (and set IsRectEmpty to later check the rectangle).

The rcTarget member specifies the destination rectangle for the video. Most source filters set this member to all zeros. A downstream filter can request that the video be placed in a particular area of the buffers that it supplies. In this case, it calls the Win32 function QueryAccept with a nonempty target.

If the AMCONTROL_COLORINFO_PRESENT flag is set in the dwControlFlags member, you can cast the dwControlFlags value to a DXVA_ExtendedFormat structure to access the extended color information. For more information, see VIDEOINFOHEADER2.


Header ksmedia.h (include Ksmedia.h)

See Also