[x265] [PATCH 1 of 4] cu, search: remove redundant m_rdGoOnSbacCoder pointer

Deepthi Nandakumar deepthi at multicorewareinc.com
Fri Jul 11 03:12:23 CEST 2014


This series is awesome...


On Fri, Jul 11, 2014 at 6:00 AM, Steve Borho <steve at borho.org> wrote:

> # HG changeset patch
> # User Steve Borho <steve at borho.org>
> # Date 1405031594 18000
> #      Thu Jul 10 17:33:14 2014 -0500
> # Node ID d6c423c66e4d5a06dc4dccbd9eade7a21f9c8adf
> # Parent  57a4c1c2274ec6b40f4a138523c6b67ffa853e09
> cu, search: remove redundant m_rdGoOnSbacCoder pointer
>
> m_rdGoOnSbacCoder was always either pointing to the same SBac as
> m_sbacCoder
> (for calls to compressCU()) or it was supposed to be unused (for calls to
> encodeCU)
>
> diff -r 57a4c1c2274e -r d6c423c66e4d source/Lib/TLibEncoder/TEncCu.cpp
> --- a/source/Lib/TLibEncoder/TEncCu.cpp Thu Jul 10 14:13:30 2014 -0500
> +++ b/source/Lib/TLibEncoder/TEncCu.cpp Thu Jul 10 17:33:14 2014 -0500
> @@ -75,7 +75,6 @@
>      m_rdCost          = NULL;
>      m_sbacCoder       = NULL;
>      m_rdSbacCoders    = NULL;
> -    m_rdGoOnSbacCoder = NULL;
>      m_bBitCounting    = false;
>  }
>
> @@ -1348,7 +1347,7 @@
>      // Encode Coefficients
>      bool bEncodeDQP = m_bEncodeDQP;
>      m_sbacCoder->codeCoeff(outTempCU, 0, depth, outTempCU->getCUSize(0),
> bEncodeDQP);
> -    m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
> +    m_sbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
>      outTempCU->m_totalBits = m_sbacCoder->getNumberOfWrittenBits();
>      outTempCU->m_coeffBits = outTempCU->m_totalBits - outTempCU->m_mvBits;
>
> @@ -1397,7 +1396,7 @@
>      // Encode Coefficients
>      bool bCodeDQP = m_bEncodeDQP;
>      m_sbacCoder->codeCoeff(outTempCU, 0, depth, outTempCU->getCUSize(0),
> bCodeDQP);
> -    m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
> +    m_sbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
>      outTempCU->m_totalBits = m_sbacCoder->getNumberOfWrittenBits();
>      outTempCU->m_coeffBits = outTempCU->m_totalBits - outTempCU->m_mvBits;
>
> diff -r 57a4c1c2274e -r d6c423c66e4d source/Lib/TLibEncoder/TEncCu.h
> --- a/source/Lib/TLibEncoder/TEncCu.h   Thu Jul 10 14:13:30 2014 -0500
> +++ b/source/Lib/TLibEncoder/TEncCu.h   Thu Jul 10 17:33:14 2014 -0500
> @@ -124,7 +124,6 @@
>
>      // RD SBac pointers
>      SBac       (*m_rdSbacCoders)[CI_NUM];
> -    SBac*        m_rdGoOnSbacCoder;
>
>      uint8_t      m_totalDepth;
>
> diff -r 57a4c1c2274e -r d6c423c66e4d source/Lib/TLibEncoder/TEncSearch.cpp
> --- a/source/Lib/TLibEncoder/TEncSearch.cpp     Thu Jul 10 14:13:30 2014
> -0500
> +++ b/source/Lib/TLibEncoder/TEncSearch.cpp     Thu Jul 10 17:33:14 2014
> -0500
> @@ -68,7 +68,6 @@
>      m_trQuant = NULL;
>      m_sbacCoder = NULL;
>      m_rdSbacCoders = NULL;
> -    m_rdGoOnSbacCoder = NULL;
>      m_numLayers = 0;
>  }
>
> @@ -636,7 +635,7 @@
>          if (checkTransformSkip || checkTQbypass)
>          {
>              //----- store original entropy coding status -----
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>
>              uint32_t  singleDistYTmp = 0;
>              uint32_t  singlePsyEnergyYTmp = 0;
> @@ -694,10 +693,10 @@
>                      bestTQbypass = singleTQbypass;
>                      bestModeId   = modeId;
>                      if (bestModeId == firstCheckId)
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
>                  }
>                  if (modeId == firstCheckId)
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>              }
>
>              cu->setTransformSkipSubParts(checkTransformSkip ? bestModeId
> : 0, TEXT_LUMA, absPartIdx, fullDepth);
> @@ -708,7 +707,7 @@
>              {
>                  xLoadIntraResultQT(cu, absPartIdx, log2TrSize, reconQt,
> reconQtStride);
>                  cu->setCbfSubParts(singleCbfY << trDepth, TEXT_LUMA,
> absPartIdx, fullDepth);
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
> +
>  m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
>              }
>              else
>              {
> @@ -719,7 +718,7 @@
>          }
>          else
>          {
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>
>              //----- code luma block with given intra prediction mode and
> store Cbf-----
>              cu->setTransformSkipSubParts(0, TEXT_LUMA, absPartIdx,
> fullDepth);
> @@ -748,11 +747,11 @@
>          //----- store full entropy coding status, load original entropy
> coding status -----
>          if (bCheckFull)
>          {
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_TEST]);
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_TEST]);
> +
>  m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>          }
>          else
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>
>          //----- code splitted block -----
>          uint64_t splitCost     = 0;
> @@ -776,7 +775,7 @@
>              cu->getCbf(TEXT_LUMA)[absPartIdx + offs] |= (splitCbfY <<
> trDepth);
>
>          //----- restore context states -----
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +        m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>
>          //----- determine rate and r-d cost -----
>          uint32_t splitBits = xGetIntraBitsQTLuma(cu, trDepth, absPartIdx);
> @@ -798,7 +797,7 @@
>              cu->m_psyEnergy = singlePsyEnergyY;
>
>          //----- set entropy coding status -----
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_TEST]);
> +        m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_TEST]);
>
>          //--- set transform index and Cbf values ---
>          cu->setTrIdxSubParts(trDepth, absPartIdx, fullDepth);
> @@ -1103,7 +1102,7 @@
>                  if (checkTransformSkip)
>                  {
>                      // use RDO to decide whether Cr/Cb takes TS
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>
>                      uint64_t singleCost     = MAX_INT64;
>                      int      bestModeId     = 0;
> @@ -1154,17 +1153,17 @@
>                              singleCbfC  = singleCbfCTmp;
>                              singlePsyEnergy = singlePsyEnergyTmp;
>                              if (bestModeId == firstCheckId)
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
>                          }
>                          if (chromaModeId == firstCheckId)
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>                      }
>
>                      if (bestModeId == firstCheckId)
>                      {
>                          xLoadIntraResultChromaQT(cu, absPartIdxC,
> log2TrSizeC, chromaId, reconQt, reconQtStride);
>                          cu->setCbfPartRange(singleCbfC << trDepth,
> (TextType)chromaId, absPartIdxC, tuIterator.absPartIdxStep);
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
> +
>  m_sbacCoder->load(m_rdSbacCoders[fullDepth][CI_TEMP_BEST]);
>                      }
>                      else
>                      {
> @@ -1178,7 +1177,7 @@
>                      outDist += singleDistC;
>
>                      if (chromaId == 1)
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
> +
>  m_sbacCoder->store(m_rdSbacCoders[fullDepth][CI_QT_TRAFO_ROOT]);
>                  }
>                  else
>                  {
> @@ -1578,7 +1577,7 @@
>              cu->setLumaIntraDirSubParts(origMode, partOffset, depth +
> initTrDepth);
>
>              // set context models
> -            m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>              // determine residual for partition
>              uint32_t puDistY = 0;
> @@ -1607,7 +1606,7 @@
>              cu->setLumaIntraDirSubParts(origMode, partOffset, depth +
> initTrDepth);
>
>              // set context models
> -            m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>              // determine residual for partition
>              uint32_t puDistY = 0;
> @@ -1664,7 +1663,7 @@
>      }
>
>      //===== reset context models =====
> -    m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +    m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>      //===== set distortion (rate and r-d costs are determined later) =====
>      cu->m_totalDistortion = overallDistY;
> @@ -1764,7 +1763,7 @@
>          for (uint32_t mode = minMode; mode < maxMode; mode++)
>          {
>              //----- restore context models -----
> -            m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>              //----- chroma coding -----
>              uint32_t dist = 0;
> @@ -1774,7 +1773,7 @@
>              xRecurIntraChromaCodingQT(cu, initTrDepth, absPartIdxC,
> fencYuv, predYuv, resiYuv, dist);
>
>              if (cu->getSlice()->getPPS()->getUseTransformSkip())
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +                m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>              uint32_t bits = xGetIntraBitsQTChroma(cu, initTrDepth,
> absPartIdxC, tuIterator.absPartIdxStep);
>              uint64_t cost = 0;
> @@ -1841,7 +1840,7 @@
>          }
>      }
>      //----- restore context models -----
> -    m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +    m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>  }
>
>  /** estimation of best merge coding
> @@ -2339,7 +2338,7 @@
>          distortion +=
> m_rdCost->scaleChromaDistCb(primitives.sse_pp[part](fencYuv->getCbAddr(),
> fencYuv->getCStride(), outReconYuv->getCbAddr(),
> outReconYuv->getCStride()));
>          distortion +=
> m_rdCost->scaleChromaDistCr(primitives.sse_pp[part](fencYuv->getCrAddr(),
> fencYuv->getCStride(), outReconYuv->getCrAddr(),
> outReconYuv->getCStride()));
>
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>          m_sbacCoder->resetBits();
>          if (cu->getSlice()->getPPS()->getTransquantBypassEnableFlag())
>              m_sbacCoder->codeCUTransquantBypassFlag(cu, 0);
> @@ -2360,7 +2359,7 @@
>          else
>              cu->m_totalRDCost =
> m_rdCost->calcRdCost(cu->m_totalDistortion, cu->m_totalBits);
>
> -        m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
> +        m_sbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
>
>          cu->clearCbf(0, depth);
>          cu->setTrIdxSubParts(0, 0, depth);
> @@ -2394,7 +2393,7 @@
>          bits = 0;
>          distortion = 0;
>
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>          xEstimateResidualQT(cu, 0, fencYuv, predYuv, outResiYuv, depth,
> cost, bits, distortion, &zeroDistortion, curUseRDOQ);
>
>          m_sbacCoder->resetBits();
> @@ -2435,7 +2434,7 @@
>          else
>              xSetResidualQTData(cu, 0, NULL, depth, false);
>
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>          bits = xSymbolBitsInter(cu);
>
> @@ -2451,7 +2450,7 @@
>
>              bestBits = bits;
>              bestCost = cost;
> -            m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
> +            m_sbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
>          }
>
>          X265_CHECK(bestCost != MAX_INT64, "no best cost\n");
> @@ -2714,7 +2713,7 @@
>
>      uint32_t bestCBF[MAX_NUM_COMPONENT];
>      uint32_t bestsubTUCBF[MAX_NUM_COMPONENT][2];
> -    m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +    m_sbacCoder->store(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>
>      uint32_t trSize = 1 << log2TrSize;
>      const bool splitIntoSubTUs = (chFmt == CHROMA_422);
> @@ -3107,7 +3106,7 @@
>              ALIGN_VAR_32(coeff_t, tsCoeffY[MAX_TS_SIZE * MAX_TS_SIZE]);
>              ALIGN_VAR_32(int16_t, tsResiY[MAX_TS_SIZE * MAX_TS_SIZE]);
>
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>
>              cu->setTransformSkipSubParts(1, TEXT_LUMA, absPartIdx, depth);
>
> @@ -3172,7 +3171,7 @@
>              uint64_t singleCostU = MAX_INT64;
>              uint64_t singleCostV = MAX_INT64;
>
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>
>              TURecurse tuIterator(splitIntoSubTUs ? VERTICAL_SPLIT :
> DONT_SPLIT, absPartIdxStep, absPartIdx);
>
> @@ -3304,7 +3303,7 @@
>              while (tuIterator.isNextSection());
>          }
>
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>
>          m_sbacCoder->resetBits();
>
> @@ -3388,8 +3387,8 @@
>      {
>          if (bCheckFull)
>          {
> -
>  m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_QT_TRAFO_TEST]);
> -
>  m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +            m_sbacCoder->store(m_rdSbacCoders[depth][CI_QT_TRAFO_TEST]);
> +            m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>          }
>          uint32_t subdivDist = 0;
>          uint32_t subdivBits = 0;
> @@ -3435,7 +3434,7 @@
>              cu->getCbf(TEXT_CHROMA_V)[absPartIdx + i] |= vcbf << trMode;
>          }
>
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_ROOT]);
>          m_sbacCoder->resetBits();
>
>          xEncodeResidualQT(cu, absPartIdx, depth, true,  TEXT_LUMA);
> @@ -3479,7 +3478,7 @@
>              }
>          }
>          X265_CHECK(bCheckFull, "check-full must be set\n");
> -        m_rdGoOnSbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_TEST]);
> +        m_sbacCoder->load(m_rdSbacCoders[depth][CI_QT_TRAFO_TEST]);
>      }
>
>      rdCost += singleCost;
> @@ -3691,7 +3690,7 @@
>  uint32_t TEncSearch::xModeBitsIntra(TComDataCU* cu, uint32_t mode,
> uint32_t partOffset, uint32_t depth)
>  {
>      // Reload only contexts required for coding intra mode information
> -
>  m_rdGoOnSbacCoder->loadIntraDirModeLuma(m_rdSbacCoders[depth][CI_CURR_BEST]);
> +
>  m_sbacCoder->loadIntraDirModeLuma(m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>      cu->getLumaIntraDir()[partOffset] = (uint8_t)mode;
>
> diff -r 57a4c1c2274e -r d6c423c66e4d source/Lib/TLibEncoder/TEncSearch.h
> --- a/source/Lib/TLibEncoder/TEncSearch.h       Thu Jul 10 14:13:30 2014
> -0500
> +++ b/source/Lib/TLibEncoder/TEncSearch.h       Thu Jul 10 17:33:14 2014
> -0500
> @@ -104,8 +104,6 @@
>      MotionEstimate   m_me;
>      MotionReference (*m_mref)[MAX_NUM_REF + 1];
>
> -    SBac          (*m_rdSbacCoders)[CI_NUM];
> -    SBac*           m_rdGoOnSbacCoder;
>      bool            m_bFrameParallel;
>
>      ShortYuv*       m_qtTempShortYuv;
> @@ -122,6 +120,8 @@
>      SBac*           m_sbacCoder;
>      x265_param*     m_param;
>
> +    SBac          (*m_rdSbacCoders)[CI_NUM];
> +
>      bool            m_bEnableRDOQ;
>      int             m_numLayers;
>
> diff -r 57a4c1c2274e -r d6c423c66e4d source/encoder/compress.cpp
> --- a/source/encoder/compress.cpp       Thu Jul 10 14:13:30 2014 -0500
> +++ b/source/encoder/compress.cpp       Thu Jul 10 17:33:14 2014 -0500
> @@ -42,7 +42,7 @@
>      uint32_t initTrDepth = cu->getPartitionSize(0) == SIZE_2Nx2N ? 0 : 1;
>
>      // set context models
> -
>  m_search->m_rdGoOnSbacCoder->load(m_search->m_rdSbacCoders[depth][CI_CURR_BEST]);
> +    m_sbacCoder->load(m_search->m_rdSbacCoders[depth][CI_CURR_BEST]);
>
>      m_search->xRecurIntraCodingQT(cu, initTrDepth, 0, fencYuv, predYuv,
> outResiYuv, puDistY, false, puCost);
>      m_search->xSetIntraResultQT(cu, initTrDepth, 0, outReconYuv);
> @@ -71,7 +71,7 @@
>      // Encode Coefficients
>      bool bCodeDQP = m_bEncodeDQP;
>      m_sbacCoder->codeCoeff(cu, 0, depth, cu->getCUSize(0), bCodeDQP);
> -    m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
> +    m_sbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]);
>
>      cu->m_totalBits = m_sbacCoder->getNumberOfWrittenBits();
>      cu->m_coeffBits = cu->m_totalBits - cu->m_mvBits;
> diff -r 57a4c1c2274e -r d6c423c66e4d source/encoder/cturow.cpp
> --- a/source/encoder/cturow.cpp Thu Jul 10 14:13:30 2014 -0500
> +++ b/source/encoder/cturow.cpp Thu Jul 10 17:33:14 2014 -0500
> @@ -69,10 +69,8 @@
>      // setup thread local data structures to use this row's CABAC state
>      tld.m_search.m_sbacCoder = &m_rdGoOnSbacCoder;
>      tld.m_search.m_rdSbacCoders = m_rdSbacCoders;
> -    tld.m_search.m_rdGoOnSbacCoder = &m_rdGoOnSbacCoder;
>      tld.m_cuCoder.m_sbacCoder = &m_rdGoOnSbacCoder;
>      tld.m_cuCoder.m_rdSbacCoders = m_rdSbacCoders;
> -    tld.m_cuCoder.m_rdGoOnSbacCoder = &m_rdGoOnSbacCoder;
>
> The above code explains it all.


>      BitCounter bc;
>      m_rdGoOnSbacCoder.setBitstream(&bc);
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20140711/d9083588/attachment-0001.html>


More information about the x265-devel mailing list