} while (--i);
}
- dst = c->frame[c->current_frame];
+ dst = c->frame[c->current_frame];
+ dend = c->frame[c->current_frame] + c->frame_size;
do {
a = bytestream2_get_byte(&c->gb);
b = bytestream2_get_byte(&c->gb);
p = (a & 0xC0) >> 6;
src = c->frame[p] + get_video_page_offset(avctx, a, b);
send = c->frame[p] + c->frame_size;
- if (src + 3 * avctx->width + 4 > send)
+ if ((src + 3 * avctx->width + 4 > send) ||
+ (dst + 3 * avctx->width + 4 > dend))
return AVERROR_INVALIDDATA;
copy_block4(dst, src, avctx->width, avctx->width, 4);
i++;
uint8_t code, *dst, *src, *end;
int i, frame, ret;
- if (c->pic.data[0])
- avctx->release_buffer(avctx, &c->pic);
-
- c->pic.reference = 0;
- if ((ret = avctx->get_buffer(avctx, &c->pic)) < 0)
+ c->pic.reference = 3;
+ if ((ret = avctx->reget_buffer(avctx, &c->pic)) < 0)
return ret;
bytestream2_init(&c->gb, pkt->data, pkt->size);
index = bytestream2_get_byte(&c->gb);
count = bytestream2_get_byte(&c->gb) + 1;
- if (index + count > AVPALETTE_SIZE)
+ if (index + count > 256)
return AVERROR_INVALIDDATA;
- if (bytestream2_get_bytes_left(&c->gb) < 3 * AVPALETTE_SIZE)
+ if (bytestream2_get_bytes_left(&c->gb) < 3*count)
return AVERROR_INVALIDDATA;
out += index;
AVCodec ff_paf_video_decoder = {
.name = "paf_video",
.type = AVMEDIA_TYPE_VIDEO,
- .id = CODEC_ID_PAF_VIDEO,
+ .id = AV_CODEC_ID_PAF_VIDEO,
.priv_data_size = sizeof(PAFVideoDecContext),
.init = paf_vid_init,
.close = paf_vid_close,
.decode = paf_vid_decode,
+ .capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File Video"),
};
AVCodec ff_paf_audio_decoder = {
.name = "paf_audio",
.type = AVMEDIA_TYPE_AUDIO,
- .id = CODEC_ID_PAF_AUDIO,
+ .id = AV_CODEC_ID_PAF_AUDIO,
.priv_data_size = sizeof(PAFAudioDecContext),
.init = paf_aud_init,
.decode = paf_aud_decode,