在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。
(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的OMXCodec::Create()會回傳video decoder給mVideoSource。
|
(2) 根據mVideoTrack的MIME從kDecoderInfo挑出合適的components
|
(3) 根據matchingCodecs中component的順序,我們會先去檢查其是否為software decoder
|
所有的software decoder都會被列在kFactoryInfo中,我們藉由傳進來的name來對應到適合的decoder。
(4) 如果該component不是software decoder,則試著去配置對應的OMX component
|
(5) 若該component為OMX deocder,則回傳;否則繼續檢查下一個component