+ All Categories
Home > Engineering > Mp3 Encoding Core Implementation

Mp3 Encoding Core Implementation

Date post: 08-Aug-2015
Category:
Upload: liu-willow-cheng
View: 133 times
Download: 2 times
Share this document with a friend
12
MP3 ENCODER CORE IMPLEMENTATION Tianyu Su Liu Cheng University of Ottawa
Transcript
  1. 1. MP3 ENCODER CORE IMPLEMENTATION Tianyu SuLiu Cheng University of Ottawa
  2. 2. SUMMARY MP3 is originally developed by Fraunhofer IIS partly under EUREKA project EU147, Digital Audio Broadcasting (DAB). It is then adopted as ISO- MPEAudioLayer - 3, 1991 (developed followed by Layer 1 and 2). MP3 FILE STRUCTURE IS DIVIDED BY 3 PARTS. TAG.V2FrameTAG.V1 TAG.V2 * Version * Reversion * Flag etc TAG.V1 * Title * Artist * Album etc Frame * IntBitrate * IntFrequency * IntLayer etc University of Ottawa
  3. 3. PRINCIPLES University of Ottawa Step 1: Subband Filtering Down sampling and take advantage of polyphase filterbank
  4. 4. PRINCIPLES University of Ottawa Step 2: Psychoacoustic Analysis Take into account of Threshold in Quiet, Frequency Masking and Temporal Masking
  5. 5. PRINCIPLES University of Ottawa Step 3: 18 Point MDCT Use previous analysis to decide Window Mode and reduce Noise Perception
  6. 6. PRINCIPLES University of Ottawa Step 4: Quantization & Bit Allocation Allocate bits and apply Huffman coding
  7. 7. APPLICATIONS University of Ottawa KEY CODES IN SHINE MP3 ENCODER PROGRAM THIS IS PART OF SHINE FIXED-POINT MP3 ENCODER LIBRARY OPEN PROJECT ("libshine-fxp") libshine-fxp_20070104/ libshine-fxp / types.h types.c bitstream.h bitstream.c Main.c Layer3.h Layer3.c L3subband.h L3subband.c L3mdct.h L3mdct.c L3loop.h L3loop.c L3bitstream.h L3bitstream.c
  8. 8. APPLICATIONS University of Ottawa KEY CODES IN SHINE MP3 ENCODER PROGRAM types.h typedef struct { time_t start_time; // define start time of encoding wave_t wave; // remain the head information of source before encoding mpeg_t mpeg; // generated head information after encoding /* These two app-supplied routines are used to read and write data */ int (*get_pcm)(short buffer[2][samp_per_frame], void *config_in); int (*write_mp3)(long bytes, void *buffer, void *config_in); } config_t; bitstream.h typedef struct bit_stream_struc { FILE *pt; // pointer to bit stream unsigned char *buf; // bit stream buffer int mode; /* bit stream open in read or write mode */ } bitstream_t;
  9. 9. APPLICATIONS University of Ottawa KEY CODES IN SHINE MP3 ENCODER PROGRAM Main.c #include "Layer3.h" int main(int argc, char **argv) { wave_open(&config); /* set up the read PCM stream and write MP3 stream functions */ config.get_pcm=&wave_get; config.write_mp3=&write_mp3; L3_compress(&config); wave_close(&config); }
  10. 10. APPLICATIONS University of Ottawa KEY CODES IN SHINE MP3 ENCODER PROGRAM Layer3.c #include "L3subband.h #include "L3mdct.h #include "L3loop.h #include "L3bitstream.h" void L3_compress(config_t *config) { for(gr=0; gr
  11. 11. DEMO University of Ottawa Shine MP3 Encoder Open Project
  12. 12. REFERENCES University of Ottawa 1. Shine Fixed-pt MP3 Encoder Library: Project Web Hosting - Open Source Software(n.d.). Retrieved November 17, 2014, from http://libshine- fxp.sourceforge.net 2. Brandenburg K. MP3 and AAC explained[C]//Audio Engineering Society Conference: 17th International Conference: High-Quality Audio Coding. Audio Engineering Society, 1999. 3. . MP3 [D]. , 2002. 4. Noll P. MPnn H G. Genesis of the MP3 audio coding standard[J]. Consumer Electronics, IEEE Transactions on, 2006, 52(3): 1043-1049EG digital audio coding[J]. Signal Processing Magazine, IEEE, 1997, 14(5): 59-81. 5. Herre J, Purnhagen H, Breebaart J, et al. The reference model architecture for MPEG spatial audio coding[C]//Audio Engineering Society Convention Paper. 2005, 6447: 28-31.

Recommended