Since the launch of the shooter video, more and more time in life began to drown in code and various bug-fix. If you bury yourself in the field too long, you often forget where you are in the one o'clock. So occasionally come up to breathe, by the way, some experience and experiences to share with you.
Media playback tools, here mainly refers to video playback, because to face the huge compatibility and complex algorithms, from the architecture, can stand out from the few systems. Broadly speaking, there are 3 major architectures in the industry: MPC, MPlayer and VLC. These 3 large architectures and their derivatives occupy 90% of the market, and none of the free media-play software that users can see comes from these 3 architectures.
MPC/HC Architecture
The MPC (Media Player Classic) and its successor, MPC-HC, should be tied up. MPC is based on the DirectShow architecture and is a player at the meta-ancestor level of the Windows system. Including the KMP the first is to copy the MPC code and then change the interface. MPCHC, the original author of the MPC, Gabest gradually withdrew from the successor, MPCHC has many innovative features, including the beginning to integrate FFmpeg and support more DirectX features and DXVA and so on.
Pros: more direct support for DXVA, the format on some wacky Windows platforms can be better compatible by invoking third-party filter components, etc.
Cons: Some people say that DirectShow is the most difficult SDK in Windows, the development of complex; DirectShow allows for compatibility and stability issues with the features of third-party encapsulation; third-party filter is very difficult to analyze and handle when abnormal, it is more difficult to reuse;
the architecture of the striker player is mainly from MPC-HC, but more integration of the FFmpeg advantage, the DirectShow filter has been rewritten in many places, greatly enhancing the use of ffmpeg, improve the decoding stability, while expanding the decoding capability and compatibility.
MPlayer Architecture
If the MPC is Ganso on Windows, then MPlayer is the meta-ancestor of the media playing on Linux. MPlayer uses ffmpeg as the decoding core, is also the most closely associated with FFmpeg project, FFmpeg code is from the MPlayer to host, the developer Group also has a very large intersection. With the power of Linux developers/users, MPlayer has established a much more stable workflow than DirectShow. Beyond the functionality of the ffmpeg itself, it was later engineered to invoke the DirectShow Filter DLL on Windows, making the MPlayer architecture more appealing and an excellent work of stability and performance.
Pros: Stable, compatibility can also be said to be quite good
Disadvantages: The code structure is not clear, pure C language development, difficult to read; Graphics hardware acceleration requires more hurdles
VLC Architecture
VLC is a rising star, the development speed of the progress can be said to be a wonderful. Although it is also based on ffmpeg, it is possible that the VLC architecture was designed to take into account the modular development of the MPlayer architecture, which is more attractive to young developers than the "three-year-mend three-year-old right three years." Become a very fast-growing architecture in recent years.
Pros: Stable, compatibility can also be said to be quite good
Disadvantages: pure C language development, difficult to read; Hardware acceleration slightly impaired
Many people will find that FFmpeg's name can be seen in the 3 architecture.Speaking of FFmpeg, that's really "one ring to rule them all,one ring to find them, one ring to bring them all"。 In #ffmpeg I was told that I wanted to write a media player without ffmpeg, like making a car without a wheel. However, FFmpeg itself appears only as a command-line tool or class library (common as LIBAVCODEC). End users rarely have direct access to ffmpeg, so visibility is also small. FFMPEG detailed structure, next time to continue ...
* NOTE 1: All pros and cons are only for the architecture itself
* NOTE 2: The views in the text are personal opinions and are for reference only
Media Player three bottom-level architectures