summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl_unittest.cc
diff options
context:
space:
mode:
authorralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-28 17:21:23 +0000
committerralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-28 17:21:23 +0000
commitb026f4aeb159244e47d3b55c5faad7bb3247fd55 (patch)
treeefda81548664ea009160ded8588904185b384ca4 /media/base/pipeline_impl_unittest.cc
parentabc659b6d95cf197c2b96a544351a667e8b96f95 (diff)
downloadchromium_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.cc60
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();
+}