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

📄 mmutils.h

📁 神龙卡 SDK_84xx_DShow_145_02.zip 这个是 windows 上二个是linux
💻 H
字号:
#ifndef __MMUTILS_H_
#define __MMUTILS_H_

#include "constants.h"

/*
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


typedef struct
{
	int iBitsPerSample;
	int iSampleRate;
	int iNumAudioChannels;
} PcmAudio;

typedef struct
{
	int bIsAc3;
	int bIsPcm;
	int bIsDts;
	int bIsMpeg1;
	PcmAudio pcmAudio;  // if audio type is PCM, this struct will be used
}  AudioSubtype;

typedef struct
{
	int SR32, SR441, SR48;
} SampleRateTab;

static BYTE quantization_table[] = { 16, 20, 24, 16 };
static DWORD pcm_sample_rate_table[] = { 48000, 96000, 48000, 48000 };

static SampleRateTab Ac3FrameSize[38] = // in 1 word = 2 bytes, 32kHz, 441kHz, 48kHz
{ 
	{96, 69, 64},       {96, 70, 64},       {120, 87, 80},      {120, 88, 80},
	{144, 104, 96},     {144, 105, 96},     {168, 121, 112},    {168, 122, 112},
	{192, 139, 128},    {192, 140, 128},    {240, 174, 160},    {240, 175, 160},
	{288, 208, 192},    {288, 209, 192},    {336, 243, 224},    {336, 244, 224},
	{384, 278, 256},    {384, 279, 256},    {480, 348, 320},    {480, 349, 320},
	{576, 417, 384},    {576, 418, 384},    {672, 487, 448},    {672, 488, 448},
	{768, 557, 512},    {768, 558, 512},    {960, 696, 640},    {960, 697, 640},
	{1152, 835, 768},   {1152, 836, 768},   {1344, 975, 896},   {1344, 976, 896},
	{1536, 1114, 1024}, {1536, 1115, 1024}, {1728, 1253, 1152}, {1728, 1254, 1152},
	{1920, 1393, 1280}, {1920, 1394, 1280}
};

static USHORT BitRate[4][15] =
{
	// reserved
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	// layer III
	0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,
	// layer II
	0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 ,
	// layer I
	0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448
};

////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////

BOOL IsPESFile(const unsigned char *pSearchBuffer, unsigned long dwSearchBufferSize);

MM_AUDIO_FORMAT IdentifyAudioSubtype(unsigned char* pBuffer, unsigned long dwLength, 
												 AudioSubtype* audioSubtype, int iStreamType = FT_UNKNOWN);
MM_AUDIO_FORMAT IdentifyAudioSubtype(char* pSourceFile, AudioSubtype* audioSubtype,
												 int iStreamType = FT_UNKNOWN);

UINT IdentifyHeader(const unsigned char *pSearchBuffer, unsigned long dwSearchBufferSize);
UINT IdentifyHeader(char *pFileName);

UINT CheckMPG4type(char *pFileName);

DWORD GetAudioFrequency(char *pFile, int iStreamType = FT_UNKNOWN);
DWORD GetAudioFrequency(unsigned char* pBuffer, unsigned long lLength, int iStreamType = FT_UNKNOWN);

DWORD GetAc3AudioFrequency(char *pFileName);
DWORD GetAc3AudioFrequency(unsigned char* pBuffer, unsigned long dwLength);

INT GetAc3AudioFrameSize(char* pFileName);
INT GetAc3AudioFrameSize(const unsigned char* pBuffer, unsigned long dwLength);

void ReverseBytes(unsigned char *pBuffer, unsigned long dwLength);
BOOL IsAc3Reverse(char* pFile);
BOOL IsAc3Reverse(const unsigned char* pBuffer, unsigned long dwBufferSearchSize);

INT GetTSProgramCounter(char* pFile);
INT GetTSProgramCounter(const unsigned char* pBuffer, unsigned long dwLength);

void GetAVChannelCounter(char* pFile, int* iAudio, int* iVideo, int iStreamType = FT_UNKNOWN);
void GetAVChannelCounter(const unsigned char* pBuffer, unsigned long dwLength, int* iAudio, 
								 int* iVideo, int iStreamType = FT_UNKNOWN);

BOOL SetFirstAccessUnitPtr(const unsigned char* pBuffer, unsigned long dwLength, WORD* firstAccessPointer);

void MMSleep(DWORD milliSeconds);


////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Defines basic file I/O functions

//#define _ANSI_FILE_

#define MM_RDONLY     0x1
#define MM_WRONLY     0x2
#define MM_RDWR       0x4
#define MM_CREAT      0x8
#define MM_BINARY     0x10
// used by _open(...)
#define MM_S_IREAD    0x40
#define MM_S_IWRITE   0x80

#if defined(_LINUXAPPS_) || defined(_ANSI_FILE_)
#define MM_FILE_HANDLE  FILE*
#else
#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
#define MM_FILE_HANDLE  INT
#endif

MM_FILE_HANDLE MMOpenFile(char* file, int options);
INT            MMCloseFile(MM_FILE_HANDLE fileHandle);
LONG           MMReadFile(MM_FILE_HANDLE fileHandle, void* pBuffer, UINT size);
LONG           MMWriteFile(MM_FILE_HANDLE fileHandle, const void* pBuffer, UINT size);
LONGLONG       MMSeekFile(MM_FILE_HANDLE fileHandle, LONGLONG offset, INT origin);
LONGLONG       MMTellFile(MM_FILE_HANDLE fileHandle);
INT            MMChSize(MM_FILE_HANDLE fileHandle, LONG size);
void           MMRewindFile(MM_FILE_HANDLE fileHandle);


/*
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif

⌨️ 快捷键说明

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