• Andreas Rheinhardt's avatar
    avformat/matroskadec: Fix lzo decompression · 2ff687c1
    Andreas Rheinhardt authored
    When a Matroska Block is only stored in compressed form, the size of
    the uncompressed block is not explicitly coded and therefore not known
    before decompressing it. Therefore the demuxer uses a guess for the
    uncompressed size: The first guess is three times the compressed size
    and if this is not enough, it is repeatedly incremented by a factor of
    three. But when this happens with lzo, the decompression is neither
    resumed nor started again. Instead when av_lzo1x_decode indicates that x
    bytes of input data could not be decoded, because the output buffer is
    already full, the first (not the last) x bytes of the input buffer are
    resent for decoding in the next try; they overwrite already decoded
    data.
    
    This commit fixes this by instead restarting the decompression anew,
    just with a bigger buffer.
    
    This seems to be a regression since 935ec5a1.
    
    A FATE-test for this has been added.
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
    Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
    2ff687c1
Name
Last commit
Last update
..
api Loading commit data...
checkasm Loading commit data...
dnn Loading commit data...
fate Loading commit data...
filtergraphs Loading commit data...
ref Loading commit data...
.gitignore Loading commit data...
Makefile Loading commit data...
audiogen.c Loading commit data...
audiomatch.c Loading commit data...
base64.c Loading commit data...
copycooker.sh Loading commit data...
extended.ffconcat Loading commit data...
fate-run.sh Loading commit data...
fate-valgrind.supp Loading commit data...
fate.sh Loading commit data...
md5.sh Loading commit data...
refcmp-metadata.awk Loading commit data...
reference.pnm Loading commit data...
rotozoom.c Loading commit data...
simple1.ffconcat Loading commit data...
simple2.ffconcat Loading commit data...
test.ffmeta Loading commit data...
tiny_psnr.c Loading commit data...
tiny_ssim.c Loading commit data...
utils.c Loading commit data...
videogen.c Loading commit data...