資源簡介
基于韋東山三期視頻第一個項目,在此基礎(chǔ)上添加了 MP3 播放器,可以播放大多數(shù) MP3 文件,播放頁面有音量控制,進(jìn)度條以及歌曲名等
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
/*
?*?This?is?a?private?message?structure.?A?generic?pointer?to?this?structure
?*?is?passed?to?each?of?the?callback?functions.?Put?here?any?data?you?need
?*?to?access?from?within?the?callbacks.
?*/
struct?PcmFmtParams
{
????snd_pcm_access_t?eAccessMod;
????unsigned?int?eFmtMod;
????unsigned?int?dwSampRate;
????unsigned?int?dwChannels;
????unsigned?char?const?*pucDataStart;
????unsigned?long?dwDataLength;
};
struct?IDxVxHeader
{
????unsigned?char?aucIDx[3];?????/*?保存的值比如為“ID3“表示是ID3V2?*/
????unsigned?char?ucVersion;?????/*?如果是ID3V2.3則保存3如果是ID3V2.4則保存4?*/
????unsigned?char?ucRevision;????/*?副版本號?*/
????unsigned?char?ucFlag;????????/*?存放標(biāo)志的字節(jié)?*/
????unsigned?char?aucIDxSize[4];?/*?整個?IDxVx?的大小,除去本結(jié)構(gòu)體的?10?個字節(jié)?*/
????/*?只有后面?7?位有用?*/
};
struct?DataframeHeader
{
unsigned?int?bzframeSyncFlag1:8;???/*?全為?1?*/
unsigned?int?bzProtectBit:1;???????/*?CRC?*/
unsigned?int?bzVersionInfo:4;??????/*?包括?mpeg?版本,layer?版本?*/
unsigned?int?bzframeSyncFlag2:3;???/*?全為?1?*/
unsigned?int?bzPrivateBit:1;???????/*?私有?*/
unsigned?int?bzPaddingBit:1;??????/*?是否填充,1?填充,0?不填充
layer1?是?4?字節(jié),其余的都是?1?字節(jié)?*/
unsigned?int?bzSampleIndex:2;?????/*?采樣率索引?*/
unsigned?int?bzBitRateIndex:4;????/*?bit?率索引?*/
unsigned?int?bzExternBits:6;??????/*?版權(quán)等,不關(guān)心?*/
unsigned?int?bzCahnnelMod:2;??????/*?通道
*?00?-?Stereo?01?-?Joint?Stereo
*?10?-?Dual???11?-?Single
*/
};
#define?DebugPrintf?printf
static?snd_pcm_t?*g_ptPlaybackHandle;
static?struct?PcmFmtParams?g_tMp3PcmFmtParams;
static?int?g_aiMP3BitRateIndex[]?=?{
0?32?40?48?56?64?80?96?112?128?160?192?224?256?320?0
};
static?int?g_aiMP3SampleRateIndex[]?=?{
44100?48000?32000?0
};
static?int?decode(unsigned?char?const?*?unsigned?long);
static?int?SetMp3OutPcmFmt(void);
static?snd_pcm_t?*OpenPcmDev(char?*strDevName?snd_pcm_stream_t?eSndPcmStream);
static?int?SetHarwareParams(snd_pcm_t?*ptPcmHandle?struct?PcmFmtParams?*ptPcmHWParams);
static?int?SkipIDxVxContents(struct?IDxVxHeader?*ptIDxVxHeader);
static?int?GetPlayTimeForFile(unsigned?char?*ptDataframeIndex?int?iFileSize);
int?main(int?argc?char?*argv[])
{
????unsigned?char?*pucFd;
????int?iMp3Fd;
????int?iError?=?0;
????struct?stat?tMp3FileStat;
struct?IDxVxHeader?*ptIDxVxHeader;
int?iSkipSize?=?0;
int?iRealPcmDataSize?=?0;
int?iPlayTime?=?0;
??
????if?(argc?!=?2){
?? ??DebugPrintf(“Usage?\n“);
?? ??DebugPrintf(“wav?\n“);
?? ??return?-1;
????}
????iError?=?SetMp3OutPcmFmt();
if(iError){
DebugPrintf(“SetMp3OutPcmFmt?error\n“);
return?-1; ?????
}
????iMp3Fd?=?open(argv[1]?O_RDONLY);
????if(iMp3Fd?0){
?? ??DebugPrintf(“Can‘t?open?file?%s\n“?argv[1]);
?? ??return?-1;
????}
??
????iError?=?fstat(iMp3Fd?&tMp3FileStat);
????if(iError){
?? ??close(iMp3Fd);
?? ??DebugPrintf(“Can‘t?get?file?%s?stat\n“?argv[1]);
?? ??return?-1;
????}
??
????/*?映射數(shù)據(jù)?*/
????pucFd?=?mmap(0?tMp3FileStat.s
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2196??2016-08-07?19:39??項目打包\alsa-sound\wav.c
?????文件???????13962??2016-08-10?22:29??項目打包\alsa-sound\minimad.c
?????文件????????9959??2016-08-09?19:45??項目打包\alsa-sound\miniplay.c
?????目錄???????????0??2016-08-12?09:26??項目打包\alsa-sound\
?????目錄???????????0??2016-08-12?09:24??項目打包\
?????目錄???????????0??2016-08-12?09:24??項目打包\USB\
?????文件?????????200??2016-03-07?01:41??項目打包\USB\Makefile
?????文件???????????0??2016-08-01?17:15??項目打包\USB\Module.symvers
?????文件????????3310??2016-08-01?17:29??項目打包\USB\usb.c
?????文件???????85610??2016-03-08?23:02??項目打包\USB\usb.ko
?????文件?????????456??2016-03-08?22:24??項目打包\USB\usb.mod.c
?????文件???????11152??2016-03-08?22:24??項目打包\USB\usb.mod.o
?????文件???????75376??2016-03-08?23:02??項目打包\USB\usb.o
?????目錄???????????0??2016-08-12?09:21??項目打包\digital_book\
?????文件??????267616??2016-07-17?19:47??項目打包\digital_book\HZK16
?????文件????????1113??2016-07-21?20:48??項目打包\digital_book\Makefile
?????文件?????????666??2016-07-18?09:33??項目打包\digital_book\Makefile.build
?????文件??????397302??2016-07-19?09:28??項目打包\digital_book\TB-ansi.txt
?????文件??????409316??2016-07-18?16:26??項目打包\digital_book\TB-utf16be.txt
?????文件??????409316??2016-07-18?16:26??項目打包\digital_book\TB-utf16le.txt
?????文件??????589899??2016-07-18?16:26??項目打包\digital_book\TB-utf8.txt
?????文件??????397302??2012-02-09?11:20??項目打包\digital_book\TB.txt
?????目錄???????????0??2016-08-12?09:21??項目打包\digital_book\display\
?????文件??????????37??2016-07-16?21:01??項目打包\digital_book\display\Makefile
?????文件?????????957??2016-07-17?19:56??項目打包\digital_book\display\dis_manag.c
?????文件????????4194??2016-07-22?17:57??項目打包\digital_book\display\fb.c
?????目錄???????????0??2016-08-12?09:21??項目打包\digital_book\draw\
?????文件??????????15??2016-07-18?10:17??項目打包\digital_book\draw\Makefile
?????文件???????11120??2016-07-22?18:15??項目打包\digital_book\draw\draw.c
?????文件?????????404??2016-07-16?22:20??項目打包\digital_book\draw_line_test.c
?????目錄???????????0??2016-08-12?09:21??項目打包\digital_book\encoding\
............此處省略1459個文件信息
評論
共有 條評論