DirectShow DirectShow 레퍼런스 DirectShow 구조체 VIDEOINFOHEADER   [목차열람] [주소복사] [슬롯비우기]
VIDEOINFOHEADER 구조체
 
Microsoft DirectX 9.0

VIDEOINFOHEADER 구조체

VIDEOINFOHEADER 구조체는, 비디오 이미지의 비트 맵과 색정보를 기술한다.

구문

typedef struct tagVIDEOINFOHEADER {
    RECT                rcSource,
    RECT                rcTarget;
    DWORD               dwBitRate;
    DWORD               dwBitErrorRate;
    REFERENCE_TIME      AvgTimePerFrame;
    BITMAPINFOHEADER    bmiHeader;
} VIDEOINFOHEADER;

멤버

rcSource

전송원비디오 윈도우를 지정하는 RECT 구조체. 소스 비디오 스트림의 일부를 선택하기 위해(때문에), 이 구조체를 클리핑 직사각형이라고 해도 좋다.

rcTarget

목적지 비디오 윈도우를 지정하는 RECT 구조체.

dwBitRate

비디오 스트림의 대체로의 데이터 레이트 (비트/초).

dwBitErrorRate

데이터 에러 레이트 (비트 에러/초) .

AvgTimePerFrame

필요한 비디오 프레임의 평균 표시 시간 (100 나노초단위) . 실제의 프레임 근처의 표시 시간은 길어질 가능성이 있다. 「주의」를 참조.

bmiHeader

비디오 이미지의 비트 맵의 색정보 및 넓이 정보가 저장 된 BITMAPINFOHEADER 구조체. 포맷 블록에 컬러 테이블 또는 색마스크가 포함되는 경우는,bmiHeader 멤버의 곧 뒤로 계속된다. 최초의 컬러 엔트리를 얻어오려면, 멤버의 주소를 BITMAPINFO 포인터에 캐스트 한다.

주의

rcSource 멤버와 rcTarget 멤버의 사용법의 더 자세한 정보는, 「비디오 렌더러에 있어서의 전송원직사각형과 목적지 직사각형」을 참조할것.

frame rate

AvgTimePerFrame 의 값은 보통, 소스 필터가 설정한다. 소스 필터는 미디어 스트림으로부터 값을 얻어온다. 이 값을 사용해 생성시의 frame rate를 계산할 수 있다. 생성시의 frame rate란, 비디오를 렌더링하기 위한 frame rate이다. 재생중은, 시스템은 생성시의 레이트로 스트림을 렌더링 할 수 없는 것도 있으므로, 실제의 frame rate는 이것보다 작은 일이 있다. 이러한 상황은, 머신의 리소스가 과잉에 위탁되었을 경우에 일어날 수 있다. 또, 모니터의 refresh rate가 비디오의 재생 레이트에 영향을 줄 가능성도 있다. 예를 들어, 목적의 레이트가 60,000/1001 (NTSC TV)로 모니터의 refresh rate가 60Hz 로 하면, 목적의 레이트와 실제의 레이트는 결코 일치하지 않는다. 재생시에 달성한 실제의 frame rate를 얻어오려면, 비디오 렌더러의 IQualProp::get_AvgFrameRate 메서드를 사용한다.

재생시에, 애플리케이션은 다음의 방법으로 생성시의 frame rate를 취득할 수 있다.

비디오 파일의 생성시의 frame rate를 렌더링 하지 않고 얻어오려면,IMediaDet::get_FrameRate 를 사용하는 것.

참조

↑TOP