ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

DuerOS-Light-SDK-v1.1.0/duer-os-light/external/speex/wavfmt/wavfmt.h

Committer:
TMBOY
Date:
2017-07-18
Revision:
47:9e361da97763

File content as of revision 47:9e361da97763:

#ifndef WAVFMT_H
#define WAVFMT_H

#ifdef __cplusplus
extern "C" {
#endif


typedef struct {
    char               chunkID[4];
    long               chunkSize;
} ChunkHeader;


#define RiffID "RIFF"  /* chunk ID for RIFF Chunk */
#define RIFF_FORMAT  "WAVE" 

typedef struct {
    char               chunkID[4]; //'RIFF'
    long               chunkSize;
    char               RiffFmt[4];   //'WAVE' 
} RiffChunk;



#define WAVE_FORMAT_PCM             0X01
#define WAVE_CHANNEL_MONO         1
#define WAVE_CHANNEL_STEREO      2



#define OFFSET_FMT_CHK   sizeof(RiffChunk)
#define FormatID "fmt "    /* chunkID for Format Chunk. NOTE: There is a space at the end of this ID. */

typedef struct {
    char               chunkID[4];
    long               chunkSize;
    short              wFormatTag;
    unsigned short wChannels;
    unsigned long  dwSamplesPerSec;
    unsigned long  dwAvgBytesPerSec;
    unsigned short wBlockAlign;
    unsigned short wBitsPerSample;
    /* Note: there may be additional fields here, depending upon wFormatTag. */
    
} FormatChunk;


#define OFFSET_DATA_CHK   (OFFSET_FMT_CHK + sizeof(FormatChunk))
#define DataID "data"  /* chunk ID for data Chunk */

typedef struct {
    char               chunkID[4];
    long               chunkSize;

    unsigned char  waveformData[];
} DataChunk;


#define ListID "list"  /* chunk ID for list Chunk */

typedef struct {
    char               chunkID[4];      /* 'list' */
    long               chunkSize;   /* includes the Type ID below */
    char               typeID[];     /* 'adtl' */
} ListHeader;


#define WAVE_HEADER_SIZE (OFFSET_DATA_CHK + sizeof(DataChunk))


int wavfmt_remove_header(FILE *pFile);
int wavfmt_add_riff_chunk(FILE *pFile, long size);
int wavfmt_add_fmt_chunk(FILE *pFile, unsigned short wChannels, unsigned long  dwSamplesPerSec, unsigned long  dwAvgBytesPerSec, unsigned short wBitsPerSample);
int wavfmt_add_data_chunk_header(FILE *pFile, long size);


#ifdef __cplusplus
}
#endif


#endif