Ticket #306: reference_list_bug_fix.patch

File reference_list_bug_fix.patch, 1.9 KB (added by eeehey, 12 years ago)

patch of the bug reported in #306

  • Lib/TLibCommon/TComSlice.cpp

     
    625625  {
    626626    for( i = 0; i < m_RefPicListModification.getNumberOfRefPicListModificationsL0(); i++)
    627627    {
    628       for( cIdx = num_ref_idx_l1_active_minus1 + 1; cIdx > i; cIdx-- )
     628      for( cIdx = num_ref_idx_l0_active_minus1 + 1; cIdx > i; cIdx-- )
    629629        m_apcRefPicList[0][ cIdx ] = m_apcRefPicList[0][ cIdx - 1];
    630630      if(m_RefPicListModification.getListIdcL0(i) == 0)
    631631        m_apcRefPicList[0][ i ] =  RefPicSetStCurr0[ m_RefPicListModification.getRefPicSetIdxL0(i) ];
  • Lib/TLibDecoder/TDecCAVLC.cpp

     
    10291029          READ_FLAG( uiCode, "pic_from_list_0_flag" );
    10301030          rpcSlice->setListIdFromIdxOfLC(i, uiCode);
    10311031          READ_UVLC( uiCode, "ref_idx_list_curr" );
    1032           rpcSlice->setRefIdxFromIdxOfLC(i, uiCode);
     1032          rpcSlice->setRefIdxFromIdxOfLC(i, uiCode^1);
    10331033          rpcSlice->setRefIdxOfLC((RefPicList)rpcSlice->getListIdFromIdxOfLC(i), rpcSlice->getRefIdxFromIdxOfLC(i), i);
    10341034        }
    10351035      }
  • Lib/TLibEncoder/TEncCavlc.cpp

     
    904904      {
    905905        for (UInt i=0;i<pcSlice->getNumRefIdx(REF_PIC_LIST_C);i++)
    906906        {
    907           WRITE_FLAG( pcSlice->getListIdFromIdxOfLC(i),               "pic_from_list_0_flag" );
     907          WRITE_FLAG( pcSlice->getListIdFromIdxOfLC(i)^1,               "pic_from_list_0_flag" );
    908908          WRITE_UVLC( pcSlice->getRefIdxFromIdxOfLC(i),               "ref_idx_list_curr" );
    909909        }
    910910      }