]> granicus.if.org Git - libvpx/commitdiff
Always update last_frame_type
authorYunqing Wang <yunqingwang@google.com>
Wed, 29 Dec 2010 15:28:35 +0000 (10:28 -0500)
committerYunqing Wang <yunqingwang@google.com>
Wed, 29 Dec 2010 15:28:35 +0000 (10:28 -0500)
Scott pointed out that last_frame_type only gets updated while
loopfilter exists. Since last_frame_type is also needed in
motion search now, it needs to be updated every frame.

Change-Id: I9203532fd67361588d4024628d9ddb8e391ad912

vp8/common/onyxc_int.h
vp8/encoder/onyx_if.c

index 7e44c1f0ccf5d7decfad035254300d31d8d9c0aa..e011ec99a82c8e65a612469225614c2884324275 100644 (file)
@@ -105,7 +105,7 @@ typedef struct VP8Common
     YV12_BUFFER_CONFIG post_proc_buffer;
     YV12_BUFFER_CONFIG temp_scale_frame;
 
-    FRAME_TYPE last_frame_type;  /* Add to check if vp8_frame_init_loop_filter() can be skipped. */
+    FRAME_TYPE last_frame_type;  /* Save last frame's frame type for loopfilter init checking and motion search. */
     FRAME_TYPE frame_type;
 
     int show_frame;
index 05a1338dca084666ac5be65c8cce0f7f5f43ad59..56f7ef6f8c508e8825a12a4c78fbdd03f3cb93b4 100644 (file)
@@ -4340,10 +4340,11 @@ static void encode_frame_to_data_rate
             {
                 vp8cx_set_alt_lf_level(cpi, cm->filter_level);
                 vp8_loop_filter_frame(cm, &cpi->mb.e_mbd, cm->filter_level);
-                cm->last_frame_type = cm->frame_type;
                 cm->last_filter_type = cm->filter_type;
                 cm->last_sharpness_level = cm->sharpness_level;
             }
+            /* Move storing frame_type out of the above loop since it is also needed in motion search besides loopfilter */
+            cm->last_frame_type = cm->frame_type;
 
             vp8_yv12_extend_frame_borders_ptr(cm->frame_to_show);