mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-04 06:08:26 +02:00
SVQ3: do not modify const input buffer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
b0e7a932e6
commit
2264c11081
@ -70,6 +70,8 @@ typedef struct {
|
||||
int unknown_flag;
|
||||
int next_slice_index;
|
||||
uint32_t watermark_key;
|
||||
uint8_t *buf;
|
||||
int buf_size;
|
||||
} SVQ3Context;
|
||||
|
||||
#define FULLPEL_MODE 1
|
||||
@ -927,12 +929,12 @@ static int svq3_decode_frame(AVCodecContext *avctx,
|
||||
void *data, int *data_size,
|
||||
AVPacket *avpkt)
|
||||
{
|
||||
const uint8_t *buf = avpkt->data;
|
||||
SVQ3Context *svq3 = avctx->priv_data;
|
||||
H264Context *h = &svq3->h;
|
||||
MpegEncContext *s = &h->s;
|
||||
int buf_size = avpkt->size;
|
||||
int m, mb_type, left;
|
||||
uint8_t *buf;
|
||||
|
||||
/* special case for last picture */
|
||||
if (buf_size == 0) {
|
||||
@ -944,10 +946,21 @@ static int svq3_decode_frame(AVCodecContext *avctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
init_get_bits (&s->gb, buf, 8*buf_size);
|
||||
|
||||
s->mb_x = s->mb_y = h->mb_xy = 0;
|
||||
|
||||
if (svq3->watermark_key) {
|
||||
svq3->buf = av_fast_realloc(svq3->buf, &svq3->buf_size,
|
||||
buf_size+FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!svq3->buf)
|
||||
return AVERROR(ENOMEM);
|
||||
memcpy(svq3->buf, avpkt->data, buf_size);
|
||||
buf = svq3->buf;
|
||||
} else {
|
||||
buf = avpkt->data;
|
||||
}
|
||||
|
||||
init_get_bits(&s->gb, buf, 8*buf_size);
|
||||
|
||||
if (svq3_decode_slice_header(avctx))
|
||||
return -1;
|
||||
|
||||
@ -1092,6 +1105,9 @@ static int svq3_decode_end(AVCodecContext *avctx)
|
||||
|
||||
MPV_common_end(s);
|
||||
|
||||
av_freep(&svq3->buf);
|
||||
svq3->buf_size = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user