| Index: media/filters/fake_video_decoder_unittest.cc
|
| diff --git a/media/filters/fake_video_decoder_unittest.cc b/media/filters/fake_video_decoder_unittest.cc
|
| index d05a31f980bab78b160393712f09436714098ca6..24466e5cb3928758cc29a1791516f07ec380980e 100644
|
| --- a/media/filters/fake_video_decoder_unittest.cc
|
| +++ b/media/filters/fake_video_decoder_unittest.cc
|
| @@ -22,10 +22,10 @@ class FakeVideoDecoderTest : public testing::Test,
|
| public testing::WithParamInterface<int> {
|
| public:
|
| FakeVideoDecoderTest()
|
| - : decoder_(new FakeVideoDecoder(kDecodingDelay, false, GetParam())),
|
| + : decoder_(new FakeVideoDecoder(kDecodingDelay, GetParam())),
|
| num_input_buffers_(0),
|
| num_decoded_frames_(0),
|
| - last_decode_status_(VideoDecoder::kNotEnoughData),
|
| + last_decode_status_(VideoDecoder::kOk),
|
| pending_decode_requests_(0),
|
| is_reset_pending_(false) {}
|
|
|
| @@ -34,7 +34,9 @@ class FakeVideoDecoderTest : public testing::Test,
|
| }
|
|
|
| void InitializeWithConfig(const VideoDecoderConfig& config) {
|
| - decoder_->Initialize(config, false, NewExpectedStatusCB(PIPELINE_OK));
|
| + decoder_->Initialize(
|
| + config, false, NewExpectedStatusCB(PIPELINE_OK),
|
| + base::Bind(&FakeVideoDecoderTest::FrameReady, base::Unretained(this)));
|
| message_loop_.RunUntilIdle();
|
| current_config_ = config;
|
| }
|
| @@ -53,16 +55,17 @@ class FakeVideoDecoderTest : public testing::Test,
|
| message_loop_.RunUntilIdle();
|
| }
|
|
|
| - // Callback for VideoDecoder::Read().
|
| - void FrameReady(VideoDecoder::Status status,
|
| - const scoped_refptr<VideoFrame>& frame) {
|
| + // Callback for VideoDecoder::Decode().
|
| + void DecodeDone(VideoDecoder::Status status) {
|
| + LOG(ERROR) << "DONE";
|
| DCHECK_GT(pending_decode_requests_, 0);
|
| -
|
| --pending_decode_requests_;
|
| last_decode_status_ = status;
|
| - last_decoded_frame_ = frame;
|
| + }
|
|
|
| - if (frame && !frame->end_of_stream())
|
| + void FrameReady(const scoped_refptr<VideoFrame>& frame) {
|
| + last_decoded_frame_ = frame;
|
| + if (!frame->end_of_stream())
|
| num_decoded_frames_++;
|
| }
|
|
|
| @@ -87,7 +90,7 @@ class FakeVideoDecoderTest : public testing::Test,
|
| break;
|
| case NOT_ENOUGH_DATA:
|
| EXPECT_EQ(0, pending_decode_requests_);
|
| - ASSERT_EQ(VideoDecoder::kNotEnoughData, last_decode_status_);
|
| + ASSERT_EQ(VideoDecoder::kOk, last_decode_status_);
|
| ASSERT_FALSE(last_decoded_frame_);
|
| break;
|
| case ABORTED:
|
| @@ -107,6 +110,7 @@ class FakeVideoDecoderTest : public testing::Test,
|
| void Decode() {
|
| scoped_refptr<DecoderBuffer> buffer;
|
|
|
| + LOG(ERROR) << "Dec " << num_input_buffers_;
|
| if (num_input_buffers_ < kTotalBuffers) {
|
| buffer = CreateFakeVideoBufferForTest(
|
| current_config_,
|
| @@ -121,15 +125,15 @@ class FakeVideoDecoderTest : public testing::Test,
|
|
|
| decoder_->Decode(
|
| buffer,
|
| - base::Bind(&FakeVideoDecoderTest::FrameReady, base::Unretained(this)));
|
| + base::Bind(&FakeVideoDecoderTest::DecodeDone, base::Unretained(this)));
|
| message_loop_.RunUntilIdle();
|
| }
|
|
|
| void ReadOneFrame() {
|
| + last_decoded_frame_ = NULL;
|
| do {
|
| Decode();
|
| - } while (last_decode_status_ == VideoDecoder::kNotEnoughData &&
|
| - pending_decode_requests_ == 0);
|
| + } while (!last_decoded_frame_ && pending_decode_requests_ == 0);
|
| }
|
|
|
| void ReadUntilEOS() {
|
| @@ -142,6 +146,7 @@ class FakeVideoDecoderTest : public testing::Test,
|
| // Pass the initial NOT_ENOUGH_DATA stage.
|
| ReadOneFrame();
|
| decoder_->HoldDecode();
|
| + LOG(ERROR) << "WTF";
|
| ReadOneFrame();
|
| ExpectReadResult(PENDING);
|
| }
|
| @@ -248,7 +253,7 @@ TEST_P(FakeVideoDecoderTest, Read_DecodingDelay) {
|
| }
|
|
|
| TEST_P(FakeVideoDecoderTest, Read_ZeroDelay) {
|
| - decoder_.reset(new FakeVideoDecoder(0, false, 1));
|
| + decoder_.reset(new FakeVideoDecoder(0, 1));
|
| Initialize();
|
|
|
| while (num_input_buffers_ < kTotalBuffers) {
|
| @@ -263,11 +268,13 @@ TEST_P(FakeVideoDecoderTest, Read_Pending_NotEnoughData) {
|
| ReadOneFrame();
|
| ExpectReadResult(PENDING);
|
| SatisfyReadAndExpect(NOT_ENOUGH_DATA);
|
| +
|
| + // Verify that FrameReady() hasn't been called.
|
| + EXPECT_FALSE(last_decoded_frame_);
|
| }
|
|
|
| TEST_P(FakeVideoDecoderTest, Read_Pending_OK) {
|
| Initialize();
|
| - ReadOneFrame();
|
| EnterPendingReadState();
|
| SatisfyReadAndExpect(OK);
|
| }
|
| @@ -278,14 +285,13 @@ TEST_P(FakeVideoDecoderTest, Read_Parallel) {
|
| return;
|
|
|
| Initialize();
|
| - ReadOneFrame();
|
| decoder_->HoldDecode();
|
| for (int i = 0; i < max_decode_requests; ++i) {
|
| ReadOneFrame();
|
| ExpectReadResult(PENDING);
|
| }
|
| EXPECT_EQ(max_decode_requests, pending_decode_requests_);
|
| - SatisfyReadAndExpect(OK);
|
| + SatisfyReadAndExpect(NOT_ENOUGH_DATA);
|
| }
|
|
|
| TEST_P(FakeVideoDecoderTest, ReadWithHold_DecodingDelay) {
|
| @@ -381,16 +387,4 @@ TEST_P(FakeVideoDecoderTest, Stop_DuringPendingReadAndPendingReset) {
|
| Stop();
|
| }
|
|
|
| -TEST_P(FakeVideoDecoderTest, GetDecodeOutput) {
|
| - decoder_.reset(new FakeVideoDecoder(kDecodingDelay, true, 1));
|
| - Initialize();
|
| -
|
| - while (num_input_buffers_ < kTotalBuffers) {
|
| - ReadOneFrame();
|
| - while (decoder_->GetDecodeOutput())
|
| - ++num_decoded_frames_;
|
| - EXPECT_EQ(num_input_buffers_, num_decoded_frames_);
|
| - }
|
| -}
|
| -
|
| } // namespace media
|
|
|