VIDEOINFOHEADER Structure
Microsoft DirectShow 9.0 |
VIDEOINFOHEADER Structure
The VIDEOINFOHEADER structure describes the bitmap and color information for a video image.
Syntax
typedef struct tagVIDEOINFOHEADER { RECT rcSource, RECT rcTarget; DWORD dwBitRate; DWORD dwBitErrorRate; REFERENCE_TIME AvgTimePerFrame; BITMAPINFOHEADER bmiHeader; } VIDEOINFOHEADER;
Members
rcSource
RECT structure that specifies the source video window. This structure can be a clipping rectangle, to select a portion of the source video stream.
rcTarget
RECT structure that specifies the destination video window.
dwBitRate
Approximate data rate of the video stream, in bits per second.
dwBitErrorRate
Data error rate, in bit errors per second.
AvgTimePerFrame
The desired average display time of the video frames, in 100-nanosecond units. The actual time per frame may be longer. See Remarks.
bmiHeader
BITMAPINFOHEADER structure that contains color and dimension information for the video image bitmap. If the format block contains a color table or color masks, they immediately follow the bmiHeader member. You can get the first color entry by casting the address of member to a BITMAPINFO pointer.
When used inside a VIDEOINFOHEADER structure, the semantics of the BITMAPINFOHEADER structure differ slightly from how the structure is used in GDI. For more information, refer to the topic BITMAPINFOHEADER Structure.
Remarks
For information about using the rcSource and rcTarget members, see Source and Target Rectangles in Video Renderers.
Frame Rates
The value of AvgTimePerFrame is usually set by the source filter, which obtains the value from the media stream. This value can be used to calculate the authored frame rate, which is the intended frame rate for the video to be rendered. During playback, the system may not be able to render the stream at the authored rate, so the actual frame rate may be less. This can happen if the machine's resources become over-committed. Also, the monitor's refresh rate can interfere with the playback rate of the video. For example, if the intended rate is 60,000/1001 (NTSC TV) and the monitor's refresh rate is 60Hz, the intended rate and the actual rate will never match. To retrieve the actual frame rate achieved during playback, use the IQualProp::get_AvgFrameRate method on the video renderer.
During playback, applications can retrieve the authored frame rate as follows:
- If the old Video Renderer filter is rendering, call the IBasicVideo::get_AvgTimePerFrame method.
- If the Video Mixing Renderer (VMR) is rendering, call IPin::ConnectionMediaType on the input pin and examine the format block. The VMR supports multiple input streams, and they are not required to have the same frame rates.
To obtain the authored frame rate of a video file without rendering it, use IMediaDet::get_FrameRate.
Requirements
Header: Dshow.h.
See Also