Merge commit '31980b6abdd8ffb6953472a7a6b59f3aa5762c31'
* commit '31980b6abdd8ffb6953472a7a6b59f3aa5762c31': vmd: decode videos with no LZ buffer size provided - they might not need it Conflicts: libavcodec/vmdav.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@ -279,6 +279,11 @@ static int vmd_decode(VmdVideoContext *s, AVFrame *frame)
|
|||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
meth = bytestream2_get_byteu(&gb);
|
meth = bytestream2_get_byteu(&gb);
|
||||||
if (meth & 0x80) {
|
if (meth & 0x80) {
|
||||||
|
if (!s->unpack_buffer_size) {
|
||||||
|
av_log(s->avctx, AV_LOG_ERROR,
|
||||||
|
"Trying to unpack LZ-compressed frame with no LZ buffer\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
lz_unpack(gb.buffer, bytestream2_get_bytes_left(&gb),
|
lz_unpack(gb.buffer, bytestream2_get_bytes_left(&gb),
|
||||||
s->unpack_buffer, s->unpack_buffer_size);
|
s->unpack_buffer, s->unpack_buffer_size);
|
||||||
meth &= 0x7F;
|
meth &= 0x7F;
|
||||||
@ -390,9 +395,11 @@ static av_cold int vmdvideo_decode_init(AVCodecContext *avctx)
|
|||||||
vmd_header = (unsigned char *)avctx->extradata;
|
vmd_header = (unsigned char *)avctx->extradata;
|
||||||
|
|
||||||
s->unpack_buffer_size = AV_RL32(&vmd_header[800]);
|
s->unpack_buffer_size = AV_RL32(&vmd_header[800]);
|
||||||
|
if (s->unpack_buffer_size) {
|
||||||
s->unpack_buffer = av_malloc(s->unpack_buffer_size);
|
s->unpack_buffer = av_malloc(s->unpack_buffer_size);
|
||||||
if (!s->unpack_buffer)
|
if (!s->unpack_buffer)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
/* load up the initial palette */
|
/* load up the initial palette */
|
||||||
raw_palette = &vmd_header[28];
|
raw_palette = &vmd_header[28];
|
||||||
|
Reference in New Issue
Block a user