GNOME Bugzilla – Bug 311486
[oggmux] theora bos must come before any audio bos pages
Last modified: 2011-08-18 15:49:06 UTC
According to the Theora I spec: "A.3.2 - Grouped Streams At the beginning of a multiplexed stream, the 'beginning of stream' pages for each logical bitstream will be grouped together. Within these, the first page to occur MUST be the Theora page. This facilitates identification of Ogg Theora files among other Ogg-encapsulated content. ..." It looks like oggmux doesn't always put the theora bos packets first (at least not in 0.8, haven't checked 0.9). This seems to prevent KDE from detecting theora files properly (arguably that's something that should be fixed as well, but still, spec is spec). Packet dump of a thoggen-produced theora/ogg file: 00:00:00.000: serialno 1925053367, granulepos 0, packetno 0 *** bos: 30 bytes 0000: 0176 6f72 6269 7300 0000 0002 44ac 0000 .vorbis.....D... 0010: ffff ffff 00f4 0100 ffff ffff b801 .............. 00:00:00.000: serialno 1551176531, granulepos 0|0, packetno 0 *** bos: 42 bytes 0000: 8074 6865 6f72 6103 0200 001e 0018 0001 .theora......... 0010: e000 0180 0000 0000 0019 0000 0001 0000 ................ 0020: 4000 002d 000c 5ff8 00c0 @..-. _... Cheers -Tim
right. the concept of "Media Mapping" (of which two are defined by xiph atm, but there's also annodex, and more will come in the future) should probably be implemented as a subclass of oggmux. The media mappings aren't even guaranteed to be consistent with one another, and are codec-specific, which we don't want to do in the generic ogg muxer. so someone needs to come up with a nice way of implementing them as subclasses
Perhaps some hack could be done with the timestamps on the header packets. Dunno caballeros.
update: as a temporary workaround, the 'theora-BOS-comes-first' has been hard-coded into oggmux now, but this still needs fixing in a more general way, so keeping bug open. /* quick hack: put theora pages at the front. * Ideally, we would have a settable enum for which Ogg * profile we work with, and order based on that */ if (strcmp (gst_structure_get_name (structure), "video/x-theora") == 0) { GST_DEBUG_OBJECT (thepad, "putting Theora page at the front"); hbufs = g_list_prepend (hbufs, hbuf); } else { hbufs = g_list_append (hbufs, hbuf); }
moving to enhancement as it's not a bug anymore.
Shouldn't this one be closed?
> Shouldn't this one be closed? Not yet :) ("this still needs fixing in a more general way, so keeping bug open")
Tim, what more needs fixing ?
Thomas, still want to stay assigned to this bug ?
> Tim, what more needs fixing ? See the comments in the code (not that I'm really sure what it's supposed to ean exactly) Also, it would seem we've now got this hardcoded for theora and dirac, but don't do it for e.g. smoke or ogm video although we *probably* should.
So why is this still NEEDINFO? :)
Could be set to FIXED too, now that https://bugzilla.gnome.org/attachment.cgi?id=194082