📄 ourmpegaudio.cpp
字号:
#include "MPEGaudio.h"MPEGaudio::MPEGaudio (void){ initialize();}MPEGaudio::~MPEGaudio(){}bool MPEGaudio::fillbuffer(uint32_t _size){ //printf("fillbuffer %d\n", _size); //int buflen = _buflen; if (_size > _buflen) { return false; } bitindex = 0; return true;}int MPEGaudio::findheader (uint8_t *frombuffer, uint32_t frombuffer_len, uint32_t *frameptr){ for (uint32_t skipped = 0; skipped <= frombuffer_len - 4; skipped++) { if (frombuffer[skipped] == 0xff && ((frombuffer[skipped + 1] & 0xe0) == 0xe0)) { _buffer = (unsigned char *)frombuffer + skipped; _buflen = frombuffer_len - skipped; if (loadheader()) { /* Fill the buffer with new data */ if (frameptr != NULL) { *frameptr = framesize; } return skipped; } } } return -1;}int MPEGaudio::decodeFrame (uint8_t *tobuffer, uint8_t *frombuffer, uint32_t fromlen){ //printf("DecodeFrame\n"); _buffer = (unsigned char *)frombuffer; _buflen = fromlen; if (loadheader() == false) {#if 1 printf("Couldn't load mp3 header - orig %d buflen %d\n", fromlen, _buflen);#endif#if 0 for (uint32_t ix = 0; ix < fromlen; ix += 8) { printf("%4d %02x %02x %02x %02x %02x %02x %02x %02x\n", ix, frombuffer[ix], frombuffer[ix + 1], frombuffer[ix + 2], frombuffer[ix + 3], frombuffer[ix + 4], frombuffer[ix + 5], frombuffer[ix + 6], frombuffer[ix + 7]); }#endif return fromlen - _buflen; } /* Fill the buffer with new data */ if(!fillbuffer(framesize-4)) return false; if(!protection) { getbyte(); // CRC, Not check!! getbyte(); } rawdata = (short *)tobuffer; rawdatawriteoffset = 0; if (layer == 3) extractlayer3(); else if (layer == 2) extractlayer2(); else if (layer == 1) extractlayer1();#if 0 printf("orig %d buflen %d framesize %d\n", fromlen, _buflen, framesize - 4);#endif return ((fromlen - _buflen) + (framesize - 4));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -