Skip to content
  • Timothy B. Terriberry's avatar
    Fix side-channel index for VAD/LBRR flags. · 1e03a6eb
    Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
    Neither the encoder nor decoder were incrementing the side-channel
     index for a mid-only frame.
    Unfortunately, they used that index to index the VAD flags and LBRR
     flags.
    This made the VAD flags for the side channel particularly useless,
     as you couldn't tell which frame a flag belonged to without
     decoding most of the packet.
    It also desynched the LBRR information, as look at the wrong LBRR
     flags to decide when it had to code a mid-only flag.
    If some frames were skipped in the side channel, then the last few
     VAD flags and LBRR flags would be garbage, but still get encoded.
    
    This patch fixes this by continuing to increment nFramesDecoded or
     nFramesEncoded, even when skipping a frame in the side channel.
    This makes the side-channel VAD and LBRR flags correspond to the
     correct time periods for frames greater than 20 ms.
    It also fixes a bug where if DTX was not used on the packet where
     the side channel got turned off, it would never get used again
     until the encoder attempted to encode something in the side
     channel again.
    1e03a6eb