资源简介
android音频解码的源代码(适用于音乐播放器)
其他不多说了,文件不大,又不用积分,下了看看自己需不需要,也许正是你需要的。

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “main.h“
#include “msm_audio.h“
#include “std_audio.h“
#define MSM_DEVICE “/dev/msm_pcm_out“
static int msm_start(msm_ctx *ctx int channels int samplerate) {
struct msm_audio_config config;
unsigned char *buf;
int i;
if(!ctx) return LIBLOSSLESS_ERR_NOCTX;
// __android_log_print(ANDROID_LOG_INFO“liblossless““msm_start chans=%d rate=%d afd=%d track=%p“
// channels sampleratectx->afdctx->track);
ctx->afd = open(MSM_DEVICE O_RDWR);
if(ctx->afd < 0) return LIBLOSSLESS_ERR_INIT;
if(ioctl(ctx->afd AUDIO_GET_CONFIG &config)) return LIBLOSSLESS_ERR_AU_GETCONF;
config.channel_count = channels;
config.sample_rate = samplerate;
if(ioctl(ctx->afd AUDIO_SET_CONFIG &config)) return LIBLOSSLESS_ERR_AU_SETCONF;
ioctl(ctx->afd AUDIO_FLUSH 0);
buf = (unsigned char *) malloc(config.buffer_size);
if(!buf) return LIBLOSSLESS_ERR_AU_BUFF;
memset(buf0config.buffer_size);
for (i = 0; i < config.buffer_count; i++)
if(write(ctx->afdbufconfig.buffer_size) != config.buffer_size) {
free(buf);
return LIBLOSSLESS_ERR_AU_SETUP;
}
free(buf);
usleep(50);
if(ioctl(ctx->afd AUDIO_START 0)) return LIBLOSSLESS_ERR_AU_START;
ctx->conf_size = config.buffer_size;
return 0;
}
static void msm_stop(msm_ctx *ctx) {
if(!ctx) return;
if(ctx->afd >= 0) {
ioctl(ctx->afd AUDIO_STOP 0);
close(ctx->afd);
ctx->afd = -1;
}
}
int audio_start(msm_ctx *ctx int channels int samplerate) {
if(!ctx) return LIBLOSSLESS_ERR_NOCTX;
switch(ctx->mode) {
case MODE_DIRECT:
return msm_start(ctx channels samplerate);
case MODE_LIBMEDIA:
return libmedia_start(ctx channels samplerate);
case MODE_CALLBACK:
return libmediacb_start(ctx channels samplerate);
default:
break;
}
return 0;
}
void audio_stop(msm_ctx *ctx) {
if(!ctx || ctx->state == MSM_STOPPED) return;
if(ctx->state != MSM_PAUSED) pthread_mutex_lock(&ctx->mutex);
if(ctx->fd >= 0) {
close(ctx->fd); ctx->fd = -1;
}
switch(ctx->mode) {
case MODE_DIRECT:
msm_stop(ctx); break;
case MODE_LIBMEDIA:
libmedia_stop(ctx); break;
case MODE_CALLBACK:
libmediacb_stop(ctx); break;
default:
break;
}
ctx->state = MSM_STOPPED;
pthread_mutex_unlock(&ctx->mutex);
}
void audio_wait_done(msm_ctx *ctx) {
if(ctx->mode == MODE_CALLBACK) libmediacb_wait_done(ctx);
}
ssize_t audio_write(msm_ctx *ctx const void *buf size_t count) {
if(!ctx) return LIBLOSSLESS_ERR_NOCTX;
switch(ctx->mode) {
case MODE_DIRECT:
return write(ctx->afd buf count);
ca
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-11-21 22:02 jni\
目录 0 2011-11-21 22:02 jni\alac\
文件 33503 2011-11-19 04:52 jni\alac\alac_decoder.c
文件 309 2011-11-19 04:52 jni\alac\Android.mk
文件 1610 2011-11-19 04:52 jni\alac\decomp.h
文件 22833 2011-11-19 04:52 jni\alac\demux.c
文件 12300 2011-11-19 04:52 jni\alac\m4a.c
文件 4291 2011-11-19 04:52 jni\alac\m4a.h
文件 8003 2011-11-19 04:52 jni\alac\main.c
文件 3169 2011-11-19 04:52 jni\alac\README.rockbox
目录 0 2011-11-21 22:02 jni\Android\
目录 0 2011-11-21 22:02 jni\Android\include\
文件 8373 2011-11-19 04:52 jni\Android\include\AudioHardware.h
目录 0 2011-11-21 22:02 jni\Android\include\cutils\
文件 1011 2011-11-19 04:52 jni\Android\include\cutils\adb_networking.h
文件 1854 2011-11-19 04:52 jni\Android\include\cutils\array.h
文件 1064 2011-11-19 04:52 jni\Android\include\cutils\ashmem.h
文件 2472 2011-11-19 04:52 jni\Android\include\cutils\atomic.h
文件 1705 2011-11-19 04:52 jni\Android\include\cutils\config_utils.h
文件 1022 2011-11-19 04:52 jni\Android\include\cutils\cpu_info.h
文件 965 2011-11-19 04:52 jni\Android\include\cutils\dir_hash.h
文件 1295 2011-11-19 04:52 jni\Android\include\cutils\event_tag_map.h
文件 1941 2011-11-19 04:52 jni\Android\include\cutils\fdevent.h
文件 3565 2011-11-19 04:52 jni\Android\include\cutils\hashmap.h
文件 1326 2011-11-19 04:52 jni\Android\include\cutils\jstring.h
文件 9249 2011-11-19 04:52 jni\Android\include\cutils\log.h
文件 2085 2011-11-19 04:52 jni\Android\include\cutils\logd.h
文件 1353 2011-11-19 04:52 jni\Android\include\cutils\logger.h
文件 3757 2011-11-19 04:52 jni\Android\include\cutils\logprint.h
文件 1249 2011-11-19 04:52 jni\Android\include\cutils\memory.h
文件 1478 2011-11-19 04:52 jni\Android\include\cutils\misc.h
............此处省略212个文件信息
相关资源
- android带百分比进度条的文件上传,使
- 美食天下项目Android版源码和Web版源码
- Android之自定义ToggleButton使用
- JSP企业人事管理系统设计(源代码+论
- Android非常漂亮的登录界面
- Java写的cmm词法分析器源代码及javacc学
- pc与android通过usb socket实现手机通信
- JAVA JSP公司财务管理系统 源代码 论文
- android毕业设计
- 百度地图自定义Markerandroid
- Android分区工具包
- android-support-v4.jar已打包进去源代码
- u-blox_Android_GNSS_Driver_v3.10驱动源码+中
- 个人根据Android移动开发案例详解手写
- android 视频播放器 项目和原码
- Android【动画】【特效】 17种动画特效
- 基于Android智能家居详细设计(经典)
- android通过JDBC连接Mysql数据库
- Java记事本【源代码 实验报告】
- java实现小型函数画图板(附源代码、
- 在线考试系统源代码(jsp)
- Android通讯录的源代码
- android 瀑布流Demo
- 指纹传感器FPC1080在android下的驱动
- delphi xe5 android 调用照相机摄像头拍照
- java编写21点游戏(附源代码)
- Android手机连连看游戏源码
- android-sdk-windows v2.3离线完整版
- android 底部弹出菜单(带透明背景)
- java 原创 坦克大战 源码 带有详细注释
评论
共有 条评论