[Bug 758158] opusdec: in-band FEC has no effect

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Feb 3 16:44:01 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=758158

Vincent Penquerc'h <vincent.penquerch at collabora.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|git master                  |1.7.2

--- Comment #7 from Vincent Penquerc'h <vincent.penquerch at collabora.co.uk> ---
All fixed, I think.
Note that FEC relies on PLC being enabled. This could possibly be changed, but
one would have to work around the base class as it didn't like me sending audio
when I get gap events. Possibly decoding but keeping decoded audio, then
prepending it to next finish call might work. Not sure it's worth it since
setting plc to true is easy anyway.


commit 730d92ea8db364f2ac175089854e7f0cba572699
Author: Vincent Penquerc'h <vincent.penquerch at collabora.co.uk>
Date:   Wed Feb 3 16:28:42 2016 +0000

    opus: fix FEC

    FEC may only be used when PLC is enabled on the audio decoder,
    as it relies on empty buffers to generate audio from the next
    buffer. Hooking to the gap events doesn't work as the audio
    decoder does not like more buffers output than it sends.

    The length of data to generate using FEC from the next packet
    is determined by rounding the gap duration to nearest. This
    ensures that duration imprecision does not cause quantization
    to 2.5 milliseconds less than available. Doing so causes the
    Opus API to fail decoding. Such duration imprecision is common
    in live cases.

    The buffer to consider when determining the length of audio
    to be decoded is the previous buffer when using FEC, and the
    new buffer otherwise. In the FEC case, this means we determine
    the amount of audio from the previous buffer, whether it was
    missing or not (and get the data either from this buffer, or
    the current one if the previous one was missing).

-- 
You are receiving this mail because:
You are the QA Contact for the bug.


More information about the gstreamer-bugs mailing list