| Index: chromecast/media/cma/filters/demuxer_stream_adapter_unittest.cc
|
| diff --git a/chromecast/media/cma/filters/demuxer_stream_adapter_unittest.cc b/chromecast/media/cma/filters/demuxer_stream_adapter_unittest.cc
|
| deleted file mode 100644
|
| index 46572449664149af208bd683c0a26ef3f42db877..0000000000000000000000000000000000000000
|
| --- a/chromecast/media/cma/filters/demuxer_stream_adapter_unittest.cc
|
| +++ /dev/null
|
| @@ -1,215 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <list>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "base/threading/thread.h"
|
| -#include "base/time/time.h"
|
| -#include "chromecast/media/cma/base/balanced_media_task_runner_factory.h"
|
| -#include "chromecast/media/cma/base/decoder_buffer_base.h"
|
| -#include "chromecast/media/cma/filters/demuxer_stream_adapter.h"
|
| -#include "chromecast/media/cma/test/demuxer_stream_for_test.h"
|
| -#include "chromecast/public/media/cast_decoder_buffer.h"
|
| -#include "media/base/audio_decoder_config.h"
|
| -#include "media/base/decoder_buffer.h"
|
| -#include "media/base/demuxer_stream.h"
|
| -#include "media/base/video_decoder_config.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace chromecast {
|
| -namespace media {
|
| -
|
| -class DemuxerStreamAdapterTest : public testing::Test {
|
| - public:
|
| - DemuxerStreamAdapterTest();
|
| - ~DemuxerStreamAdapterTest() override;
|
| -
|
| - void Initialize(::media::DemuxerStream* demuxer_stream);
|
| - void Start();
|
| -
|
| - protected:
|
| - void OnTestTimeout();
|
| - void OnNewFrame(const scoped_refptr<DecoderBufferBase>& buffer,
|
| - const ::media::AudioDecoderConfig& audio_config,
|
| - const ::media::VideoDecoderConfig& video_config);
|
| - void OnFlushCompleted();
|
| -
|
| - // Total number of frames to request.
|
| - int total_frames_;
|
| -
|
| - // Number of demuxer read before issuing an early flush.
|
| - int early_flush_idx_;
|
| - bool use_post_task_for_flush_;
|
| -
|
| - // Number of expected read frames.
|
| - int total_expected_frames_;
|
| -
|
| - // Number of frames actually read so far.
|
| - int frame_received_count_;
|
| -
|
| - // List of expected frame indices with decoder config changes.
|
| - std::list<int> config_idx_;
|
| -
|
| - scoped_ptr<DemuxerStreamForTest> demuxer_stream_;
|
| -
|
| - scoped_ptr<CodedFrameProvider> coded_frame_provider_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DemuxerStreamAdapterTest);
|
| -};
|
| -
|
| -DemuxerStreamAdapterTest::DemuxerStreamAdapterTest()
|
| - : use_post_task_for_flush_(false) {
|
| -}
|
| -
|
| -DemuxerStreamAdapterTest::~DemuxerStreamAdapterTest() {
|
| -}
|
| -
|
| -void DemuxerStreamAdapterTest::Initialize(
|
| - ::media::DemuxerStream* demuxer_stream) {
|
| - coded_frame_provider_.reset(new DemuxerStreamAdapter(
|
| - base::ThreadTaskRunnerHandle::Get(),
|
| - scoped_refptr<BalancedMediaTaskRunnerFactory>(), demuxer_stream));
|
| -}
|
| -
|
| -void DemuxerStreamAdapterTest::Start() {
|
| - frame_received_count_ = 0;
|
| -
|
| - // TODO(damienv): currently, test assertions which fail do not trigger the
|
| - // exit of the unit test, the message loop is still running. Find a different
|
| - // way to exit the unit test.
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&DemuxerStreamAdapterTest::OnTestTimeout,
|
| - base::Unretained(this)),
|
| - base::TimeDelta::FromSeconds(5));
|
| -
|
| - coded_frame_provider_->Read(
|
| - base::Bind(&DemuxerStreamAdapterTest::OnNewFrame,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void DemuxerStreamAdapterTest::OnTestTimeout() {
|
| - ADD_FAILURE() << "Test timed out";
|
| - if (base::MessageLoop::current())
|
| - base::MessageLoop::current()->QuitWhenIdle();
|
| -}
|
| -
|
| -void DemuxerStreamAdapterTest::OnNewFrame(
|
| - const scoped_refptr<DecoderBufferBase>& buffer,
|
| - const ::media::AudioDecoderConfig& audio_config,
|
| - const ::media::VideoDecoderConfig& video_config) {
|
| - if (video_config.IsValidConfig()) {
|
| - ASSERT_GT(config_idx_.size(), 0u);
|
| - ASSERT_EQ(frame_received_count_, config_idx_.front());
|
| - config_idx_.pop_front();
|
| - }
|
| -
|
| - ASSERT_TRUE(buffer.get() != NULL);
|
| - ASSERT_EQ(buffer->timestamp(),
|
| - base::TimeDelta::FromMilliseconds(40 * frame_received_count_));
|
| - frame_received_count_++;
|
| -
|
| - if (frame_received_count_ >= total_frames_) {
|
| - coded_frame_provider_->Flush(
|
| - base::Bind(&DemuxerStreamAdapterTest::OnFlushCompleted,
|
| - base::Unretained(this)));
|
| - return;
|
| - }
|
| -
|
| - coded_frame_provider_->Read(
|
| - base::Bind(&DemuxerStreamAdapterTest::OnNewFrame,
|
| - base::Unretained(this)));
|
| -
|
| - ASSERT_LE(frame_received_count_, early_flush_idx_);
|
| - if (frame_received_count_ == early_flush_idx_) {
|
| - base::Closure flush_cb =
|
| - base::Bind(&DemuxerStreamAdapterTest::OnFlushCompleted,
|
| - base::Unretained(this));
|
| - if (use_post_task_for_flush_) {
|
| - base::MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&CodedFrameProvider::Flush,
|
| - base::Unretained(coded_frame_provider_.get()),
|
| - flush_cb));
|
| - } else {
|
| - coded_frame_provider_->Flush(flush_cb);
|
| - }
|
| - return;
|
| - }
|
| -}
|
| -
|
| -void DemuxerStreamAdapterTest::OnFlushCompleted() {
|
| - ASSERT_EQ(frame_received_count_, total_expected_frames_);
|
| - ASSERT_FALSE(demuxer_stream_->has_pending_read());
|
| - base::MessageLoop::current()->QuitWhenIdle();
|
| -}
|
| -
|
| -TEST_F(DemuxerStreamAdapterTest, NoDelay) {
|
| - total_frames_ = 10;
|
| - early_flush_idx_ = total_frames_; // No early flush.
|
| - total_expected_frames_ = 10;
|
| - config_idx_.push_back(0);
|
| - config_idx_.push_back(5);
|
| -
|
| - int cycle_count = 1;
|
| - int delayed_frame_count = 0;
|
| - demuxer_stream_.reset(new DemuxerStreamForTest(
|
| - -1, cycle_count, delayed_frame_count, config_idx_));
|
| -
|
| - scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
|
| - Initialize(demuxer_stream_.get());
|
| - message_loop->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this)));
|
| - message_loop->Run();
|
| -}
|
| -
|
| -TEST_F(DemuxerStreamAdapterTest, AllDelayed) {
|
| - total_frames_ = 10;
|
| - early_flush_idx_ = total_frames_; // No early flush.
|
| - total_expected_frames_ = 10;
|
| - config_idx_.push_back(0);
|
| - config_idx_.push_back(5);
|
| -
|
| - int cycle_count = 1;
|
| - int delayed_frame_count = 1;
|
| - demuxer_stream_.reset(new DemuxerStreamForTest(
|
| - -1, cycle_count, delayed_frame_count, config_idx_));
|
| -
|
| - scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
|
| - Initialize(demuxer_stream_.get());
|
| - message_loop->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this)));
|
| - message_loop->Run();
|
| -}
|
| -
|
| -TEST_F(DemuxerStreamAdapterTest, AllDelayedEarlyFlush) {
|
| - total_frames_ = 10;
|
| - early_flush_idx_ = 5;
|
| - use_post_task_for_flush_ = true;
|
| - total_expected_frames_ = 5;
|
| - config_idx_.push_back(0);
|
| - config_idx_.push_back(3);
|
| -
|
| - int cycle_count = 1;
|
| - int delayed_frame_count = 1;
|
| - demuxer_stream_.reset(new DemuxerStreamForTest(
|
| - -1, cycle_count, delayed_frame_count, config_idx_));
|
| -
|
| - scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
|
| - Initialize(demuxer_stream_.get());
|
| - message_loop->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&DemuxerStreamAdapterTest::Start, base::Unretained(this)));
|
| - message_loop->Run();
|
| -}
|
| -
|
| -} // namespace media
|
| -} // namespace chromecast
|
|
|