I will not elaborate on the introduction of cmmb. You can find relevant information online.
The implementation of cmmb on the Android platform has been completed some time ago. The implementation steps are as follows. It is implemented in two steps:
(1) debugging Based on the 530-frequency (Beijing) CCTV-News TV streaming channel (write a frequency point and a streaming channel:
1. In Android, The cmmb driver and firmware are upgraded to ensure correct output.
2. FFMPEG integration on Android.
3. Implementation of the cmmb engine (C/S architecture ).
4. Implementation of ringbuffer (used to store received RTP packets ).
5. Implementation of the scheduling algorithm (sched.
6. RTP parser and Reconstruction of the package.
7. Audio/Video decoding (including conversion of audio packaging formats ).
8. debug video render.
9. debugging of audio render.
10. A/V synchronization.
11. Stability, robustness, performance (CPU usage, etc.) debugging.
12. UI implementation (because cmmb focuses on displaying content, the UI does not need to be so dazzling ).
All the above parts are implemented by a small module and then integrated to make the entire project easier to control. For example: Video render, we can use a YUV file to debug its overlay output on the board.
(2) The second is to debug all the functions that can be scanned, such as audio and video output (debugging, decryption, and disturbing), frequency point, channel scanning, server selection, and server cutting.
The difficulty lies in (1). There are many details. If a point is stuck, the entire project may be stuck for several days. If you call it through (2) it will take a few days to complete.
If you have time, let's discuss the specific implementation details in detail!