資源簡介
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? 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個文件信息
評論
共有 條評論