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

📄 mp3.cc

📁 linux下的flash播放器源程序
💻 CC
字号:
#include "swf.h"#include <unistd.h>#include <fcntl.h>#ifdef RCSIDstatic char *rcsid = "$Id: mp3.cc,v 1.1 2003/09/08 19:41:59 jasonk Exp $";#endif//// MP3 tables//static int vertab[4]={2,3,1,0};static int freqtab[4]={44100,48000,32000};static int ratetab[2][3][16]={  {    {  0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448,  0},    {  0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384,  0},    {  0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,  0},  },  {    {  0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,  0},    {  0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,  0},    {  0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,  0},  },};//// The Decompressor//// ConstructorMp3::Mp3(unsigned char *buffer, int len, long flags){    this->src = buffer;    this->pos = 0;    this->len = len;    int fd = open("/tmp/data.mp3", O_WRONLY|O_CREAT|O_TRUNC, 0666);    if (fd >= 0) {	if (write(fd, buffer, len) != len)	    perror("write mp3 data");	close(fd);    } else {	perror("/tmp/data.mp3");    }}voidMp3::Decompress(short *dst, long n){    int iFrameCount = 0;    pos = 0;    for (;;) {	// Get the MP3 frame header	U8  hdr[4];	for (int i=0; i<4; i++)	    hdr[i] = src[pos++];	// Decode the MP3 frame header	int ver     = vertab[((hdr[1] >> 3) & 3)];	int layer   = 3 - ((hdr[1] >> 1) & 3);	int pad     = (hdr[2] >>1 ) & 1;	int stereo  = ((hdr[3] >> 6) & 3) != 3;	int freq    = 0;	int rate    = 0;	if (hdr[0] != 0xFF || hdr[1] < 0xE0 || ver==3 || layer != 2) {	    // bad MP3 header	    printf("\t\tBAD MP3 FRAME HEADER\n");	    break;	} else {	    freq = freqtab[(hdr[2] >>2 ) & 3] >> ver;	    rate = ratetab[ver ? 1 : 0][layer][(hdr[2] >> 4) & 15] * 1000;	    if (!freq || !rate) {		// bad MP3 header		printf("\t\tBAD MP3 FRAME HEADER\n");		break;	    }	}	// Get the size of a decoded MP3 frame	int iDecodedFrameSize = (576 * (stereo + 1));	if (!ver)	    iDecodedFrameSize *= 2;	// Get the size of this encoded MP3 frame	int iEncodedFrameSize = ((ver ? 72 : 144) * rate) / freq + pad - 4;	char* ppszMpegVer[4] = {"1","2","2.5","3?"};	printf("Frame%d: MPEG%s Layer%d %dHz %s %dbps size:Encoded:%d Decoded:%d\n",	       iFrameCount, ppszMpegVer[ver], layer+1,	       freq, stereo ? "stereo" : "mono", rate,	       iEncodedFrameSize, iDecodedFrameSize);	// Decode the MP3 frame	//DecodeMp3Frame(&m_fileBuf[m_filePos], iEncodedFrameSize, iDecodedFrameSize);	// Move to the next frame	iFrameCount++;	if (pos + iEncodedFrameSize >= len)	    break;	pos += iEncodedFrameSize;    }}

⌨️ 快捷键说明

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