diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index ee3c377044bfca3255b7a4aa5f7cb5336f846297..1f65e12e2725a4cba196297105d333e27d4232d0 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -331,43 +331,11 @@ bool Slice::getRapPicFlag() const || getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA; } - -void Slice::sortPicList (PicList& rcListPic) +void Slice::sortPicList(PicList &picList) { - Picture* pcPicExtract; - Picture* pcPicInsert; - - PicList::iterator iterPicExtract; - PicList::iterator iterPicExtract_1; - PicList::iterator iterPicInsert; - - for (int i = 1; i < (int)(rcListPic.size()); i++) - { - iterPicExtract = rcListPic.begin(); - for (int j = 0; j < i; j++) - { - iterPicExtract++; - } - pcPicExtract = *(iterPicExtract); - - iterPicInsert = rcListPic.begin(); - while (iterPicInsert != iterPicExtract) - { - pcPicInsert = *(iterPicInsert); - if (pcPicInsert->getPOC() >= pcPicExtract->getPOC()) - { - break; - } - - iterPicInsert++; - } - - iterPicExtract_1 = iterPicExtract; iterPicExtract_1++; - - // swap iterPicExtract and iterPicInsert, iterPicExtract = curr. / iterPicInsert = insertion position - rcListPic.insert( iterPicInsert, iterPicExtract, iterPicExtract_1 ); - rcListPic.erase( iterPicExtract ); - } + picList.sort([](Picture *const &a, Picture *const &b) { + return a->getPOC() < b->getPOC() || (a->getPOC() == b->getPOC() && a->layerId < b->layerId); + }); } Picture* Slice::xGetRefPic( PicList& rcListPic, const int poc, const int layerId )