| Index: chromecast/media/cma/filters/multi_demuxer_stream_adapter_unittest.cc
|
| diff --git a/chromecast/media/cma/filters/multi_demuxer_stream_adapter_unittest.cc b/chromecast/media/cma/filters/multi_demuxer_stream_adapter_unittest.cc
|
| deleted file mode 100644
|
| index ed5c519b727420319ee334c0dd691e08a3bfada0..0000000000000000000000000000000000000000
|
| --- a/chromecast/media/cma/filters/multi_demuxer_stream_adapter_unittest.cc
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -// Copyright 2015 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 "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/scoped_vector.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 {
|
| -
|
| -namespace {
|
| -// Maximum pts diff between frames
|
| -const int kMaxPtsDiffMs = 2000;
|
| -} // namespace
|
| -
|
| -// Test for multiple streams
|
| -class MultiDemuxerStreamAdaptersTest : public testing::Test {
|
| - public:
|
| - MultiDemuxerStreamAdaptersTest();
|
| - ~MultiDemuxerStreamAdaptersTest() override;
|
| -
|
| - void Start();
|
| -
|
| - protected:
|
| - void OnTestTimeout();
|
| - void OnNewFrame(CodedFrameProvider* frame_provider,
|
| - const scoped_refptr<DecoderBufferBase>& buffer,
|
| - const ::media::AudioDecoderConfig& audio_config,
|
| - const ::media::VideoDecoderConfig& video_config);
|
| -
|
| - // 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_;
|
| -
|
| - ScopedVector<DemuxerStreamForTest> demuxer_streams_;
|
| -
|
| - ScopedVector<CodedFrameProvider> coded_frame_providers_;
|
| -
|
| - private:
|
| - // exit if all of the streams end
|
| - void OnEos();
|
| -
|
| - // Number of reading-streams
|
| - int running_stream_count_;
|
| -
|
| - scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_;
|
| - DISALLOW_COPY_AND_ASSIGN(MultiDemuxerStreamAdaptersTest);
|
| -};
|
| -
|
| -MultiDemuxerStreamAdaptersTest::MultiDemuxerStreamAdaptersTest() {
|
| -}
|
| -
|
| -MultiDemuxerStreamAdaptersTest::~MultiDemuxerStreamAdaptersTest() {
|
| -}
|
| -
|
| -void MultiDemuxerStreamAdaptersTest::Start() {
|
| - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
| - FROM_HERE, base::Bind(&MultiDemuxerStreamAdaptersTest::OnTestTimeout,
|
| - base::Unretained(this)),
|
| - base::TimeDelta::FromSeconds(5));
|
| -
|
| - media_task_runner_factory_ = new BalancedMediaTaskRunnerFactory(
|
| - base::TimeDelta::FromMilliseconds(kMaxPtsDiffMs));
|
| -
|
| - coded_frame_providers_.clear();
|
| - frame_received_count_ = 0;
|
| -
|
| - for (auto& stream : demuxer_streams_) {
|
| - coded_frame_providers_.push_back(make_scoped_ptr(
|
| - new DemuxerStreamAdapter(base::ThreadTaskRunnerHandle::Get(),
|
| - media_task_runner_factory_, stream)));
|
| - }
|
| - running_stream_count_ = coded_frame_providers_.size();
|
| -
|
| - // read each stream
|
| - for (auto& code_frame_provider : coded_frame_providers_) {
|
| - auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame,
|
| - base::Unretained(this), code_frame_provider);
|
| -
|
| - base::Closure task =
|
| - base::Bind(&CodedFrameProvider::Read,
|
| - base::Unretained(code_frame_provider), read_cb);
|
| -
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task);
|
| - }
|
| -}
|
| -
|
| -void MultiDemuxerStreamAdaptersTest::OnTestTimeout() {
|
| - if (running_stream_count_ != 0) {
|
| - ADD_FAILURE() << "Test timed out";
|
| - }
|
| -}
|
| -
|
| -void MultiDemuxerStreamAdaptersTest::OnNewFrame(
|
| - CodedFrameProvider* frame_provider,
|
| - const scoped_refptr<DecoderBufferBase>& buffer,
|
| - const ::media::AudioDecoderConfig& audio_config,
|
| - const ::media::VideoDecoderConfig& video_config) {
|
| - if (buffer->end_of_stream()) {
|
| - OnEos();
|
| - return;
|
| - }
|
| -
|
| - frame_received_count_++;
|
| - auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame,
|
| - base::Unretained(this), frame_provider);
|
| - frame_provider->Read(read_cb);
|
| -}
|
| -
|
| -void MultiDemuxerStreamAdaptersTest::OnEos() {
|
| - running_stream_count_--;
|
| - ASSERT_GE(running_stream_count_, 0);
|
| - if (running_stream_count_ == 0) {
|
| - ASSERT_EQ(frame_received_count_, total_expected_frames_);
|
| - base::MessageLoop::current()->QuitWhenIdle();
|
| - }
|
| -}
|
| -
|
| -TEST_F(MultiDemuxerStreamAdaptersTest, EarlyEos) {
|
| - // We have more than one streams here. One of them is much shorter than the
|
| - // others. When the shortest stream reaches EOS, other streams should still
|
| - // run as usually. BalancedTaskRunner should not be blocked.
|
| - int frame_count_short = 2;
|
| - int frame_count_long =
|
| - frame_count_short +
|
| - kMaxPtsDiffMs / DemuxerStreamForTest::kDemuxerStreamForTestFrameDuration +
|
| - 100;
|
| - demuxer_streams_.push_back(scoped_ptr<DemuxerStreamForTest>(
|
| - new DemuxerStreamForTest(frame_count_short, 2, 0, config_idx_)));
|
| - demuxer_streams_.push_back(scoped_ptr<DemuxerStreamForTest>(
|
| - new DemuxerStreamForTest(frame_count_long, 10, 0, config_idx_)));
|
| -
|
| - total_expected_frames_ = frame_count_short + frame_count_long;
|
| -
|
| - scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
|
| - message_loop->PostTask(FROM_HERE,
|
| - base::Bind(&MultiDemuxerStreamAdaptersTest::Start,
|
| - base::Unretained(this)));
|
| - message_loop->Run();
|
| -}
|
| -} // namespace media
|
| -} // namespace chromecast
|
|
|