diff --git a/libavcodec/dv.h b/libavcodec/dv.h index b458aeab29..d032405a26 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -39,7 +39,7 @@ typedef struct DVwork_chunk { typedef struct DVVideoContext { const AVDVProfile *sys; - AVFrame *frame; + const AVFrame *frame; AVCodecContext *avctx; uint8_t *buf; diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 9ee9933cdc..463d108b28 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -350,6 +350,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, uint8_t *buf = avpkt->data; int buf_size = avpkt->size; DVVideoContext *s = avctx->priv_data; + AVFrame *frame = data; const uint8_t *vsc_pack; int apt, is16_9, ret; const AVDVProfile *sys; @@ -369,9 +370,9 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, s->sys = sys; } - s->frame = data; - s->frame->key_frame = 1; - s->frame->pict_type = AV_PICTURE_TYPE_I; + s->frame = frame; + frame->key_frame = 1; + frame->pict_type = AV_PICTURE_TYPE_I; avctx->pix_fmt = s->sys->pix_fmt; avctx->framerate = av_inv_q(s->sys->time_base); @@ -388,12 +389,12 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, ff_set_sar(avctx, s->sys->sar[is16_9]); } - if (ff_get_buffer(avctx, s->frame, 0) < 0) { + if (ff_get_buffer(avctx, frame, 0) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return -1; } - s->frame->interlaced_frame = 1; - s->frame->top_field_first = 0; + frame->interlaced_frame = 1; + frame->top_field_first = 0; s->buf = buf; avctx->execute(avctx, dv_decode_video_segment, s->work_chunks, NULL,