56     case VDP_STATUS_NO_IMPLEMENTATION:
 
   58     case VDP_STATUS_DISPLAY_PREEMPTED:
 
   60     case VDP_STATUS_INVALID_HANDLE:
 
   62     case VDP_STATUS_INVALID_POINTER:
 
   64     case VDP_STATUS_RESOURCES:
 
   66     case VDP_STATUS_HANDLE_DEVICE_MISMATCH:
 
   68     case VDP_STATUS_ERROR:
 
   87     uint32_t w = avctx->coded_width;
 
   88     uint32_t 
h = avctx->coded_height;
 
   91     switch (avctx->sw_pix_fmt) {
 
   94         t = VDP_CHROMA_TYPE_420;
 
  100         t = VDP_CHROMA_TYPE_422;
 
  106         t = VDP_CHROMA_TYPE_444;
 
  127     VdpVideoSurfaceQueryCapabilities *surface_query_caps;
 
  128     VdpDecoderQueryCapabilities *decoder_query_caps;
 
  133     uint32_t max_level, max_mb, max_width, max_height;
 
  138     vdctx->
width            = UINT32_MAX;
 
  139     vdctx->
height           = UINT32_MAX;
 
  142         vdctx->
device  = VDP_INVALID_HANDLE;
 
  143         av_log(avctx, 
AV_LOG_WARNING, 
"hwaccel_context has not been setup by the user application, cannot initialize\n");
 
  150         vdctx->
device  = VDP_INVALID_HANDLE;
 
  167         type != VDP_CHROMA_TYPE_420)
 
  171                                      VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES,
 
  173     if (status != VDP_STATUS_OK)
 
  176         surface_query_caps = 
func;
 
  178     status = surface_query_caps(vdctx->
device, type, &supported,
 
  179                                 &max_width, &max_height);
 
  180     if (status != VDP_STATUS_OK)
 
  182     if (supported != VDP_TRUE ||
 
  183         max_width < width || max_height < height)
 
  187                                      VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES,
 
  189     if (status != VDP_STATUS_OK)
 
  192         decoder_query_caps = 
func;
 
  194     status = decoder_query_caps(vdctx->
device, profile, &supported, &max_level,
 
  195                                 &max_mb, &max_width, &max_height);
 
  196 #ifdef VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE 
  197     if ((status != VDP_STATUS_OK || supported != VDP_TRUE) && profile == VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE) {
 
  198         profile = VDP_DECODER_PROFILE_H264_MAIN;
 
  199         status = decoder_query_caps(vdctx->
device, profile, &supported,
 
  201                                     &max_width, &max_height);
 
  204     if (status != VDP_STATUS_OK)
 
  207     if (supported != VDP_TRUE || max_level < level ||
 
  208         max_width < width || max_height < height)
 
  213     if (status != VDP_STATUS_OK)
 
  220     if (status != VDP_STATUS_OK)
 
  227     if (status == VDP_STATUS_OK) {
 
  242     if (vdctx->
device == VDP_INVALID_HANDLE)
 
  244     if (vdctx->
width == UINT32_MAX && vdctx->
height == UINT32_MAX)
 
  248                                      VDP_FUNC_ID_DECODER_DESTROY, &func);
 
  249     if (status != VDP_STATUS_OK)
 
  263     if (vdctx->
device == VDP_INVALID_HANDLE)
 
  296 #if FF_API_BUFS_VDPAU 
  299     memcpy(&hwctx->
info, &pic_ctx->
info, 
sizeof(hwctx->
info));
 
  307         status = hwctx->
render2(avctx, frame, (
void *)&pic_ctx->
info,
 
  316 #if FF_API_BUFS_VDPAU 
  327 #if CONFIG_MPEG1_VDPAU_HWACCEL || \ 
  328     CONFIG_MPEG2_VDPAU_HWACCEL || CONFIG_MPEG4_VDPAU_HWACCEL || \ 
  329     CONFIG_VC1_VDPAU_HWACCEL   || CONFIG_WMV3_VDPAU_HWACCEL 
  359     buffers->struct_version  = VDP_BITSTREAM_BUFFER_VERSION;
 
  360     buffers->bitstream       = 
buf;
 
  361     buffers->bitstream_bytes = 
size;
 
  385 #if CONFIG_H264_VDPAU_DECODER 
  389     VdpReferenceFrameH264 *rf, *rf2;
 
  391     int i, list, pic_frame_idx;
 
  396     rf = &render->
info.
h264.referenceFrames[0];
 
  397 #define H264_RF_COUNT FF_ARRAY_ELEMS(render->info.h264.referenceFrames) 
  399     for (list = 0; list < 2; ++list) {
 
  403         for (i = 0; i < ls; ++i) {
 
  412             rf2 = &render->
info.
h264.referenceFrames[0];
 
  415                     (rf2->surface == render_ref->
surface)
 
  416                     && (rf2->is_long_term == pic->
long_ref)
 
  417                     && (rf2->frame_idx == pic_frame_idx)
 
  431             rf->surface             = render_ref->
surface;
 
  435             rf->field_order_cnt[0]  = pic->
field_poc[0];
 
  436             rf->field_order_cnt[1]  = pic->
field_poc[1];
 
  437             rf->frame_idx           = pic_frame_idx;
 
  444         rf->surface             = VDP_INVALID_HANDLE;
 
  445         rf->is_long_term        = 0;
 
  446         rf->top_is_reference    = 0;
 
  447         rf->bottom_is_reference = 0;
 
  448         rf->field_order_cnt[0]  = 0;
 
  449         rf->field_order_cnt[1]  = 0;
 
  462     for (i = 0; i < 2; ++i) {
 
  466         render->
info.
h264.field_order_cnt[i] = foc;
 
  480     if (render->
info.
h264.slice_count < 1)
 
  516 #if CONFIG_MPEG_VDPAU_DECODER || CONFIG_MPEG1_VDPAU_DECODER 
  518                                     int buf_size, 
int slice_count)
 
  544     for (i = 0; i < 64; ++i) {
 
  549     render->
info.
mpeg.forward_reference          = VDP_INVALID_HANDLE;
 
  550     render->
info.
mpeg.backward_reference         = VDP_INVALID_HANDLE;
 
  567     render->
info.
mpeg.slice_count                = slice_count;
 
  575 #if CONFIG_VC1_VDPAU_DECODER 
  586     render->
info.
vc1.frame_coding_mode  = v->
fcm ? v->
fcm + 1 : 0;
 
  616     render->
info.
vc1.forward_reference  = VDP_INVALID_HANDLE;
 
  617     render->
info.
vc1.backward_reference = VDP_INVALID_HANDLE;
 
  620         render->
info.
vc1.picture_type = 4;
 
  639     render->
info.
vc1.slice_count          = 1;
 
  646 #if CONFIG_MPEG4_VDPAU_DECODER 
  676     for (i = 0; i < 64; ++i) {
 
  680     render->
info.
mpeg4.forward_reference                 = VDP_INVALID_HANDLE;
 
  681     render->
info.
mpeg4.backward_reference                = VDP_INVALID_HANDLE;
 
  704 #if FF_API_VDPAU_PROFILE 
  707 #define PROFILE(prof)                      \ 
  709     *profile = VDP_DECODER_PROFILE_##prof; \ 
  719         default:                               
return AVERROR(EINVAL);
 
  726         default:                               
return AVERROR(EINVAL);
 
  734 #ifdef VDP_DECODER_PROFILE_H264_EXTENDED 
  737         default:                               
return AVERROR(EINVAL);
 
  745         default:                               
return AVERROR(EINVAL);
 
  759                           VdpGetProcAddress *get_proc, 
unsigned flags)
 
  771     memset(hwctx, 0, 
sizeof(*hwctx));
 
#define FF_PROFILE_H264_MAIN
 
#define FF_PROFILE_MPEG4_SIMPLE
 
const struct AVCodec * codec
 
const char const char void * val
 
void ff_vdpau_h264_picture_complete(H264Context *h)
 
int long_ref
1->long term reference 0->short term reference 
 
#define FF_PROFILE_MPEG2_MAIN
 
This structure describes decoded (raw) audio or video data. 
 
int(* init)(AVCodecContext *avctx)
Initialize the hwaccel private data. 
 
VdpDevice device
VDPAU device handle. 
 
ptrdiff_t const GLvoid * data
 
int coded_width
Bitstream width / height, may be different from width/height e.g. 
 
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) 
 
#define AV_LOG_WARNING
Something somehow does not look correct. 
 
VdpGetProcAddress * get_proc_address
 
int chroma_qp_index_offset[2]
 
int resync_marker
could this stream contain resync markers 
 
VdpDecoder decoder
VDPAU decoder handle. 
 
int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic_ctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
 
int extended_mv
Ext MV in P/B (not in Simple) 
 
int broadcast
TFF/RFF present. 
 
#define FF_PROFILE_H264_INTRA
 
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1 
 
uint8_t rangeredfrm
Frame decoding info for S/M profiles only. 
 
int bitstream_buffers_used
Useful bitstream buffers in the bitstream buffers table. 
 
VdpPictureInfoMPEG1Or2 mpeg
 
attribute_deprecated VdpBitstreamBuffer * bitstream_buffers
Table of bitstream buffers. 
 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
 
Public libavcodec VDPAU header. 
 
int fastuvmc
Rounding of qpel vector to hpel ? (not in Simple) 
 
H264Picture * long_ref[32]
 
AVVDPAUContext * av_vdpau_alloc_context(void)
Allocate an AVVDPAUContext. 
 
AVVDPAUContext * av_alloc_vdpaucontext(void)
allocation function for AVVDPAUContext 
 
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
 
int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, uint32_t *width, uint32_t *height)
Gets the parameters to create an adequate VDPAU video surface for the codec context using VDPAU hardw...
 
struct AVHWAccel * hwaccel
Hardware accelerator in use. 
 
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
 
void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
 
VdpBitstreamBuffer * bitstream_buffers
Table of bitstream buffers. 
 
uint8_t scaling_matrix4[6][16]
 
int deblocking_filter_parameters_present
deblocking_filter_parameters_present_flag 
 
#define FF_PROFILE_H264_BASELINE
 
int ff_vdpau_common_uninit(AVCodecContext *avctx)
 
void * hwaccel_context
Hardware accelerator context. 
 
int panscanflag
NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present. 
 
int interlace
Progressive/interlaced (RPTFTM syntax element) 
 
void ff_vdpau_mpeg4_decode_picture(Mpeg4DecContext *s, const uint8_t *buf, int buf_size)
 
int cabac
entropy_coding_mode_flag 
 
int no_rounding
apply no rounding to motion compensation (MPEG-4, msmpeg4, ...) for B-frames rounding mode is always ...
 
VdpGetProcAddress * get_proc_address
VDPAU device driver. 
 
Picture current_picture
copy of the current picture structure. 
 
attribute_deprecated int bitstream_buffers_used
Useful bitstream buffers in the bitstream buffers table. 
 
#define PICT_BOTTOM_FIELD
 
int refdist_flag
REFDIST syntax element present in II, IP, PI or PP field picture headers. 
 
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
 
VdpDecoder decoder
VDPAU decoder handle. 
 
int redundant_pic_cnt_present
redundant_pic_cnt_present_flag 
 
#define FF_PROFILE_H264_EXTENDED
 
uint16_t pp_time
time distance between the last 2 p,s,i frames 
 
void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf, int buf_size, int slice_count)
 
int psf
Progressive Segmented Frame. 
 
int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile)
Get a decoder profile that should be used for initializing a VDPAU decoder. 
 
void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, int y, int height)
 
attribute_deprecated union AVVDPAUPictureInfo info
VDPAU picture information. 
 
#define AV_HWACCEL_FLAG_IGNORE_LEVEL
Hardware acceleration should be used for decoding even if the codec level used is unknown or higher t...
 
#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH
Hardware acceleration can output YUV pixel formats with a different chroma sampling than 4:2:0 and/or...
 
int mb_aff
mb_adaptive_frame_field_flag 
 
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
 
VdpBitstreamBuffer * bitstream_buffers
The user is responsible for freeing this buffer using av_freep(). 
 
int overlap
overlapped transforms in use 
 
This structure is used to share data between the libavcodec library and the client video application...
 
int poc_type
pic_order_cnt_type 
 
int constrained_intra_pred
constrained_intra_pred_flag 
 
#define MAKE_ACCESSORS(str, name, type, field)
 
#define FF_PROFILE_H264_HIGH
 
simple assert() macros that are a bit more flexible than ISO C assert(). 
 
int weighted_pred
weighted_pred_flag 
 
int quarter_sample
1->qpel, 0->half pel ME/MC 
 
int bitstream_buffers_allocated
Allocated size of the bitstream_buffers table. 
 
int frame_num
frame_num (raw frame_num from slice header) 
 
int resync_marker
could this stream contain resync markers 
 
int postprocflag
Per-frame processing suggestion flag present. 
 
int delta_pic_order_always_zero_flag
 
attribute_deprecated int bitstream_buffers_allocated
Allocated size of the bitstream_buffers table. 
 
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 
 
uint8_t scaling_matrix8[6][64]
 
int refs
number of reference frames 
 
void ff_vdpau_h264_picture_start(H264Context *h)
 
union AVVDPAUPictureInfo info
picture parameter information for all supported codecs 
 
int ref_frame_count
num_ref_frames 
 
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
 
int tfcntrflag
TFCNTR present. 
 
#define FF_PROFILE_VC1_MAIN
 
Picture * current_picture_ptr
pointer to the current picture 
 
void * hwaccel_picture_private
Hardware accelerator private data. 
 
static int vdpau_error(VdpStatus status)
 
static struct ResampleContext * create(struct ResampleContext *c, int out_rate, int in_rate, int filter_size, int phase_shift, int linear, double cutoff, enum AVSampleFormat format, enum SwrFilterType filter_type, double kaiser_beta, double precision, int cheby, int exact_rational)
 
int init_qp
pic_init_qp_minus26 + 26 
 
H.264 / AVC / MPEG-4 part10 codec. 
 
H264SliceContext * slice_ctx
 
int direct_8x8_inference_flag
 
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given buffer if it is not large enough, otherwise do nothing. 
 
#define FF_PROFILE_VC1_SIMPLE
 
VdpPictureInfoMPEG4Part2 mpeg4
 
preferred ID for MPEG-1/2 video decoding 
 
int pic_order_present
pic_order_present_flag 
 
int rangered
RANGEREDFRM (range reduction) syntax element present at frame level. 
 
static void destroy(struct ResampleContext **c)
 
int finterpflag
INTERPFRM present. 
 
uint16_t inter_matrix[64]
 
int av_reallocp(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory through a pointer to a pointer. 
 
int concealment_motion_vectors
 
Libavcodec external API header. 
 
H264Picture * short_ref[32]
 
int ff_vdpau_mpeg_end_frame(AVCodecContext *avctx)
 
int multires
frame-level RESPIC syntax element present 
 
int field_poc[2]
top/bottom POC 
 
main external API structure. 
 
#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE
 
int bitstream_buffers_used
 
void ff_vdpau_h264_set_reference_frames(H264Context *h)
 
int extended_dmv
Additional extended dmv range at P/B-frame-level. 
 
VdpDecoderRender * render
VDPAU decoder render callback. 
 
int bitstream_buffers_allocated
Describe size/location of the compressed video data. 
 
int(* func)(AVBPrint *dst, const char *in, const char *arg)
 
H264Picture * cur_pic_ptr
 
VdpDecoderRender * render
VDPAU decoder render callback. 
 
int quantizer_mode
2 bits, quantizer mode used for sequence, see QUANT_* 
 
int f_code
forward MV resolution 
 
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4 
 
int max_b_frames
max number of B-frames for encoding 
 
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... 
 
int(* AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, const VdpPictureInfo *, uint32_t, const VdpBitstreamBuffer *)
 
int vstransform
variable-size [48]x[48] transform type + info 
 
int transform_8x8_mode
transform_8x8_mode_flag 
 
uint16_t pb_field_time
like above, just for interlaced 
 
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
 
int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, VdpGetProcAddress *get_proc, unsigned flags)
Associate a VDPAU device with a codec context for hardware acceleration. 
 
struct AVCodecContext * avctx
 
int pic_id
pic_num (short -> no wrap version of pic_num, pic_num & max_pic_num; long -> long_pic_num) ...
 
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
 
#define FF_DISABLE_DEPRECATION_WARNINGS
 
common internal api header. 
 
This structure is used as a callback between the FFmpeg decoder (vd_) and presentation (vo_) module...
 
int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx, const uint8_t *buf, uint32_t size)
 
enum FrameCodingMode fcm
Frame decoding info for Advanced profile. 
 
int log2_max_frame_num
log2_max_frame_num_minus4 + 4 
 
int(* uninit)(AVCodecContext *avctx)
Uninitialize the hwaccel private data. 
 
void * hwaccel_priv_data
hwaccel-specific private data 
 
Picture last_picture
copy of the previous picture structure. 
 
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
 
int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame, struct vdpau_picture_context *pic_ctx)
 
#define FF_PROFILE_VC1_ADVANCED
 
#define FF_ENABLE_DEPRECATION_WARNINGS
 
struct AVCodecInternal * internal
Private context used for internal data. 
 
union VDPAUPictureInfo info
VDPAU picture information. 
 
#define FF_PROFILE_MPEG2_SIMPLE
 
Picture next_picture
copy of the next picture structure. 
 
int current_slice
current slice number, used to initialize slice_num of each thread/context 
 
uint16_t intra_matrix[64]
matrix transmitted in the bitstream 
 
int dquant
How qscale varies with MBs, 2 bits (not in Simple) 
 
void ff_vdpau_add_data_chunk(uint8_t *data, const uint8_t *buf, int buf_size)
 
#define FF_PROFILE_H264_CONSTRAINED_BASELINE
 
int b_code
backward MV resolution for B-frames (MPEG-4) 
 
void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf, int buf_size)
 
static int ff_vdpau_common_reinit(AVCodecContext *avctx)
 
VdpVideoSurface surface
Used as rendered surface, never changed. 
 
uint16_t pb_time
time distance between the last b and p,s,i frame 
 
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame. 
 
int short_ref_count
number of actual short term references