diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index 1b29f20816..c1c7681402 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -30,15 +30,15 @@ #include "mpegvideo.h" #include "dxva2_internal.h" -void *ff_dxva2_get_surface(const Picture *picture) +void *ff_dxva2_get_surface(const AVFrame *frame) { - return picture->f.data[3]; + return frame->data[3]; } unsigned ff_dxva2_get_surface_index(const struct dxva_context *ctx, - const Picture *picture) + const AVFrame *frame) { - void *surface = ff_dxva2_get_surface(picture); + void *surface = ff_dxva2_get_surface(frame); unsigned i; for (i = 0; i < ctx->surface_count; i++) @@ -91,7 +91,7 @@ int ff_dxva2_commit_buffer(AVCodecContext *avctx, return result; } -int ff_dxva2_common_end_frame(AVCodecContext *avctx, Picture *pic, +int ff_dxva2_common_end_frame(AVCodecContext *avctx, AVFrame *frame, const void *pp, unsigned pp_size, const void *qm, unsigned qm_size, int (*commit_bs_si)(AVCodecContext *, @@ -107,7 +107,7 @@ int ff_dxva2_common_end_frame(AVCodecContext *avctx, Picture *pic, do { hr = IDirectXVideoDecoder_BeginFrame(ctx->decoder, - ff_dxva2_get_surface(pic), + ff_dxva2_get_surface(frame), NULL); if (hr == E_PENDING) av_usleep(2000); diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c index 854bfcd38e..30184ab6d1 100644 --- a/libavcodec/dxva2_h264.c +++ b/libavcodec/dxva2_h264.c @@ -51,7 +51,7 @@ static void fill_picture_parameters(struct dxva_context *ctx, const H264Context memset(pp, 0, sizeof(*pp)); /* Configure current picture */ fill_picture_entry(&pp->CurrPic, - ff_dxva2_get_surface_index(ctx, current_picture), + ff_dxva2_get_surface_index(ctx, ¤t_picture->f), h->picture_structure == PICT_BOTTOM_FIELD); /* Configure the set of references */ pp->UsedForReferenceFlags = 0; @@ -67,7 +67,7 @@ static void fill_picture_parameters(struct dxva_context *ctx, const H264Context } if (r) { fill_picture_entry(&pp->RefFrameList[i], - ff_dxva2_get_surface_index(ctx, r), + ff_dxva2_get_surface_index(ctx, &r->f), r->long_ref != 0); if ((r->reference & PICT_TOP_FIELD) && r->field_poc[0] != INT_MAX) @@ -243,9 +243,9 @@ static void fill_slice_long(AVCodecContext *avctx, DXVA_Slice_H264_Long *slice, unsigned plane; unsigned index; if (ctx->workaround & FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO) - index = ff_dxva2_get_surface_index(ctx, r); + index = ff_dxva2_get_surface_index(ctx, &r->f); else - index = get_refpic_index(pp, ff_dxva2_get_surface_index(ctx, r)); + index = get_refpic_index(pp, ff_dxva2_get_surface_index(ctx, &r->f)); fill_picture_entry(&slice->RefPicList[list][i], index, r->reference == PICT_BOTTOM_FIELD); for (plane = 0; plane < 3; plane++) { @@ -448,7 +448,7 @@ static int dxva2_h264_end_frame(AVCodecContext *avctx) if (ctx_pic->slice_count <= 0 || ctx_pic->bitstream_size <= 0) return -1; - ret = ff_dxva2_common_end_frame(avctx, h->cur_pic_ptr, + ret = ff_dxva2_common_end_frame(avctx, &h->cur_pic_ptr->f, &ctx_pic->pp, sizeof(ctx_pic->pp), &ctx_pic->qm, sizeof(ctx_pic->qm), commit_bitstream_and_slice_buffer); diff --git a/libavcodec/dxva2_internal.h b/libavcodec/dxva2_internal.h index 8a454c1299..427c1ffdf8 100644 --- a/libavcodec/dxva2_internal.h +++ b/libavcodec/dxva2_internal.h @@ -35,10 +35,10 @@ #include "avcodec.h" #include "mpegvideo.h" -void *ff_dxva2_get_surface(const Picture *picture); +void *ff_dxva2_get_surface(const AVFrame *frame); unsigned ff_dxva2_get_surface_index(const struct dxva_context *, - const Picture *picture); + const AVFrame *frame); int ff_dxva2_commit_buffer(AVCodecContext *, struct dxva_context *, DXVA2_DecodeBufferDesc *, @@ -46,7 +46,7 @@ int ff_dxva2_commit_buffer(AVCodecContext *, struct dxva_context *, unsigned mb_count); -int ff_dxva2_common_end_frame(AVCodecContext *, Picture *, +int ff_dxva2_common_end_frame(AVCodecContext *, AVFrame *, const void *pp, unsigned pp_size, const void *qm, unsigned qm_size, int (*commit_bs_si)(AVCodecContext *, diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c index 636adc339b..5feba93880 100644 --- a/libavcodec/dxva2_mpeg2.c +++ b/libavcodec/dxva2_mpeg2.c @@ -44,14 +44,14 @@ static void fill_picture_parameters(AVCodecContext *avctx, int is_field = s->picture_structure != PICT_FRAME; memset(pp, 0, sizeof(*pp)); - pp->wDecodedPictureIndex = ff_dxva2_get_surface_index(ctx, current_picture); + pp->wDecodedPictureIndex = ff_dxva2_get_surface_index(ctx, ¤t_picture->f); pp->wDeblockedPictureIndex = 0; if (s->pict_type != AV_PICTURE_TYPE_I) - pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->last_picture); + pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->last_picture.f); else pp->wForwardRefPictureIndex = 0xffff; if (s->pict_type == AV_PICTURE_TYPE_B) - pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->next_picture); + pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->next_picture.f); else pp->wBackwardRefPictureIndex = 0xffff; pp->wPicWidthInMBminus1 = s->mb_width - 1; @@ -258,7 +258,7 @@ static int dxva2_mpeg2_end_frame(AVCodecContext *avctx) if (ctx_pic->slice_count <= 0 || ctx_pic->bitstream_size <= 0) return -1; - ret = ff_dxva2_common_end_frame(avctx, s->current_picture_ptr, + ret = ff_dxva2_common_end_frame(avctx, &s->current_picture_ptr->f, &ctx_pic->pp, sizeof(ctx_pic->pp), &ctx_pic->qm, sizeof(ctx_pic->qm), commit_bitstream_and_slice_buffer); diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c index 39fcdb3b73..c3450f7866 100644 --- a/libavcodec/dxva2_vc1.c +++ b/libavcodec/dxva2_vc1.c @@ -51,13 +51,13 @@ static void fill_picture_parameters(AVCodecContext *avctx, memset(pp, 0, sizeof(*pp)); pp->wDecodedPictureIndex = - pp->wDeblockedPictureIndex = ff_dxva2_get_surface_index(ctx, current_picture); + pp->wDeblockedPictureIndex = ff_dxva2_get_surface_index(ctx, ¤t_picture->f); if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type) - pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->last_picture); + pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->last_picture.f); else pp->wForwardRefPictureIndex = 0xffff; if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type) - pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->next_picture); + pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(ctx, &s->next_picture.f); else pp->wBackwardRefPictureIndex = 0xffff; if (v->profile == PROFILE_ADVANCED) { @@ -283,7 +283,7 @@ static int dxva2_vc1_end_frame(AVCodecContext *avctx) if (ctx_pic->bitstream_size <= 0) return -1; - ret = ff_dxva2_common_end_frame(avctx, v->s.current_picture_ptr, + ret = ff_dxva2_common_end_frame(avctx, &v->s.current_picture_ptr->f, &ctx_pic->pp, sizeof(ctx_pic->pp), NULL, 0, commit_bitstream_and_slice_buffer);