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

📄 sampmp3.h

📁 Intel提供的在Sitsang等嵌入式开发平台上使用Linux操作系统
💻 H
字号:
/******************************************************************************//               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 */

⌨️ 快捷键说明

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