用Direct Sound为MP3解码器libmad播放输出

本文介绍如何在Windows XP下,利用VC++ 6.0为MP3解码器madplay添加Direct Sound播放输出,替代默认的WaveOut。首先介绍了libmad解码器,接着详细讲解了下载、配置、编译madplay的步骤,最后阐述了如何实现Direct Sound输出并测试播放功能。
摘要由CSDN通过智能技术生成

WIN32平台下madplay默认采用WaveOut播放输出,本文实现为其增加Direct Sound输出。在Windows XP,VC++ 6.0测试通过。

(一)优秀的MP3解码器libmad简介

libmad是跨平台的基于命令行的MP3播放解码器,使用定点解码,可用于没有浮点运算的嵌入式系统。

(二)下载及测试

1、从官方网站ftp://ftp.mars.org/pub/mpeg/下载madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz,还要从ftp://ftp.mars.org/pub/mpeg/extra/下载libz-1.1.4.tar.gz,共四个文件。将四个压缩包保存在同一目录,例如d:/madplay。

2、用WINRAR“解码压到当前目录”方法将四个压缩包解压,在d:/madplay下将有四个文件夹:madplay-0.15.2b,libmad-0.15.1b,libid3tag-0.15.1b,libz-1.1.4。

3、用VC++ 6.0打开D:/madplay/madplay-0.15.2b/msvc++下的madplay工程。修改VC++ 6.0的编译环境:Tools -> Options -> Directories标签 -> Directories框下增加如下两行:

D:/MADPLAY/LIBMAD-0.15.1B/MSVC++

D:/MADPLAY/LIBID3TAG-0.15.1B

点击OK保存设置退出。再为编译连接后的可执行文件指定运行参数:Project -> settings -> 点中左侧madplay -> 右侧Program arguments框内填入你硬盘上保存的一个MP3文件,例如:D:/MP3/test.mp3,单击OK保存设置退出。

按Ctrl+F5编译连接运行,就可以听到播放你选择的MP3歌曲了。

(三)为madplay增加Direct Sound输出

madplay采用WaveOut作为播放输出,用DS输出的优点不再我说了吧。

1、在audio.h中查找到“audio_ctlfunc_t audio_win32;”这一行,在下面增加一行:

audio_ctlfunc_t audio_dsound;

2、在config.h中找到“#define AUDIO_DEFAULT audio_win32”这一行,将这一行注释掉,然后在下面增加一行:

#define AUDIO_DEFAULT audio_dsound

3、在工作区中选择FileView标签,点击madplay files下的Source Files,添加文件aduio_dsound.c

我写的aduio_dsound.c的内容如下,添加了比较详细的注释。

 

/*
aduio_dsound.c
功能: 用 Direct Sound 为MP3解码器libmad播放输出.兼容 VC++ 6.0 的directx 7.0
接口函数: audio_dsound()
2008.08
*/

/*
libmad解码器头文件
*/
#include "audio.h"

/*
Direct Sound 的头文件和库
*/
#include<dsound.h>
#pragma comment( 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值