shaka-project / shaka-player-embedded

Shaka Player in a C++ Framework
Apache License 2.0
238 stars 63 forks source link

[Design] Refactoring the media pipeline #60

Closed TheModMaker closed 4 years ago

TheModMaker commented 4 years ago

Our current media pipeline is entirely internal and doesn't allow any modifications. It also assumes full control of the pipeline. This isn't flexible enough for some since some may want to use their own decoders or control playback. This also means we can't use hardware secure decrypt-decode or allow the platform to handle media playback.

We will be redesigning the media pipeline to make it more public and to allow apps to swap out components. This can be done based only on the public API. We will also be adding a build configuration to remove some of the existing parts to remove FFmpeg from the builds.

Please check out the document below and comment if you have any questions or suggestions for the new design. We will allow two weeks for people to comment on the new design. By November 4th, we'll assume the design is mostly final.

https://docs.google.com/document/d/1Z_XLaZU0_5fy4knyduX-Q2AYGtmrf7RCLu0fCC3CJp4/edit?usp=sharing

TheModMaker commented 4 years ago

The first changes for this are in. Mostly stubs and some changes to the Frame types. The big one is e439feac87b92e0c7dbdb9e6549332e7e54fa283 which is the API stubs. None if it is wired yet, but you can look at how things will work later.

TheModMaker commented 4 years ago

The main refactoring is now done. Apps can now replace individual media components as needed and remove parts of the builds (e.g. FFmpeg). You can read the finalized design doc here. There are some more features that will be worked on related to this, but are tracked as separate issues: