Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Side by Side Diff: webkit/compositor_bindings/web_to_ccvideo_frame_provider.cc

Issue 11754003: Move VideoFrameProvider to, and remove all usage of WebVideoFrame from cc/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed crashes Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "webkit/compositor_bindings/web_to_ccvideo_frame_provider.h"
6
7 #include "base/logging.h"
8 #include "webkit/media/webvideoframe_impl.h"
9
10 using WebKit::WebVideoFrame;
11 using WebKit::WebVideoFrameProvider;
12 using webkit_media::WebVideoFrameImpl;
13
14 namespace webkit {
15
16 scoped_ptr<WebToCCVideoFrameProvider> WebToCCVideoFrameProvider::Create(
17 WebVideoFrameProvider* web_provider) {
18 return make_scoped_ptr(new WebToCCVideoFrameProvider(web_provider));
19 }
20
21 WebToCCVideoFrameProvider::WebToCCVideoFrameProvider(
22 WebVideoFrameProvider* web_provider)
23 : web_provider_(web_provider),
24 web_frame_(NULL) {
25 }
26
27 WebToCCVideoFrameProvider::~WebToCCVideoFrameProvider() {
28 }
29
30 class WebToCCVideoFrameProvider::ClientAdapter
31 : public WebVideoFrameProvider::Client {
32 public:
33 ClientAdapter(cc::VideoFrameProvider::Client* cc_client)
34 : cc_client_(cc_client) {}
35 virtual ~ClientAdapter() {}
36
37 // WebToCCVideoFrameProvider::Client implementation.
38 virtual void stopUsingProvider() {
39 cc_client_->StopUsingProvider();
40 }
41
42 virtual void didReceiveFrame() {
43 cc_client_->DidReceiveFrame();
44 }
45
46 virtual void didUpdateMatrix(const float* matrix) {
47 cc_client_->DidUpdateMatrix(matrix);
48 }
49
50 private:
51 cc::VideoFrameProvider::Client* cc_client_;
52 };
53
54 void WebToCCVideoFrameProvider::SetVideoFrameProviderClient(Client* client) {
55 scoped_ptr<ClientAdapter> client_adapter;
56 if (client)
57 client_adapter.reset(new ClientAdapter(client));
58 web_provider_->setVideoFrameProviderClient(client_adapter.get());
59 client_adapter_ = client_adapter.Pass();
60 }
61
62 scoped_refptr<media::VideoFrame> WebToCCVideoFrameProvider::GetCurrentFrame() {
63 web_frame_ = web_provider_->getCurrentFrame();
64 if (!web_frame_)
65 return scoped_refptr<media::VideoFrame>();
66 WebVideoFrameImpl* impl = static_cast<WebVideoFrameImpl*>(web_frame_);
67 return impl->video_frame;
68 }
69
70 void WebToCCVideoFrameProvider::PutCurrentFrame(
71 scoped_refptr<media::VideoFrame> frame) {
72 if (!frame) {
73 DCHECK(!web_frame_);
74 return;
75 }
76 DCHECK(web_frame_);
77 WebVideoFrameImpl* impl = static_cast<WebVideoFrameImpl*>(web_frame_);
78 DCHECK_EQ(impl->video_frame.get(), frame.get());
79 web_provider_->putCurrentFrame(web_frame_);
80 web_frame_ = NULL;
81 }
82
83 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698