[x265] [PATCH] ABR - Removed unused states, cleaned up the comments

aarthi at multicorewareinc.com aarthi at multicorewareinc.com
Mon Sep 16 20:43:27 CEST 2013


# HG changeset patch
# User Aarthi Thirumalai
# Date 1379356988 -19800
#      Tue Sep 17 00:13:08 2013 +0530
# Node ID baeddbdc9ec349002f574bfc1763927f487cc88d
# Parent  9a727efab9fa4048eed7330abe28cf7e088590fb
ABR - Removed unused states, cleaned up the comments.

Removed states that are not used in ABR or CQP rate contnrol modes.

diff -r 9a727efab9fa -r baeddbdc9ec3 source/encoder/ratecontrol.cpp
--- a/source/encoder/ratecontrol.cpp	Mon Sep 16 22:57:07 2013 +0530
+++ b/source/encoder/ratecontrol.cpp	Tue Sep 17 00:13:08 2013 +0530
@@ -61,7 +61,7 @@
     ncu = (int)((param->sourceHeight * param->sourceWidth) / pow((int)param->maxCUSize, 2.0));
     lastNonBPictType = -1;
     baseQp = param->rc.qp;
-    qpm = qp = baseQp;
+    qp = baseQp;
 
     // heuristics- encoder specific
     qCompress = param->rc.qCompress; // tweak and test for x265.
@@ -101,7 +101,7 @@
 
     //qstep - value set as encoder specific.
     lstep = pow(2, param->rc.qpStep / 6.0);
-    cbrDecay = 1.0;
+
 }
 
 void RateControl::rateControlStart(TComPic* pic, Lookahead *l, RateControlEntry* rce)
@@ -116,8 +116,7 @@
             lastSatd = l->getEstimatedPictureCost(pic);
             double q = qScale2qp(rateEstimateQscale(rce));
             qp = Clip3(MIN_QP, MAX_QP, (int)(q + 0.5));
-            rce->qpaRc = qpm = q;    
-            rce->newQp = qp;
+            rce->qpaRc  = q;
             accumPQpUpdate();
             break;
         }
@@ -146,15 +145,14 @@
     accumPNorm *= .95;
     accumPNorm += 1;
     if (frameType == I_SLICE)
-        accumPQp += qpm + ipOffset;
+        accumPQp += qp + ipOffset;
     else
-        accumPQp += qpm;
+        accumPQp += qp;
 }
 
 double RateControl::rateEstimateQscale(RateControlEntry *rce)
 {
     double q;
-    // ratecontrol_entry_t rce = UNINIT(rce);
     int pictType = frameType;
 
     if (pictType == B_SLICE)
@@ -207,8 +205,6 @@
          * tolerances, the bit distribution approaches that of 2pass. */
 
         double wantedBits, overflow = 1;
-        rce->pCount = ncu;
-
         shortTermCplxSum *= 0.5;
         shortTermCplxCount *= 0.5;
         shortTermCplxSum += lastSatd / (CLIP_DURATION(frameDuration) / BASE_FRAME_DURATION);
@@ -217,7 +213,6 @@
         rce->blurredComplexity = shortTermCplxSum / shortTermCplxCount;
         rce->mvBits = 0;
         rce->pictType = pictType;
-        //need to checked where it is initialized
         q = getQScale(rce, wantedBitsWindow / cplxrSum);
 
         /* ABR code can potentially be counterproductive in CBR, so just don't bother.
@@ -236,7 +231,6 @@
         }
 
         if (pictType == I_SLICE && keyFrameInterval > 1
-            /* should test _next_ pict type, but that isn't decided yet */
             && lastNonBPictType != I_SLICE)
         {
             q = qp2qScale(accumPQp / accumPNorm);
@@ -270,12 +264,10 @@
             q = Clip3(lqmin, lqmax, q);
         }
 
-        //FIXME use get_diff_limited_q() ?
         double lmin1 = lmin[pictType];
         double lmax1 = lmax[pictType];
         q = Clip3(lmin1, lmax1, q);
-        lastQScaleFor[pictType] =
-            lastQScale = q;
+        lastQScaleFor[pictType] = q;
 
         if (curFrame->getPOC() == 0)
             lastQScaleFor[P_SLICE] = q * fabs(ipFactor);
@@ -300,12 +292,11 @@
     {
         rce->lastRceq = q;
         q /= rateFactor;
-        lastQScale = q;
     }
     return q;
 }
 
-/* After encoding one frame, save stats and update ratecontrol state */
+/* After encoding one frame,  update ratecontrol state */
 int RateControl::rateControlEnd(int64_t bits, RateControlEntry* rce)
 {
     if (rateControlMode == X265_RC_ABR)
@@ -320,9 +311,7 @@
              * Not perfectly accurate with B-refs, but good enough. */
             cplxrSum += bits * qp2qScale(rce->qpaRc) / (rce->lastRceq * fabs(pbFactor));
         }
-        cplxrSum *= cbrDecay;
         wantedBitsWindow += frameDuration * bitrate;
-        wantedBitsWindow *= cbrDecay;       
         rce = NULL;
     }
     totalBits += bits;
diff -r 9a727efab9fa -r baeddbdc9ec3 source/encoder/ratecontrol.h
--- a/source/encoder/ratecontrol.h	Mon Sep 16 22:57:07 2013 +0530
+++ b/source/encoder/ratecontrol.h	Tue Sep 17 00:13:08 2013 +0530
@@ -35,12 +35,10 @@
 struct RateControlEntry
 {
     int pictType;
-    int pCount;
-    int newQp;
     int texBits;
     int mvBits;
     double blurredComplexity;
-    double qpaRc;                /* average of macroblocks' qp before aq */
+    double qpaRc;                
     double lastRceq;
 };
 
@@ -54,9 +52,7 @@
     int keyFrameInterval;       /* TODO: need to initialize in init */
     int qp;                     /* updated qp for current frame */
     int baseQp;                 /* CQP base QP */
-    double frameDuration;        /* current frame duration in seconds */
-    double qpm;                  /* qp for current macroblock: precise double for AQ */
-    
+    double frameDuration;        /* current frame duration in seconds */ 
     double bitrate;
     double rateTolerance;
     double qCompress;
@@ -71,11 +67,8 @@
     int lastNonBPictType;
     double accumPQp;          /* for determining I-frame quant */
     double accumPNorm;
-    double lastQScale;
     double lastQScaleFor[3];  /* last qscale for a specific pict type, used for max_diff & ipb factor stuff */
     double lstep;
-    double qpNoVbv;             /* QP for the current frame if 1-pass VBV was disabled. */
-    double cbrDecay;
     double lmin[3];             /* min qscale by frame type */
     double lmax[3];
     double shortTermCplxSum;


More information about the x265-devel mailing list