[vlc-devel] Decoupling Ogg-Demuxer
Jean-Baptiste Kempf
jb at videolan.org
Sat Jan 16 18:55:25 CET 2016
On 16 Jan, Michael Tänzer wrote :
> I'm currently writing a decoder for the unofficial OggSpots codec [1] in
> VLC.
OK.
> As you probably know the Ogg demuxer is very interwoven with the
> various decoders that can be put into an Ogg container.
Like what part?
> a) Just go with the existing approach and intermingle the OggSpots codec
> with the demuxer. This would also mean that for the codec implementation
> to be useful it would need to be included with the main VLC distribution.
>
> b) Decouple all the Ogg mess and allow new codecs to be plugged in just
> by loading a new module.
>
> Pros for b):
> + Better separation between codecs and demuxers
> + Reduce the amount of code in the Ogg demuxer (currently 3384 lines)
>
> Challenges for b):
> - Ogg format depends on some information passed from the codec to the
> demuxer (for seeking and time calculation). What is the clean way to
> pass this information? es_format_t.p_extra is already used for
> transferring headers from the demuxer to the codec. Introduce a new
> field in es_format_t? Introduce new function pointers in decoder_t?
Unfortunately, I believe seeking should be dealt with in the demuxer,
and not really in the decoder. Ogg granulepos is a misfeature.
> - The decoupling would be a major change and maybe break some
> functionality. Is there some sort of test suite like an archive of media
> files with special cases like broken streams or errors produced by a
> certain version of a library, so we can throw those files against the
> new implementation and test if it still works?
Use the theora testsuite and all the bug we closed on the report with
Ogg.
> What are your suggestions for tackling that problem?
Unfortunately, I'd do a) and would work on splitting the files/cleaning
the code.
With my kindest regards,
--
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
More information about the vlc-devel
mailing list