static VdpPictureInfoH264 gst_vdp_h264_dec_fill_info (GstVdpH264Dec * h264_dec, GstH264Frame * h264_frame) { GstH264Slice *slice; GstH264Picture *pic; GstH264Sequence *seq; VdpPictureInfoH264 info; slice = &h264_frame->slice_hdr; pic = slice->picture; seq = pic->sequence; info.slice_count = h264_frame->slices->len; /* FIXME: we only handle frames for now */ info.field_order_cnt[0] = h264_frame->poc; info.field_order_cnt[1] = h264_frame->poc; info.is_reference = h264_frame->is_reference; info.frame_num = slice->frame_num; info.field_pic_flag = slice->field_pic_flag; info.bottom_field_flag = slice->bottom_field_flag; info.num_ref_idx_l0_active_minus1 = slice->num_ref_idx_l0_active_minus1; info.num_ref_idx_l1_active_minus1 = slice->num_ref_idx_l1_active_minus1; info.num_ref_frames = seq->num_ref_frames; info.frame_mbs_only_flag = seq->frame_mbs_only_flag; info.mb_adaptive_frame_field_flag = seq->mb_adaptive_frame_field_flag; info.log2_max_frame_num_minus4 = seq->log2_max_frame_num_minus4; info.pic_order_cnt_type = seq->pic_order_cnt_type; info.log2_max_pic_order_cnt_lsb_minus4 = seq->log2_max_pic_order_cnt_lsb_minus4; info.delta_pic_order_always_zero_flag = seq->delta_pic_order_always_zero_flag; info.direct_8x8_inference_flag = seq->direct_8x8_inference_flag; info.constrained_intra_pred_flag = pic->constrained_intra_pred_flag; info.weighted_pred_flag = pic->weighted_pred_flag; info.weighted_bipred_idc = pic->weighted_bipred_idc; info.transform_8x8_mode_flag = pic->transform_8x8_mode_flag; info.chroma_qp_index_offset = pic->chroma_qp_index_offset; info.second_chroma_qp_index_offset = pic->second_chroma_qp_index_offset; info.pic_init_qp_minus26 = pic->pic_init_qp_minus26; info.entropy_coding_mode_flag = pic->entropy_coding_mode_flag; info.pic_order_present_flag = pic->pic_order_present_flag; info.deblocking_filter_control_present_flag = pic->deblocking_filter_control_present_flag; info.redundant_pic_cnt_present_flag = pic->redundant_pic_cnt_present_flag; memcpy (&info.scaling_lists_4x4, &pic->scaling_lists_4x4, 96); memcpy (&info.scaling_lists_8x8, &pic->scaling_lists_8x8, 128); gst_h264_dpb_fill_reference_frames (h264_dec->dpb, info.referenceFrames); return info; }
static void gst_vdp_h264_dec_fill_info (VdpPictureInfoH264 * info, GstVdpH264Dec * h264_dec, GstH264Frame * h264_frame, GstH264SliceHdr * slice) { GstH264PPS *pic; GstH264SPS *seq; pic = slice->pps; seq = pic->sequence; GST_DEBUG_OBJECT (h264_dec, "Filling info"); /* FIXME: we only handle frames for now */ info->field_order_cnt[0] = h264_frame->poc; info->field_order_cnt[1] = h264_frame->poc; info->is_reference = h264_frame->is_reference; info->frame_num = slice->frame_num; info->field_pic_flag = slice->field_pic_flag; info->bottom_field_flag = slice->bottom_field_flag; info->num_ref_idx_l0_active_minus1 = slice->num_ref_idx_l0_active_minus1; info->num_ref_idx_l1_active_minus1 = slice->num_ref_idx_l1_active_minus1; info->num_ref_frames = seq->num_ref_frames; info->mb_adaptive_frame_field_flag = seq->mb_adaptive_frame_field_flag; info->frame_mbs_only_flag = seq->frame_mbs_only_flag; info->log2_max_frame_num_minus4 = seq->log2_max_frame_num_minus4; info->pic_order_cnt_type = seq->pic_order_cnt_type; info->log2_max_pic_order_cnt_lsb_minus4 = seq->log2_max_pic_order_cnt_lsb_minus4; info->delta_pic_order_always_zero_flag = seq->delta_pic_order_always_zero_flag; info->direct_8x8_inference_flag = seq->direct_8x8_inference_flag; info->constrained_intra_pred_flag = pic->constrained_intra_pred_flag; info->weighted_pred_flag = pic->weighted_pred_flag; info->weighted_bipred_idc = pic->weighted_bipred_idc; info->transform_8x8_mode_flag = pic->transform_8x8_mode_flag; info->chroma_qp_index_offset = pic->chroma_qp_index_offset; info->second_chroma_qp_index_offset = pic->second_chroma_qp_index_offset; info->pic_init_qp_minus26 = pic->pic_init_qp_minus26; info->entropy_coding_mode_flag = pic->entropy_coding_mode_flag; info->pic_order_present_flag = pic->pic_order_present_flag; info->deblocking_filter_control_present_flag = pic->deblocking_filter_control_present_flag; info->redundant_pic_cnt_present_flag = pic->redundant_pic_cnt_present_flag; memcpy (&info->scaling_lists_4x4, &pic->scaling_lists_4x4, 96); memcpy (&info->scaling_lists_8x8, &pic->scaling_lists_8x8, 128); gst_h264_dpb_fill_reference_frames (h264_dec->dpb, info->referenceFrames); }