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

📄 ad_mp3lib.c

📁 自己移植的linux下的流媒体播放器原代码,支持mms协议,支持ftp和http协议.
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "config.h"#ifdef USE_MP3LIB#include "ad_internal.h"static ad_info_t info = {	"MPEG layer-2, layer-3",	"mp3lib",	"Nick Kurshev",	"mpg123",	"Optimized to MMX/SSE/3Dnow!"};LIBAD_EXTERN(mp3lib)#include "../mp3lib/mp3.h"extern int fakemono;static sh_audio_t* dec_audio_sh=NULL;// MP3 decoder buffer callback:int mplayer_audio_read(char *buf,int size){  return demux_read_data(dec_audio_sh->ds,buf,size);}static int preinit(sh_audio_t *sh){  sh->audio_out_minsize=32*36*2*2; //4608;  return 1;}static int init(sh_audio_t *sh){  // MPEG Audio:  dec_audio_sh=sh; // save sh_audio for the callback://  MP3_Init(fakemono,mplayer_accel,&mplayer_audio_read); // TODO!!!#ifdef USE_FAKE_MONO  MP3_Init(fakemono);#else  MP3_Init();#endif  MP3_samplerate=MP3_channels=0;  sh->a_buffer_len=MP3_DecodeFrame(sh->a_buffer,-1);  if(!sh->a_buffer_len) return 0; // unsupported layer/format  sh->channels=2; // hack  sh->samplesize=2;  sh->samplerate=MP3_samplerate;  sh->i_bps=MP3_bitrate*(1000/8);  MP3_PrintHeader();  return 1;}static void uninit(sh_audio_t *sh){}static int control(sh_audio_t *sh,int cmd,void* arg, ...){    switch(cmd)    {      case ADCTRL_RESYNC_STREAM:          MP3_DecodeFrame(NULL,-2); // resync          MP3_DecodeFrame(NULL,-2); // resync          MP3_DecodeFrame(NULL,-2); // resync	  return CONTROL_TRUE;      case ADCTRL_SKIP_FRAME:	  MP3_DecodeFrame(NULL,-2); // skip MPEG frame	  return CONTROL_TRUE;    }  return CONTROL_UNKNOWN;}static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen){   return MP3_DecodeFrame(buf,-1);}#endif

⌨️ 快捷键说明

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