24 #include <vdpau/vdpau.h>
42 rf->surface = VDP_INVALID_HANDLE;
43 rf->is_long_term = VDP_FALSE;
44 rf->top_is_reference = VDP_FALSE;
45 rf->bottom_is_reference = VDP_FALSE;
46 rf->field_order_cnt[0] = 0;
47 rf->field_order_cnt[1] = 0;
56 if (pic_structure == 0)
59 rf->surface = surface;
72 VdpPictureInfoH264 *info = &pic_ctx->info.h264;
75 VdpReferenceFrameH264 *rf = &info->referenceFrames[0];
76 #define H264_RF_COUNT FF_ARRAY_ELEMS(info->referenceFrames)
78 for (list = 0; list < 2; ++list) {
82 for (i = 0; i < ls; ++i) {
84 VdpReferenceFrameH264 *rf2;
85 VdpVideoSurface surface_ref;
93 rf2 = &info->referenceFrames[0];
95 if ((rf2->surface == surface_ref) &&
96 (rf2->is_long_term == pic->
long_ref) &&
97 (rf2->frame_idx == pic_frame_idx))
125 VdpPictureInfoH264 *info = &pic_ctx->info.h264;
128 info->slice_count = 0;
136 info->mb_adaptive_frame_field_flag = h->
sps.
mb_aff && !info->field_pic_flag;
144 info->pic_init_qp_minus26 = h->
pps.
init_qp - 26;
145 info->num_ref_idx_l0_active_minus1 = h->
pps.
ref_count[0] - 1;
146 info->num_ref_idx_l1_active_minus1 = h->
pps.
ref_count[1] - 1;
152 info->entropy_coding_mode_flag = h->
pps.
cabac;
158 sizeof(info->scaling_lists_4x4));
160 sizeof(info->scaling_lists_8x8[0]));
162 sizeof(info->scaling_lists_8x8[1]));
187 pic_ctx->info.h264.slice_count++;
213 profile = VDP_DECODER_PROFILE_H264_BASELINE;
217 profile = VDP_DECODER_PROFILE_H264_MAIN;
220 profile = VDP_DECODER_PROFILE_H264_HIGH;
227 level = VDP_DECODER_LEVEL_H264_1b;
233 .
name =
"h264_vdpau",
240 .frame_priv_data_size =
sizeof(
struct vdpau_picture_context),