📄 mmutils.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 + -