diff options
author | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-28 17:21:23 +0000 |
---|---|---|
committer | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-28 17:21:23 +0000 |
commit | b026f4aeb159244e47d3b55c5faad7bb3247fd55 (patch) | |
tree | efda81548664ea009160ded8588904185b384ca4 /media/base/pipeline_impl_unittest.cc | |
parent | abc659b6d95cf197c2b96a544351a667e8b96f95 (diff) | |
download | chromium_src-b026f4aeb159244e47d3b55c5faad7bb3247fd55.zip chromium_src-b026f4aeb159244e47d3b55c5faad7bb3247fd55.tar.gz chromium_src-b026f4aeb159244e47d3b55c5faad7bb3247fd55.tar.bz2 |
Implementation of Pipeline and FilterHost interfaces. This is a large change, but all of the objects are interrelated.
I am also checking in a basic unit test that creates pipeline,
and the data source hangs during initialization. The test sleeps one second and then stops the pipeline.
Andrew has already done a first pass on this, and the code has come largely from our working experimental branch.
Review URL: http://codereview.chromium.org/18546
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8805 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/pipeline_impl_unittest.cc')
-rw-r--r-- | media/base/pipeline_impl_unittest.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/media/base/pipeline_impl_unittest.cc b/media/base/pipeline_impl_unittest.cc new file mode 100644 index 0000000..43a113c --- /dev/null +++ b/media/base/pipeline_impl_unittest.cc @@ -0,0 +1,60 @@ +// Copyright (c) 2006-2009 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 <string> + +#include "base/platform_thread.h" +#include "media/base/pipeline_impl.h" +#include "media/base/media_format.h" +#include "media/base/filters.h" +#include "media/base/factory.h" +#include "media/base/filter_host.h" +#include "testing/gtest/include/gtest/gtest.h" + +using media::FilterFactory; +using media::FilterFactoryCollection; +using media::FilterHost; +using media::MediaFormat; +using media::PipelineImpl; +using media::TypeFilterFactory; + +class TestDataSource : public media::DataSource { + public: + static bool Create(const MediaFormat* media_format, + TestDataSource** filter_out) { + *filter_out = new TestDataSource(); + return true; + } + virtual void Stop() {} + // This filter will hang in initialization because it never calls + // FilterHost::InitializationComplete + virtual bool Initialize(const std::string& uri) { + return true; + } + virtual const MediaFormat* GetMediaFormat() { + return NULL; // TODO(ralphl): Return octot thingie... + } + virtual size_t Read(char* data, size_t size) { + return 0; + } + virtual bool GetPosition(int64* position_out) { + return 0; + } + virtual bool SetPosition(int64 position) { + return true; + } + virtual bool GetSize(int64* size_out) { + return 0; + } +}; + +TEST(PipelineImplTest, Basic) { + std::string uri("test.mov"); + PipelineImpl pipeline; + scoped_refptr<FilterFactoryCollection> f = new FilterFactoryCollection(); + f->AddFactory(new TypeFilterFactory<TestDataSource>); + pipeline.Start(f, uri, NULL); + PlatformThread::Sleep(10); + pipeline.Stop(); +} |