8. Go through the OpenMAX
Operating System
Operating System
Multimedia Framework
Multimedia Framework
OpenMAX IL
OpenMAX IL
Software & Hardware Codec
Software & Hardware Codec
9.
10. The simple stack architecture
Developer API (MediaPlayer)
Developer API (MediaPlayer)
EventHandler SurfaceHolder
StageFright
OpenMAX Interface
OpenMAX IL
Software & Hardware Codec
23. Four Steps for Playing the Media File
Step 1: MediaPlayer mp = new MediaPlayer();
Step 2: mp.setDataSource(mediaPath);
setDataSource
Step 3: mp.prepare();
prepare
Step 4: mp.start();
start
38. The Synchronization Formula of StageFright
sizedone
mNumFramesPlayed+
mFrameSize
mPositionTimeRealsUs=( )×1000000
mSampleRate
mTimeSourceDeltaUs=mPositionTimeRealUs−mPositionTimeMediaUs
nowUs= RealTimeUs−mTimeSourceDeltaUs
latenessUs=nowUs−timeUs
mPositionTimeRealsUs: the time in real playing
mPositionTimeMediaUs: the time which is defined in the media source
39. The Synchronization Conditions
Conditions of latenessUs
1. > 500000ll
2. > 40000
3. < -10000 1750 if (latenessUs > 500000ll
1751 && mAudioPlayer != NULL
1752 && mAudioPlayer->getMediaTimeMapping(
1753 &realTimeUs, &mediaTimeUs)) {
1757 mVideoBuffer->release();
1758 mVideoBuffer = NULL;
1763 postVideoEvent_l();
1764 return;
1765 }
1767 if (latenessUs > 40000) {
1768 // We're more than 40ms late. 1793 if (latenessUs < -10000) {
1794 // We're more than 10ms early.
1780 mVideoBuffer->release(); 1795 postVideoEvent_l(10000);
1781 mVideoBuffer = NULL; 1796 return;
1797 }
1787
1788 postVideoEvent_l();
1789 return;
1791 }