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

📄 multimedia.h

📁 EVC环境下用SDK开发WINCE的应用程序
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
// Multimedia.h
 
#ifndef __H_MULTIMEDIA__
#define __H_MULTIMEDIA__

#include "dshow.h"

// Filter graph notification to the specified window
#define WM_MULTIMEDIA_NOTIFY  (WM_USER + 101)

class CMultimedia
{
private:
	IGraphBuilder *m_pGraphBuilder;  
	IMediaControl *m_pMediaControl;
	IMediaEventEx *m_pMediaEvent;
	IBasicVideo *m_pBasicVideo;
	IBasicAudio *m_pBasicAudio;;
	IVideoWindow *m_pVideoWindow;
	IMediaSeeking *m_pMediaSeeking;
	IMediaTypeInfo *m_pMediaTypeInfo;

	DWORD m_dwObjectTableEntry; 

public:
	CMultimedia();
	virtual ~CMultimedia();

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 wParam, LPARAM lParam);

	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 GetVideoSize(long &lWidth, long &lHeight);

	// 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_MULTIMEDIA__

⌨️ 快捷键说明

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