diff options
author | kbr@chromium.org <kbr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-08 17:05:31 +0000 |
---|---|---|
committer | kbr@chromium.org <kbr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-08 17:05:31 +0000 |
commit | 77128dec2b067b305b9f749aa8a703af0159b350 (patch) | |
tree | f6b237cb5cee5152dfd29a88747691936100dd26 /chrome/renderer | |
parent | b61f4dbfaf2459e54203656e2d80588fbad1c931 (diff) | |
download | chromium_src-77128dec2b067b305b9f749aa8a703af0159b350.zip chromium_src-77128dec2b067b305b9f749aa8a703af0159b350.tar.gz chromium_src-77128dec2b067b305b9f749aa8a703af0159b350.tar.bz2 |
Deleted code associated with --enable-gpu-rendering and
--enable-video-layering flags. With the introduction of accelerated
compositing to Chromium this code is now obsolete, and it is causing
problems and bug reports when users experiment with these flags.
Tested on Linux in the following configurations:
- Compositor on, CSS 3D content
- Compositor on, HTML5 video content
- Compositor off, HTML5 video content
Also ran patch successfully through the try bots.
BUG=54932
TEST=none
Review URL: http://codereview.chromium.org/4399003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65383 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/media/ipc_video_renderer.cc | 162 | ||||
-rw-r--r-- | chrome/renderer/media/ipc_video_renderer.h | 79 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 18 | ||||
-rw-r--r-- | chrome/renderer/render_widget.cc | 10 |
4 files changed, 5 insertions, 264 deletions
diff --git a/chrome/renderer/media/ipc_video_renderer.cc b/chrome/renderer/media/ipc_video_renderer.cc deleted file mode 100644 index fcf8c61..0000000 --- a/chrome/renderer/media/ipc_video_renderer.cc +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) 2010 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 "chrome/renderer/media/ipc_video_renderer.h" - -#include "chrome/common/render_messages.h" -#include "chrome/renderer/render_thread.h" -#include "media/base/video_frame.h" -#include "media/base/media_format.h" - -IPCVideoRenderer::IPCVideoRenderer(int routing_id) - : created_(false), - routing_id_(routing_id), - stopped_(false, false) { -} - -IPCVideoRenderer::~IPCVideoRenderer() { -} - -bool IPCVideoRenderer::OnInitialize(media::VideoDecoder* decoder) { - video_size_.SetSize(width(), height()); - - // TODO(scherkus): we're assuming YV12 here. - size_t size = (width() * height()) + ((width() * height()) >> 1); - uint32 epoch = static_cast<uint32>(reinterpret_cast<size_t>(this)); - transport_dib_.reset(TransportDIB::Create(size, epoch)); - CHECK(transport_dib_.get()); - - return true; -} - -void IPCVideoRenderer::OnStop(media::FilterCallback* callback) { - stopped_.Signal(); - - proxy_->message_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, &IPCVideoRenderer::DoDestroyVideo, callback)); -} - -void IPCVideoRenderer::OnFrameAvailable() { - proxy_->message_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, &IPCVideoRenderer::DoUpdateVideo)); -} - -void IPCVideoRenderer::SetWebMediaPlayerImplProxy( - webkit_glue::WebMediaPlayerImpl::Proxy* proxy) { - proxy_ = proxy; -} - -void IPCVideoRenderer::SetRect(const gfx::Rect& rect) { - DCHECK(MessageLoop::current() == proxy_->message_loop()); - - // TODO(scherkus): this is actually a SetSize() call... there's a pending - // WebKit bug to get this fixed up. It would be nice if this was a real - // SetRect() call so we could get the absolute coordinates instead of relying - // on Paint(). -} - -void IPCVideoRenderer::Paint(skia::PlatformCanvas* canvas, - const gfx::Rect& dest_rect) { - DCHECK(MessageLoop::current() == proxy_->message_loop()); - - // Copy the rect for UpdateVideo messages. - video_rect_ = dest_rect; - - if (!created_) { - created_ = true; - Send(new ViewHostMsg_CreateVideo(routing_id_, video_size_)); - - // Force an update in case the first frame arrived before the first - // Paint() call. - DoUpdateVideo(); - } - - // TODO(scherkus): code to punch a hole through the backing store goes here. - // We don't need it right away since we don't do a proper alpha composite - // between the browser BackingStore and VideoLayer. -} - -void IPCVideoRenderer::Send(IPC::Message* msg) { - DCHECK(routing_id_ != MSG_ROUTING_NONE); - DCHECK(routing_id_ == msg->routing_id()); - - bool result = RenderThread::current()->Send(msg); - LOG_IF(ERROR, !result) << "RenderThread::current()->Send(msg) failed"; -} - -void IPCVideoRenderer::DoUpdateVideo() { - DCHECK(MessageLoop::current() == proxy_->message_loop()); - - // Nothing to do if we don't know where we are positioned on the page. - if (!created_ || video_rect_.IsEmpty() || stopped_.IsSignaled()) { - return; - } - - scoped_refptr<media::VideoFrame> frame; - GetCurrentFrame(&frame); - if (!frame) { - PutCurrentFrame(frame); - return; - } - - CHECK(frame->width() == static_cast<size_t>(video_size_.width())); - CHECK(frame->height() == static_cast<size_t>(video_size_.height())); - CHECK(frame->format() == media::VideoFrame::YV12); - CHECK(frame->planes() == 3); - - uint8* dest = reinterpret_cast<uint8*>(transport_dib_->memory()); - - // Copy Y plane. - const uint8* src = frame->data(media::VideoFrame::kYPlane); - size_t stride = frame->stride(media::VideoFrame::kYPlane); - for (size_t row = 0; row < frame->height(); ++row) { - memcpy(dest, src, frame->width()); - dest += frame->width(); - src += stride; - } - - // Copy U plane. - src = frame->data(media::VideoFrame::kUPlane); - stride = frame->stride(media::VideoFrame::kUPlane); - for (size_t row = 0; row < frame->height() / 2; ++row) { - memcpy(dest, src, frame->width() / 2); - dest += frame->width() / 2; - src += stride; - } - - // Copy V plane. - src = frame->data(media::VideoFrame::kVPlane); - stride = frame->stride(media::VideoFrame::kVPlane); - for (size_t row = 0; row < frame->height() / 2; ++row) { - memcpy(dest, src, frame->width() / 2); - dest += frame->width() / 2; - src += stride; - } - - PutCurrentFrame(frame); - - // Sanity check! - uint8* expected = reinterpret_cast<uint8*>(transport_dib_->memory()) + - transport_dib_->size(); - CHECK(dest == expected); - - Send(new ViewHostMsg_UpdateVideo(routing_id_, - transport_dib_->id(), - video_rect_)); -} - -void IPCVideoRenderer::DoDestroyVideo(media::FilterCallback* callback) { - DCHECK(MessageLoop::current() == proxy_->message_loop()); - - // We shouldn't receive any more messages after the browser receives this. - Send(new ViewHostMsg_DestroyVideo(routing_id_)); - - // Detach ourselves from the proxy. - proxy_->SetVideoRenderer(NULL); - proxy_ = NULL; - if (callback) { - callback->Run(); - delete callback; - } -} diff --git a/chrome/renderer/media/ipc_video_renderer.h b/chrome/renderer/media/ipc_video_renderer.h deleted file mode 100644 index d032469..0000000 --- a/chrome/renderer/media/ipc_video_renderer.h +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) 2010 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. - -// This video renderer implementation uses IPC to signal the browser process to -// composite the video as a separate layer underneath the backing store. -// -// Extremely experimental. Use at own risk! - -#ifndef CHROME_RENDERER_MEDIA_IPC_VIDEO_RENDERER_H_ -#define CHROME_RENDERER_MEDIA_IPC_VIDEO_RENDERER_H_ -#pragma once - -#include "app/surface/transport_dib.h" -#include "base/waitable_event.h" -#include "gfx/rect.h" -#include "gfx/size.h" -#include "ipc/ipc_message.h" -#include "media/filters/video_renderer_base.h" -#include "webkit/glue/media/web_video_renderer.h" -#include "webkit/glue/webmediaplayer_impl.h" - -class IPCVideoRenderer : public webkit_glue::WebVideoRenderer { - public: - explicit IPCVideoRenderer(int routing_id); - virtual ~IPCVideoRenderer(); - - // WebVideoRenderer implementation. - virtual void SetWebMediaPlayerImplProxy( - webkit_glue::WebMediaPlayerImpl::Proxy* proxy); - virtual void SetRect(const gfx::Rect& rect); - virtual void Paint(skia::PlatformCanvas* canvas, const gfx::Rect& dest_rect); - - void OnUpdateVideo(); - void OnUpdateVideoAck(); - void OnDestroyVideo(); - - protected: - // VideoRendererBase implementation. - virtual bool OnInitialize(media::VideoDecoder* decoder); - virtual void OnStop(media::FilterCallback* callback); - virtual void OnFrameAvailable(); - - private: - // Send an IPC message to the browser process. The routing ID of the message - // is assumed to match |routing_id_|. - void Send(IPC::Message* msg); - - // Handles updating the video on the render thread. - void DoUpdateVideo(); - - // Handles destroying the video on the render thread. - void DoDestroyVideo(media::FilterCallback* callback); - - // Pointer to our parent object that is called to request repaints. - scoped_refptr<webkit_glue::WebMediaPlayerImpl::Proxy> proxy_; - - // The size of the video. - gfx::Size video_size_; - - // The rect of the video. - gfx::Rect video_rect_; - - // Whether we've created the video layer on the browser. - bool created_; - - // Used to transporting YUV to the browser process. - int routing_id_; - scoped_ptr<TransportDIB> transport_dib_; - - // Used to determine whether we've been instructed to stop. - // TODO(scherkus): work around because we don't have asynchronous stopping. - // Refer to http://crbug.com/16059 - base::WaitableEvent stopped_; - - DISALLOW_COPY_AND_ASSIGN(IPCVideoRenderer); -}; - -#endif // CHROME_RENDERER_MEDIA_IPC_VIDEO_RENDERER_H_ diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 7355fae8..912042b 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -65,7 +65,6 @@ #include "chrome/renderer/localized_error.h" #include "chrome/renderer/media/audio_renderer_impl.h" #include "chrome/renderer/media/ipc_video_decoder.h" -#include "chrome/renderer/media/ipc_video_renderer.h" #include "chrome/renderer/navigation_state.h" #include "chrome/renderer/notification_provider.h" #include "chrome/renderer/page_click_tracker.h" @@ -2668,18 +2667,11 @@ WebMediaPlayer* RenderView::createMediaPlayer( routing_id()); scoped_refptr<webkit_glue::WebVideoRenderer> video_renderer; - if (cmd_line->HasSwitch(switches::kEnableVideoLayering)) { - scoped_refptr<IPCVideoRenderer> renderer( - new IPCVideoRenderer(routing_id_)); - collection->AddFilter(renderer); - video_renderer = renderer; - } else { - bool pts_logging = cmd_line->HasSwitch(switches::kEnableVideoLogging); - scoped_refptr<webkit_glue::VideoRendererImpl> renderer( - new webkit_glue::VideoRendererImpl(pts_logging)); - collection->AddFilter(renderer); - video_renderer = renderer; - } + bool pts_logging = cmd_line->HasSwitch(switches::kEnableVideoLogging); + scoped_refptr<webkit_glue::VideoRendererImpl> renderer( + new webkit_glue::VideoRendererImpl(pts_logging)); + collection->AddFilter(renderer); + video_renderer = renderer; return new webkit_glue::WebMediaPlayerImpl( client, collection.release(), bridge_factory_simple, diff --git a/chrome/renderer/render_widget.cc b/chrome/renderer/render_widget.cc index 17c0ee7..79dd235 100644 --- a/chrome/renderer/render_widget.cc +++ b/chrome/renderer/render_widget.cc @@ -170,8 +170,6 @@ IPC_DEFINE_MESSAGE_MAP(RenderWidget) IPC_MESSAGE_HANDLER(ViewMsg_WasHidden, OnWasHidden) IPC_MESSAGE_HANDLER(ViewMsg_WasRestored, OnWasRestored) IPC_MESSAGE_HANDLER(ViewMsg_UpdateRect_ACK, OnUpdateRectAck) - IPC_MESSAGE_HANDLER(ViewMsg_CreateVideo_ACK, OnCreateVideoAck) - IPC_MESSAGE_HANDLER(ViewMsg_UpdateVideo_ACK, OnUpdateVideoAck) IPC_MESSAGE_HANDLER(ViewMsg_HandleInputEvent, OnHandleInputEvent) IPC_MESSAGE_HANDLER(ViewMsg_MouseCaptureLost, OnMouseCaptureLost) IPC_MESSAGE_HANDLER(ViewMsg_SetFocus, OnSetFocus) @@ -317,14 +315,6 @@ void RenderWidget::OnUpdateRectAck() { CallDoDeferredUpdate(); } -void RenderWidget::OnCreateVideoAck(int32 video_id) { - // TODO(scherkus): handle CreateVideo_ACK with a message filter. -} - -void RenderWidget::OnUpdateVideoAck(int32 video_id) { - // TODO(scherkus): handle UpdateVideo_ACK with a message filter. -} - void RenderWidget::OnHandleInputEvent(const IPC::Message& message) { void* iter = NULL; |