Add media.ccc specific parsing of recordings
Instead of pushing the media.ccc recordings straight into the StreamExtractor straightjacket (which does not really provide the correct API for handling the semantics of the media.ccc data), we parse into an intermediate structure first that contains all relevant information about the different streams.
This is required for correct handling of the different languages.
It should not change the API, since its specfic to the media.ccc Extractor. I just type-cast in frankenplayer at the moment. I skipped adding getters/setters in the MediaCCCRecording structs, once this repository is migrated to Kotlin (?), it would just be a data class.
- [x] I carefully read the contribution guidelines and agree to them.
- [ ] I have tested the API against NewPipe.
- [x] I agree to create a pull request for NewPipe as soon as possible to make it compatible with the changed API.
I would be ok with merging this as-is (after you fix my other comment), since it's not adding any new functionality for now but just adds the ability to load all recordings. Going forward, I believe it's important to make the API general (especially when it comes to just classifying the type of audio/video, be it slides, normal video, voiceover, etc.), but to also allow subclasses with service-specific information as suggested by Audric in https://github.com/TeamNewPipe/NewPipeExtractor/issues/858#issuecomment-3289753673 .