参考代码
在android中,已经有一些soft decoder,例如AAC AMR AVC等,这些都是软解的decoder,如果想自己加入一种decoder,可以参照这些代码的写法。
例如frameworks/av/media/libstagefright/codecs/
aacdec/ amrnb/ amrwbenc/ avc/ flac/ m4v_h263/ on2/ vorbis/
aacenc/ amrwb/ Android.mk common/ g711/ mp3dec/ raw/
aacenc/ amrwb/ Android.mk common/ g711/ mp3dec/ raw/
soft Decoder是如何载入的
android中decoder的管理是以plugin的模式,其控制是在OMXMaster内完成的。
//OMXMaster是在omx被创建时就创建了
OMX::OMX()
: mMaster(new OMXMaster),
mNodeCounter(0) {
}
: mMaster(new OMXMaster),
mNodeCounter(0) {
}
//Plugin在OMXMaster构造的时候就载入了
OMXMaster::OMXMaster()
: mVendorLibHandle(NULL) {
//创建硬解码Plugin
addVendorPlugin();
: mVendorLibHandle(NULL) {
//创建硬解码Plugin
addVendorPlugin();
//创建软解码的Plugin
addPlugin(new SoftOMXPlugin);
}
addPlugin(new SoftOMXPlugin);
}
void OMXMaster::addPlugin(OMXPluginBase *plugin) {
Mutex::Autolock autoLock(mLock);
Mutex::Autolock autoLock(mLock);