diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 793147b91bc387c22f9c6d9dd2d8c06a7eb64fd9..82baa81d0bb273fd46b9d58e0a555200201360a1 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -6099,13 +6099,25 @@ EncCu EncCu::copy(EncCu& original) { EncCu copy = *(new EncCu); copy.m_bestModeUpdated = original.m_bestModeUpdated; - std::vector m_ctxBufferCopia(original.m_ctxBuffer); - copy.m_ctxBuffer = m_ctxBufferCopia; + std::vector m_ctxBufferCopy(original.m_ctxBuffer); + copy.m_ctxBuffer = m_ctxBufferCopy; if (original.m_CurrCtx != NULL) /*Puede ser nulo*/ { - copy.m_CurrCtx = new CtxPair(*original.m_CurrCtx); + CtxPair m_CurrCtxCopy(*original.m_CurrCtx); + copy.m_CurrCtx = &m_CurrCtxCopy; } - copy.m_ctxPool = new CtxPool(*original.m_ctxPool); + else { + copy.m_CurrCtx = NULL; + } + CtxPool m_ctxPoolCopy(*original.m_ctxPool); + copy.m_ctxPool = &m_ctxPoolCopy; + + copy.m_cuChromaQpOffsetIdxPlus1 = original.m_cuChromaQpOffsetIdxPlus1; + + XuPool m_unitPoolCopy(original.m_unitPool); + copy.m_unitPool = m_unitPoolCopy; + + //@TODO return copy; } diff --git a/source/Lib/EncoderLib/EncCu.h b/source/Lib/EncoderLib/EncCu.h index 6908dc79b49beb236596770c155277004df33f1c..189e757a91ae5751439dfa0970364a5d1d14f402 100644 --- a/source/Lib/EncoderLib/EncCu.h +++ b/source/Lib/EncoderLib/EncCu.h @@ -235,12 +235,12 @@ public: std::vector m_ctxBuffer; //copy checked CtxPair* m_CurrCtx; //copy not checked because null - CtxPool *m_ctxPool; + CtxPool *m_ctxPool; //copy checked // Data : encoder control - int m_cuChromaQpOffsetIdxPlus1; // if 0, then cu_chroma_qp_offset_flag will be 0, otherwise cu_chroma_qp_offset_flag will be 1. + int m_cuChromaQpOffsetIdxPlus1; // if 0, then cu_chroma_qp_offset_flag will be 0, otherwise cu_chroma_qp_offset_flag will be 1. copy checked - XuPool m_unitPool; + XuPool m_unitPool; //copy not PelUnitBufPool m_pelUnitBufPool; CodingStructure ***m_pTempCS; diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index 052138d04fa98e1798b1fa5b77b11ca9425aa972..5a00bf34dd80073251683c9eedfcc9d52ee72745 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1897,6 +1897,8 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons EncCu m_pcCuEncoder_copy = m_pcCuEncoder->copy(*m_pcCuEncoder); //END ALBERTO m_pcCuEncoder->compressCtu(cs, ctuArea, ctuRsAddr, prevQP, currQP); + + bool stopDebugger = true; #if GREEN_METADATA_SEI_ENABLED FeatureCounterStruct m_featureCounter = pcPic->getFeatureCounter(); countFeatures(m_featureCounter, cs,ctuArea);