资源简介
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简易个人财务管理系统
- Android-6.0以太网静态IP补丁
- APK加固(JAVA/JNI二种方式动态加载de
- Android服务端和客户端交互源码
- java银行账户管理源程序
- android 简单图片浏览器 学习的好资料
- 用Animation动画实现Android应用的欢迎界
- Android系统模拟触摸按键
-
Android解析xm
l文件 - Android应用源码精致备忘录+课程表项目
- android 幻灯片效果
- java编写的彩票抽奖系统源代码
- zgf游戏框架搭建
- Transparent Proxy.apk
- Android蓝牙连接传输文件Demo
- android动态添加布局,并获得组件的监
- JSP七个小项目代码和笔记汇总(java
- Android自定义显示内容的Dialog
- Android平台的即时通信系统客户端设计
- Android用Canvas画曲线图并动态更新数据
- android学生信息管理软件源代码
- java学士后第一单元项目 北大青鸟音乐
- 简易android聊天工具
- HttpClient for android 4 3 5 jar
- android版学生信息管理系统
- android 移动地图
- android课程设计
- android-studio-bundle-135.1740770-windows官网最
- Android 自定义控件 EditText输入框两边加
评论
共有 条评论