ErrVal H264AVCDecoderTest::xRemovePicBuffer( PicBufferList& rcPicBufferUnusedList ) { while( ! rcPicBufferUnusedList.empty() ) { PicBuffer* pcBuffer = rcPicBufferUnusedList.popFront(); if( NULL != pcBuffer ) { PicBufferList::iterator begin = m_cActivePicBufferList.begin(); PicBufferList::iterator end = m_cActivePicBufferList.end (); PicBufferList::iterator iter = std::find( begin, end, pcBuffer ); AOT( pcBuffer->isUsed() ) m_cUnusedPicBufferList.push_back( pcBuffer ); if (iter!=end) m_cActivePicBufferList.erase ( iter ); } } // hwsun, fix meomory for field coding for(int i = (m_cActivePicBufferList.size() - m_pcH264AVCDecoder->getMaxEtrDPB() * 4); i > 0; i--) { PicBuffer* pcBuffer = m_cActivePicBufferList.popFront(); if( NULL != pcBuffer ) m_cUnusedPicBufferList.push_back( pcBuffer ); } return Err::m_nOK; }
ErrVal H264AVCEncoderTest::xRemovePicBuffer( PicBufferList& rcPicBufferUnusedList, UInt uiView ) { while( ! rcPicBufferUnusedList.empty() ) { //printf("! rcPicBufferUnusedList.empty() del view %d\n",uiView); PicBuffer* pcBuffer = rcPicBufferUnusedList.popFront(); if( NULL != pcBuffer ) { //printf("NULL != pcBuffer\n"); PicBufferList::iterator begin = m_acActivePicBufferList[uiView].begin(); PicBufferList::iterator end = m_acActivePicBufferList[uiView].end (); PicBufferList::iterator iter = std::find( begin, end, pcBuffer ); if( iter == end ){ // there is something wrong if the address is not in the active list return Err::m_nOK; } AOT_DBG( (*iter)->isUsed() ); m_acUnusedPicBufferList[uiView].push_back( *iter ); m_acActivePicBufferList[uiView].erase ( iter ); } } //printf("View %d fet.\n",uiView); return Err::m_nOK; }
ErrVal MCTFPreProcessorTest::xWrite( PicBufferList& rcPicBufferList ) { UInt auiCropping[4] = {0,0,0,0}; while( ! rcPicBufferList.empty() ) { PicBuffer* pcBuffer = rcPicBufferList.popFront(); Pel* pcBuf = pcBuffer->getBuffer(); RNOK( m_pcWriteYuv->writeFrame( pcBuf + m_uiLumOffset, pcBuf + m_uiCbOffset, pcBuf + m_uiCrOffset, m_uiHeight, m_uiWidth, m_uiStride, auiCropping ) ); } return Err::m_nOK; }
ErrVal H264AVCEncoderTest::xWrite( PicBufferList& rcPicBufferList, UInt uiLayer ) { while( ! rcPicBufferList.empty() ) { PicBuffer* pcBuffer = rcPicBufferList.popFront(); Pel* pcBuf = pcBuffer->getBuffer(); RNOK( m_apcWriteYuv[uiLayer]->writeFrame( pcBuf + m_auiLumOffset[uiLayer], pcBuf + m_auiCbOffset [uiLayer], pcBuf + m_auiCrOffset [uiLayer], m_auiHeight [uiLayer], m_auiWidth [uiLayer], m_auiStride [uiLayer] ) ); } return Err::m_nOK; }
ErrVal MCTFPreProcessorTest::xRemovePicBuffer( PicBufferList& rcList ) { while( ! rcList.empty() ) { PicBuffer* pcBuffer = rcList.popFront(); if( NULL != pcBuffer ) { PicBufferList::iterator begin = m_cActivePicBufferList.begin(); PicBufferList::iterator end = m_cActivePicBufferList.end (); PicBufferList::iterator iter = std::find( begin, end, pcBuffer ); ROT( iter == end ); // there is something wrong if the address is not in the active list AOT_DBG( (*iter)->isUsed() ); m_cUnusedPicBufferList.push_back( *iter ); m_cActivePicBufferList.erase ( iter ); } } return Err::m_nOK; }
ErrVal H264AVCEncoderTest::xRemovePicBuffer( PicBufferList& rcPicBufferUnusedList, UInt uiLayer ) { while( ! rcPicBufferUnusedList.empty() ) { PicBuffer* pcBuffer = rcPicBufferUnusedList.popFront(); if( NULL != pcBuffer ) { PicBufferList::iterator begin = m_acActivePicBufferList[uiLayer].begin(); PicBufferList::iterator end = m_acActivePicBufferList[uiLayer].end (); PicBufferList::iterator iter = std::find( begin, end, pcBuffer ); ROT( iter == end ); // there is something wrong if the address is not in the active list AOT_DBG( (*iter)->isUsed() ); m_acUnusedPicBufferList[uiLayer].push_back( *iter ); m_acActivePicBufferList[uiLayer].erase ( iter ); } } return Err::m_nOK; }