本文整理汇总了C++中TComSlice::getSaoInterleavingFlag方法的典型用法代码示例。如果您正苦于以下问题:C++ TComSlice::getSaoInterleavingFlag方法的具体用法?C++ TComSlice::getSaoInterleavingFlag怎么用?C++ TComSlice::getSaoInterleavingFlag使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TComSlice
的用法示例。
在下文中一共展示了TComSlice::getSaoInterleavingFlag方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: decompressSlice
//.........这里部分代码省略.........
// We're crossing into another tile, tiles are independent.
// When tiles are independent, we have "substreams per tile". Each substream has already been terminated, and we no longer
// have to perform it here.
// For TILES_DECODER, there can be a header at the start of the 1st substream in a tile. These are read when the substreams
// are extracted, not here.
}
else
{
#if CABAC_INIT_FLAG
SliceType sliceType = pcSlice->getSliceType();
if (pcSlice->getCabacInitFlag())
{
switch (sliceType)
{
case P_SLICE: // change initialization table to B_SLICE intialization
sliceType = B_SLICE;
break;
case B_SLICE: // change initialization table to P_SLICE intialization
sliceType = P_SLICE;
break;
default : // should not occur
assert(0);
}
}
m_pcEntropyDecoder->updateContextTables( sliceType, pcSlice->getSliceQp() );
#else
m_pcEntropyDecoder->updateContextTables( pcSlice->getSliceType(), pcSlice->getSliceQp() );
#endif
}
Bool bTileMarkerFoundFlag = false;
TComInputBitstream *pcTmpPtr;
pcTmpPtr = ppcSubstreams[uiSubStrm]; // for CABAC
for (UInt uiIdx=0; uiIdx<pcTmpPtr->getTileMarkerLocationCount(); uiIdx++)
{
if ( pcTmpPtr->getByteLocation() == (pcTmpPtr->getTileMarkerLocation( uiIdx )+2) )
{
bTileMarkerFoundFlag = true;
break;
}
}
if (bTileMarkerFoundFlag)
{
UInt uiTileIdx;
// Read tile index
m_pcEntropyDecoder->readTileMarker( uiTileIdx, rpcPic->getPicSym()->getBitsUsedByTileIdx() );
}
}
#if ENC_DEC_TRACE
g_bJustDoIt = g_bEncDecTraceEnable;
#endif
if ( pcSlice->getSPS()->getUseSAO() && pcSlice->getSaoInterleavingFlag() && pcSlice->getSaoEnabledFlag() )
{
pcSlice->getAPS()->getSaoParam()->bSaoFlag[0] = pcSlice->getSaoEnabledFlag();
if (iCUAddr == iStartCUAddr)
{
pcSlice->getAPS()->getSaoParam()->bSaoFlag[1] = pcSlice->getSaoEnabledFlagCb();
pcSlice->getAPS()->getSaoParam()->bSaoFlag[2] = pcSlice->getSaoEnabledFlagCr();
}
Int numCuInWidth = pcSlice->getAPS()->getSaoParam()->numCuInWidth;
Int cuAddrInSlice = iCUAddr - pcSlice->getSliceCurStartCUAddr()/rpcPic->getNumPartInCU();
Int cuAddrUpInSlice = cuAddrInSlice - numCuInWidth;
Int rx = iCUAddr % numCuInWidth;
Int ry = iCUAddr / numCuInWidth;
pcSbacDecoder->parseSaoOneLcuInterleaving(rx, ry, pcSlice->getAPS()->getSaoParam(),pcCU, cuAddrInSlice, cuAddrUpInSlice, pcSlice->getSPS()->getLFCrossSliceBoundaryFlag() );
}
m_pcCuDecoder->decodeCU ( pcCU, uiIsLast );
m_pcCuDecoder->decompressCU ( pcCU );
#if ENC_DEC_TRACE
g_bJustDoIt = g_bEncDecTraceDisable;
#endif
if( iSymbolMode )
{
/*If at the end of a LCU line but not at the end of a substream, perform CABAC flush*/
if (!uiIsLast && pcSlice->getPPS()->getNumSubstreams() > 1)
{
if ((uiCol == uiTileLCUX+uiTileWidth-1) && (uiLin+iNumSubstreamsPerTile < uiTileLCUY+uiTileHeight))
{
m_pcEntropyDecoder->decodeFlush();
}
}
pcSbacDecoders[uiSubStrm].load(pcSbacDecoder);
//Store probabilities of second LCU in line into buffer
if (pcSlice->getPPS()->getNumSubstreams() > 1 && (uiCol == uiTileLCUX+1))
{
m_pcBufferSbacDecoders[uiTileCol].loadContexts( &pcSbacDecoders[uiSubStrm] );
}
}
}
}