Make random streams consistant

Reset the seed so the second pass stream matches the first

Change-Id: Id0c0f73abb835b5ca92d76b14e0b02f6239a6ee3
This commit is contained in:
Johann
2012-07-23 14:55:32 -07:00
parent c0e80959ce
commit e3e63fbcba

View File

@@ -9,6 +9,8 @@
*/ */
#ifndef TEST_VIDEO_SOURCE_H_ #ifndef TEST_VIDEO_SOURCE_H_
#define TEST_VIDEO_SOURCE_H_ #define TEST_VIDEO_SOURCE_H_
#include "test/acm_random.h"
#include "vpx/vpx_encoder.h" #include "vpx/vpx_encoder.h"
namespace libvpx_test { namespace libvpx_test {
@@ -99,16 +101,28 @@ class DummyVideoSource : public VideoSource {
class RandomVideoSource : public DummyVideoSource { class RandomVideoSource : public DummyVideoSource {
public:
RandomVideoSource() : rnd_(ACMRandom::DeterministicSeed()) {}
protected: 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 // 15 frames of noise, followed by 15 static frames. Reset to 0 rather
// than holding previous frames to encourage keyframes to be thrown. // than holding previous frames to encourage keyframes to be thrown.
virtual void FillFrame() { virtual void FillFrame() {
if (frame_ % 30 < 15) if (frame_ % 30 < 15)
for (size_t i = 0; i < raw_sz_; ++i) for (size_t i = 0; i < raw_sz_; ++i)
img_->img_data[i] = rand(); img_->img_data[i] = rnd_.Rand8();
else else
memset(img_->img_data, 0, raw_sz_); memset(img_->img_data, 0, raw_sz_);
} }
ACMRandom rnd_;
}; };
} // namespace libvpx_test } // namespace libvpx_test