24 #include <vdpau/vdpau.h>
37 VdpPictureInfoMPEG1Or2 *info = &pic_ctx->info.mpeg;
42 info->forward_reference = VDP_INVALID_HANDLE;
43 info->backward_reference = VDP_INVALID_HANDLE;
48 assert(ref != VDP_INVALID_HANDLE);
49 info->backward_reference = ref;
53 info->forward_reference = ref;
56 info->slice_count = 0;
67 info->full_pel_forward_vector = s->
full_pel[0];
68 info->full_pel_backward_vector = s->
full_pel[1];
74 for (i = 0; i < 64; ++i) {
76 info->non_intra_quantizer_matrix[i] = s->
inter_matrix[i];
94 pic_ctx->info.mpeg.slice_count++;
98 #if CONFIG_MPEG1_VDPAU_HWACCEL
102 VDP_DECODER_LEVEL_MPEG1_NA);
106 .
name =
"mpeg1_vdpau",
113 .frame_priv_data_size =
sizeof(
struct vdpau_picture_context),
114 .
init = vdpau_mpeg1_init,
120 #if CONFIG_MPEG2_VDPAU_HWACCEL
127 profile = VDP_DECODER_PROFILE_MPEG2_MAIN;
130 profile = VDP_DECODER_PROFILE_MPEG2_SIMPLE;
140 .
name =
"mpeg2_vdpau",
147 .frame_priv_data_size =
sizeof(
struct vdpau_picture_context),
148 .init = vdpau_mpeg2_init,
const char const char void * val
#define FF_PROFILE_MPEG2_MAIN
static av_cold int init(AVCodecContext *avctx)
int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic_ctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
static int vdpau_mpeg_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
Public libavcodec VDPAU header.
int ff_vdpau_common_uninit(AVCodecContext *avctx)
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
const char * name
Name of the hardware accelerated codec.
Picture * current_picture_ptr
pointer to the current picture
void * hwaccel_picture_private
Hardware accelerator private data.
preferred ID for MPEG-1/2 video decoding
uint16_t inter_matrix[64]
int concealment_motion_vectors
Libavcodec external API header.
int ff_vdpau_mpeg_end_frame(AVCodecContext *avctx)
main external API structure.
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface.
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx, const uint8_t *buf, uint32_t size)
Picture last_picture
copy of the previous picture structure.
#define FF_PROFILE_MPEG2_SIMPLE
Picture next_picture
copy of the next picture structure.
uint16_t intra_matrix[64]
matrix transmitted in the bitstream
static int vdpau_mpeg_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame.