summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/media
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-03 04:52:53 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-03 04:52:53 +0000
commitd43ed917b1f7e8f875d2ee2aa0587512e265e28e (patch)
tree64b04bda5e59e98a387235000779a2b050f9fa2b /chrome/renderer/media
parent08e6413a6565ba434e1054a1df1c9fb778dad352 (diff)
downloadchromium_src-d43ed917b1f7e8f875d2ee2aa0587512e265e28e.zip
chromium_src-d43ed917b1f7e8f875d2ee2aa0587512e265e28e.tar.gz
chromium_src-d43ed917b1f7e8f875d2ee2aa0587512e265e28e.tar.bz2
Merged with latest media pipeline and cleaned up some style stuff.
Changed WebMediaPlayerDelegateImpl to contains a PipelineImpl object rather keeping a pointer to Pipeline interface. Also added code for task coordination between pipeline thread and main thread. Review URL: http://codereview.chromium.org/19481 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9069 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/media')
-rw-r--r--chrome/renderer/media/audio_renderer_impl.cc9
-rw-r--r--chrome/renderer/media/audio_renderer_impl.h17
-rw-r--r--chrome/renderer/media/data_source_impl.cc9
-rw-r--r--chrome/renderer/media/data_source_impl.h17
-rw-r--r--chrome/renderer/media/video_renderer_impl.cc18
-rw-r--r--chrome/renderer/media/video_renderer_impl.h34
6 files changed, 98 insertions, 6 deletions
diff --git a/chrome/renderer/media/audio_renderer_impl.cc b/chrome/renderer/media/audio_renderer_impl.cc
index ab59833..113d700 100644
--- a/chrome/renderer/media/audio_renderer_impl.cc
+++ b/chrome/renderer/media/audio_renderer_impl.cc
@@ -4,7 +4,8 @@
#include "chrome/renderer/media/audio_renderer_impl.h"
-AudioRendererImpl::AudioRendererImpl() {
+AudioRendererImpl::AudioRendererImpl(WebMediaPlayerDelegateImpl* delegate)
+ : delegate_(delegate) {
}
AudioRendererImpl::~AudioRendererImpl() {
@@ -25,3 +26,9 @@ void AudioRendererImpl::SetVolume(float volume) {
// TODO(scherkus): implement SetVolume.
NOTIMPLEMENTED();
}
+
+bool AudioRendererImpl::IsMediaFormatSupported(
+ const media::MediaFormat* format) {
+ // TODO(hclam): check the format correct.
+ return true;
+}
diff --git a/chrome/renderer/media/audio_renderer_impl.h b/chrome/renderer/media/audio_renderer_impl.h
index 94cb048..e76bf64 100644
--- a/chrome/renderer/media/audio_renderer_impl.h
+++ b/chrome/renderer/media/audio_renderer_impl.h
@@ -5,11 +5,14 @@
#ifndef CHROME_RENDERER_MEDIA_AUDIO_RENDERER_IMPL_H_
#define CHROME_RENDERER_MEDIA_AUDIO_RENDERER_IMPL_H_
+#include "media/base/factory.h"
#include "media/base/filters.h"
+class WebMediaPlayerDelegateImpl;
+
class AudioRendererImpl : public media::AudioRenderer {
public:
- AudioRendererImpl();
+ AudioRendererImpl(WebMediaPlayerDelegateImpl* delegate);
// media::MediaFilter implementation.
virtual void Stop();
@@ -18,10 +21,22 @@ class AudioRendererImpl : public media::AudioRenderer {
virtual bool Initialize(media::AudioDecoder* decoder);
virtual void SetVolume(float volume);
+ // Static method for creating factory for this object.
+ static media::FilterFactory* CreateFactory(
+ WebMediaPlayerDelegateImpl* delegate) {
+ return new media::FilterFactoryImpl1<AudioRendererImpl,
+ WebMediaPlayerDelegateImpl*>(delegate);
+ }
+
+ // Answers question from the factory to see if we accept |format|.
+ static bool IsMediaFormatSupported(const media::MediaFormat* format);
+
protected:
virtual ~AudioRendererImpl();
private:
+ WebMediaPlayerDelegateImpl* delegate_;
+
DISALLOW_COPY_AND_ASSIGN(AudioRendererImpl);
};
diff --git a/chrome/renderer/media/data_source_impl.cc b/chrome/renderer/media/data_source_impl.cc
index 7193fcc..24dc4d2 100644
--- a/chrome/renderer/media/data_source_impl.cc
+++ b/chrome/renderer/media/data_source_impl.cc
@@ -4,7 +4,8 @@
#include "chrome/renderer/media/data_source_impl.h"
-DataSourceImpl::DataSourceImpl() {
+DataSourceImpl::DataSourceImpl(WebMediaPlayerDelegateImpl* delegate)
+ : delegate_(delegate) {
}
DataSourceImpl::~DataSourceImpl() {
@@ -50,3 +51,9 @@ bool DataSourceImpl::GetSize(int64* size_out) {
NOTIMPLEMENTED();
return false;
}
+
+bool DataSourceImpl::IsMediaFormatSupported(const media::MediaFormat* format) {
+ // TODO(hclam: implement this.
+ NOTIMPLEMENTED();
+ return true;
+}
diff --git a/chrome/renderer/media/data_source_impl.h b/chrome/renderer/media/data_source_impl.h
index fe5bab8..33cbadf 100644
--- a/chrome/renderer/media/data_source_impl.h
+++ b/chrome/renderer/media/data_source_impl.h
@@ -7,12 +7,15 @@
#include <string>
+#include "media/base/factory.h"
#include "media/base/filters.h"
#include "media/base/media_format.h"
+class WebMediaPlayerDelegateImpl;
+
class DataSourceImpl : public media::DataSource {
public:
- DataSourceImpl();
+ DataSourceImpl(WebMediaPlayerDelegateImpl* delegate);
// media::MediaFilter implementation.
virtual void Stop();
@@ -25,10 +28,22 @@ class DataSourceImpl : public media::DataSource {
virtual bool SetPosition(int64 position);
virtual bool GetSize(int64* size_out);
+ // Static method for creating factory for this object.
+ static media::FilterFactory* CreateFactory(
+ WebMediaPlayerDelegateImpl* delegate) {
+ return new media::FilterFactoryImpl1<DataSourceImpl,
+ WebMediaPlayerDelegateImpl*>(delegate);
+ }
+
+ // Answers question from the factory to see if we accept |format|.
+ static bool IsMediaFormatSupported(const media::MediaFormat* format);
+
protected:
virtual ~DataSourceImpl();
private:
+ WebMediaPlayerDelegateImpl* delegate_;
+
DISALLOW_COPY_AND_ASSIGN(DataSourceImpl);
};
diff --git a/chrome/renderer/media/video_renderer_impl.cc b/chrome/renderer/media/video_renderer_impl.cc
index 77d9d90..8159f00 100644
--- a/chrome/renderer/media/video_renderer_impl.cc
+++ b/chrome/renderer/media/video_renderer_impl.cc
@@ -4,7 +4,8 @@
#include "chrome/renderer/media/video_renderer_impl.h"
-VideoRendererImpl::VideoRendererImpl() {
+VideoRendererImpl::VideoRendererImpl(WebMediaPlayerDelegateImpl* delegate)
+ : delegate_(delegate) {
}
VideoRendererImpl::~VideoRendererImpl() {
@@ -20,3 +21,18 @@ bool VideoRendererImpl::Initialize(media::VideoDecoder* decoder) {
NOTIMPLEMENTED();
return false;
}
+
+bool VideoRendererImpl::IsMediaFormatSupported(
+ const media::MediaFormat* format) {
+ // TODO(hclam): check the format correctly.
+ return true;
+}
+
+void VideoRendererImpl::Paint(skia::PlatformCanvas *canvas,
+ const gfx::Rect& rect) {
+ // TODO(hclam): add stuff here.
+}
+
+void VideoRendererImpl::SetRect(const gfx::Rect& rect) {
+ // TODO(hclam): add stuff here.
+}
diff --git a/chrome/renderer/media/video_renderer_impl.h b/chrome/renderer/media/video_renderer_impl.h
index 9b58266..38a7124 100644
--- a/chrome/renderer/media/video_renderer_impl.h
+++ b/chrome/renderer/media/video_renderer_impl.h
@@ -1,15 +1,29 @@
// Copyright (c) 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.
+//
+// The video renderer implementation to be use by the media pipeline. It lives
+// inside video renderer thread and also WebKit's main thread. We need to be
+// extra careful about members shared by two different threads, especially
+// video frame buffers.
+//
+// Methods called from WebKit's main thread:
+// Paint()
+// SetRect()
#ifndef CHROME_RENDERER_MEDIA_VIDEO_RENDERER_H_
#define CHROME_RENDERER_MEDIA_VIDEO_RENDERER_H_
+#include "base/gfx/platform_canvas.h"
+#include "base/gfx/rect.h"
+#include "media/base/factory.h"
#include "media/base/filters.h"
+class WebMediaPlayerDelegateImpl;
+
class VideoRendererImpl : public media::VideoRenderer {
public:
- VideoRendererImpl();
+ VideoRendererImpl(WebMediaPlayerDelegateImpl* delegate);
// media::MediaFilter implementation.
virtual void Stop();
@@ -17,10 +31,28 @@ class VideoRendererImpl : public media::VideoRenderer {
// media::VideoRenderer implementation.
virtual bool Initialize(media::VideoDecoder* decoder);
+ // Called from WebMediaPlayerDelegateImpl from WebKit's main thread.
+ void Paint(skia::PlatformCanvas* canvas, const gfx::Rect& rect);
+
+ // Called from WebMediaPlayerDelegateImpl from WebKit's main thread.
+ void SetRect(const gfx::Rect& rect);
+
+ // Static method for creating factory for this object.
+ static media::FilterFactory* CreateFactory(
+ WebMediaPlayerDelegateImpl* delegate) {
+ return new media::FilterFactoryImpl1<
+ VideoRendererImpl, WebMediaPlayerDelegateImpl*>(delegate);
+ }
+
+ // Answers question from the factory to see if we accept |format|.
+ static bool IsMediaFormatSupported(const media::MediaFormat* format);
+
protected:
virtual ~VideoRendererImpl();
private:
+ WebMediaPlayerDelegateImpl* delegate_;
+
DISALLOW_COPY_AND_ASSIGN(VideoRendererImpl);
};