diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 5d282633dd..af506ebbe9 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 679075e6a9..b75bcb9a1f 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -499,6 +499,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; @@ -519,9 +520,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); @@ -538,14 +539,14 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, ff_set_sar(avctx, s->sys->sar[is16_9]); } - if ((ret = ff_get_buffer(avctx, s->frame, 0)) < 0) + if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; - s->frame->interlaced_frame = 1; - s->frame->top_field_first = 0; + frame->interlaced_frame = 1; + frame->top_field_first = 0; /* Determine the codec's field order from the packet */ if ( *vsc_pack == dv_video_control ) { - s->frame->top_field_first = !(vsc_pack[3] & 0x40); + frame->top_field_first = !(vsc_pack[3] & 0x40); } s->buf = buf;