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

Side by Side Diff: ppapi/proxy/video_decoder_resource.cc

Issue 467303005: Remove implicit conversions from scoped_refptr to T* in ppapi/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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
OLDNEW
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/video_decoder_resource.h" 5 #include "ppapi/proxy/video_decoder_resource.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "gpu/command_buffer/client/gles2_cmd_helper.h" 8 #include "gpu/command_buffer/client/gles2_cmd_helper.h"
9 #include "gpu/command_buffer/client/gles2_implementation.h" 9 #include "gpu/command_buffer/client/gles2_implementation.h"
10 #include "gpu/command_buffer/common/mailbox.h" 10 #include "gpu/command_buffer/common/mailbox.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 int32_t VideoDecoderResource::Initialize( 101 int32_t VideoDecoderResource::Initialize(
102 PP_Resource graphics_context, 102 PP_Resource graphics_context,
103 PP_VideoProfile profile, 103 PP_VideoProfile profile,
104 PP_HardwareAcceleration acceleration, 104 PP_HardwareAcceleration acceleration,
105 scoped_refptr<TrackedCallback> callback) { 105 scoped_refptr<TrackedCallback> callback) {
106 if (initialized_) 106 if (initialized_)
107 return PP_ERROR_FAILED; 107 return PP_ERROR_FAILED;
108 if (profile < 0 || profile > PP_VIDEOPROFILE_MAX) 108 if (profile < 0 || profile > PP_VIDEOPROFILE_MAX)
109 return PP_ERROR_BADARGUMENT; 109 return PP_ERROR_BADARGUMENT;
110 if (initialize_callback_) 110 if (initialize_callback_.get())
111 return PP_ERROR_INPROGRESS; 111 return PP_ERROR_INPROGRESS;
112 if (!graphics_context) 112 if (!graphics_context)
113 return PP_ERROR_BADRESOURCE; 113 return PP_ERROR_BADRESOURCE;
114 114
115 HostResource host_resource; 115 HostResource host_resource;
116 if (!testing_) { 116 if (!testing_) {
117 // Create a new Graphics3D resource that can create texture resources to 117 // Create a new Graphics3D resource that can create texture resources to
118 // share with the plugin. We can't use the plugin's Graphics3D, since we 118 // share with the plugin. We can't use the plugin's Graphics3D, since we
119 // create textures on a proxy thread, and would interfere with the plugin. 119 // create textures on a proxy thread, and would interfere with the plugin.
120 thunk::EnterResourceCreationNoLock enter_create(pp_instance()); 120 thunk::EnterResourceCreationNoLock enter_create(pp_instance());
(...skipping 25 matching lines...) Expand all
146 146
147 return PP_OK_COMPLETIONPENDING; 147 return PP_OK_COMPLETIONPENDING;
148 } 148 }
149 149
150 int32_t VideoDecoderResource::Decode(uint32_t decode_id, 150 int32_t VideoDecoderResource::Decode(uint32_t decode_id,
151 uint32_t size, 151 uint32_t size,
152 const void* buffer, 152 const void* buffer,
153 scoped_refptr<TrackedCallback> callback) { 153 scoped_refptr<TrackedCallback> callback) {
154 if (decoder_last_error_) 154 if (decoder_last_error_)
155 return decoder_last_error_; 155 return decoder_last_error_;
156 if (flush_callback_ || reset_callback_) 156 if (flush_callback_.get() || reset_callback_.get())
157 return PP_ERROR_FAILED; 157 return PP_ERROR_FAILED;
158 if (decode_callback_) 158 if (decode_callback_.get())
159 return PP_ERROR_INPROGRESS; 159 return PP_ERROR_INPROGRESS;
160 if (size > kMaximumBitstreamBufferSize) 160 if (size > kMaximumBitstreamBufferSize)
161 return PP_ERROR_NOMEMORY; 161 return PP_ERROR_NOMEMORY;
162 162
163 // If we allow the plugin to call Decode again, we must have somewhere to 163 // If we allow the plugin to call Decode again, we must have somewhere to
164 // copy their buffer. 164 // copy their buffer.
165 DCHECK(!available_shm_buffers_.empty() || 165 DCHECK(!available_shm_buffers_.empty() ||
166 shm_buffers_.size() < kMaximumPendingDecodes); 166 shm_buffers_.size() < kMaximumPendingDecodes);
167 167
168 // Count up, wrapping back to 0 before overflowing. 168 // Count up, wrapping back to 0 before overflowing.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // buffer is available. 247 // buffer is available.
248 decode_callback_ = callback; 248 decode_callback_ = callback;
249 return PP_OK_COMPLETIONPENDING; 249 return PP_OK_COMPLETIONPENDING;
250 } 250 }
251 251
252 int32_t VideoDecoderResource::GetPicture( 252 int32_t VideoDecoderResource::GetPicture(
253 PP_VideoPicture* picture, 253 PP_VideoPicture* picture,
254 scoped_refptr<TrackedCallback> callback) { 254 scoped_refptr<TrackedCallback> callback) {
255 if (decoder_last_error_) 255 if (decoder_last_error_)
256 return decoder_last_error_; 256 return decoder_last_error_;
257 if (reset_callback_) 257 if (reset_callback_.get())
258 return PP_ERROR_FAILED; 258 return PP_ERROR_FAILED;
259 if (get_picture_callback_) 259 if (get_picture_callback_.get())
260 return PP_ERROR_INPROGRESS; 260 return PP_ERROR_INPROGRESS;
261 261
262 // If the next picture is ready, return it synchronously. 262 // If the next picture is ready, return it synchronously.
263 if (!received_pictures_.empty()) { 263 if (!received_pictures_.empty()) {
264 WriteNextPicture(picture); 264 WriteNextPicture(picture);
265 return PP_OK; 265 return PP_OK;
266 } 266 }
267 267
268 get_picture_callback_ = callback; 268 get_picture_callback_ = callback;
269 get_picture_ = picture; 269 get_picture_ = picture;
270 return PP_OK_COMPLETIONPENDING; 270 return PP_OK_COMPLETIONPENDING;
271 } 271 }
272 272
273 void VideoDecoderResource::RecyclePicture(const PP_VideoPicture* picture) { 273 void VideoDecoderResource::RecyclePicture(const PP_VideoPicture* picture) {
274 if (decoder_last_error_) 274 if (decoder_last_error_)
275 return; 275 return;
276 276
277 Post(RENDERER, PpapiHostMsg_VideoDecoder_RecyclePicture(picture->texture_id)); 277 Post(RENDERER, PpapiHostMsg_VideoDecoder_RecyclePicture(picture->texture_id));
278 } 278 }
279 279
280 int32_t VideoDecoderResource::Flush(scoped_refptr<TrackedCallback> callback) { 280 int32_t VideoDecoderResource::Flush(scoped_refptr<TrackedCallback> callback) {
281 if (decoder_last_error_) 281 if (decoder_last_error_)
282 return decoder_last_error_; 282 return decoder_last_error_;
283 if (reset_callback_) 283 if (reset_callback_.get())
284 return PP_ERROR_FAILED; 284 return PP_ERROR_FAILED;
285 if (flush_callback_) 285 if (flush_callback_.get())
286 return PP_ERROR_INPROGRESS; 286 return PP_ERROR_INPROGRESS;
287 flush_callback_ = callback; 287 flush_callback_ = callback;
288 288
289 Call<PpapiPluginMsg_VideoDecoder_FlushReply>( 289 Call<PpapiPluginMsg_VideoDecoder_FlushReply>(
290 RENDERER, 290 RENDERER,
291 PpapiHostMsg_VideoDecoder_Flush(), 291 PpapiHostMsg_VideoDecoder_Flush(),
292 base::Bind(&VideoDecoderResource::OnPluginMsgFlushComplete, this)); 292 base::Bind(&VideoDecoderResource::OnPluginMsgFlushComplete, this));
293 293
294 return PP_OK_COMPLETIONPENDING; 294 return PP_OK_COMPLETIONPENDING;
295 } 295 }
296 296
297 int32_t VideoDecoderResource::Reset(scoped_refptr<TrackedCallback> callback) { 297 int32_t VideoDecoderResource::Reset(scoped_refptr<TrackedCallback> callback) {
298 if (decoder_last_error_) 298 if (decoder_last_error_)
299 return decoder_last_error_; 299 return decoder_last_error_;
300 if (flush_callback_) 300 if (flush_callback_.get())
301 return PP_ERROR_FAILED; 301 return PP_ERROR_FAILED;
302 if (reset_callback_) 302 if (reset_callback_.get())
303 return PP_ERROR_INPROGRESS; 303 return PP_ERROR_INPROGRESS;
304 reset_callback_ = callback; 304 reset_callback_ = callback;
305 305
306 // Cause any pending Decode or GetPicture callbacks to abort after we return, 306 // Cause any pending Decode or GetPicture callbacks to abort after we return,
307 // to avoid reentering the plugin. 307 // to avoid reentering the plugin.
308 if (TrackedCallback::IsPending(decode_callback_)) 308 if (TrackedCallback::IsPending(decode_callback_))
309 decode_callback_->PostAbort(); 309 decode_callback_->PostAbort();
310 decode_callback_ = NULL; 310 decode_callback_ = NULL;
311 if (TrackedCallback::IsPending(get_picture_callback_)) 311 if (TrackedCallback::IsPending(get_picture_callback_))
312 get_picture_callback_->PostAbort(); 312 get_picture_callback_->PostAbort();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 void VideoDecoderResource::OnPluginMsgDecodeComplete( 448 void VideoDecoderResource::OnPluginMsgDecodeComplete(
449 const ResourceMessageReplyParams& params, 449 const ResourceMessageReplyParams& params,
450 uint32_t shm_id) { 450 uint32_t shm_id) {
451 if (shm_id >= shm_buffers_.size()) { 451 if (shm_id >= shm_buffers_.size()) {
452 NOTREACHED(); 452 NOTREACHED();
453 return; 453 return;
454 } 454 }
455 // Make the shm buffer available. 455 // Make the shm buffer available.
456 available_shm_buffers_.push_back(shm_buffers_[shm_id]); 456 available_shm_buffers_.push_back(shm_buffers_[shm_id]);
457 // If the plugin is waiting, let it call Decode again. 457 // If the plugin is waiting, let it call Decode again.
458 if (decode_callback_) { 458 if (decode_callback_.get()) {
459 scoped_refptr<TrackedCallback> callback; 459 scoped_refptr<TrackedCallback> callback;
460 callback.swap(decode_callback_); 460 callback.swap(decode_callback_);
461 callback->Run(PP_OK); 461 callback->Run(PP_OK);
462 } 462 }
463 } 463 }
464 464
465 void VideoDecoderResource::OnPluginMsgFlushComplete( 465 void VideoDecoderResource::OnPluginMsgFlushComplete(
466 const ResourceMessageReplyParams& params) { 466 const ResourceMessageReplyParams& params) {
467 // All shm buffers should have been made available by now. 467 // All shm buffers should have been made available by now.
468 DCHECK_EQ(shm_buffers_.size(), available_shm_buffers_.size()); 468 DCHECK_EQ(shm_buffers_.size(), available_shm_buffers_.size());
469 469
470 if (get_picture_callback_) { 470 if (get_picture_callback_.get()) {
471 scoped_refptr<TrackedCallback> callback; 471 scoped_refptr<TrackedCallback> callback;
472 callback.swap(get_picture_callback_); 472 callback.swap(get_picture_callback_);
473 callback->Abort(); 473 callback->Abort();
474 } 474 }
475 475
476 scoped_refptr<TrackedCallback> callback; 476 scoped_refptr<TrackedCallback> callback;
477 callback.swap(flush_callback_); 477 callback.swap(flush_callback_);
478 callback->Run(params.result()); 478 callback->Run(params.result());
479 } 479 }
480 480
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 pp_picture->texture_target = it->second.texture_target; 522 pp_picture->texture_target = it->second.texture_target;
523 pp_picture->texture_size = it->second.size; 523 pp_picture->texture_size = it->second.size;
524 } else { 524 } else {
525 NOTREACHED(); 525 NOTREACHED();
526 } 526 }
527 received_pictures_.pop(); 527 received_pictures_.pop();
528 } 528 }
529 529
530 } // namespace proxy 530 } // namespace proxy
531 } // namespace ppapi 531 } // namespace ppapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698