Disable update of last_show_frame for existing frame
When showing a previously decoded frame, i.e. when show_existing_frame=1, the update of the last_show_frame flag must be disabled. This is to ensure that the last_show_frame flag reflects the state of the flag for the immediately previously decoded frame rather then the value that was forced to ensure that a previously decoded frame would be displayed. This patch also adds a test vector to verify that the display_existing_frame flag works as expected. Code for generating the test vector can be found in this patch: https://gerrit.chromium.org/gerrit/#/c/68581/ (Bug originally reported by Alexander Voronov <ru.xalba@gmail.com>). Change-Id: I731d288fba02088959f7fcc87707137fffc6acf5
This commit is contained in:
parent
da6b18622f
commit
64e2597465
@ -574,3 +574,5 @@ d48c5db1b0f8e60521a7c749696b8067886033a3 vp90-2-09-aq2.webm
|
||||
84c1599298aac78f2fc05ae2274575d10569dfa0 vp90-2-09-aq2.webm.md5
|
||||
55fc55ed73d578ed60fad05692579873f8bad758 vp90-2-09-lf_deltas.webm
|
||||
54638c38009198c38c8f3b25c182b709b6c1fd2e vp90-2-09-lf_deltas.webm.md5
|
||||
510d95f3beb3b51c572611fdaeeece12277dac30 vp90-2-10-show-existing-frame.webm
|
||||
14d631096f4bfa2d71f7f739aec1448fb3c33bad vp90-2-10-show-existing-frame.webm.md5
|
||||
|
@ -676,6 +676,8 @@ LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-09-lf_deltas.webm
|
||||
LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-09-lf_deltas.webm.md5
|
||||
LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp91-2-04-yv444.webm
|
||||
LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp91-2-04-yv444.webm.md5
|
||||
LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-10-show-existing-frame.webm
|
||||
LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-10-show-existing-frame.webm.md5
|
||||
|
||||
ifeq ($(CONFIG_DECODE_PERF_TESTS),yes)
|
||||
# BBB VP9 streams
|
||||
|
@ -160,6 +160,7 @@ const char *kVP9TestVectors[kNumVp9TestVectors] = {
|
||||
"vp90-2-02-size-lf-1920x1080.webm",
|
||||
"vp90-2-09-aq2.webm",
|
||||
"vp90-2-09-lf_deltas.webm",
|
||||
"vp90-2-10-show-existing-frame.webm",
|
||||
#if CONFIG_NON420
|
||||
"vp91-2-04-yv444.webm"
|
||||
#endif
|
||||
|
@ -22,9 +22,9 @@ extern const char *kVP8TestVectors[kNumVp8TestVectors];
|
||||
|
||||
#if CONFIG_VP9_DECODER
|
||||
#if CONFIG_NON420
|
||||
const int kNumVp9TestVectors = 216;
|
||||
const int kNumVp9TestVectors = 217;
|
||||
#else
|
||||
const int kNumVp9TestVectors = 215;
|
||||
const int kNumVp9TestVectors = 216;
|
||||
#endif
|
||||
|
||||
extern const char *kVP9TestVectors[kNumVp9TestVectors];
|
||||
|
@ -390,7 +390,8 @@ int vp9_receive_compressed_data(VP9D_PTR ptr,
|
||||
|
||||
vp9_clear_system_state();
|
||||
|
||||
cm->last_show_frame = cm->show_frame;
|
||||
if (!cm->show_existing_frame)
|
||||
cm->last_show_frame = cm->show_frame;
|
||||
if (cm->show_frame) {
|
||||
if (!cm->show_existing_frame) {
|
||||
// current mip will be the prev_mip for the next frame
|
||||
|
@ -3250,7 +3250,8 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
|
||||
cm->last_height = cm->height;
|
||||
|
||||
// reset to normal state now that we are done.
|
||||
cm->last_show_frame = cm->show_frame;
|
||||
if (!cm->show_existing_frame)
|
||||
cm->last_show_frame = cm->show_frame;
|
||||
if (cm->show_frame) {
|
||||
// current mip will be the prev_mip for the next frame
|
||||
MODE_INFO *temp = cm->prev_mip;
|
||||
|
Loading…
x
Reference in New Issue
Block a user