Android中openmax實現框架


OMX中 OMXNodeInstance 負責創建並維護不同的實例,這些實例是根據上面需求創建的,以node作為唯一標識。這樣播放器中每個OMXCodec在OMX服務端都對應有了自己的OMXNodeInstance實例。OMXMaster 維護底層軟硬件解碼庫,根據OMXNodeInstance中想要的解碼器來創建解碼實體組件。

1.android系統中只用openmax來做codec,所以android向上抽象了一層OMXCodec,提供給上層播放器用。播放器中音視頻解碼器mVideosource、mAudiosource都是OMXCodec的實例。

2.OMXCodec通過IOMX 依賴binder機制 獲得 OMX服務,OMX服務 才是openmax 在android中的實現。

3. OMX把軟編解碼和硬件編解碼統一看作插件的形式管理起來。

 

android中支持的組件和Role

根據pv_omxregistry.cpp,得到如下表格(其中黃綠色部分表示沒有相應編碼器)

組件

角色

動態庫名

OMX.PV.mpeg4dec

video_decoder.mpeg4

libomx_m4vdec_sharedlibrary

OMX.PV.h263dec

video_decoder.h263

libomx_m4vdec_sharedlibrary

OMX.PV.avcdec

video_decoder.avc

libomx_avcdec_sharedlibrary

OMX.PV.wmvdec

video_decoder.wmv

libomx_wmvdec_sharedlibrary

OMX.PV.rvdec

video_decoder.rv

libomx_rvdec_sharedlibrary

OMX.PV.aacdec

audio_decoder.aac

libomx_aacdec_sharedlibrary

OMX.PV.amrdec

audio_decoder.amr

audio_decoder.amrnb

audio_decoder.amrwb

libomx_amrdec_sharedlibrary

OMX.PV.mp3dec

audio_decoder.mp3

libomx_mp3dec_sharedlibrary

OMX.PV.wmadec

audio_decoder.wma

libomx_wmadec_sharedlibrary

OMX.PV.radec

audio_decoder.ra

libomx_radec_sharedlibrary

 

 

 

OMX.PV.amrencnb

audio_encoder.amrnb

libomx_amrenc_sharedlibrary

OMX.PV.mpeg4enc

video_encoder.mpeg4

libomx_m4venc_sharedlibrary

OMX.PV.h263enc

video_encoder.h263

libomx_m4venc_sharedlibrary

OMX.PV.avcenc

video_encoder.avc

libomx_avcenc_sharedlibrary

OMX.PV.aacenc

audio_encoder.aac

libomx_aacenc_sharedlibrary

OMX中非常重要的2個成員就是 OMXMaster 和 OMXNodeInstance。OMX通過這倆個成員來創建和維護不同的openmax 解碼器組件,

OMXNodeInstance 負責創建並維護不同的實例,這些實例是根據上面需求創建的,以node作為唯一標識。這樣播放器中每個OMXCodec在OMX服務端都對應有了自己的OMXNodeInstance實例。

OMXMaster 維護底層軟硬件解碼庫,根據OMXNodeInstance中想要的解碼器來創建解碼實體組件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM