Home | History | Annotate | Download | only in parser

Lines Matching refs:SliceHeader

14 h264_Status h264_Parse_Slice_Header_1(void *parent,h264_Info* pInfo, h264_Slice_Header_t *SliceHeader)
18 //h264_Slice_Header_t* SliceHeader = &pInfo->SliceHeader;
24 SliceHeader->first_mb_in_slice = h264_GetVLCElement(parent, pInfo, false);
28 SliceHeader->slice_type = (slice_type%5);
30 if(SliceHeader->slice_type > h264_PtypeI) {
42 SliceHeader->pic_parameter_id = (uint8_t)data;
57 h264_Status h264_Parse_Slice_Header_2(void *parent, h264_Info* pInfo, h264_Slice_Header_t *SliceHeader)
61 //h264_Slice_Header_t* SliceHeader = &pInfo->SliceHeader;
70 SliceHeader->frame_num = (int32_t)code;
73 SliceHeader->structure = FRAME;
74 SliceHeader->field_pic_flag = 0;
75 SliceHeader->bottom_field_flag = 0;
81 SliceHeader->field_pic_flag = (uint8_t)code;
83 if(SliceHeader->field_pic_flag)
86 SliceHeader->bottom_field_flag = (uint8_t)code;
88 SliceHeader->structure = SliceHeader->bottom_field_flag? BOTTOM_FIELD: TOP_FIELD;
93 if(SliceHeader->structure == FRAME) {
101 if(pInfo->active_SPS.sps_disp.mb_adaptive_frame_field_flag & (!(pInfo->SliceHeader.field_pic_flag))) {
102 SliceHeader->first_mb_in_slice <<=1;
105 if(SliceHeader->first_mb_in_slice >= max_mb_num)
111 SliceHeader->idr_pic_id = h264_GetVLCElement(parent, pInfo, false);
117 SliceHeader->pic_order_cnt_lsb = (uint32_t)code;
120 if((pInfo->active_PPS.pic_order_present_flag) && !(SliceHeader->field_pic_flag))
122 SliceHeader->delta_pic_order_cnt_bottom = h264_GetVLCElement(parent, pInfo, true);
126 SliceHeader->delta_pic_order_cnt_bottom = 0;
132 SliceHeader->delta_pic_order_cnt[0] = h264_GetVLCElement(parent, pInfo, true);
133 if((pInfo->active_PPS.pic_order_present_flag) && !(SliceHeader->field_pic_flag))
135 SliceHeader->delta_pic_order_cnt[1] = h264_GetVLCElement(parent, pInfo, true);
141 SliceHeader->redundant_pic_cnt = h264_GetVLCElement(parent, pInfo, false);
142 if(SliceHeader->redundant_pic_cnt > 127)
145 SliceHeader->redundant_pic_cnt = 0;
154 // SliceHeader->slice_group_change_cycle = 0; //one of the variables is not known in the high profile
165 h264_Status h264_Parse_Slice_Header_3(void *parent, h264_Info* pInfo, h264_Slice_Header_t *SliceHeader)
169 //h264_Slice_Header_t* SliceHeader = &pInfo->SliceHeader;
177 if(SliceHeader->slice_type == h264_PtypeB)
180 SliceHeader->direct_spatial_mv_pred_flag = (uint8_t)code;
184 SliceHeader->direct_spatial_mv_pred_flag = 0;
190 SliceHeader->num_ref_idx_l0_active = pInfo->active_PPS.num_ref_idx_l0_active;
191 SliceHeader->num_ref_idx_l1_active = pInfo->active_PPS.num_ref_idx_l1_active;
193 if((SliceHeader->slice_type == h264_PtypeP) || (SliceHeader->slice_type == h264_PtypeSP) || (SliceHeader->slice_type == h264_PtypeB))
196 SliceHeader->num_ref_idx_active_override_flag = (uint8_t)code;
198 if(SliceHeader->num_ref_idx_active_override_flag)
200 SliceHeader->num_ref_idx_l0_active = h264_GetVLCElement(parent, pInfo, false) + 1;
201 if(SliceHeader->slice_type == h264_PtypeB)
203 SliceHeader->num_ref_idx_l1_active = h264_GetVLCElement(parent, pInfo, false)+1;
208 if(SliceHeader->slice_type != h264_PtypeB) {
209 SliceHeader->num_ref_idx_l1_active = 0;
212 if((SliceHeader->num_ref_idx_l0_active > MAX_NUM_REF_FRAMES) || (SliceHeader->num_ref_idx_l1_active > MAX_NUM_REF_FRAMES))
217 if(h264_Parse_Ref_Pic_List_Reordering(parent, pInfo, SliceHeader) != H264_STATUS_OK)
226 if(((pInfo->active_PPS.weighted_pred_flag) && ((SliceHeader->slice_type == h264_PtypeP) || (SliceHeader->slice_type == h264_PtypeSP))) || ((pInfo->active_PPS.weighted_bipred_idc == 1) && (SliceHeader->slice_type == h264_PtypeB)))
235 if(h264_Parse_Pred_Weight_Table(parent, pInfo, SliceHeader) != H264_STATUS_OK)
260 if(SliceHeader->nal_ref_idc != 0)
262 if(h264_Parse_Dec_Ref_Pic_Marking(parent, pInfo, SliceHeader) != H264_STATUS_OK)
268 if((pInfo->active_PPS.entropy_coding_mode_flag) && (SliceHeader->slice_type != h264_PtypeI) && (SliceHeader->slice_type != h264_PtypeSI))
270 SliceHeader->cabac_init_idc = h264_GetVLCElement(parent, pInfo, false);
274 SliceHeader->cabac_init_idc = 0;
277 if(SliceHeader->cabac_init_idc > 2)
282 SliceHeader->slice_qp_delta = h264_GetVLCElement(parent, pInfo, true);
283 if( (SliceHeader->slice_qp_delta > (25-pInfo->active_PPS.pic_init_qp_minus26)) || (SliceHeader->slice_qp_delta < -(26+pInfo->active_PPS.pic_init_qp_minus26)))
287 if((SliceHeader->slice_type == h264_PtypeSP)|| (SliceHeader->slice_type == h264_PtypeSI) )
289 if(SliceHeader->slice_type == h264_PtypeSP)
292 SliceHeader->sp_for_switch_flag = (uint8_t)code;
295 SliceHeader->slice_qs_delta = h264_GetVLCElement(parent, pInfo, true);
297 if( (SliceHeader->slice_qs_delta > (25-pInfo->active_PPS.pic_init_qs_minus26)) || (SliceHeader->slice_qs_delta < -(26+pInfo->active_PPS.pic_init_qs_minus26)) )
303 SliceHeader->disable_deblocking_filter_idc = h264_GetVLCElement(parent, pInfo, false);
304 if(SliceHeader->disable_deblocking_filter_idc != 1)
306 SliceHeader->slice_alpha_c0_offset_div2 = h264_GetVLCElement(parent, pInfo, true);
307 slice_alpha_c0_offset = SliceHeader->slice_alpha_c0_offset_div2 << 1;
312 SliceHeader->slice_beta_offset_div2 = h264_GetVLCElement(parent, pInfo, true);
313 slice_beta_offset = SliceHeader->slice_beta_offset_div2 << 1;
320 SliceHeader->slice_alpha_c0_offset_div2 = 0;
321 SliceHeader->slice_beta_offset_div2 = 0;
331 // SliceHeader->slice_group_change_cycle = 0; //one of the variables is not known in the high profile
352 h264_Status h264_Parse_Ref_Pic_List_Reordering(void *parent, h264_Info* pInfo,h264_Slice_Header_t *SliceHeader)
354 //h264_Slice_Header_t* SliceHeader = &pInfo->SliceHeader;
359 if((SliceHeader->slice_type != h264_PtypeI) && (SliceHeader->slice_type != h264_PtypeSI))
362 SliceHeader->sh_refpic_l0.ref_pic_list_reordering_flag = (uint8_t)code;
364 if(SliceHeader->sh_refpic_l0.ref_pic_list_reordering_flag)
377 SliceHeader->sh_refpic_l0.reordering_of_pic_nums_idc[reorder] = h264_GetVLCElement(parent, pInfo, false);
378 if((SliceHeader->sh_refpic_l0.reordering_of_pic_nums_idc[reorder] == 0) || (SliceHeader->sh_refpic_l0.reordering_of_pic_nums_idc[reorder] == 1))
380 SliceHeader->sh_refpic_l0.list_reordering_num[reorder].abs_diff_pic_num_minus1 = h264_GetVLCElement(parent, pInfo, false);
382 else if (SliceHeader->sh_refpic_l0.reordering_of_pic_nums_idc[reorder] == 2)
384 SliceHeader->sh_refpic_l0.list_reordering_num[reorder].long_term_pic_num = h264_GetVLCElement(parent, pInfo, false);
387 }while(SliceHeader->sh_refpic_l0.reordering_of_pic_nums_idc[reorder] != 3);
391 if(SliceHeader->slice_type == h264_PtypeB)
394 SliceHeader->sh_refpic_l1.ref_pic_list_reordering_flag = (uint8_t)code;
396 if(SliceHeader->sh_refpic_l1.ref_pic_list_reordering_flag)
407 SliceHeader->sh_refpic_l1.reordering_of_pic_nums_idc[reorder] = h264_GetVLCElement(parent, pInfo, false);
408 if((SliceHeader->sh_refpic_l1.reordering_of_pic_nums_idc[reorder] == 0) || (SliceHeader->sh_refpic_l1.reordering_of_pic_nums_idc[reorder] == 1))
410 SliceHeader->sh_refpic_l1.list_reordering_num[reorder].abs_diff_pic_num_minus1 = h264_GetVLCElement(parent, pInfo, false);
412 else if (SliceHeader->sh_refpic_l1.reordering_of_pic_nums_idc[reorder] == 2)
414 SliceHeader->sh_refpic_l1.list_reordering_num[reorder].long_term_pic_num = h264_GetVLCElement(parent, pInfo, false);
416 }while(SliceHeader->sh_refpic_l1.reordering_of_pic_nums_idc[reorder] != 3);
426 h264_Status h264_Parse_Pred_Weight_Table(void *parent, h264_Info* pInfo,h264_Slice_Header_t *SliceHeader)
431 SliceHeader->sh_predwttbl.luma_log2_weight_denom = h264_GetVLCElement(parent, pInfo, false);
435 SliceHeader->sh_predwttbl.chroma_log2_weight_denom = h264_GetVLCElement(parent,pInfo, false);
438 for(i=0; i< SliceHeader->num_ref_idx_l0_active; i++)
441 SliceHeader->sh_predwttbl.luma_weight_l0_flag = flag;
443 if(SliceHeader->sh_predwttbl.luma_weight_l0_flag)
445 SliceHeader->sh_predwttbl.luma_weight_l0[i] = h264_GetVLCElement(parent, pInfo, true);
446 SliceHeader->sh_predwttbl.luma_offset_l0[i] = h264_GetVLCElement(parent, pInfo, true);
450 SliceHeader->sh_predwttbl.luma_weight_l0[i] = (1 << SliceHeader->sh_predwttbl.luma_log2_weight_denom);
451 SliceHeader->sh_predwttbl.luma_offset_l0[i] = 0;
457 SliceHeader->sh_predwttbl.chroma_weight_l0_flag = flag;
459 if(SliceHeader->sh_predwttbl.chroma_weight_l0_flag)
463 SliceHeader->sh_predwttbl.chroma_weight_l0[i][j] = h264_GetVLCElement(parent, pInfo, true);
464 SliceHeader->sh_predwttbl.chroma_offset_l0[i][j] = h264_GetVLCElement(parent, pInfo, true);
471 SliceHeader->sh_predwttbl.chroma_weight_l0[i][j] = (1 << SliceHeader->sh_predwttbl.chroma_log2_weight_denom);
472 SliceHeader->sh_predwttbl.chroma_offset_l0[i][j] = 0;
479 if(SliceHeader->slice_type == h264_PtypeB)
481 for(i=0; i< SliceHeader->num_ref_idx_l1_active; i++)
484 SliceHeader->sh_predwttbl.luma_weight_l1_flag = flag;
486 if(SliceHeader->sh_predwttbl.luma_weight_l1_flag)
488 SliceHeader->sh_predwttbl.luma_weight_l1[i] = h264_GetVLCElement(parent, pInfo, true);
489 SliceHeader->sh_predwttbl.luma_offset_l1[i] = h264_GetVLCElement(parent, pInfo, true);
493 SliceHeader->sh_predwttbl.luma_weight_l1[i] = (1 << SliceHeader->sh_predwttbl.luma_log2_weight_denom);
494 SliceHeader->sh_predwttbl.luma_offset_l1[i] = 0;
500 SliceHeader->sh_predwttbl.chroma_weight_l1_flag = flag;
502 if(SliceHeader->sh_predwttbl.chroma_weight_l1_flag)
506 SliceHeader->sh_predwttbl.chroma_weight_l1[i][j] = h264_GetVLCElement(parent, pInfo, true);
507 SliceHeader->sh_predwttbl.chroma_offset_l1[i][j] = h264_GetVLCElement(parent, pInfo, true);
514 SliceHeader->sh_predwttbl.chroma_weight_l1[i][j] = (1 << SliceHeader->sh_predwttbl.chroma_log2_weight_denom);
515 SliceHeader->sh_predwttbl.chroma_offset_l1[i][j] = 0;
536 h264_Status h264_Parse_Pred_Weight_Table(void *parent, h264_Info* pInfo,h264_Slice_Header_t *SliceHeader)
540 //h264_Slice_Header_t* SliceHeader = &pInfo->SPS.SliceHeader;
542 //SliceHeader->sh_predwttbl.luma_log2_weight_denom = h264_GetVLCElement(pInfo, false, "luma_log2_weight_denom");
547 //SliceHeader->sh_predwttbl.chroma_log2_weight_denom = h264_GetVLCElement(pInfo, false, "chroma_log2_weight_denom");
551 for(i=0; i< SliceHeader->num_ref_idx_l0_active; i++)
553 //SliceHeader->sh_predwttbl.luma_weight_l0_flag = h264_GetBits(pInfo, 1, "luma_weight_l0_flag");
556 //if(SliceHeader->sh_predwttbl.luma_weight_l0_flag)
559 //SliceHeader->sh_predwttbl.luma_weight_l0[i] = h264_GetVLCElement(pInfo, true, "luma_weight_l0");
561 //SliceHeader->sh_predwttbl.luma_offset_l0[i] = h264_GetVLCElement(pInfo, true, "luma_offset_l0");
566 //SliceHeader->sh_predwttbl.luma_weight_l0[i] = (1 << SliceHeader->sh_predwttbl.luma_log2_weight_denom);
567 //SliceHeader->sh_predwttbl.luma_offset_l0[i] = 0;
572 //SliceHeader->sh_predwttbl.chroma_weight_l0_flag = h264_GetBits(pInfo, 1, "chroma_weight_l0_flag");
578 //SliceHeader->sh_predwttbl.chroma_weight_l0[i][j] = h264_GetVLCElement(pInfo, true, "chroma_weight_l0");
580 //SliceHeader->sh_predwttbl.chroma_offset_l0[i][j] = h264_GetVLCElement(pInfo, true, "chroma_offset_l0");
588 //SliceHeader->sh_predwttbl.chroma_weight_l0[i][j] = (1 << SliceHeader->sh_predwttbl.chroma_log2_weight_denom);
589 //SliceHeader->sh_predwttbl.chroma_offset_l0[i][j] = 0;
596 if(SliceHeader->slice_type == h264_PtypeB)
598 for(i=0; i< SliceHeader->num_ref_idx_l1_active; i++)
600 //SliceHeader->sh_predwttbl.luma_weight_l1_flag = h264_GetBits(pInfo, 1, "luma_weight_l1_flag");
604 //SliceHeader->sh_predwttbl.luma_weight_l1[i] = h264_GetVLCElement(pInfo, true, "luma_weight_l1");
606 //SliceHeader->sh_predwttbl.luma_offset_l1[i] = h264_GetVLCElement(pInfo, true, "luma_offset_l1");
611 //SliceHeader->sh_predwttbl.luma_weight_l1[i] = (1 << SliceHeader->sh_predwttbl.luma_log2_weight_denom);
612 //SliceHeader->sh_predwttbl.luma_offset_l1[i] = 0;
617 //SliceHeader->sh_predwttbl.chroma_weight_l1_flag = h264_GetBits(pInfo, 1, "chroma_weight_l1_flag");
623 //SliceHeader->sh_predwttbl.chroma_weight_l1[i][j] = h264_GetVLCElement(pInfo, true, "chroma_weight_l1");
625 //SliceHeader->sh_predwttbl.chroma_offset_l1[i][j] = h264_GetVLCElement(pInfo, true, "chroma_offset_l1");
633 //SliceHeader->sh_predwttbl.chroma_weight_l1[i][j] = (1 << SliceHeader->sh_predwttbl.chroma_log2_weight_denom);
634 //SliceHeader->sh_predwttbl.chroma_offset_l1[i][j] = 0;
663 h264_Status h264_Parse_Dec_Ref_Pic_Marking(void *parent, h264_Info* pInfo,h264_Slice_Header_t *SliceHeader)
665 //h264_Slice_Header_t* SliceHeader = &pInfo->SliceHeader;
672 SliceHeader->sh_dec_refpic.no_output_of_prior_pics_flag = (uint8_t)code;
675 SliceHeader->sh_dec_refpic.long_term_reference_flag = (uint8_t)code;
681 SliceHeader->sh_dec_refpic.adaptive_ref_pic_marking_mode_flag = (uint8_t)code;
693 if(SliceHeader->sh_dec_refpic.adaptive_ref_pic_marking_mode_flag)
697 SliceHeader->sh_dec_refpic.memory_management_control_operation[i] = h264_GetVLCElement(parent, pInfo, false);
698 if((SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 1) || (SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 3))
700 SliceHeader->sh_dec_refpic.difference_of_pic_num_minus1[i] = h264_GetVLCElement(parent, pInfo, false);
703 if(SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 2)
705 SliceHeader->sh_dec_refpic.long_term_pic_num[i] = h264_GetVLCElement(parent, pInfo, false);
708 if((SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 3) || (SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 6))
710 SliceHeader->sh_dec_refpic.long_term_frame_idx[i] = h264_GetVLCElement(parent, pInfo, false);
713 if(SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 4)
715 SliceHeader->sh_dec_refpic.max_long_term_frame_idx_plus1[i] = h264_GetVLCElement(parent, pInfo, false);
718 if(SliceHeader->sh_dec_refpic.memory_management_control_operation[i] == 5)
727 }while(SliceHeader->sh_dec_refpic.memory_management_control_operation[i++] != 0);
733 SliceHeader->sh_dec_refpic.dec_ref_pic_marking_count = i;