• 大小: 40.93MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-17
  • 语言: 其他
  • 标签: jz440  

资源简介

基于韦东山三期视频第一个项目,在此基础上添加了 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个文件信息

评论

共有 条评论

相关资源