After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 451145 - [vorbisdec] errors out on 0-sized packets
[vorbisdec] errors out on 0-sized packets
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other All
: Normal normal
: 0.10.14
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-06-26 06:19 UTC by David Nielsen
Modified: 2007-06-27 09:50 UTC
See Also:
GNOME target: ---
GNOME version: 2.19/2.20



Description David Nielsen 2007-06-26 06:19:34 UTC
Please describe the problem:
I discovered that this weeks episode of the Atheist Experience podcast does not play in Banshee nor in Totem but it will play using ogg123. It complains that it cannot decode the mediastream.

Direct download:
http://www.atheist-experience.com/archive/AtheistExp-2007-06-24.ogg

Steps to reproduce:
1. Download file
2. open in totem


Actual results:
could not decode mediastream error

Expected results:
correct playback

Does this happen every time?
100%

Other information:
Running Fedora Development 20070625 on x86_64

gstreamer-0.10.13-2.fc8
gstreamer-plugins-good-0.10.6-1.fc8
Comment 1 Tim-Philipp Müller 2007-06-26 09:18:27 UTC
Looks like vorbisdec errors out because it gets a 0-sized packet. Not sure if vorbisdec should just skip those or oggdemux should not output them in the first place, I'm leaning towards the first though.

oggzdump output (same as oggdemux ! fakesink -v really)

00:00:00.000: serialno 0000031415, granulepos 0, packetno 0 *** bos: 30 bytes
00:00:00.000: serialno 0000031415, granulepos -1, packetno 1: 260 bytes
00:00:00.000: serialno 0000031415, granulepos 0, packetno 2: 3.181 kB
00:00:00.667: serialno 0000031415, granulepos -1, packetno 3: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 4: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 5: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 6: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 7: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 8: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 9: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 10: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 11: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 12: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 13: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 14: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 15: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 16: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 17: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 18: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 19: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 20: 62 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 21: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 22: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 23: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 24: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 25: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 26: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 27: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 28: 157 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 29: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 30: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 31: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 32: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 33: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 34: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 35: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 36: 127 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 37: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 38: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 39: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 40: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 41: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 42: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 43: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 44: 124 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 45: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 46: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 47: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 48: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 49: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 50: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 51: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 52: 131 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 53: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 54: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 55: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 56: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 57: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 58: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 59: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 60: 128 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 61: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 62: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 63: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 64: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 65: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 66: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 67: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 68: 125 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 69: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 70: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 71: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 72: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 73: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 74: 0 bytes
00:00:00.667: serialno 0000031415, granulepos -1, packetno 75: 0 bytes
...
Comment 2 Tim-Philipp Müller 2007-06-26 09:21:04 UTC
http://xiph.org/vorbis/doc/framing.html says under 'Packet segmentation':

"Note also that a 'nil' (zero length) packet is not an error; it consists of nothing more than a lacing value of zero in the header."
Comment 3 Michael Smith 2007-06-26 09:31:26 UTC
Note that that's the ogg documentation, not vorbis.

Zero length vorbis packets are not legal, and cannot be decoded. Erroring out is acceptable behaviour, but skipping them would be ok too, I suppose.

Oggdemux certainly needs to output them (theora has a well-defined meaning for zero-length packets, for instance).
Comment 4 Wim Taymans 2007-06-27 09:50:12 UTC
        * ext/vorbis/vorbisdec.c: (vorbis_dec_decode_buffer):
        Don't error out on 0-sized packets, just emit a warning because this is
        not a fatal error. Fixes #451145.