diff options
Diffstat (limited to 'ffmpeg/libavcodec/vdpau_mpeg4.c')
| -rw-r--r-- | ffmpeg/libavcodec/vdpau_mpeg4.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/ffmpeg/libavcodec/vdpau_mpeg4.c b/ffmpeg/libavcodec/vdpau_mpeg4.c index cb8ee0a..282796e 100644 --- a/ffmpeg/libavcodec/vdpau_mpeg4.c +++ b/ffmpeg/libavcodec/vdpau_mpeg4.c @@ -24,15 +24,18 @@ #include <vdpau/vdpau.h> #include "avcodec.h" +#include "mpeg4video.h" #include "vdpau.h" #include "vdpau_internal.h" static int vdpau_mpeg4_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size) { - MpegEncContext * const s = avctx->priv_data; - AVVDPAUContext *hwctx = avctx->hwaccel_context; - VdpPictureInfoMPEG4Part2 *info = &hwctx->info.mpeg4; + Mpeg4DecContext *ctx = avctx->priv_data; + MpegEncContext * const s = &ctx->m; + Picture *pic = s->current_picture_ptr; + struct vdpau_picture_context *pic_ctx = pic->hwaccel_picture_private; + VdpPictureInfoMPEG4Part2 *info = &pic_ctx->info.mpeg4; VdpVideoSurface ref; int i; @@ -61,7 +64,7 @@ static int vdpau_mpeg4_start_frame(AVCodecContext *avctx, info->vop_time_increment_resolution = s->avctx->time_base.den; info->vop_fcode_forward = s->f_code; info->vop_fcode_backward = s->b_code; - info->resync_marker_disable = !s->resync_marker; + info->resync_marker_disable = !ctx->resync_marker; info->interlaced = !s->progressive_sequence; info->quant_type = s->mpeg_quant; info->quarter_sample = s->quarter_sample; @@ -74,8 +77,8 @@ static int vdpau_mpeg4_start_frame(AVCodecContext *avctx, info->non_intra_quantizer_matrix[i] = s->inter_matrix[i]; } - ff_vdpau_common_start_frame(avctx, buffer, size); - return ff_vdpau_add_buffer(avctx, buffer, size); + ff_vdpau_common_start_frame(pic, buffer, size); + return ff_vdpau_add_buffer(pic, buffer, size); } static int vdpau_mpeg4_decode_slice(av_unused AVCodecContext *avctx, @@ -94,6 +97,7 @@ AVHWAccel ff_h263_vdpau_hwaccel = { .start_frame = vdpau_mpeg4_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_mpeg4_decode_slice, + .priv_data_size = sizeof(struct vdpau_picture_context), }; #endif @@ -106,5 +110,6 @@ AVHWAccel ff_mpeg4_vdpau_hwaccel = { .start_frame = vdpau_mpeg4_start_frame, .end_frame = ff_vdpau_mpeg_end_frame, .decode_slice = vdpau_mpeg4_decode_slice, + .priv_data_size = sizeof(struct vdpau_picture_context), }; #endif |
