Home | History | Annotate | Download | only in src

Lines Matching refs:video

318 AVCDec_Status DecodePPS(AVCDecObject *decvid, AVCCommonObj *video, AVCDecBitstream *stream)
354 video->currPicParams = picParam = decvid->picParams[pic_parameter_set_id];
518 AVCDec_Status DecodeSliceHeader(AVCDecObject *decvid, AVCCommonObj *video, AVCDecBitstream *stream)
520 AVCSliceHeader *sliceHdr = video->sliceHdr;
548 video->slice_type = (AVCSliceType) slice_type;
562 currPPS = video->currPicParams = decvid->picParams[sliceHdr->pic_parameter_set_id];
567 currSPS = video->currSeqParams = decvid->seqParams[currPPS->seq_parameter_set_id];
569 if (currPPS->seq_parameter_set_id != video->seq_parameter_set_id)
571 video->seq_parameter_set_id = currPPS->seq_parameter_set_id;
572 status = (AVCDec_Status)AVCConfigureSequence(decvid->avcHandle, video, false);
575 video->level_idc = currSPS->level_idc;
579 video->MaxFrameNum = 1 << (currSPS->log2_max_frame_num_minus4 + 4);
581 video->PicWidthInMbs = currSPS->pic_width_in_mbs_minus1 + 1;
582 video->PicWidthInSamplesL = video->PicWidthInMbs * 16 ;
583 video->PicWidthInSamplesC = video->PicWidthInMbs * 8 ;
584 video->PicHeightInMapUnits = currSPS->pic_height_in_map_units_minus1 + 1 ;
585 video->PicSizeInMapUnits = video->PicWidthInMbs * video->PicHeightInMapUnits ;
586 video->FrameHeightInMbs = (2 - currSPS->frame_mbs_only_flag) * video->PicHeightInMapUnits ;
589 video->SliceGroupChangeRate = currPPS->slice_group_change_rate_minus1 + 1;
595 if (video->currFS == NULL && sliceHdr->frame_num != 0)
597 video->prevFrameNum = video->PrevRefFrameNum = sliceHdr->frame_num - 1;
610 video->PicHeightInMbs = video->FrameHeightInMbs;
611 video->PicHeightInSamplesL = video->PicHeightInMbs * 16;
612 video->PicHeightInSamplesC = video->PicHeightInMbs * 8;
613 video->PicSizeInMbs = video->PicWidthInMbs * video->PicHeightInMbs;
615 if (sliceHdr->first_mb_in_slice >= video->PicSizeInMbs)
619 video->MaxPicNum = video->MaxFrameNum;
620 video->CurrPicNum = sliceHdr->frame_num;
623 if (video->nal_unit_type == AVC_NALTYPE_IDR)
639 video->MaxPicOrderCntLsb = 1 << (currSPS->log2_max_pic_order_cnt_lsb_minus4 + 4);
640 if (sliceHdr->pic_order_cnt_lsb > video->MaxPicOrderCntLsb - 1)
698 status = ref_pic_list_reordering(video, stream, sliceHdr, slice_type);
705 if (video->nal_ref_idc != 0)
707 dec_ref_pic_marking(video, stream, sliceHdr);
711 video->QPy = 26 + currPPS->pic_init_qp_minus26 + sliceHdr->slice_qp_delta;
712 if (video->QPy > 51 || video->QPy < 0)
714 video->QPy = AVC_CLIP3(0, 51, video->QPy);
717 video->QPc = mapQPi2QPc[AVC_CLIP3(0, 51, video->QPy + video->currPicParams->chroma_qp_index_offset)];
719 video->QPy_div_6 = (video->QPy * 43) >> 8;
720 video->QPy_mod_6 = video->QPy - 6 * video->QPy_div_6;
722 video->QPc_div_6 = (video->QPc * 43) >> 8;
723 video->QPc_mod_6 = video->QPc - 6 * video->QPc_div_6;
728 video->FilterOffsetA = video->FilterOffsetB = 0;
745 video->FilterOffsetA = sliceHdr->slice_alpha_c0_offset_div2 << 1;
753 video->FilterOffsetB = sliceHdr->slice_beta_offset_div_2 << 1;
761 temp = video->PicSizeInMapUnits / video->SliceGroupChangeRate;
762 if (video->PicSizeInMapUnits % video->SliceGroupChangeRate)
775 video->MapUnitsInSliceGroup0 =
776 AVC_MIN(sliceHdr->slice_group_change_cycle * video->SliceGroupChangeRate, video->PicSizeInMapUnits);
783 AVCDec_Status fill_frame_num_gap(AVCHandle *avcHandle, AVCCommonObj *video)
788 int tmp1 = video->sliceHdr->delta_pic_order_cnt[0];
789 int tmp2 = video->sliceHdr->delta_pic_order_cnt[1];
790 int tmp3 = video->CurrPicNum;
791 int tmp4 = video->sliceHdr->adaptive_ref_pic_marking_mode_flag;
792 UnusedShortTermFrameNum = (video->prevFrameNum + 1) % video->MaxFrameNum;
793 CurrFrameNum = video->sliceHdr->frame_num;
795 video->sliceHdr->delta_pic_order_cnt[0] = 0;
796 video->sliceHdr->delta_pic_order_cnt[1] = 0;
799 video->CurrPicNum = UnusedShortTermFrameNum;
800 video->sliceHdr->frame_num = UnusedShortTermFrameNum;
802 status = (AVCDec_Status)DPBInitBuffer(avcHandle, video);
807 DecodePOC(video);
808 DPBInitPic(video, UnusedShortTermFrameNum);
811 video->currFS->PicOrderCnt = video->PicOrderCnt;
812 video->currFS->FrameNum = video->sliceHdr->frame_num;
815 video->currFS->IsOutputted = 0x01;
816 video->currFS->IsReference = 3;
817 video->currFS->IsLongTerm = 0;
818 video->currFS->frame.isReference = TRUE;
819 video->currFS->frame.isLongTerm = FALSE;
821 video->sliceHdr->adaptive_ref_pic_marking_mode_flag = 0;
823 status = (AVCDec_Status)StorePictureInDPB(avcHandle, video); // MC_CHECK check the return status
828 video->prevFrameNum = UnusedShortTermFrameNum;
829 UnusedShortTermFrameNum = (UnusedShortTermFrameNum + 1) % video->MaxFrameNum;
831 video->sliceHdr->frame_num = CurrFrameNum;
832 video->CurrPicNum = tmp3;
833 video->sliceHdr->delta_pic_order_cnt[0] = tmp1;
834 video->sliceHdr->delta_pic_order_cnt[1] = tmp2;
835 video->sliceHdr->adaptive_ref_pic_marking_mode_flag = tmp4;
840 AVCDec_Status ref_pic_list_reordering(AVCCommonObj *video, AVCDecBitstream *stream, AVCSliceHeader *sliceHdr, int slice_type)
858 sliceHdr->abs_diff_pic_num_minus1_l0[i] > video->MaxPicNum / 2 - 1)
863 sliceHdr->abs_diff_pic_num_minus1_l0[i] > video->MaxPicNum / 2 - 2)
882 AVCDec_Status dec_ref_pic_marking(AVCCommonObj *video, AVCDecBitstream *stream, AVCSliceHeader *sliceHdr)
885 if (video->nal_unit_type == AVC_NALTYPE_IDR)
891 video->MaxLongTermFrameIdx = -1; /* no long-term frame indx */
895 video->MaxLongTermFrameIdx = 0;
896 video->LongTermFrameIdx = 0;
940 AVCDec_Status DecodePOC(AVCCommonObj *video)
942 AVCSeqParamSet *currSPS = video->currSeqParams;
943 AVCSliceHeader *sliceHdr = video->sliceHdr;
949 if (video->nal_unit_type == AVC_NALTYPE_IDR)
951 video->prevPicOrderCntMsb = 0;
952 video->prevPicOrderCntLsb = 0;
956 if (sliceHdr->pic_order_cnt_lsb < video->prevPicOrderCntLsb &&
957 (video->prevPicOrderCntLsb - sliceHdr->pic_order_cnt_lsb) >= (video->MaxPicOrderCntLsb / 2))
958 video->PicOrderCntMsb = video->prevPicOrderCntMsb + video->MaxPicOrderCntLsb;
959 else if (sliceHdr->pic_order_cnt_lsb > video->prevPicOrderCntLsb &&
960 (sliceHdr->pic_order_cnt_lsb - video->prevPicOrderCntLsb) > (video->MaxPicOrderCntLsb / 2))
961 video->PicOrderCntMsb = video->prevPicOrderCntMsb - video->MaxPicOrderCntLsb;
963 video->PicOrderCntMsb = video->prevPicOrderCntMsb;
968 video->PicOrderCnt = video->TopFieldOrderCnt = video->PicOrderCntMsb + sliceHdr->pic_order_cnt_lsb;
969 video->BottomFieldOrderCnt = video->TopFieldOrderCnt + sliceHdr->delta_pic_order_cnt_bottom;
976 if (video->nal_unit_type == AVC_NALTYPE_IDR)
978 video->prevFrameNumOffset = 0;
979 video->FrameNumOffset = 0;
981 else if (video->prevFrameNum > sliceHdr->frame_num)
983 video->FrameNumOffset = video->prevFrameNumOffset + video->MaxFrameNum;
987 video->FrameNumOffset = video->prevFrameNumOffset;
992 video->absFrameNum = video->FrameNumOffset + sliceHdr->frame_num;
996 video->absFrameNum = 0;
999 if (video->absFrameNum > 0 && video->nal_ref_idc == 0)
1001 video->absFrameNum--;
1005 if (video->absFrameNum > 0)
1007 video->picOrderCntCycleCnt = (video->absFrameNum - 1) / currSPS->num_ref_frames_in_pic_order_cnt_cycle;
1008 video->frameNumInPicOrderCntCycle = (video->absFrameNum - 1) % currSPS->num_ref_frames_in_pic_order_cnt_cycle;
1011 video->expectedDeltaPerPicOrderCntCycle = 0;
1014 video->expectedDeltaPerPicOrderCntCycle += currSPS->offset_for_ref_frame[i];
1017 if (video->absFrameNum)
1019 video->expectedPicOrderCnt = video->picOrderCntCycleCnt * video->expectedDeltaPerPicOrderCntCycle;
1020 for (i = 0; i <= video->frameNumInPicOrderCntCycle; i++)
1022 video->expectedPicOrderCnt += currSPS->offset_for_ref_frame[i];
1027 video->expectedPicOrderCnt = 0;
1030 if (video->nal_ref_idc == 0)
1032 video->expectedPicOrderCnt += currSPS->offset_for_non_ref_pic;
1036 video->TopFieldOrderCnt = video->expectedPicOrderCnt + sliceHdr->delta_pic_order_cnt[0];
1037 video->BottomFieldOrderCnt = video->TopFieldOrderCnt + currSPS->offset_for_top_to_bottom_field + sliceHdr->delta_pic_order_cnt[1];
1039 video->PicOrderCnt = AVC_MIN(video->TopFieldOrderCnt, video->BottomFieldOrderCnt);
1046 if (video->nal_unit_type == AVC_NALTYPE_IDR)
1048 video->FrameNumOffset = 0;
1050 else if (video->prevFrameNum > sliceHdr->frame_num)
1052 video->FrameNumOffset = video->prevFrameNumOffset + video->MaxFrameNum;
1056 video->FrameNumOffset = video->prevFrameNumOffset;
1059 if (video->nal_unit_type == AVC_NALTYPE_IDR)
1061 video->PicOrderCnt = 0;
1063 else if (video->nal_ref_idc == 0)
1065 video->PicOrderCnt = 2 * (video->FrameNumOffset + sliceHdr->frame_num) - 1;
1069 video->PicOrderCnt = 2 * (video->FrameNumOffset + sliceHdr->frame_num);
1071 video->TopFieldOrderCnt = video->BottomFieldOrderCnt = video->PicOrderCnt;
1355 /* dec_ref_pic_marking(video,stream,sliceHdr); */