Home | History | Annotate | Download | only in parser

Lines Matching refs:parser

49 static void viddec_mpeg2_set_seq_ext_defaults(struct viddec_mpeg2_parser *parser)
51 parser->info.seq_ext.progressive_sequence = true;
52 parser->info.seq_ext.chroma_format = MPEG2_CF_420;
58 static void viddec_mpeg2_set_pic_cod_ext_defaults(struct viddec_mpeg2_parser *parser)
60 parser->info.pic_cod_ext.picture_structure = MPEG2_PIC_STRUCT_FRAME;
61 parser->info.pic_cod_ext.frame_pred_frame_dct = true;
62 parser->info.pic_cod_ext.progressive_frame = true;
68 static void viddec_mpeg2_pack_qmat(struct viddec_mpeg2_parser *parser)
75 /* When transferring the quantization matrix data from the parser */
80 qmat_packed = (uint32_t *) parser->wi.qmat;
81 qmat_unpacked = (uint32_t *) &parser->info.qnt_mat;
90 static void viddec_mpeg2_pack_qmat(struct viddec_mpeg2_parser *parser)
98 /* When transferring the quantization matrix data from the parser */
103 qmat_packed = (uint32_t *) parser->wi.qmat;
104 qmat_unpacked = (uint8_t *) &parser->info.qnt_mat;
119 /* in parser context into workitems by bit masking. These workitems are then */
123 struct viddec_mpeg2_parser *parser = (struct viddec_mpeg2_parser *) ctxt;
126 parser->wi.csi1 = 0x0;
127 parser->wi.csi2 = 0x0;
128 parser->wi.cpi1 = 0x0;
129 parser->wi.cpce1 = 0x0;
132 if (!(parser->mpeg2_curr_seq_headers & MPEG2_HEADER_SEQ_EXT))
134 viddec_mpeg2_set_seq_ext_defaults(parser);
136 if (!(parser->mpeg2_curr_frame_headers & MPEG2_HEADER_PIC_COD_EXT))
138 viddec_mpeg2_set_pic_cod_ext_defaults(parser);
142 parser->wi.csi1 |= (parser->mpeg2_stream) << 1;
143 parser->wi.csi1 |= (parser->info.seq_hdr.constrained_parameters_flag) << 2;
144 parser->wi.csi1 |= (parser->info.seq_ext.progressive_sequence) << 3;
145 parser->wi.csi1 |= (parser->info.seq_ext.chroma_format) << 16;
146 parser->wi.csi1 |= (parser->info.qnt_ext.load_intra_quantiser_matrix) << 19;
147 parser->wi.csi1 |= (parser->info.qnt_ext.load_non_intra_quantiser_matrix) << 20;
148 parser->wi.csi1 |= (parser->info.qnt_ext.load_chroma_intra_quantiser_matrix) << 21;
149 parser->wi.csi1 |= (parser->info.qnt_ext.load_chroma_non_intra_quantiser_matrix) << 22;
150 MPEG2_DEB("Core Sequence Info 1: 0x%.8X\n", parser->wi.csi1);
153 parser->wi.csi2 |= (parser->info.seq_hdr.horizontal_size_value & MPEG2_BIT_MASK_11);
154 parser->wi.csi2 |= (parser->info.seq_hdr.vertical_size_value & MPEG2_BIT_MASK_11) << 14;
155 MPEG2_DEB("Core Sequence Info 2: 0x%.8X\n", parser->wi.csi2);
158 parser->wi.cpi1 |= (parser->info.pic_hdr.full_pel_forward_vect);
159 parser->wi.cpi1 |= (parser->info.pic_hdr.forward_f_code) << 1;
160 parser->wi.cpi1 |= (parser->info.pic_hdr.full_pel_backward_vect) << 4;
161 parser->wi.cpi1 |= (parser->info.pic_hdr.backward_f_code) << 5;
162 parser->wi.cpi1 |= (parser->info.pic_cod_ext.fcode00) << 8;
163 parser->wi.cpi1 |= (parser->info.pic_cod_ext.fcode01) << 12;
164 parser->wi.cpi1 |= (parser->info.pic_cod_ext.fcode10) << 16;
165 parser->wi.cpi1 |= (parser->info.pic_cod_ext.fcode11) << 20;
166 parser->wi.cpi1 |= (parser->info.pic_cod_ext.intra_dc_precision) << 24;
167 parser->wi.cpi1 |= (parser->info.pic_hdr.picture_coding_type-1) << 26;
168 MPEG2_DEB("Core Picture Info 1: 0x%.8X\n", parser->wi.cpi1);
171 parser->wi.cpce1 |= (parser->info.pic_cod_ext.composite_display_flag);
172 parser->wi.cpce1 |= (parser->info.pic_cod_ext.progressive_frame) << 1;
173 parser->wi.cpce1 |= (parser->info.pic_cod_ext.chroma_420_type) << 2;
174 parser->wi.cpce1 |= (parser->info.pic_cod_ext.repeat_first_field) << 3;
175 parser->wi.cpce1 |= (parser->info.pic_cod_ext.alternate_scan) << 4;
176 parser->wi.cpce1 |= (parser->info.pic_cod_ext.intra_vlc_format) << 5;
177 parser->wi.cpce1 |= (parser->info.pic_cod_ext.q_scale_type) << 6;
178 parser->wi.cpce1 |= (parser->info.pic_cod_ext.concealment_motion_vectors) << 7;
179 parser->wi.cpce1 |= (parser->info.pic_cod_ext.frame_pred_frame_dct) << 8;
180 parser->wi.cpce1 |= (parser->info.pic_cod_ext.top_field_first) << 9;
181 parser->wi.cpce1 |= (parser->info.pic_cod_ext.picture_structure) << 10;
182 MPEG2_DEB("Core Picture Ext Info 1: 0x%.8X\n", parser->wi.cpce1);
220 /* Get MPEG2 Parser context */
221 struct viddec_mpeg2_parser *parser = (struct viddec_mpeg2_parser *) ctxt;
222 viddec_workload_t *wl = viddec_mpeg2_get_header( parent, parser->mpeg2_use_next_workload );
226 frame_type = parser->info.pic_hdr.picture_coding_type;
230 if ((!parser->mpeg2_picture_interlaced)
231 || ((parser->mpeg2_picture_interlaced) && (parser->mpeg2_first_field)))
238 if (parser->mpeg2_ref_table_updated)
240 mpeg2_send_ref_reorder(parent, parser->mpeg2_use_next_workload);
253 mpeg2_emit_frameid(parent, VIDDEC_WORKLOAD_MPEG2_REF_PAST, parser->mpeg2_use_next_workload);
258 mpeg2_emit_frameid(parent, VIDDEC_WORKLOAD_MPEG2_REF_PAST, parser->mpeg2_use_next_workload);
259 mpeg2_emit_frameid(parent, VIDDEC_WORKLOAD_MPEG2_REF_FUTURE, parser->mpeg2_use_next_workload);
264 if (!parser->mpeg2_picture_interlaced)
266 parser->mpeg2_wl_status |= MPEG2_WL_REF_INFO;
272 parser->mpeg2_wl_status |= MPEG2_WL_REF_INFO;
279 parser->mpeg2_ref_table_updated = true;
290 /* Get MPEG2 Parser context */
291 struct viddec_mpeg2_parser *parser = (struct viddec_mpeg2_parser *) ctxt;
294 viddec_workload_t *wl = viddec_mpeg2_get_header( parent, parser->mpeg2_use_next_workload );
303 /* Update parser status, if found */
306 parser->mpeg2_wl_status |= MPEG2_WL_UNSUPPORTED;
315 /* Get MPEG2 Parser context */
316 struct viddec_mpeg2_parser *parser = (struct viddec_mpeg2_parser *) ctxt;
321 if (parser->mpeg2_curr_frame_headers & MPEG2_HEADER_SEQ)
326 viddec_fw_mp2_sh_set_horizontal_size_value ( &(wi.mp2_sh) , parser->info.seq_hdr.horizontal_size_value);
327 viddec_fw_mp2_sh_set_vertical_size_value ( &(wi.mp2_sh) , parser->info.seq_hdr.vertical_size_value);
328 viddec_fw_mp2_sh_set_aspect_ratio_information ( &(wi.mp2_sh) , parser->info.seq_hdr.aspect_ratio_information);
329 viddec_fw_mp2_sh_set_frame_rate_code ( &(wi.mp2_sh) , parser->info.seq_hdr.frame_rate_code);
330 viddec_fw_mp2_sh_set_bit_rate_value ( &(wi.mp2_sh) , parser->info.seq_hdr.bit_rate_value);
331 viddec_fw_mp2_sh_set_vbv_buffer_size_value ( &(wi.mp2_sh) , parser->info.seq_hdr.vbv_buffer_size_value);
333 viddec_mpeg2_append_workitem(parent, &wi, parser->mpeg2_use_next_workload);
337 if (parser->mpeg2_curr_frame_headers & MPEG2_HEADER_SEQ_EXT)
342 viddec_fw_mp2_se_set_profile_and_level_indication( &(wi.mp2_se) , parser->info.seq_ext.profile_and_level_indication);
343 viddec_fw_mp2_se_set_progressive_sequence ( &(wi.mp2_se) , parser->info.seq_ext.progressive_sequence);
344 viddec_fw_mp2_se_set_chroma_format ( &(wi.mp2_se) , parser->info.seq_ext.chroma_format);
345 viddec_fw_mp2_se_set_horizontal_size_extension ( &(wi.mp2_se) , parser->info.seq_ext.horizontal_size_extension);
346 viddec_fw_mp2_se_set_vertical_size_extension ( &(wi.mp2_se) , parser->info.seq_ext.vertical_size_extension);
347 viddec_fw_mp2_se_set_bit_rate_extension ( &(wi.mp2_se) , parser->info.seq_ext.bit_rate_extension);
348 viddec_fw_mp2_se_set_vbv_buffer_size_extension ( &(wi.mp2_se) , parser->info.seq_ext.vbv_buffer_size_extension);
349 viddec_fw_mp2_se_set_frame_rate_extension_n ( &(wi.mp2_se) , parser->info.seq_ext.frame_rate_extension_n);
350 viddec_fw_mp2_se_set_frame_rate_extension_d ( &(wi.mp2_se) , parser->info.seq_ext.frame_rate_extension_d);
352 viddec_mpeg2_append_workitem(parent, &wi, parser->mpeg2_use_next_workload);
356 if (parser->mpeg2_curr_frame_headers & MPEG2_HEADER_SEQ_DISP_EXT)
361 viddec_fw_mp2_sde_set_video_format ( &(wi.mp2_sde) , parser->info.seq_disp_ext.video_format);
362 viddec_fw_mp2_sde_set_color_description ( &(wi.mp2_sde) , parser->info.seq_disp_ext.colour_description);
363 viddec_fw_mp2_sde_set_color_primaries ( &(wi.mp2_sde) , parser->info.seq_disp_ext.colour_primaries);
364 viddec_fw_mp2_sde_set_transfer_characteristics( &(wi.mp2_sde) , parser->info.seq_disp_ext.transfer_characteristics);
365 viddec_fw_mp2_sde_set_display_horizontal_size ( &(wi.mp2_sde) , parser->info.seq_disp_ext.display_horizontal_size);
366 viddec_fw_mp2_sde_set_display_vertical_size ( &(wi.mp2_sde) , parser->info.seq_disp_ext.display_vertical_size);
368 viddec_mpeg2_append_workitem(parent, &wi, parser->mpeg2_use_next_workload);
372 if (parser->mpeg2_curr_frame_headers & MPEG2_HEADER_GOP)
377 viddec_fw_mp2_gop_set_closed_gop ( &(wi.mp2_gop) , parser->info.gop_hdr.closed_gop);
378 viddec_fw_mp2_gop_set_broken_link( &(wi.mp2_gop) , parser->info.gop_hdr.broken_link);
380 viddec_mpeg2_append_workitem(parent, &wi, parser->mpeg2_use_next_workload);
415 /* viddec_mpeg2_emit_workload() - Emits MPEG2 parser generated work load */
418 /* Pixel ES data sent separately whenever parser sees slice data */
423 /* Get MPEG2 Parser context */
424 struct viddec_mpeg2_parser *parser = (struct viddec_mpeg2_parser *) ctxt;
432 /* Check for unsupported features in the stream and update parser status */
436 viddec_mpeg2_trans_metadata_workitems(parser);
440 (uint32_t *) &parser->wi,
443 parser->mpeg2_use_next_workload);
444 parser->mpeg2_wl_status |= MPEG2_WL_DMEM_DATA;
448 viddec_mpeg2_pack_qmat(parser);
450 (uint32_t *) parser->wi.qmat,
453 parser->mpeg2_use_next_workload);