Messages in this thread | | | From | Morten Rasmussen <> | Subject | [9/11] use-case 3: Video playback on Android | Date | Tue, 7 Jan 2014 16:19:45 +0000 |
| |
Depending on the platform hardware video is a low to medium load periodic application. There may be some variation in the load depending on the video codec, content, and resolution. The load pattern is roughly synchronized to the video frame-rate (typically 30 FPS). Video playback also includes audio playback as part of the workload.
Performance Criteria
Video decoding must be done in time to avoid dropped frames. Similarly, audio must be decoded in time to never let the audio buffer run empty.
Task behaviour
Based on video playback (720p and 1080p) on a modern ARM SoC, the cpu load is generally modest. Video resolution has only a minor impact on the overall cpu load. The load pattern is repeating every ~33 ms.
Rendering task: The main Android graphics rendering task accounts for about 18% of the total cpu load. It is active for about ~6-8 ms each period during which it is blocking a couple of times. It appears to run in sync with a handful of other tasks. Most of which are related to timed queues in Android and graphics.
Timed events queue tasks: An Android TimedEventQueue task for each cpu is active during video playback. In total, they account for around 30% of the cpu load. They are all following the 33 ms period and run for 250-700 us when scheduled (average).
Audio decoding task: Accounts for ~10% of the cpu load. Load pattern repeat every ~23 ms. Since this is different from the period of video rendering, this may run in parallel with video rendering form time to time. Audio decoding runs for about 2 ms when scheduled each period.
A lot of smaller tasks are involved in the periodic load pattern.
| |