[x264-devel] Some trivial changes to RD thresholds

Dan Larkin git at videolan.org
Sat Jul 23 02:38:55 CEST 2011


x264 | branch: master | Dan Larkin <danielhlarkin at gmail.com> | Wed Jul 13 11:33:48 2011 -0500| [207ca3e95b38d734400e12f57faa16b778f0706c] | committer: Jason Garrett-Glaser

Some trivial changes to RD thresholds
The output-changing portion of the next patch.

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

 encoder/analyse.c |   32 ++++++++++++++++----------------
 1 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/encoder/analyse.c b/encoder/analyse.c
index fd86520..08c345a 100644
--- a/encoder/analyse.c
+++ b/encoder/analyse.c
@@ -1033,7 +1033,7 @@ static void x264_mb_analyse_intra( x264_t *h, x264_mb_analysis_t *a, int i_satd_
 
 static void x264_intra_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_thresh )
 {
-    if( a->i_satd_i16x16 <= i_satd_thresh )
+    if( a->i_satd_i16x16 < i_satd_thresh )
     {
         h->mb.i_type = I_16x16;
         x264_analyse_update_cache( h, a );
@@ -1042,7 +1042,7 @@ static void x264_intra_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_thresh )
     else
         a->i_satd_i16x16 = COST_MAX;
 
-    if( a->i_satd_i4x4 <= i_satd_thresh && a->i_satd_i4x4 < COST_MAX )
+    if( a->i_satd_i4x4 < i_satd_thresh )
     {
         h->mb.i_type = I_4x4;
         x264_analyse_update_cache( h, a );
@@ -1051,7 +1051,7 @@ static void x264_intra_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_thresh )
     else
         a->i_satd_i4x4 = COST_MAX;
 
-    if( a->i_satd_i8x8 <= i_satd_thresh && a->i_satd_i8x8 < COST_MAX )
+    if( a->i_satd_i8x8 < i_satd_thresh )
     {
         h->mb.i_type = I_8x8;
         x264_analyse_update_cache( h, a );
@@ -2566,7 +2566,7 @@ static void x264_mb_analyse_inter_b8x16( x264_t *h, x264_mb_analysis_t *a, int i
 
 static void x264_mb_analyse_p_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd )
 {
-    int thresh = i_satd * 5/4;
+    int thresh = i_satd * 5/4 + 1;
 
     h->mb.i_type = P_L0;
     if( a->l0.i_rd16x16 == COST_MAX && a->l0.me16x16.cost <= i_satd * 3/2 )
@@ -2576,7 +2576,7 @@ static void x264_mb_analyse_p_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd )
         a->l0.i_rd16x16 = x264_rd_cost_mb( h, a->i_lambda2 );
     }
 
-    if( a->l0.i_cost16x8 <= thresh )
+    if( a->l0.i_cost16x8 < thresh )
     {
         h->mb.i_partition = D_16x8;
         x264_analyse_update_cache( h, a );
@@ -2585,7 +2585,7 @@ static void x264_mb_analyse_p_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd )
     else
         a->l0.i_cost16x8 = COST_MAX;
 
-    if( a->l0.i_cost8x16 <= thresh )
+    if( a->l0.i_cost8x16 < thresh )
     {
         h->mb.i_partition = D_8x16;
         x264_analyse_update_cache( h, a );
@@ -2594,7 +2594,7 @@ static void x264_mb_analyse_p_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd )
     else
         a->l0.i_cost8x16 = COST_MAX;
 
-    if( a->l0.i_cost8x8 <= thresh )
+    if( a->l0.i_cost8x8 < thresh )
     {
         h->mb.i_type = P_8x8;
         h->mb.i_partition = D_8x8;
@@ -2639,7 +2639,7 @@ static void x264_mb_analyse_p_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd )
 
 static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_inter )
 {
-    int thresh = i_satd_inter * (17 + (!!h->mb.i_psy_rd))/16;
+    int thresh = i_satd_inter * (17 + (!!h->mb.i_psy_rd))/16 + 1;
 
     if( a->b_direct_available && a->i_rd16x16direct == COST_MAX )
     {
@@ -2655,7 +2655,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     //FIXME not all the update_cache calls are needed
     h->mb.i_partition = D_16x16;
     /* L0 */
-    if( a->l0.me16x16.cost <= thresh && a->l0.i_rd16x16 == COST_MAX )
+    if( a->l0.me16x16.cost < thresh && a->l0.i_rd16x16 == COST_MAX )
     {
         h->mb.i_type = B_L0_L0;
         x264_analyse_update_cache( h, a );
@@ -2663,7 +2663,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     }
 
     /* L1 */
-    if( a->l1.me16x16.cost <= thresh && a->l1.i_rd16x16 == COST_MAX )
+    if( a->l1.me16x16.cost < thresh && a->l1.i_rd16x16 == COST_MAX )
     {
         h->mb.i_type = B_L1_L1;
         x264_analyse_update_cache( h, a );
@@ -2671,7 +2671,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     }
 
     /* BI */
-    if( a->i_cost16x16bi <= thresh && a->i_rd16x16bi == COST_MAX )
+    if( a->i_cost16x16bi < thresh && a->i_rd16x16bi == COST_MAX )
     {
         h->mb.i_type = B_BI_BI;
         x264_analyse_update_cache( h, a );
@@ -2679,7 +2679,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     }
 
     /* 8x8 */
-    if( a->i_cost8x8bi <= thresh && a->i_rd8x8bi == COST_MAX )
+    if( a->i_cost8x8bi < thresh && a->i_rd8x8bi == COST_MAX )
     {
         h->mb.i_type = B_8x8;
         h->mb.i_partition = D_8x8;
@@ -2689,7 +2689,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     }
 
     /* 16x8 */
-    if( a->i_cost16x8bi <= thresh && a->i_rd16x8bi == COST_MAX )
+    if( a->i_cost16x8bi < thresh && a->i_rd16x8bi == COST_MAX )
     {
         h->mb.i_type = a->i_mb_type16x8;
         h->mb.i_partition = D_16x8;
@@ -2698,7 +2698,7 @@ static void x264_mb_analyse_b_rd( x264_t *h, x264_mb_analysis_t *a, int i_satd_i
     }
 
     /* 8x16 */
-    if( a->i_cost8x16bi <= thresh && a->i_rd8x16bi == COST_MAX )
+    if( a->i_cost8x16bi < thresh && a->i_rd8x16bi == COST_MAX )
     {
         h->mb.i_type = a->i_mb_type8x16;
         h->mb.i_partition = D_8x16;
@@ -3177,7 +3177,7 @@ intra_analysis:
                 h->mb.i_partition = i_partition;
                 if( i_cost < COST_MAX )
                     x264_mb_analyse_transform_rd( h, &analysis, &i_satd_inter, &i_cost );
-                x264_intra_rd( h, &analysis, i_satd_inter * 5/4 );
+                x264_intra_rd( h, &analysis, i_satd_inter * 5/4 + 1 );
             }
 
             COPY2_IF_LT( i_cost, analysis.i_satd_i16x16, i_type, I_16x16 );
@@ -3573,7 +3573,7 @@ intra_analysis:
             if( analysis.i_mbrd )
             {
                 x264_mb_analyse_transform_rd( h, &analysis, &i_satd_inter, &i_cost );
-                x264_intra_rd( h, &analysis, i_satd_inter * 17/16 );
+                x264_intra_rd( h, &analysis, i_satd_inter * 17/16 + 1 );
             }
 
             COPY2_IF_LT( i_cost, analysis.i_satd_i16x16, i_type, I_16x16 );



More information about the x264-devel mailing list