• Rafaël Carré's avatar
    apedec: do not buffer decoded samples over AVPackets · 91d4cfb8
    Rafaël Carré authored
    Only consume an AVPacket when all the samples have been read.
    
    When the rate of samples output is limited (by the default value
    of max_samples), consuming the first packet immediately will cause
    timing problems:
    
    - The first packet with PTS 0 will output 4608 samples and be
    consumed entirely
    - The second packet with PTS 64 will output the remaining samples
    (typically, a lot, that's why max_samples exist) until the decoded
    samples of the first packet have been exhausted, at which point the
    samples of the second packet will be decoded and output when
    av_decode_frame is called with the next packet).
    
    That means there's a PTS jump since the first packet is 'decoded'
    immediately, which can be seen with avplay or mplayer: the timing
    jumps immediately to 6.2s (which is the size of a packet).
    
    Sample: http://streams.videolan.org/issues/6348/Goldwave-MAClib.apeSigned-off-by: 's avatarJustin Ruggles <justin.ruggles@gmail.com>
    91d4cfb8
apedec.c 49.8 KB