Commit b726eb7b authored by Alberto Gonzalez's avatar Alberto Gonzalez

Commit nº 4 (06-03-2023) <-> 21:45

```------------------------------------------------------------
Se ha comprobado que los atributos a continuación no comparten memoria
- m_bestModeUpdated
- m_ctxBufferCopy
```

------------------------------------------------------------
Al realizar comprobación salta excepción y se comentan todas las copias de atributos excepto estos dos
---------------------------------------------------------------
Se ha comprobado de dos formas:
-Copia antes de modificar el original
-Copia después de modificar el original y cambiar algunos de los atributos en el debugger de Visual Studio para comprobar dependencias.
**No se han detectado direcciones de memoria compartidas**
---------------------------------------------------------------
Continuar con el atributo m_CurrCtx (Pointer to CtxPair)
parent f502dc46
......@@ -6097,114 +6097,131 @@ void MergeItemList::resetList(size_t maxTrackingNum)
/*EL SIGUIENTE MTODO HA SIDO CREADO CON EL OBJETIVO DE PERMITIR REALIZAR UNA DEEP COPY DEL PROYECTO*/
EncCu EncCu::copy(EncCu& original)
{
/*CREAMOS EL NUEVO ENCU*/
EncCu copy = *(new EncCu);
/*COPIAMOS BOOL*/
copy.m_bestModeUpdated = original.m_bestModeUpdated;
std::vector<CtxPair> m_ctxBufferCopy(original.m_ctxBuffer);
/*COPIAMOS VECTOR QUE CONTIENE CTXPAIR*/
std::vector<CtxPair> m_ctxBufferCopy(original.m_ctxBuffer.size());
for (size_t i = 0; i < original.m_ctxBuffer.size(); i++)
{
CtxPair newCtxPair;
newCtxPair.start = Ctx(original.m_ctxBuffer[i].start);
newCtxPair.best = Ctx(original.m_ctxBuffer[i].best);
m_ctxBufferCopy[i] = newCtxPair;
}
copy.m_ctxBuffer = m_ctxBufferCopy;
/*COPIAMOS PUNTERO CTXPAIR*/
if (original.m_CurrCtx != NULL) /*Puede ser nulo*/
{
CtxPair* m_CurrCtxCopy = new CtxPair(*original.m_CurrCtx);
copy.m_CurrCtx = m_CurrCtxCopy;
CtxPair* newCtxPair = new CtxPair();
*newCtxPair = *(original.m_CurrCtx);
copy.m_CurrCtx = newCtxPair;
}
else {
copy.m_CurrCtx = NULL;
}
CtxPool* m_ctxPoolCopy = new CtxPool(*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;
//CtxPool* m_ctxPoolCopy = new CtxPool(*original.m_ctxPool);
//copy.m_ctxPool = m_ctxPoolCopy;
PelUnitBufPool m_pelUnitBufPoolCopy(original.m_pelUnitBufPool);
copy.m_pelUnitBufPool = m_pelUnitBufPoolCopy;
//copy.m_cuChromaQpOffsetIdxPlus1 = original.m_cuChromaQpOffsetIdxPlus1;
//XuPool m_unitPoolCopy(original.m_unitPool);
//copy.m_unitPool = m_unitPoolCopy;
CodingStructure*** m_pTempCSCopy = new CodingStructure**;
*m_pTempCSCopy = new CodingStructure*;
**m_pTempCSCopy = **original.m_pTempCS; // Copia los datos del objeto apuntado por m_pTempCS en la nueva variable
copy.m_pTempCS = m_pTempCSCopy;
//PelUnitBufPool m_pelUnitBufPoolCopy(original.m_pelUnitBufPool);
//copy.m_pelUnitBufPool = m_pelUnitBufPoolCopy;
CodingStructure*** m_pBestCSCopy = new CodingStructure**;
*m_pBestCSCopy = new CodingStructure*;
**m_pBestCSCopy = **original.m_pBestCS; // Copia los datos del objeto apuntado por m_pBestCS en la nueva variable
copy.m_pBestCS = m_pBestCSCopy;
CodingStructure*** m_pTempCS2Copy = new CodingStructure**;
*m_pTempCS2Copy = new CodingStructure*;
**m_pTempCS2Copy = **original.m_pTempCS2; // Copia los datos del objeto apuntado por m_pTempCS2 en la nueva variable
copy.m_pTempCS2 = m_pTempCS2Copy;
//CodingStructure*** m_pTempCSCopy = new CodingStructure**;
//*m_pTempCSCopy = new CodingStructure*;
//**m_pTempCSCopy = **original.m_pTempCS; // Copia los datos del objeto apuntado por m_pTempCS en la nueva variable
//copy.m_pTempCS = m_pTempCSCopy;
CodingStructure*** m_pBestCS2Copy = new CodingStructure**;
*m_pBestCS2Copy = new CodingStructure*;
**m_pBestCS2Copy = **original.m_pBestCS2; // Copia los datos del objeto apuntado por m_pBestCS2 en la nueva variable
copy.m_pBestCS2 = m_pBestCS2Copy;
//CodingStructure*** m_pBestCSCopy = new CodingStructure**;
//*m_pBestCSCopy = new CodingStructure*;
//**m_pBestCSCopy = **original.m_pBestCS; // Copia los datos del objeto apuntado por m_pBestCS en la nueva variable
//copy.m_pBestCS = m_pBestCSCopy;
//CodingStructure*** m_pTempCS2Copy = new CodingStructure**;
//*m_pTempCS2Copy = new CodingStructure*;
//**m_pTempCS2Copy = **original.m_pTempCS2; // Copia los datos del objeto apuntado por m_pTempCS2 en la nueva variable
//copy.m_pTempCS2 = m_pTempCS2Copy;
//CodingStructure*** m_pBestCS2Copy = new CodingStructure**;
//*m_pBestCS2Copy = new CodingStructure*;
//**m_pBestCS2Copy = **original.m_pBestCS2; // Copia los datos del objeto apuntado por m_pBestCS2 en la nueva variable
//copy.m_pBestCS2 = m_pBestCS2Copy;
EncCfg* m_pcEncCfgCopy = new EncCfg(*original.m_pcEncCfg);
copy.m_pcEncCfg = m_pcEncCfgCopy;
//EncCfg* m_pcEncCfgCopy = new EncCfg(*original.m_pcEncCfg);
//copy.m_pcEncCfg = m_pcEncCfgCopy;
IntraSearch* m_pcIntraSearchCopy = new IntraSearch(*original.m_pcIntraSearch);
copy.m_pcIntraSearch = m_pcIntraSearchCopy;
//IntraSearch* m_pcIntraSearchCopy = new IntraSearch(*original.m_pcIntraSearch);
//copy.m_pcIntraSearch = m_pcIntraSearchCopy;
InterSearch* m_pcInterSearchCopy = new InterSearch(*original.m_pcInterSearch);
copy.m_pcInterSearch = m_pcInterSearchCopy;
//InterSearch* m_pcInterSearchCopy = new InterSearch(*original.m_pcInterSearch);
//copy.m_pcInterSearch = m_pcInterSearchCopy;
TrQuant* m_pcTrQuantCopy = new TrQuant(*original.m_pcTrQuant);
copy.m_pcTrQuant = m_pcTrQuantCopy;
//TrQuant* m_pcTrQuantCopy = new TrQuant(*original.m_pcTrQuant);
//copy.m_pcTrQuant = m_pcTrQuantCopy;
RdCost* m_pcRdCostCopy = new RdCost(*original.m_pcRdCost);
copy.m_pcRdCost = m_pcRdCostCopy;
//RdCost* m_pcRdCostCopy = new RdCost(*original.m_pcRdCost);
//copy.m_pcRdCost = m_pcRdCostCopy;
EncSlice* m_pcSliceEncoderCopy = new EncSlice(*original.m_pcSliceEncoder);
copy.m_pcSliceEncoder = m_pcSliceEncoderCopy;
//EncSlice* m_pcSliceEncoderCopy = new EncSlice(*original.m_pcSliceEncoder);
//copy.m_pcSliceEncoder = m_pcSliceEncoderCopy;
DeblockingFilter* m_deblockingFilterCopy = new DeblockingFilter(*original.m_deblockingFilter);
copy.m_deblockingFilter = m_deblockingFilterCopy;
//DeblockingFilter* m_deblockingFilterCopy = new DeblockingFilter(*original.m_deblockingFilter);
//copy.m_deblockingFilter = m_deblockingFilterCopy;
CABACWriter* m_CABACEstimatorCopy = new CABACWriter(*original.m_CABACEstimator);
copy.m_CABACEstimator = m_CABACEstimatorCopy;
//CABACWriter* m_CABACEstimatorCopy = new CABACWriter(*original.m_CABACEstimator);
//copy.m_CABACEstimator = m_CABACEstimatorCopy;
RateCtrl* m_pcRateCtrlCopy = new RateCtrl(*original.m_pcRateCtrl);
copy.m_pcRateCtrl = m_pcRateCtrlCopy;
//RateCtrl* m_pcRateCtrlCopy = new RateCtrl(*original.m_pcRateCtrl);
//copy.m_pcRateCtrl = m_pcRateCtrlCopy;
IbcHashMap* m_ibcHashMapCopy = new IbcHashMap(original.m_ibcHashMap);
copy.m_ibcHashMap = *m_ibcHashMapCopy;
//IbcHashMap* m_ibcHashMapCopy = new IbcHashMap(original.m_ibcHashMap);
//copy.m_ibcHashMap = *m_ibcHashMapCopy;
EncModeCtrlMTnoRQT* m_modeCtrlDerived = dynamic_cast<EncModeCtrlMTnoRQT*>(original.m_modeCtrl); //Downcasting
EncModeCtrl* m_modeCtrlCopy = new EncModeCtrlMTnoRQT(*m_modeCtrlDerived); //Upcasting
copy.m_modeCtrl = m_modeCtrlCopy;
//EncModeCtrlMTnoRQT* m_modeCtrlDerived = dynamic_cast<EncModeCtrlMTnoRQT*>(original.m_modeCtrl); //Downcasting
//EncModeCtrl* m_modeCtrlCopy = new EncModeCtrlMTnoRQT(*m_modeCtrlDerived); //Upcasting
//copy.m_modeCtrl = m_modeCtrlCopy;
FastGeoCostList* m_geoCostListCopy = new FastGeoCostList(original.m_geoCostList);
copy.m_geoCostList = *m_geoCostListCopy;
//FastGeoCostList* m_geoCostListCopy = new FastGeoCostList(original.m_geoCostList);
//copy.m_geoCostList = *m_geoCostListCopy;
copy.m_AFFBestSATDCost = original.m_AFFBestSATDCost;
copy.m_mergeBestSATDCost = original.m_mergeBestSATDCost;
//copy.m_AFFBestSATDCost = original.m_AFFBestSATDCost;
//copy.m_mergeBestSATDCost = original.m_mergeBestSATDCost;
for (int i = 0; i < (MAX_CU_SIZE * MAX_CU_SIZE) >> (MIN_CU_LOG2 << 1); i++)
{
copy.m_SubPuMiBuf[i] = *new MotionInfo(original.m_SubPuMiBuf[i]); //obtenemos el original, creamos nuevo y asignamos contenido al array copia
}
//for (int i = 0; i < (MAX_CU_SIZE * MAX_CU_SIZE) >> (MIN_CU_LOG2 << 1); i++)
//{
// copy.m_SubPuMiBuf[i] = *new MotionInfo(original.m_SubPuMiBuf[i]); //obtenemos el original, creamos nuevo y asignamos contenido al array copia
//}
copy.m_ctuIbcSearchRangeX = original.m_ctuIbcSearchRangeX;
copy.m_ctuIbcSearchRangeY = original.m_ctuIbcSearchRangeY;
//copy.m_ctuIbcSearchRangeX = original.m_ctuIbcSearchRangeX;
//copy.m_ctuIbcSearchRangeY = original.m_ctuIbcSearchRangeY;
copy.m_bestBcwIdx = original.m_bestBcwIdx;
copy.m_bestBcwCost = original.m_bestBcwCost;
//copy.m_bestBcwIdx = original.m_bestBcwIdx;
//copy.m_bestBcwCost = original.m_bestBcwCost;
//static const MergeIdxPair m_geoModeTest[GEO_MAX_NUM_CANDS];
for (int i = 0; i < 2; i++) {
copy.m_sbtCostSave[i] = original.m_sbtCostSave[i];
}
//
////static const MergeIdxPair m_geoModeTest[GEO_MAX_NUM_CANDS];
//for (int i = 0; i < 2; i++) {
// copy.m_sbtCostSave[i] = original.m_sbtCostSave[i];
//}
GeoComboCostList* m_comboListCopy = new GeoComboCostList(original.m_comboList);
copy.m_comboList = *m_comboListCopy;
//GeoComboCostList* m_comboListCopy = new GeoComboCostList(original.m_comboList);
//copy.m_comboList = *m_comboListCopy;
MergeItemList* m_mergeItemListCopy = new MergeItemList(original.m_mergeItemList);
copy.m_mergeItemList = *m_mergeItemListCopy;
//MergeItemList* m_mergeItemListCopy = new MergeItemList(original.m_mergeItemList);
//copy.m_mergeItemList = *m_mergeItemListCopy;
//@TODO
////@TODO
return copy;
}
......
......@@ -1898,8 +1898,9 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons
bool stopDebugger1 = true;
//END ALBERTO
m_pcCuEncoder->compressCtu(cs, ctuArea, ctuRsAddr, prevQP, currQP);
EncCu m_pcCuEncoder_copy2 = m_pcCuEncoder->copy(*m_pcCuEncoder);
bool stopDebugger2 = true;
bool stopDebugger3 = true;
#if GREEN_METADATA_SEI_ENABLED
FeatureCounterStruct m_featureCounter = pcPic->getFeatureCounter();
countFeatures(m_featureCounter, cs,ctuArea);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment