Newer
Older
PrismSoftware / ECTrainer2 / DShowMovie.h
#pragma once

#include <Windows.h>
#include <tchar.h>
#include <string>
#include <d3d9.h>
#include <dshow.h>
#include <Vmr9.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
#define SAFE_RELEASE(x) if (x) { x->Release(); x = NULL; }
#define CHECK(x) { if(((HRESULT)(x)) < 0) return false;  }

class DShowMovie {
	HWND _hWnd;
	LPDIRECT3D9				_pD3D;
	LPDIRECT3DDEVICE9		_pD3DDev;
	IGraphBuilder*			_pGB;
	IBaseFilter*			_pVMR9;
	IBaseFilter*			_pSource;
	ICaptureGraphBuilder2*	_pCGB2;
	IMediaControl*			_pMediaCont;
	IMediaEvent*			_pMediaEvent;
	IMediaPosition*			_pMediaPosition;

public:
	DShowMovie();
	~DShowMovie();
	bool InitDx(HINSTANCE hInstance, RECT dispRect);
	bool PlayMovie(std::wstring movie);
	bool StopMovie();
	bool IsPlaying();
	bool IsReachToEnd();
	double GetPlayPos();
	FILTER_STATE GetMovieState();
};