[Bug 729314] New: ogg: sample-accurate decoding/encoding is broken

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu May 1 01:23:37 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=729314
  GStreamer | gst-plugins-base | git

           Summary: ogg: sample-accurate decoding/encoding is broken
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: stefanha at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=275522)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=275522)
8 second 440 Hz sine wave with 44.1 kHz sample rate, generated by Audacity

The simple pipeline hangs forever with the attached ogg file:

$ gst-launch-1.0 filesrc location=sine.ogg ! decodebin ! vorbisenc ! oggmux !
filesink location=output.ogg
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

The input ogg file is an 8 second 440 Hz sine wave with 44.1 kHz sample rate
that was generated by Audacity.

slomo and thiblahute helped identify the problem on IRC:

< thiblahute> Transcoding stalls at 7.6 secs with that sample and no EOS ever
< slomo> yeah, EOS goes out of vorbisenc but not fruther
< slomo> oggmux broken
< stefanha> The number of samples in that file is 352800 / 44100 
< stefanha> = 8s
< slomo> but last buffer out of vorbisenc is:
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain   *******
(identity0:sink) (76 
         bytes, dts: 0:00:08.000725623, pts:0:00:08.000725623, duration:
0:00:00.002902494, offset: 8003628118, offset_end:  352960, flags: 
         00000000 ) 0x7fa7f0050990
< slomo> last buffer into vorbisenc is:
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain   *******
(identity0:sink) (4096 
         bytes, dts: none, pts:0:00:07.976780045, duration: 0:00:00.023219955,
offset: -1, offset_end: -1, flags: 00000000 ) 0x7f26ec053070
< slomo> so there's your problem
< slomo> (maybe)
< slomo> vorbis like all the other codecs has a fixed block size, but iirc it
has metadata to get rid of the added samples when decoding
< slomo> last buffer if decoding directly again:
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain   *******
(fakesink0:sink) 
         (3972 bytes, dts: none, pts: 0:00:07.977505668, duration:
0:00:00.022494332, offset: -1, offset_end: -1, flags: 00004000 tag-memory ) 
         0x7f4c84052cd0
< slomo> so looking at this, it seems data is actually lost
< slomo> 1411840 bytes for just decoding the file, 1411204 bytes for encoding
and decoding again 
< stefanha> If you count the number of samples it should be 352800
< slomo> so two bugs here, oggmux broken and something else ;) can someone put
that into bugzilla please?
< slomo> 352960 samples for decoding directly, 352801 for reencoding
< slomo> (4 bytes per sample in the numbers above)
< stefanha> :/
< slomo> so definitely something wrong here :)

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list