GNOME Bugzilla – Bug 758754
oggdemux: failing to play an Opus sample file
Last modified: 2015-12-01 15:51:23 UTC
The following file: http://xiph.org/~giles/2012/opus/detodos.opus Which can be found here: http://xiph.org/~giles/2012/opus/ Doesn't play with gst-play-1.0, yet it plays in the browser and other non-GStreamer players. All other Opus samples I have play fine with gst-play-1.0. I suspect the problem is in oggdemux. I am investigating this and created a bug thread with the purpose of reporting the issue in case anyone else sees it and to keep track of my progress figuring it out.
oggdemux is in gst-plugins-base. My mistake.
Plays fine for mem with 1.6 fwiw, so looks like a regression in git.
Thanks a lot for checking Tim. This means I can use git bisect to find the issue. Much better :)
Created attachment 316445 [details] [review] codec-utils: accept wrong version field in OpusHead header With this patch the file plays. And also this other sample which didn't: http://xiph.org/~giles/2012/opus/ehren-paper_lights-64.opus Problem was that the version field in the OpusHead header is wrong (0 instead of 1). Strange since 1 is the initial version of the spec. https://wiki.xiph.org/OggOpus The patch checks for the version and if it is wrong it logs the error and continues playing the file, instead of considering the file wrong. Alternatively, it could check for both 0x00 and 0x01. Or it could just skip that field with gst_byte_reader_skip ().
Review of attachment 316445 [details] [review]: ::: gst-libs/gst/pbutils/codec-utils.c @@ +1535,3 @@ + version = gst_byte_reader_get_uint8_unchecked (&br); + if (version != 0x01) { + GST_DEBUG ("Opus Header version is wrong, should be 0x01 and not %d", Make this a GST_ERROR() and accept only 0x00 and 0x01 at this point. If 0x02 or higher is found, reject it :)
Review of attachment 316445 [details] [review]: commit 2a70c86e85a8ba07726212c8eece10fd92c88693 Author: Luis de Bethencourt <luisbg@osg.samsung.com> Date: Sat Nov 28 14:24:55 2015 +0000 codec-utils: accept wrong version field in OpusHead header Some Opus files found on the wild have 0 in the version field of the OpusHead header, instead of the correct value of 1. The files still play, don't make this error fatal. https://bugzilla.gnome.org/show_bug.cgi?id=758754