ビデオの幅と高さを取得する

ここでは、ビデオの幅と高さを取得する方法を説明します。 (注意)ここの例では、サンプルを簡潔にするためにエラー処理を書いていません。

とりあえず、コードを書いてみる

まず、何も考えずに以下のコードを書いてみましょう。 下記サンプルコードは映像の幅と高さを表示して終了します。 このサンプルでは動画の再生は行いません。


#include <stdio.h>

#include <dshow.h>

#define	FILENAME L"C:\\DXSDK\\Samples\\Media\\butterfly.mpg"

int
main()
{
 IGraphBuilder *pGraphBuilder;
 IMediaControl *pMediaControl;
 IBasicVideo *pBasicVideo;

 CoInitialize(NULL);

 CoCreateInstance(CLSID_FilterGraph,
	NULL,
	CLSCTX_INPROC,
	IID_IGraphBuilder,
	(LPVOID *)&pGraphBuilder);

 pGraphBuilder->QueryInterface(IID_IMediaControl,
	(LPVOID *)&pMediaControl);

 pMediaControl->RenderFile(FILENAME);

 pGraphBuilder->QueryInterface(IID_IBasicVideo,
	 (LPVOID *)&pBasicVideo);

 // 幅と高さを取得します
 long height, width;

 pBasicVideo->get_VideoHeight(&height);
 pBasicVideo->get_VideoWidth(&width);

 printf("width=%d, height=%d\n", width, height);

 // 資源を解放
 pBasicVideo->Release();

 pMediaControl->Release();
 pGraphBuilder->Release();

 CoUninitialize();

 return 0;
}