Shouldn't it be X265_MAX(m_numReorderPics[i] + 2, _param->maxNumReferences+1) ? Unlike H.264, the picture is added to the DPB before being decoded (so the current picture always takes up one slot in the DPB)
Olivier From: x265-devel [mailto:[email protected]] On Behalf Of Steve Borho Sent: Wednesday, September 25, 2013 3:12 PM To: Development for x265 Subject: Re: [x265] [PATCH] Added support for multiple references On Wed, Sep 25, 2013 at 6:06 AM, Shazeb Khan <[email protected]<mailto:[email protected]>> wrote: # HG changeset patch # User Shazeb Nawaz Khan <[email protected]<mailto:[email protected]>> # Date 1380099889 -19800 # Wed Sep 25 14:34:49 2013 +0530 # Node ID 0cc1b50c7d500c182332f09fc66420002909d5ec # Parent 4d0ced5c64fed290302b730ef8ac7d8613420a0d Added support for multiple references Added a commandline parameter '--ref <max number of references>'. DPB size adjusted to use number of references. This patch was line wrap damaged, but I've queued a corrected version for default. As a follow-up, we need to display maxrefs in the logs, especially if it is larger than 1. diff -r 4d0ced5c64fe -r 0cc1b50c7d50 source/common/common.cpp --- a/source/common/common.cpp Wed Sep 25 11:33:50 2013 +0530 +++ b/source/common/common.cpp Wed Sep 25 14:34:49 2013 +0530 @@ -160,7 +160,7 @@ param->bEnableSignHiding = 1; param->bEnableTransformSkip = 1; param->bEnableTSkipFast = 1; - + param->maxNumReferences = 1; /* Loop Filter */ param->bEnableLoopFilter = 1; diff -r 4d0ced5c64fe -r 0cc1b50c7d50 source/encoder/dpb.h --- a/source/encoder/dpb.h Wed Sep 25 11:33:50 2013 +0530 +++ b/source/encoder/dpb.h Wed Sep 25 14:34:49 2013 +0530 @@ -52,10 +52,9 @@ m_lastIDR = 0; m_pocCRA = 0; m_bRefreshPending = false; - m_maxRefL0 = 1; //TODO: This values should later be fetched from input params + m_maxRefL0 = cfg->param.maxNumReferences; m_maxRefL1 = 1; } - ~DPB(); void prepareEncode(TComPic*); diff -r 4d0ced5c64fe -r 0cc1b50c7d50 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Wed Sep 25 11:33:50 2013 +0530 +++ b/source/encoder/encoder.cpp Wed Sep 25 14:34:49 2013 +0530 @@ -263,8 +263,8 @@ vps.setMaxLayers(1); for (int i = 0; i < MAX_TLAYER; i++) { - m_numReorderPics[i] = _param->bframes; - m_maxDecPicBuffering[i] = _param->bframes + 2; + m_numReorderPics[i] = 1; + m_maxDecPicBuffering[i] = X265_MIN(MAX_NUM_REF, X265_MAX(m_numReorderPics[i] + 1, _param->maxNumReferences)); vps.setNumReorderPics(m_numReorderPics[i], i); vps.setMaxDecPicBuffering(m_maxDecPicBuffering[i], i); } diff -r 4d0ced5c64fe -r 0cc1b50c7d50 source/x265.h --- a/source/x265.h Wed Sep 25 11:33:50 2013 +0530 +++ b/source/x265.h Wed Sep 25 14:34:49 2013 +0530 @@ -248,7 +248,7 @@ int bEnableTransformSkip; ///< enable intra transform skipping int bEnableTSkipFast; ///< enable fast intra transform skipping int bEnableRDOQTS; ///< enable RD optimized quantization when transform skip is selected - + int maxNumReferences; ///< maximum number of references a frame can have in L0 // loop filter int bEnableLoopFilter; ///< enable Loop Filter diff -r 4d0ced5c64fe -r 0cc1b50c7d50 source/x265opts.h --- a/source/x265opts.h Wed Sep 25 11:33:50 2013 +0530 +++ b/source/x265opts.h Wed Sep 25 14:34:49 2013 +0530 @@ -66,6 +66,7 @@ OPT("bframes", param->bframes, required_argument, 'b', "Maximum number of consecutive b-frames (now it only enables B GOP structure)") OPT("bframe-bias", param->bFrameBias, required_argument, 0, "Bias towards B frame decisions") OPT("b-adapt", param->bFrameAdaptive, required_argument, 0, "0 - none, 1 - fast, 2 - full (trellis) adaptive B frame scheduling") +OPT("ref", param->maxNumReferences, required_argument, 0, "max number of references to be allowed (1 .. 16) ") // Disabled because weighted uni-prediction was busted by not using // pre-generated planes in motion compensation //OPT("no-weightp", param->bEnableWeightedPred, no_argument, 0, "Disable weighted prediction in P slices") _______________________________________________ x265-devel mailing list [email protected]<mailto:[email protected]> https://mailman.videolan.org/listinfo/x265-devel -- Steve Borho ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. -----------------------------------------------------------------------------------
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
