Minor modification on key frame decision
authorYunqing Wang <yunqingwang@google.com>
Thu, 25 Aug 2011 20:54:45 +0000 (16:54 -0400)
committerYunqing Wang <yunqingwang@google.com>
Thu, 25 Aug 2011 20:54:45 +0000 (16:54 -0400)
This change makes sure that no key frame recoding in real-time mode
even if CONFIG_REALTIME_ONLY is not configured.

Change-Id: Ifc34141f3217a6bb63cc087d78b111fadb35eec2

vp8/encoder/onyx_if.c
vp8/encoder/onyx_int.h

index ff9a641..35e187e 100644 (file)
@@ -3237,16 +3237,17 @@ static void encode_frame_to_data_rate
     // Test code for segmentation of gf/arf (0,0)
     //segmentation_test_function((VP8_PTR) cpi);
 
-#if CONFIG_REALTIME_ONLY
-    if(cpi->oxcf.auto_key && cm->frame_type != KEY_FRAME)
+    if (cpi->compressor_speed == 2)
     {
-        if(cpi->force_next_frame_intra)
+        if(cpi->oxcf.auto_key && cm->frame_type != KEY_FRAME)
         {
-            cm->frame_type = KEY_FRAME;  /* delayed intra frame */
+            if(cpi->force_next_frame_intra)
+            {
+                cm->frame_type = KEY_FRAME;  /* delayed intra frame */
+            }
         }
+        cpi->force_next_frame_intra = 0;
     }
-    cpi->force_next_frame_intra = 0;
-#endif
 
     // For an alt ref frame in 2 pass we skip the call to the second pass function that sets the target bandwidth
 #if !(CONFIG_REALTIME_ONLY)
@@ -3775,15 +3776,15 @@ static void encode_frame_to_data_rate
         // (assuming that we didn't)!
         if (cpi->pass != 2 && cpi->oxcf.auto_key && cm->frame_type != KEY_FRAME)
         {
+            int key_frame_decision = decide_key_frame(cpi);
 
-#if CONFIG_REALTIME_ONLY
+            if (cpi->compressor_speed == 2)
             {
                 /* we don't do re-encoding in realtime mode
                  * if key frame is decided than we force it on next frame */
-                cpi->force_next_frame_intra = decide_key_frame(cpi);
+                cpi->force_next_frame_intra = key_frame_decision;
             }
-#else
-            if (decide_key_frame(cpi))
+            else if (key_frame_decision)
             {
                 // Reset all our sizing numbers and recode
                 cm->frame_type = KEY_FRAME;
@@ -3820,7 +3821,6 @@ static void encode_frame_to_data_rate
 
                 continue;
             }
-#endif
         }
 
         vp8_clear_system_state();
index f75f6cb..aead2fb 100644 (file)
@@ -609,9 +609,8 @@ typedef struct VP8_COMP
     int *lf_ref_frame_sign_bias;
     int *lf_ref_frame;
 
-#if CONFIG_REALTIME_ONLY
     int force_next_frame_intra; /* force next frame to intra when kf_auto says so */
-#endif
+
     int droppable;
 } VP8_COMP;