Пример #1
0
func (this *TEncTop) selectReferencePictureSet(slice *TLibCommon.TComSlice, POCCurr, GOPid int) {
	slice.SetRPSidx(GOPid)

	for extraNum := this.GetEncCfg().m_iGOPSize; extraNum < this.GetEncCfg().m_extraRPSs+this.GetEncCfg().m_iGOPSize; extraNum++ {
		if this.GetEncCfg().m_uiIntraPeriod > 0 && this.GetEncCfg().GetDecodingRefreshType() > 0 {
			POCIndex := POCCurr % int(this.GetEncCfg().m_uiIntraPeriod)
			if POCIndex == 0 {
				POCIndex = int(this.GetEncCfg().m_uiIntraPeriod)
			}
			if POCIndex == this.GetEncCfg().m_GOPList[extraNum].m_POC {
				slice.SetRPSidx(extraNum)
			}
		} else {
			if POCCurr == this.GetEncCfg().m_GOPList[extraNum].m_POC {
				slice.SetRPSidx(extraNum)
			}
		}
	}

	slice.SetRPS(this.m_cSPS.GetRPSList().GetReferencePictureSet(slice.GetRPSidx()))
	slice.GetRPS().SetNumberOfPictures(slice.GetRPS().GetNumberOfNegativePictures() + slice.GetRPS().GetNumberOfPositivePictures())
}