79 lines
2.0 KiB
C++
79 lines
2.0 KiB
C++
//
|
|
// CDXGraph.h
|
|
//
|
|
|
|
#ifndef __H_CDXGraph__
|
|
#define __H_CDXGraph__
|
|
|
|
// Filter graph notification to the specified window
|
|
#define WM_GRAPHNOTIFY (WM_USER+20)
|
|
|
|
class CDXGraph
|
|
{
|
|
private:
|
|
IGraphBuilder * mGraph;
|
|
IMediaControl * mMediaControl;
|
|
IMediaEventEx * mEvent;
|
|
IBasicVideo * mBasicVideo;
|
|
IBasicAudio * mBasicAudio;
|
|
IVideoWindow * mVideoWindow;
|
|
IMediaSeeking * mSeeking;
|
|
|
|
DWORD mObjectTableEntry;
|
|
|
|
public:
|
|
CDXGraph();
|
|
virtual ~CDXGraph();
|
|
|
|
public:
|
|
virtual bool Create(void);
|
|
virtual void Release(void);
|
|
virtual bool Attach(IGraphBuilder * inGraphBuilder);
|
|
|
|
IGraphBuilder * GetGraph(void); // Not outstanding reference count
|
|
IMediaEventEx * GetEventHandle(void);
|
|
|
|
bool ConnectFilters(IPin * inOutputPin, IPin * inInputPin, const AM_MEDIA_TYPE * inMediaType = 0);
|
|
void DisconnectFilters(IPin * inOutputPin);
|
|
|
|
bool SetDisplayWindow(HWND inWindow);
|
|
bool SetNotifyWindow(HWND inWindow);
|
|
bool ResizeVideoWindow(long inLeft, long inTop, long inWidth, long inHeight);
|
|
void HandleEvent(WPARAM inWParam, LPARAM inLParam);
|
|
|
|
bool Run(void); // Control filter graph
|
|
bool Stop(void);
|
|
bool Pause(void);
|
|
bool IsRunning(void); // Filter graph status
|
|
bool IsStopped(void);
|
|
bool IsPaused(void);
|
|
|
|
bool SetFullScreen(BOOL inEnabled);
|
|
bool GetFullScreen(void);
|
|
|
|
// IMediaSeeking
|
|
bool GetCurrentPosition(double * outPosition);
|
|
bool GetStopPosition(double * outPosition);
|
|
bool SetCurrentPosition(double inPosition);
|
|
bool SetStartStopPosition(double inStart, double inStop);
|
|
bool GetDuration(double * outDuration);
|
|
bool SetPlaybackRate(double inRate);
|
|
|
|
// Attention: range from -10000 to 0, and 0 is FULL_VOLUME.
|
|
bool SetAudioVolume(long inVolume);
|
|
long GetAudioVolume(void);
|
|
// Attention: range from -10000(left) to 10000(right), and 0 is both.
|
|
bool SetAudioBalance(long inBalance);
|
|
long GetAudioBalance(void);
|
|
|
|
bool RenderFile(const TCHAR * inFile);
|
|
bool SnapshotBitmap(const TCHAR * outFile);
|
|
|
|
private:
|
|
void AddToObjectTable(void) ;
|
|
void RemoveFromObjectTable(void);
|
|
|
|
bool QueryInterfaces(void);
|
|
};
|
|
|
|
#endif // __H_CDXGraph__
|