?? sampmp3.h
字號(hào):
/******************************************************************************// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright (C) 2003 Intel Corporation. All Rights Reserved.//// Description:// Intel(R) Integrated Performance Primitives Sample Code MP3 Encoder// // Function List:// MP3 Encoder Definitions******************************************************************************/#ifndef _SAMPMP3_H_#define _SAMPMP3_H_#include "sampdefs.h" /* General sample code header file*/#include "ippAC.h" /* Audio Codec IPP external header file*/#ifdef __cplusplusextern "C" {#endif#define MP3_MPEG1_ID 1 /* id =1, MPEG1 */#define MP3_MPEG2_ID 0 /* id =0, MPEG2 */#define BITSPERBYTE_NUM 8 /* 8 bits per byte */#define MP3_MAXGRANNULE_NUM 2 /* Maximum number of // granule_num per channel */#define MP3_MAXCHANNEL_NUM 2 /* Maximum number of channel_num */#define MP3_SCFBANDGROUP_NUM 4 /* Number of scale_factor bands // group per channel */#define MP3_MAINDATABUF_SIZE 4096 /* Size of buffer used to // store main data */#define MP3_SAMPLERATE_NUM 3 /* Sample rate index (0 to 2) */#define MP3_BITRATE_NUM 15 /* Bit rate index (0 to 14) */#define MP3_STREAMBUF_SIZE 1024*8 /* Size of output bitstream // buffer */#define MP3_MAXGRANPERFRAME_NUM 4 /* Maximum number of granule_num // in one frame */#define MP3_HEADERSIDEINFOBUF_SIZE 324 /* Size of header and side // information buffer */#define MP3_MAXBUFFEREDFRAME_NUM 9 /* Maximum number of frame // for buffer */#define MP3_FRAME_LEN 1152 /* One channel PCM frame // length for MPEG1 */ #define MP3_PQMFDELAY_LEN 1111 /* PQMF delay length = 576+55+480 */#define MP3_WORKBUF_SIZE 6300 /* Work buffer length */#define MP3_PQMFPSYDELAY_LEN 311 /* Delay between PQMF and Psy */#define MP3_SUBBAND_NUM 32 /* Number of subband_num */#define MP3_INPUTPCMBUF_SIZE ((MP3_PQMFDELAY_LEN+MP3_FRAME_LEN)\ *MP3_MAXCHANNEL_NUM) /* Size of input PCM buffer */ /************************// Status structure *************************/typedef struct _mp3_enc_state{ int channel_num; /* channel number (1:mono, 2:stereo) */ int sample_rate; /* sample rate index (0 to 14) */ int bitrate_index; /* bit rate index (0 to 2) */ int meanbits_num; /* average Main Data bits for one frame */ IppMP3SideInfo side_info[MP3_MAXGRANNULE_NUM][MP3_MAXCHANNEL_NUM]; /* buffer for side information */ IppMP3EncPsychoAcousticModel2State psy_state[MP3_MAXGRANPERFRAME_NUM]; /* buffer for Psychoacoustic // state information */ IppMP3PsychoacousticModelTwoAnalysis psy_info[MP3_MAXGRANPERFRAME_NUM]; /* buffer for Psychoacoustic // output information */ IppMP3FrameHeader frame_header; /* MP3 frame header */ Ipp8s scale_factor[IPP_MP3_SF_BUF_LEN*MP3_MAXGRANNULE_NUM*MP3_MAXCHANNEL_NUM]; /* Table of scalefactors */ int scfsi[MP3_SCFBANDGROUP_NUM * MP3_MAXCHANNEL_NUM]; /* Scalefactor select information */ int is_sfb_bound[3*MP3_MAXGRANNULE_NUM]; /* Is boundary */ IppMP3BitReservoir bit_resv; /* Bit reservoir information */ Ipp32s overlap_buf[MP3_FRAME_LEN]; /* overlap buffer used in MDCT */ Ipp16s pcm_state_buf[MP3_INPUTPCMBUF_SIZE]; /* buffer to store input PCM */ Ipp32s work_buf[MP3_WORKBUF_SIZE]; /* work buffer */ int rest; /* rest bits record when decide padding // bits for current frame */ int frame_byte_dif; /* different bytes for one frame, a const // when sample rate, bit rate are const */ int bytes_per_frame; /* bytes every frame used */ int bits_per_frame; /* bits every frame used */ Ipp8u maindata_buf[MP3_MAINDATABUF_SIZE]; /* buffer for main data */ Ipp8u *cur_maindata_buf; /* pointer to current main data */ Ipp8u hdsi_buf[MP3_HEADERSIDEINFOBUF_SIZE]; /* buffer for header and side info */ Ipp8u *hdsi_buf_ptr; /* pointer to current header // and side info*/ int hdsi_len; /* length of header and side info */ int bufferedframe_index; /* index of next frame to be buffered */ int bufferedframe_num; /* number of frame should be buffered */ Ipp8u *mdframe_buf_ptr[MP3_MAXBUFFEREDFRAME_NUM]; /* pointer to every frame's main data */ int mdframe_buf_len[MP3_MAXBUFFEREDFRAME_NUM]; /* buffer for main data length // of every frame */ int frame_len[MP3_MAXBUFFEREDFRAME_NUM]; /* real length for data between // two syc words */} mp3_enc_state;/* Tables */extern const int mpeg1_bitrate_table[MP3_BITRATE_NUM];extern const int mpeg1_samplerate_table[MP3_SAMPLERATE_NUM];extern const int mpeg1_slot_table[MP3_SAMPLERATE_NUM][MP3_BITRATE_NUM];extern const int mpeg1_bitrate_table[MP3_BITRATE_NUM];extern const int mpeg1_samplerate_table[MP3_SAMPLERATE_NUM];/* Funcitons */extern sample_status encoder_init_alloc_mp3(sample_sound *sound, sample_bitstream *stream_buf, mp3_enc_state *enc_state);extern sample_status encode_mp3(sample_sound *sound, sample_bitstream *stream_buf, mp3_enc_state *enc_state);extern sample_status encoder_free_mp3(sample_sound *sound, sample_bitstream *stream_buf);extern sample_status alloc_align_mem_mp3(void **buf_addr_ptr, int size, int alignstatus);extern sample_status free_align_mem_mp3(void **buf_addr_ptr);extern void buffer_set_audio(Ipp32s val, Ipp32s * dst, int len);extern void buffer_copy_audio(const Ipp32s * src, Ipp32s * dst, int len);extern void encoder_flushbitstream_mp3(mp3_enc_state *enc_state, sample_bitstream *stream_buf);#ifdef __cplusplus}#endif#endif /* #ifndef _SAMPMP3_H_ *//* EOF */
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -