23 #include "config_components.h"
42 dst->PicIdx = cf ? cf->
idx : -1;
43 dst->FrameIdx = frame_idx;
44 dst->is_long_term =
src->long_ref;
45 dst->not_existing = 0;
46 dst->used_for_reference =
src->reference & 3;
47 dst->FieldOrderCnt[0] =
src->field_poc[0];
48 dst->FieldOrderCnt[1] =
src->field_poc[1];
60 CUVIDPICPARAMS *pp = &
ctx->pic_params;
61 CUVIDH264PICPARAMS *ppc = &pp->CodecSpecific.h264;
71 fdd =
h->cur_pic_ptr->f->private_ref;
74 *pp = (CUVIDPICPARAMS) {
75 .PicWidthInMbs =
h->mb_width,
76 .FrameHeightInMbs =
h->mb_height,
77 .CurrPicIdx = cf->
idx,
81 .ref_pic_flag =
h->nal_ref_idc != 0,
84 .CodecSpecific.h264 = {
85 .log2_max_frame_num_minus4 =
sps->log2_max_frame_num - 4,
86 .pic_order_cnt_type =
sps->poc_type,
87 .log2_max_pic_order_cnt_lsb_minus4 =
FFMAX(
sps->log2_max_poc_lsb - 4, 0),
88 .delta_pic_order_always_zero_flag =
sps->delta_pic_order_always_zero_flag,
89 .frame_mbs_only_flag =
sps->frame_mbs_only_flag,
90 .direct_8x8_inference_flag =
sps->direct_8x8_inference_flag,
91 .num_ref_frames =
sps->ref_frame_count,
92 .residual_colour_transform_flag =
sps->residual_color_transform_flag,
93 .bit_depth_luma_minus8 =
sps->bit_depth_luma - 8,
94 .bit_depth_chroma_minus8 =
sps->bit_depth_chroma - 8,
95 .qpprime_y_zero_transform_bypass_flag =
sps->transform_bypass,
97 .entropy_coding_mode_flag =
pps->cabac,
98 .pic_order_present_flag =
pps->pic_order_present,
99 .num_ref_idx_l0_active_minus1 =
pps->ref_count[0] - 1,
100 .num_ref_idx_l1_active_minus1 =
pps->ref_count[1] - 1,
101 .weighted_pred_flag =
pps->weighted_pred,
102 .weighted_bipred_idc =
pps->weighted_bipred_idc,
103 .pic_init_qp_minus26 =
pps->init_qp - 26 - 6 * (
sps->bit_depth_luma - 8),
104 .deblocking_filter_control_present_flag =
pps->deblocking_filter_parameters_present,
105 .redundant_pic_cnt_present_flag =
pps->redundant_pic_cnt_present,
106 .transform_8x8_mode_flag =
pps->transform_8x8_mode,
108 .constrained_intra_pred_flag =
pps->constrained_intra_pred,
109 .chroma_qp_index_offset =
pps->chroma_qp_index_offset[0],
110 .second_chroma_qp_index_offset =
pps->chroma_qp_index_offset[1],
111 .ref_pic_flag =
h->nal_ref_idc != 0,
112 .frame_num =
h->poc.frame_num,
113 .CurrFieldOrderCnt[0] =
h->cur_pic_ptr->field_poc[0],
114 .CurrFieldOrderCnt[1] =
h->cur_pic_ptr->field_poc[1],
118 memcpy(ppc->WeightScale4x4,
pps->scaling_matrix4,
sizeof(ppc->WeightScale4x4));
119 memcpy(ppc->WeightScale8x8[0],
pps->scaling_matrix8[0],
sizeof(ppc->WeightScale8x8[0]));
120 memcpy(ppc->WeightScale8x8[1],
pps->scaling_matrix8[3],
sizeof(ppc->WeightScale8x8[0]));
123 for (
i = 0;
i <
h->short_ref_count;
i++)
125 for (
i = 0;
i < 16;
i++) {
131 ppc->dpb[
i].PicIdx = -1;
140 CUVIDPICPARAMS *pp = &
ctx->pic_params;
146 ctx->bitstream_len +
size + 3);
149 ctx->bitstream =
ctx->bitstream_internal =
tmp;
152 (
ctx->nb_slices + 1) *
sizeof(*
ctx->slice_offsets));
159 ctx->slice_offsets[
ctx->nb_slices] =
ctx->bitstream_len ;
160 ctx->bitstream_len +=
size + 3;
164 pp->intra_pic_flag = 0;
176 sps->ref_frame_count +
sps->num_reorder_frames, 0);
179 #if CONFIG_H264_NVDEC_HWACCEL
187 .
p.
name =
"h264_nvdec",
194 .frame_params = nvdec_h264_cuda_frame_params,
201 #if CONFIG_H264_NVDEC_CUARRAY_HWACCEL
209 .
p.
name =
"h264_nvdec_cuarray",
216 .frame_params = nvdec_h264_cuarray_frame_params,