這里有個setupVideiEncoder,看來這里應該是對視頻編碼的地方?根據不同的編碼類型來設置不同的參數,這個方法代碼有些多直截取部分代碼:
來看看關鍵的一句,這里創建了OMXCodec?然后把創建了的編碼器賦值給MediaSource,這里的MediaSource可以看作是OMXCodec的封裝,這樣編碼器的準備工作就已經做好了:

接著我們回到startMPEG4Recording()?方法,可以看到這里在對解碼器進行準備之后,建立了metadata,然后調用setupMPEG4MetaData來存儲媒體信息到metadata中,最后我們調用MediaWriter的start方法開始進行編碼:

這個是setupMPEG4MetaData方法用來存儲媒體信息的各項參數:

接下來我們看看mediaWriter的start方法的實現,meidaWriter只是個描述的文件,我們調用的是實現了這個頭文件的MPEG4Writer的start方法,這里截取我們關注的代碼,這里開啟了一個線程并調用了startTracks方法:

startTracks方法中的實現,建立了一個迭代器,不斷的調用start方法:

這里的it就是Track類,我們看看Track類,他是MPEG4Writer的內部類:

接著看看Track類中start的實現,這里截取我們感興趣的代碼?原來調用的是MediaSource,我們前面說過MediaSource就是OMXCodec的封裝,這下我們知道了前面是用來準備編碼器的,這里開始調用編碼器開始編碼了,也就是說我們從mediaRecorder.java調用了start方法最終調用的就是OMXCodec.cpp的start方法:

- 前言
- Camera源碼分析(android2.2)
- Android開機啟動流程說明
- android應用程序管理機制
- MediaPlayer框架概述(一)
- MediaPlayer框架概述(二)
- Android MediaPlayer+Stagefright框架(音頻)圖解
- Stagefright框架解讀(—)音視頻Playback流程
- Android mediaRecorder框架簡述(一)
- Android mediaRecorder框架簡述(二)
- Android IntentService淺談以及源碼分析
- Android多線程(二)AsyncTask源碼分析
- Android View體系(五)從源碼解析View的事件分發機制
- Android View體系(六)從源碼解析Activity的構成