summaryrefslogtreecommitdiff
path: root/gst/debugutils
diff options
context:
space:
mode:
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2016-02-03 16:28:42 +0000
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2016-02-03 16:36:10 +0000
commit730d92ea8db364f2ac175089854e7f0cba572699 (patch)
treec212b50584d820880e3768dce6c346583fe2f5fc /gst/debugutils
parent81692a99f3fd941101595eabfedfa5e3598b7cf3 (diff)
downloadgstreamer-plugins-bad-730d92ea8db364f2ac175089854e7f0cba572699.tar.gz
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).
Diffstat (limited to 'gst/debugutils')
0 files changed, 0 insertions, 0 deletions