X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fdvdec.c;h=89864f2edc3166497c6454240e003f4028519587;hb=e786e37326d4274c1dfbc37a6478680684c779c9;hp=7b16787e2745cf34315d68207c844952ecfde413;hpb=398000abcf980d239a789da6f69811913d2fc635;p=ffmpeg diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 7b16787e274..89864f2edc3 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -49,6 +49,7 @@ #include "internal.h" #include "put_bits.h" #include "simple_idct.h" +#include "thread.h" typedef struct BlockInfo { const uint32_t *factor_table; @@ -499,7 +500,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; + ThreadFrame frame = { .f = data }; const uint8_t *vsc_pack; int apt, is16_9, ret; const AVDVProfile *sys; @@ -520,9 +521,9 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, s->sys = sys; } - s->frame = frame; - frame->key_frame = 1; - frame->pict_type = AV_PICTURE_TYPE_I; + s->frame = frame.f; + frame.f->key_frame = 1; + frame.f->pict_type = AV_PICTURE_TYPE_I; avctx->pix_fmt = s->sys->pix_fmt; avctx->framerate = av_inv_q(s->sys->time_base); @@ -539,14 +540,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, frame, 0)) < 0) + if ((ret = ff_thread_get_buffer(avctx, &frame, 0)) < 0) return ret; - frame->interlaced_frame = 1; - frame->top_field_first = 0; + frame.f->interlaced_frame = 1; + frame.f->top_field_first = 0; /* Determine the codec's field order from the packet */ if ( *vsc_pack == dv_video_control ) { - frame->top_field_first = !(vsc_pack[3] & 0x40); + frame.f->top_field_first = !(vsc_pack[3] & 0x40); } s->buf = buf; @@ -569,6 +570,6 @@ AVCodec ff_dvvideo_decoder = { .priv_data_size = sizeof(DVVideoContext), .init = dvvideo_decode_init, .decode = dvvideo_decode_frame, - .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_SLICE_THREADS, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, .max_lowres = 3, };