From: Johann Date: Mon, 23 Jul 2012 21:55:32 +0000 (-0700) Subject: Make random streams consistant X-Git-Tag: v1.2.0~136^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3e63fbcbae81c1244b638e74bde4f895fb92c58;p=libvpx Make random streams consistant Reset the seed so the second pass stream matches the first Change-Id: Id0c0f73abb835b5ca92d76b14e0b02f6239a6ee3 --- diff --git a/test/video_source.h b/test/video_source.h index 3507ef0cd..7347c8dd0 100644 --- a/test/video_source.h +++ b/test/video_source.h @@ -9,6 +9,8 @@ */ #ifndef TEST_VIDEO_SOURCE_H_ #define TEST_VIDEO_SOURCE_H_ + +#include "test/acm_random.h" #include "vpx/vpx_encoder.h" namespace libvpx_test { @@ -99,16 +101,28 @@ class DummyVideoSource : public VideoSource { class RandomVideoSource : public DummyVideoSource { + public: + RandomVideoSource() : rnd_(ACMRandom::DeterministicSeed()) {} + protected: + // Reset the RNG to get a matching stream for the second pass + virtual void Begin() { + frame_ = 0; + rnd_.Reset(ACMRandom::DeterministicSeed()); + FillFrame(); + } + // 15 frames of noise, followed by 15 static frames. Reset to 0 rather // than holding previous frames to encourage keyframes to be thrown. virtual void FillFrame() { if (frame_ % 30 < 15) for (size_t i = 0; i < raw_sz_; ++i) - img_->img_data[i] = rand(); + img_->img_data[i] = rnd_.Rand8(); else memset(img_->img_data, 0, raw_sz_); } + + ACMRandom rnd_; }; } // namespace libvpx_test