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

📄 common.h

📁 播放被H264_AAC所压缩的avi文件的播放器。
💻 H
字号:

#pragma once

/*define global const variable*/

//Video FORCC
#define	VIDEO_FORCC_H264			MAKEFOURCC('H', '2', '6', '4')
#define	VIDEO_FORCC_h264			MAKEFOURCC('h', '2', '6', '4')

//Audio tag
#define AUDIO_TAG_AAC			0xFF
#define AUDIO_TAG_AACPLUS		0xFB		//	unknown

#define ERR_NONE			0
#define ERR_FAILED			-1
#define ERR_INVALID			-2
#define ERR_PARAMETER		-3
#define ERR_INIT			-4
#define ERR_PLAY			-5
#define ERR_STOP			-6
#define ERR_PAUSE			-7

#define WM_DISPLAY_TIME			WM_USER + 104

//define play state 
typedef enum
{
	NONE = 0, 
	READY, 
	BUFFERING, 
	PLAY, 
	PAUSE, 
	FORWARD, 
	REWIND,
}PlayState;

//define thread state
typedef enum
{
	THREAD_NONE,
	THREAD_RUNNING,
	THREAD_PAUSE,
	THREAD_STOP,
}ThreadState;

typedef struct
{
    WORD  NumberOfStreams;		        /* Number of data streams */

    /* video property */
	DWORD VideoTag;						/*video codec forcc*/
    DWORD Width;		                /* Width of video frame in pixels */
    DWORD Height;				        /* Height of video frame in pixels */
	DWORD VideoNumberOfFrames;			/* Number of video frame stored */
    double FramePerSec;					/* Number of video frame stored */

    /* audio property */
	WORD  AudioTag;						/*Audio codec type*/
	WORD  Channels; 
    DWORD SamplesPerSec; 
    DWORD AudioNumberOfFrames;			/* Number of audio frame stored */
    DWORD AudioLengthOfFrames;			/* Length of all audio frames stored */
	SHORT AudioExtraDataSize;			/* Size of Audio extra data */
	BYTE  AudioExtraData[2];			/* Audio extra data for aac decode */

	/* file information*/
	DWORD FileSize;						/*bytes*/
	DWORD TotalPlayTime;				/*seconds*/
}AVIHDR, FAR *LPAVIHDR;

typedef int (*TWriteFrameCB)(BYTE *lpData, DWORD &dwTime);

struct IMediaPlayer
{
	virtual int OnReadFrame(BYTE **lpData, DWORD &nTime)=0;
	virtual int OnReadAudio(BYTE **lpData, DWORD &nTime)=0;
};

⌨️ 快捷键说明

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