资源简介
基于韦东山三期视频第一个项目,在此基础上添加了 MP3 播放器,可以播放大多数 MP3 文件,播放页面有音量控制,进度条以及歌曲名等
代码片段和文件信息
#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; /* 存放标志的字节 */
unsigned char aucIDxSize[4]; /* 整个 IDxVx 的大小,除去本结构体的 10 个字节 */
/* 只有后面 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 字节,其余的都是 1 字节 */
unsigned int bzSampleIndex:2; /* 采样率索引 */
unsigned int bzBitRateIndex:4; /* bit 率索引 */
unsigned int bzExternBits:6; /* 版权等,不关心 */
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;
}
/* 映射数据 */
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个文件信息
评论
共有 条评论