コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: MCTFPreProcessorTest.cpp プロジェクト: hwyhit/JSVM
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;
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: MCTFPreProcessorTest.cpp プロジェクト: hwyhit/JSVM
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;
}
コード例 #6
0
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;
}