[x264-devel] Fix possible issues with out-of-spec QP values

Anton Mitrofanov git at videolan.org
Thu Nov 8 23:43:32 CET 2012


x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Fri Nov  9 02:31:10 2012 +0400| [1cffe9f406cc54f4759fc9eeb85598fb8cae66c7] | committer: Jason Garrett-Glaser

Fix possible issues with out-of-spec QP values
Fixes a possible regression in r2228.

> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=1cffe9f406cc54f4759fc9eeb85598fb8cae66c7
---

 common/set.c      |    2 +-
 encoder/analyse.c |    2 +-
 encoder/encoder.c |    1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/common/set.c b/common/set.c
index 56da025..da25bcb 100644
--- a/common/set.c
+++ b/common/set.c
@@ -241,7 +241,7 @@ int x264_cqm_init( x264_t *h )
 
     if( !h->mb.b_lossless )
     {
-        while( h->chroma_qp_table[h->param.rc.i_qp_min] <= max_chroma_qp_err )
+        while( h->chroma_qp_table[SPEC_QP(h->param.rc.i_qp_min)] <= max_chroma_qp_err )
             h->param.rc.i_qp_min++;
         if( min_qp_err <= h->param.rc.i_qp_max )
             h->param.rc.i_qp_max = min_qp_err-1;
diff --git a/encoder/analyse.c b/encoder/analyse.c
index 0577b7a..52f1940 100644
--- a/encoder/analyse.c
+++ b/encoder/analyse.c
@@ -2922,7 +2922,7 @@ static inline void x264_mb_analyse_qp_rd( x264_t *h, x264_mb_analysis_t *a )
         {
             if( !origcbp )
             {
-                h->mb.i_qp = X264_MAX( h->mb.i_qp - threshold - 1, h->param.rc.i_qp_min );
+                h->mb.i_qp = X264_MAX( h->mb.i_qp - threshold - 1, SPEC_QP( h->param.rc.i_qp_min ) );
                 h->mb.i_chroma_qp = h->chroma_qp_table[h->mb.i_qp];
                 already_checked_cost = x264_rd_cost_mb( h, a->i_lambda2 );
                 if( !h->mb.cbp[h->mb.i_mb_xy] )
diff --git a/encoder/encoder.c b/encoder/encoder.c
index 8ec9260..c8460d2 100644
--- a/encoder/encoder.c
+++ b/encoder/encoder.c
@@ -2239,6 +2239,7 @@ static int x264_slice_write( x264_t *h )
     /* Set the QP equal to the first QP in the slice for more accurate CABAC initialization. */
     h->mb.i_mb_xy = h->sh.i_first_mb;
     h->sh.i_qp = x264_ratecontrol_mb_qp( h );
+    h->sh.i_qp = SPEC_QP( h->sh.i_qp );
     h->sh.i_qp_delta = h->sh.i_qp - h->pps->i_pic_init_qp;
 
     x264_slice_header_write( &h->out.bs, &h->sh, h->i_nal_ref_idc );



More information about the x264-devel mailing list