⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdxgraph.h

📁 陆其明的实务精选中附带光盘中的视频聊天源代码
💻 H
字号:
//
// CDXGraph.h
//

#ifndef __H_CDXGraph__
#define __H_CDXGraph__

// Filter graph notification to the specified window
#define WM_GRAPHNOTIFY  (WM_USER+20)

#include <streams.h>
#include "CMsgStation.h"

class CDXGraph : public CMsgStation
{
private:
	IGraphBuilder *     mGraph;
	IMediaControl *		mMediaControl;
	IMediaEventEx *		mEvent;
	IBasicVideo *		mBasicVideo;
	IBasicAudio *		mBasicAudio;
	IVideoWindow  *		mVideoWindow;
	IMediaSeeking *		mSeeking;

	DWORD				mObjectTableEntry;

	// For fast reference!
	enum {GS_Stopped, GS_Paused, GS_Running} mGraphState;                

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
	BOOL AddFilter(IBaseFilter * inFilter, LPCWSTR inName);

	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);

	BOOL SetSyncSource(IBaseFilter * inFilter);
	BOOL SetDefaultSyncSource(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);

	// When using VMR, it's reliable!
	BOOL GetCurrentImage(const char * inFile);

private:
	void AddToObjectTable(void) ;
	void RemoveFromObjectTable(void);
	
	BOOL QueryInterfaces(void);
};

#endif // __H_CDXGraph__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -