OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/proxy/ppp_video_decoder_proxy.h" | 5 #include "ppapi/proxy/ppp_video_decoder_proxy.h" |
6 | 6 |
7 #include "ppapi/proxy/host_dispatcher.h" | 7 #include "ppapi/proxy/host_dispatcher.h" |
8 #include "ppapi/proxy/plugin_globals.h" | 8 #include "ppapi/proxy/plugin_globals.h" |
9 #include "ppapi/proxy/plugin_resource_tracker.h" | 9 #include "ppapi/proxy/plugin_resource_tracker.h" |
10 #include "ppapi/proxy/ppapi_messages.h" | 10 #include "ppapi/proxy/ppapi_messages.h" |
11 #include "ppapi/proxy/ppb_video_decoder_proxy.h" | 11 #include "ppapi/proxy/ppb_video_decoder_proxy.h" |
12 #include "ppapi/thunk/enter.h" | 12 #include "ppapi/thunk/enter.h" |
13 #include "ppapi/thunk/ppb_video_decoder_api.h" | 13 #include "ppapi/thunk/ppb_video_decoder_api.h" |
14 #include "ppapi/thunk/thunk.h" | 14 #include "ppapi/thunk/thunk.h" |
15 | 15 |
16 using ppapi::thunk::PPB_VideoDecoder_API; | 16 using ppapi::thunk::PPB_VideoDecoder_API; |
17 | 17 |
18 namespace ppapi { | 18 namespace ppapi { |
19 namespace proxy { | 19 namespace proxy { |
20 | 20 |
21 namespace { | 21 namespace { |
22 | 22 |
23 void ProvidePictureBuffers(PP_Instance instance, PP_Resource decoder, | 23 void ProvidePictureBuffers(PP_Instance instance, PP_Resource decoder, |
24 uint32_t req_num_of_bufs, | 24 uint32_t req_num_of_bufs, |
25 const PP_Size* dimensions) { | 25 const PP_Size* dimensions, |
26 uint32_t texture_target) { | |
26 HostResource decoder_resource; | 27 HostResource decoder_resource; |
27 decoder_resource.SetHostResource(instance, decoder); | 28 decoder_resource.SetHostResource(instance, decoder); |
28 | 29 |
29 HostDispatcher::GetForInstance(instance)->Send( | 30 HostDispatcher::GetForInstance(instance)->Send( |
30 new PpapiMsg_PPPVideoDecoder_ProvidePictureBuffers( | 31 new PpapiMsg_PPPVideoDecoder_ProvidePictureBuffers( |
31 API_ID_PPP_VIDEO_DECODER_DEV, | 32 API_ID_PPP_VIDEO_DECODER_DEV, |
32 decoder_resource, req_num_of_bufs, *dimensions)); | 33 decoder_resource, req_num_of_bufs, *dimensions, texture_target)); |
33 } | 34 } |
34 | 35 |
35 void DismissPictureBuffer(PP_Instance instance, PP_Resource decoder, | 36 void DismissPictureBuffer(PP_Instance instance, PP_Resource decoder, |
36 int32_t picture_buffer_id) { | 37 int32_t picture_buffer_id) { |
37 HostResource decoder_resource; | 38 HostResource decoder_resource; |
38 decoder_resource.SetHostResource(instance, decoder); | 39 decoder_resource.SetHostResource(instance, decoder); |
39 | 40 |
40 HostDispatcher::GetForInstance(instance)->Send( | 41 HostDispatcher::GetForInstance(instance)->Send( |
41 new PpapiMsg_PPPVideoDecoder_DismissPictureBuffer( | 42 new PpapiMsg_PPPVideoDecoder_DismissPictureBuffer( |
42 API_ID_PPP_VIDEO_DECODER_DEV, | 43 API_ID_PPP_VIDEO_DECODER_DEV, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 return new PPP_VideoDecoder_Proxy(dispatcher); | 75 return new PPP_VideoDecoder_Proxy(dispatcher); |
75 } | 76 } |
76 | 77 |
77 } // namespace | 78 } // namespace |
78 | 79 |
79 PPP_VideoDecoder_Proxy::PPP_VideoDecoder_Proxy(Dispatcher* dispatcher) | 80 PPP_VideoDecoder_Proxy::PPP_VideoDecoder_Proxy(Dispatcher* dispatcher) |
80 : InterfaceProxy(dispatcher), | 81 : InterfaceProxy(dispatcher), |
81 ppp_video_decoder_impl_(NULL) { | 82 ppp_video_decoder_impl_(NULL) { |
82 if (dispatcher->IsPlugin()) { | 83 if (dispatcher->IsPlugin()) { |
83 ppp_video_decoder_impl_ = static_cast<const PPP_VideoDecoder_Dev*>( | 84 ppp_video_decoder_impl_ = static_cast<const PPP_VideoDecoder_Dev*>( |
84 dispatcher->local_get_interface()(PPP_VIDEODECODER_DEV_INTERFACE)); | 85 dispatcher->local_get_interface()(PPP_VIDEODECODER_DEV_INTERFACE)); |
brettw
2012/06/04 23:42:33
This code doesn't provide backwards compat. We may
sail
2012/06/04 23:49:47
Yea, hardware decoding is disabled by default.
| |
85 } | 86 } |
86 } | 87 } |
87 | 88 |
88 PPP_VideoDecoder_Proxy::~PPP_VideoDecoder_Proxy() { | 89 PPP_VideoDecoder_Proxy::~PPP_VideoDecoder_Proxy() { |
89 } | 90 } |
90 | 91 |
91 // static | 92 // static |
92 const InterfaceProxy::Info* PPP_VideoDecoder_Proxy::GetInfo() { | 93 const InterfaceProxy::Info* PPP_VideoDecoder_Proxy::GetInfo() { |
93 static const Info info = { | 94 static const Info info = { |
94 &video_decoder_interface, | 95 &video_decoder_interface, |
(...skipping 16 matching lines...) Expand all Loading... | |
111 OnMsgPictureReady) | 112 OnMsgPictureReady) |
112 IPC_MESSAGE_HANDLER(PpapiMsg_PPPVideoDecoder_NotifyError, | 113 IPC_MESSAGE_HANDLER(PpapiMsg_PPPVideoDecoder_NotifyError, |
113 OnMsgNotifyError) | 114 OnMsgNotifyError) |
114 IPC_MESSAGE_UNHANDLED(handled = false) | 115 IPC_MESSAGE_UNHANDLED(handled = false) |
115 IPC_END_MESSAGE_MAP() | 116 IPC_END_MESSAGE_MAP() |
116 DCHECK(handled); | 117 DCHECK(handled); |
117 return handled; | 118 return handled; |
118 } | 119 } |
119 | 120 |
120 void PPP_VideoDecoder_Proxy::OnMsgProvidePictureBuffers( | 121 void PPP_VideoDecoder_Proxy::OnMsgProvidePictureBuffers( |
121 const HostResource& decoder, uint32_t req_num_of_bufs, | 122 const HostResource& decoder, |
122 const PP_Size& dimensions) { | 123 uint32_t req_num_of_bufs, |
124 const PP_Size& dimensions, | |
125 uint32_t texture_target) { | |
123 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> | 126 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> |
124 PluginResourceForHostResource(decoder); | 127 PluginResourceForHostResource(decoder); |
125 CallWhileUnlocked(ppp_video_decoder_impl_->ProvidePictureBuffers, | 128 CallWhileUnlocked(ppp_video_decoder_impl_->ProvidePictureBuffers, |
126 decoder.instance(), | 129 decoder.instance(), |
127 plugin_decoder, | 130 plugin_decoder, |
128 req_num_of_bufs, | 131 req_num_of_bufs, |
129 &dimensions); | 132 &dimensions, |
133 texture_target); | |
130 } | 134 } |
131 | 135 |
132 void PPP_VideoDecoder_Proxy::OnMsgDismissPictureBuffer( | 136 void PPP_VideoDecoder_Proxy::OnMsgDismissPictureBuffer( |
133 const HostResource& decoder, int32_t picture_id) { | 137 const HostResource& decoder, int32_t picture_id) { |
134 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> | 138 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> |
135 PluginResourceForHostResource(decoder); | 139 PluginResourceForHostResource(decoder); |
136 CallWhileUnlocked(ppp_video_decoder_impl_->DismissPictureBuffer, | 140 CallWhileUnlocked(ppp_video_decoder_impl_->DismissPictureBuffer, |
137 decoder.instance(), | 141 decoder.instance(), |
138 plugin_decoder, | 142 plugin_decoder, |
139 picture_id); | 143 picture_id); |
(...skipping 14 matching lines...) Expand all Loading... | |
154 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> | 158 PP_Resource plugin_decoder = PluginGlobals::Get()->plugin_resource_tracker()-> |
155 PluginResourceForHostResource(decoder); | 159 PluginResourceForHostResource(decoder); |
156 CallWhileUnlocked(ppp_video_decoder_impl_->NotifyError, | 160 CallWhileUnlocked(ppp_video_decoder_impl_->NotifyError, |
157 decoder.instance(), | 161 decoder.instance(), |
158 plugin_decoder, | 162 plugin_decoder, |
159 error); | 163 error); |
160 } | 164 } |
161 | 165 |
162 } // namespace proxy | 166 } // namespace proxy |
163 } // namespace ppapi | 167 } // namespace ppapi |
OLD | NEW |