diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/base/pipeline.h | 2 | ||||
-rw-r--r-- | media/base/pipeline_impl.cc | 13 | ||||
-rw-r--r-- | media/base/pipeline_impl_unittest.cc | 28 | ||||
-rw-r--r-- | media/filters/dummy_demuxer.cc | 49 | ||||
-rw-r--r-- | media/filters/dummy_demuxer.h | 56 | ||||
-rw-r--r-- | media/filters/dummy_demuxer_factory.cc | 30 | ||||
-rw-r--r-- | media/filters/dummy_demuxer_factory.h | 33 | ||||
-rw-r--r-- | media/media.gyp | 4 |
8 files changed, 176 insertions, 39 deletions
diff --git a/media/base/pipeline.h b/media/base/pipeline.h index cbfc8b0..10e2427 100644 --- a/media/base/pipeline.h +++ b/media/base/pipeline.h @@ -20,8 +20,6 @@ class TimeDelta; namespace media { -extern const char kRawMediaScheme[]; - struct PipelineStatistics { PipelineStatistics() : audio_bytes_decoded(0), diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc index 97facab..5a3fccb 100644 --- a/media/base/pipeline_impl.cc +++ b/media/base/pipeline_impl.cc @@ -21,8 +21,6 @@ namespace media { -const char kRawMediaScheme[] = "x-raw-media"; - PipelineStatusNotification::PipelineStatusNotification() : cv_(&lock_), status_(PIPELINE_OK), notified_(false) { } @@ -651,15 +649,8 @@ void PipelineImpl::StartTask(FilterCollection* filter_collection, pipeline_init_state_->composite_ = new CompositeFilter(message_loop_); pipeline_init_state_->composite_->set_host(this); - bool raw_media = (base::strncasecmp(url.c_str(), kRawMediaScheme, - strlen(kRawMediaScheme)) == 0); - if (raw_media) { - SetState(kInitVideoDecoder); - InitializeVideoDecoder(NULL); - } else { - SetState(kInitDemuxer); - InitializeDemuxer(); - } + SetState(kInitDemuxer); + InitializeDemuxer(); } // Main initialization method called on the pipeline thread. This code attempts diff --git a/media/base/pipeline_impl_unittest.cc b/media/base/pipeline_impl_unittest.cc index 2848b9c..66b430a 100644 --- a/media/base/pipeline_impl_unittest.cc +++ b/media/base/pipeline_impl_unittest.cc @@ -34,9 +34,6 @@ static const int kTotalBytes = 1024; // Buffered bytes of the data source. static const int kBufferedBytes = 1024; -// Test url for raw video pipeline. -static const char kUrlRawVideo[] = "://raw_video_stream"; - // Used for setting expectations on pipeline callbacks. Using a StrictMock // also lets us test for missing callbacks. class CallbackHelper { @@ -195,24 +192,14 @@ class PipelineImplTest : public ::testing::Test { // But some tests require different statuses in build & Start. void InitializePipeline(PipelineStatus build_status, PipelineStatus start_status) { - InitializePipeline(build_status, start_status, ""); - } - - void InitializePipeline(PipelineStatus build_status, - PipelineStatus start_status, - const std::string& url) { // Expect an initialization callback. EXPECT_CALL(callbacks_, OnStart(start_status)); - bool run_build = true; - if (url.find(kRawMediaScheme) == 0) - run_build = false; - pipeline_->Start(mocks_->filter_collection(true, true, - run_build, + true, build_status), - url, + "", base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); @@ -425,17 +412,6 @@ TEST_F(PipelineImplTest, VideoStream) { EXPECT_TRUE(pipeline_->HasVideo()); } -TEST_F(PipelineImplTest, RawVideoStream) { - InitializeVideoDecoder(NULL); - InitializeVideoRenderer(); - - InitializePipeline(PIPELINE_OK, PIPELINE_OK, - std::string(kRawMediaScheme).append(kUrlRawVideo)); - EXPECT_TRUE(pipeline_->IsInitialized()); - EXPECT_FALSE(pipeline_->HasAudio()); - EXPECT_TRUE(pipeline_->HasVideo()); -} - TEST_F(PipelineImplTest, AudioVideoStream) { CreateAudioStream(); CreateVideoStream(); diff --git a/media/filters/dummy_demuxer.cc b/media/filters/dummy_demuxer.cc new file mode 100644 index 0000000..91aa40d --- /dev/null +++ b/media/filters/dummy_demuxer.cc @@ -0,0 +1,49 @@ +// Copyright (c) 2011 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 "media/filters/dummy_demuxer.h" + +#include "base/logging.h" + +namespace media { + +DummyDemuxerStream::DummyDemuxerStream(Type type) + : type_(type) { +} + +DummyDemuxerStream::~DummyDemuxerStream() {} + +DemuxerStream::Type DummyDemuxerStream::type() { + return type_; +} + +void DummyDemuxerStream::Read(const ReadCallback& read_callback) {} + +void DummyDemuxerStream::EnableBitstreamConverter() {} + +DummyDemuxer::DummyDemuxer(bool has_video, bool has_audio) + : has_video_(has_video), + has_audio_(has_audio) { + streams_.resize(DemuxerStream::NUM_TYPES); + if (has_audio) + streams_[DemuxerStream::AUDIO] = + new DummyDemuxerStream(DemuxerStream::AUDIO); + if (has_video) + streams_[DemuxerStream::VIDEO] = + new DummyDemuxerStream(DemuxerStream::VIDEO); +} + +DummyDemuxer::~DummyDemuxer() {} + +void DummyDemuxer::SetPreload(Preload preload) {} + +scoped_refptr<DemuxerStream> DummyDemuxer::GetStream(DemuxerStream::Type type) { + return streams_[type]; +} + +base::TimeDelta DummyDemuxer::GetStartTime() const { + return base::TimeDelta(); +} + +} // namespace media diff --git a/media/filters/dummy_demuxer.h b/media/filters/dummy_demuxer.h new file mode 100644 index 0000000..82d0c1e --- /dev/null +++ b/media/filters/dummy_demuxer.h @@ -0,0 +1,56 @@ +// Copyright (c) 2011 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. + +// Implements the Demuxer interface. DummyDemuxer returns corresponding +// DummyDemuxerStream as signal for media pipeline to construct correct +// playback channels. + +#ifndef MEDIA_FILTERS_DUMMY_DEMUXER_H_ +#define MEDIA_FILTERS_DUMMY_DEMUXER_H_ + +#include <vector> + +#include "media/base/filters.h" + +namespace media { + +class DummyDemuxerStream : public DemuxerStream { + public: + explicit DummyDemuxerStream(Type type); + + // DemuxerStream implementation. + virtual void Read(const ReadCallback& read_callback) OVERRIDE; + virtual Type type() OVERRIDE; + virtual void EnableBitstreamConverter() OVERRIDE; + + private: + virtual ~DummyDemuxerStream(); + + Type type_; + + DISALLOW_COPY_AND_ASSIGN(DummyDemuxerStream); +}; + +class DummyDemuxer : public Demuxer { + public: + DummyDemuxer(bool has_video, bool has_audio); + virtual ~DummyDemuxer(); + + // Demuxer implementation. + virtual scoped_refptr<DemuxerStream> GetStream( + DemuxerStream::Type type) OVERRIDE; + virtual void SetPreload(Preload preload) OVERRIDE; + virtual base::TimeDelta GetStartTime() const OVERRIDE; + + private: + bool has_video_; + bool has_audio_; + std::vector< scoped_refptr<DummyDemuxerStream> > streams_; + + DISALLOW_COPY_AND_ASSIGN(DummyDemuxer); +}; + +} // namespace media + +#endif // MEDIA_FILTERS_DUMMY_DEMUXER_H_ diff --git a/media/filters/dummy_demuxer_factory.cc b/media/filters/dummy_demuxer_factory.cc new file mode 100644 index 0000000..e61c969 --- /dev/null +++ b/media/filters/dummy_demuxer_factory.cc @@ -0,0 +1,30 @@ +// Copyright (c) 2011 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 "media/filters/dummy_demuxer_factory.h" + +#include "base/memory/scoped_ptr.h" +#include "media/filters/dummy_demuxer.h" + +namespace media { + +DummyDemuxerFactory::DummyDemuxerFactory(bool has_video, bool has_audio) + : has_video_(has_video), + has_audio_(has_audio) { +} + +DummyDemuxerFactory::~DummyDemuxerFactory() {} + +void DummyDemuxerFactory::Build(const std::string& url, BuildCallback* cb) { + scoped_refptr<DummyDemuxer> demuxer = + new DummyDemuxer(has_video_, has_audio_); + scoped_ptr<DemuxerFactory::BuildCallback> callback(cb); + callback->Run(PIPELINE_OK, demuxer.get()); +} + +DemuxerFactory* DummyDemuxerFactory::Clone() const { + return new DummyDemuxerFactory(has_video_, has_audio_); +} + +} // namespace media diff --git a/media/filters/dummy_demuxer_factory.h b/media/filters/dummy_demuxer_factory.h new file mode 100644 index 0000000..8597c08 --- /dev/null +++ b/media/filters/dummy_demuxer_factory.h @@ -0,0 +1,33 @@ +// Copyright (c) 2011 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. + +// Implements the DemuxerFactory interface using DummyDemuxer. + +#ifndef MEDIA_FILTERS_DUMMY_DEMUXER_FACTORY_H_ +#define MEDIA_FILTERS_DUMMY_DEMUXER_FACTORY_H_ + +#include "base/compiler_specific.h" +#include "media/base/filter_factories.h" + +namespace media { + +class DummyDemuxerFactory : public DemuxerFactory { + public: + DummyDemuxerFactory(bool has_video, bool has_audio); + virtual ~DummyDemuxerFactory(); + + // DemuxerFactory methods. + virtual void Build(const std::string& url, BuildCallback* cb) OVERRIDE; + virtual DemuxerFactory* Clone() const OVERRIDE; + + private: + bool has_video_; + bool has_audio_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DummyDemuxerFactory); +}; + +} // namespace media + +#endif // MEDIA_FILTERS_DUMMY_DEMUXER_FACTORY_H_ diff --git a/media/media.gyp b/media/media.gyp index c27b430..7599362 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -163,6 +163,10 @@ 'filters/chunk_demuxer_factory.cc', 'filters/chunk_demuxer_factory.h', 'filters/decoder_base.h', + 'filters/dummy_demuxer.cc', + 'filters/dummy_demuxer.h', + 'filters/dummy_demuxer_factory.cc', + 'filters/dummy_demuxer_factory.h', 'filters/ffmpeg_audio_decoder.cc', 'filters/ffmpeg_audio_decoder.h', 'filters/ffmpeg_demuxer.cc', |