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

📄 wvpar.h

📁 AVS音频解码器源代码
💻 H
字号:
/*------------ Telecommunications & Signal Processing Lab --------------
                         McGill University

Routine:
  WVpar.h

Description:
  Declarations for WAVE file headers

Author / revision:
  P. Kabal  Copyright (C) 2003
  $Revision: 1.1.1.1 $  $Date: 2005/12/22 09:54:42 $

----------------------------------------------------------------------*/

#ifndef WVpar_h_
#define WVpar_h_

#include <libtsp/UTtypes.h>		/* typedef for uint2_t, etc */

/* Format codes purged of many compressed formats */
#define WAVE_FORMAT_UNKNOWN		(0x0000)
#define WAVE_FORMAT_PCM			(0x0001) 
#define WAVE_FORMAT_ADPCM		(0x0002)
#define WAVE_FORMAT_IEEE_FLOAT		(0x0003)
	/*  IEEE754: range (+1, -1]  */
	/*  32-bit/64-bit format as defined by */
	/*  MSVC++ float/double type */
#define WAVE_FORMAT_ALAW		(0x0006)
#define WAVE_FORMAT_MULAW		(0x0007)
#define WAVE_FORMAT_G723_ADPCM		(0x0014)
#define WAVE_FORMAT_DOLBY_AC2		(0x0030)
#define WAVE_FORMAT_GSM610		(0x0031)
#define WAVE_FORMAT_G721_ADPCM		(0x0040)
#define WAVE_FORMAT_G728_CELP		(0x0041)
#define WAVE_FORMAT_MSG723		(0x0042)	/* Not in MMREG.H */
#define WAVE_FORMAT_MPEG		(0x0050)
#define WAVE_FORMAT_MPEGLAYER3		(0x0055)
#define WAVE_FORMAT_G726_ADPCM		(0x0064)
#define WAVE_FORMAT_G722_ADPCM		(0x0065)

#define WAVE_FORMAT_EXTENSIBLE          (0xFFFE)	/* extensible format */
#define WAVE_FORMAT_DEVELOPMENT         (0xFFFF)

/* Speaker Positions */
#define WV_SPEAKER_FRONT_LEFT              0x1
#define WV_SPEAKER_FRONT_RIGHT             0x2
#define WV_SPEAKER_FRONT_CENTER            0x4
#define WV_SPEAKER_LOW_FREQUENCY           0x8
#define WV_SPEAKER_BACK_LEFT               0x10
#define WV_SPEAKER_BACK_RIGHT              0x20
#define WV_SPEAKER_FRONT_LEFT_OF_CENTER    0x40
#define WV_SPEAKER_FRONT_RIGHT_OF_CENTER   0x80
#define WV_SPEAKER_BACK_CENTER             0x100
#define WV_SPEAKER_SIDE_LEFT               0x200
#define WV_SPEAKER_SIDE_RIGHT              0x400
#define WV_SPEAKER_TOP_CENTER              0x800
#define WV_SPEAKER_TOP_FRONT_LEFT          0x1000
#define WV_SPEAKER_TOP_FRONT_CENTER        0x2000
#define WV_SPEAKER_TOP_FRONT_RIGHT         0x4000
#define WV_SPEAKER_TOP_BACK_LEFT           0x8000
#define WV_SPEAKER_TOP_BACK_CENTER         0x10000
#define WV_SPEAKER_TOP_BACK_RIGHT          0x20000

/* Reserved for future use */
#define WV_SPEAKER_RESERVED                0x7FFC0000

/* Any speaker configuration */
#define WV_SPEAKER_ALL                     0x80000000

#define WV_SPEAKER_KNOWN \
  ( WV_SPEAKER_FRONT_LEFT           | WV_SPEAKER_FRONT_RIGHT           | \
    WV_SPEAKER_FRONT_CENTER         | WV_SPEAKER_LOW_FREQUENCY         | \
    WV_SPEAKER_BACK_LEFT            | WV_SPEAKER_BACK_RIGHT            | \
    WV_SPEAKER_FRONT_LEFT_OF_CENTER | WV_SPEAKER_FRONT_RIGHT_OF_CENTER | \
    WV_SPEAKER_BACK_CENTER          | WV_SPEAKER_SIDE_LEFT             | \
    WV_SPEAKER_SIDE_RIGHT           | WV_SPEAKER_TOP_CENTER            | \
    WV_SPEAKER_TOP_FRONT_LEFT       | WV_SPEAKER_TOP_FRONT_CENTER      | \
    WV_SPEAKER_TOP_FRONT_RIGHT      | WV_SPEAKER_TOP_BACK_LEFT         | \
    WV_SPEAKER_TOP_BACK_CENTER      | WV_SPEAKER_TOP_BACK_RIGHT )
  

#ifdef WV_CHANNEL_MAP
#define NELEM(array)	((int) ((sizeof array) / (sizeof array[0])))
#define WV_N_CHANNEL_MAP NELEM(WV_ChannelMap)
static const unsigned long int WV_ChannelMap[] =
{
  WV_SPEAKER_FRONT_LEFT,           WV_SPEAKER_FRONT_RIGHT,
  WV_SPEAKER_FRONT_CENTER,         WV_SPEAKER_LOW_FREQUENCY,
  WV_SPEAKER_BACK_LEFT,            WV_SPEAKER_BACK_RIGHT,
  WV_SPEAKER_FRONT_LEFT_OF_CENTER, WV_SPEAKER_FRONT_RIGHT_OF_CENTER,
  WV_SPEAKER_BACK_CENTER,          WV_SPEAKER_SIDE_LEFT,
  WV_SPEAKER_SIDE_RIGHT,           WV_SPEAKER_TOP_CENTER,
  WV_SPEAKER_TOP_FRONT_LEFT,       WV_SPEAKER_TOP_FRONT_CENTER,
  WV_SPEAKER_TOP_FRONT_RIGHT,      WV_SPEAKER_TOP_BACK_LEFT,
  WV_SPEAKER_TOP_BACK_CENTER,      WV_SPEAKER_TOP_BACK_RIGHT
};
#endif

struct WV_GUID {
  uint2_t wFormatTag;
  uint1_t guidx[14];
};

#ifdef WAVEFORMATEX_SUBTYPE
static const struct WV_GUID WAVEFORMATEX_TEMPLATE =
{ 0x0000,
  { 0x00, 0x00,
    0x00, 0x00,
    0x10, 0x00,		/* In file byte order */
    0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
};
#define IS_VALID_WAVEFORMATEX_GUID(Guid) \
    (!memcmp(&WAVEFORMATEX_TEMPLATE.guidx, &Guid.guidx, 14))
#endif

/* Text flag used in the DISP chunk */
#define CF_TEXT		((uint4_t) 1)

struct WV_CKpreamb {
  char ckID[4];
  uint4_t ckSize;
};

struct WV_CKfmt {
  char ckID[4];
  uint4_t ckSize;
  uint2_t wFormatTag;		/* Format type */
  uint2_t nChannels;		/* Number of channels */
  uint4_t nSamplesPerSec;	/* Sample rate */
  uint4_t nAvgBytesPerSec;	/* nBlockAlign * nSamplesPerSec */
  uint2_t nBlockAlign;		/* Block size (bytes), multiple of nChannels */
/* End of common area */
  uint2_t wBitsPerSample;	/* Bits/sample: for WAVE_FORMAT_EXTENSIBLE,
                                   this is the sample container size */
/* Start of EXTENSIBLE part */
  uint2_t cbSize;		/* Number of bytes following */
  uint2_t wValidBitsPerSample;	/* Actual number of bits in each sample */
  uint4_t dwChannelMask;	/* Channel assignment mask */
  struct WV_GUID SubFormat;
};

struct WV_CKfact {
  char ckID[4];
  uint4_t ckSize;
  uint4_t dwSampleLength;
};

struct WV_CKdata {
  char ckID[4];
  uint4_t ckSize;
};

struct WV_CKRIFF {
  char ckID[4];
  uint4_t ckSize;
  char WAVEID[4];
  struct WV_CKfmt CKfmt;
  struct WV_CKfact CKfact;
  struct WV_CKpreamb CKdata;	/* Not including audio data */
};

struct WV_DISP {
  char ckid[4];
  uint4_t cksize;
  uint4_t type;
  const char *text;
};

struct WV_AFSP {
  char ckid[4];
  uint4_t cksize;
  char AFspID[4];
  const char *text;
};

#define WV_N_LIST_INFO	18	/* Maximum number of LIST/INFO items */
struct WV_LIST_INFO {
  char ckid[4];
  uint4_t cksize;
  char listid[4];
  int N;
  struct {
    char ckid[4];
    uint4_t cksize;
    const char *text;
  } listitem[WV_N_LIST_INFO];
};

#endif	/* WVpar_h_ */

⌨️ 快捷键说明

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