#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();
};