Just to add some more history about the Android port. In the early days, the only real player in town for set-top type boxes was AMLogic. Which is why Pivos went with AMLogic chipsets. M1/M3 were single core and it was a real pain to get decent GUI rendering out of a heavy height skin. We (Pivos) did all sorts of tricks to speed it up. Some worked, some did not as you can only do so much with a single core CPU. Tech wise, the AMLogic M1/M3 was very similar to my first port to the original AppleTV and it exposed several issues with the basic code architecture of the codebase. Which we fixed.
The very 1st hardware video implementation for Pivos/XBMC/Kodi on Android was AMLPlayer. It was based off of work that Cory and I did for Sigma (based on GStreamer). The newbies might not know this but Pivos funded both Cory and myself full time for over a year to port XBMC/Kodi to Android with the full understanding that it would get PR'ed back. This was a huge amount of effort with many false starts, much harder than the Sigma/GStreamer port. Cory did an amazing job with creating the jni callback structure I have to say. This created the critical internal API to access Android java classes with little pain.
AMLPlayer was part of the original PR that Pivos did to bring in Android as an supported platform. It was a complete internal player that was used instead of DVDPlayer for accessing hardware video decode. While it worked well, it was a pain in the ass to maintain because AMLogic would make drastic, incompatible changes to the API and I would have to think up new and interesting ways to get around it. So I created DVDVideoCodecAmlogic.
DVDVideoCodecAmlogic was an improvement over AMLPlayer. Much lower layer, simpler API to maintain (despite the insane efforts of AMLogic
and we gained the ability to do all sorts of things that AMLPlayer did not do at the time (with subs and audio). Then the Android set-top-box market exploded and there were all sorts of vendors of different chipsets out there. At Pivos, we wanted to be able to jump to others like Nvidia (were in talks with them). Google (finally) exposed a lower level API for decoding video so I spent a week creating DVDVideoCodecAndroidMediaCodec as POC for a common Android hardware decoder. This happened long before DVDVideoCodecStageFright and we (Pivos) were able to run (internally) on other chipsets. I always intended to refactor DVDVideoCodecAmlogic and clean it up but never got time to do it right.
Sidebar about Pivos and GPL. Cory and i were very adamant about GPL. Changes to the codebase MUST be pushed public when Pivos released a binary. While we did not dev in public to keep our competitors (and XBMC/Kodi was NOT considered a competitor) from snatching improvements and pushing them out before we could, we made damn sure that all code changes got pushed public and even assisted backports into the XBMC codebase by continuing to PR them back. The pirates and parasites were waking up and starting to take notice of easy pickings even back then. They would grab the Pivos apk, stuck it on generic AMLogic hw and just flood ebay with them. As we (Pivos) controlled our Android firmware, we would play blocking tricks to make it difficult, they would figure them out and around and around we went
Eventually the amount of effort exceeded the amount of time gained and and it was not worth it anymore so we stopped.
DVDVideoCodecAndroidMediaCodec never got exposed back then because it was never in Pivos public binary releases. Pivos stuck it out with AMLogic and exposing it would only help the Pivos competitors, so it sat, waiting in a branch for an opportunity.
I knew back then that DVDVideoCodecAndroidMediaCodec was the way forward. It was getting harder and harder to maintain DVDVideoCodecAmlogic as AMLogic kept coming up with new and even stranger ways to screw up a perfectly good API with their coding madness. Then DVDVideoCodecStageFright popped out and Cory and I decided that it would be best for all to expose DVDVideoCodecAndroidMediaCodec and try and get others to focus on the way forward. Yes, there was some drama but both DVDVideoCodecAndroidMediaCodec and DVDVideoCodecStageFright ended up being in better shape for initial inject into the codebase.
Now AMLPlayer is gone, DVDVideoCodecStageFright is gone. DVDVideoCodecAmlogic should get nuked (but for its use under OpenElec/Linux) as well to focus all efforts on making DVDVideoCodecAndroidMediaCodec as good as it can be. Koying has done a fine job maintaining Android. While I might have done some things different, he is (or was) the maintainer and both Cory and I got sucked down a dark Pivos/China hole so we did not have time anymore to PR backports.
Now, I'm free of Pivos (a long story in itself) and back to the roots of OSX/iOS/tvOS development with MrMC. While I do not expect to be doing PRs into Kodi, the code changes are there in github, in sync with binary releases. We (MrMC) could have gotten it in with python/addons present, I'm a very clever coder. We stripped python/addons from MrMC for the sole reason of the tainting of Kodi by rip-off parasites and pirates. With MrMC, there is no quick and easy opportunity for them to exploit and we would rather have less users than have an explosion of rip-offs and get lost in the noise. One thing I learned in business long, long ago is never, ever let your brand get tainted. It will kill you over the long term.