OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/ppb_video_capture_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 if (!resources[i]) | 212 if (!resources[i]) |
213 break; | 213 break; |
214 | 214 |
215 EnterResourceNoLock<PPB_Buffer_API> enter(resources[i], true); | 215 EnterResourceNoLock<PPB_Buffer_API> enter(resources[i], true); |
216 DCHECK(enter.succeeded()); | 216 DCHECK(enter.succeeded()); |
217 | 217 |
218 BufferInfo info; | 218 BufferInfo info; |
219 info.buffer = static_cast<PPB_Buffer_Impl*>(enter.object()); | 219 info.buffer = static_cast<PPB_Buffer_Impl*>(enter.object()); |
220 info.data = info.buffer->Map(); | 220 info.data = info.buffer->Map(); |
221 if (!info.data) { | 221 if (!info.data) { |
222 ResourceTracker::Get()->UnrefResource(resources[i]); | 222 ResourceTracker::Get()->ReleaseResource(resources[i]); |
223 break; | 223 break; |
224 } | 224 } |
225 buffers_.push_back(info); | 225 buffers_.push_back(info); |
226 } | 226 } |
227 | 227 |
228 if (buffers_.empty()) { | 228 if (buffers_.empty()) { |
229 // We couldn't allocate/map buffers at all. Send an error and stop the | 229 // We couldn't allocate/map buffers at all. Send an error and stop the |
230 // capture. | 230 // capture. |
231 ppp_videocapture_->OnError(instance()->pp_instance(), | 231 ppp_videocapture_->OnError(instance()->pp_instance(), |
232 ScopedResourceId(this).id, | 232 ScopedResourceId(this).id, |
233 PP_ERROR_NOMEMORY); | 233 PP_ERROR_NOMEMORY); |
234 status_ = PP_VIDEO_CAPTURE_STATUS_STOPPING; | 234 status_ = PP_VIDEO_CAPTURE_STATUS_STOPPING; |
235 platform_video_capture_->StopCapture(this); | 235 platform_video_capture_->StopCapture(this); |
236 return; | 236 return; |
237 } | 237 } |
238 | 238 |
239 ppp_videocapture_->OnDeviceInfo(instance()->pp_instance(), | 239 ppp_videocapture_->OnDeviceInfo(instance()->pp_instance(), |
240 ScopedResourceId(this).id, | 240 ScopedResourceId(this).id, |
241 &info, | 241 &info, |
242 buffers_.size(), | 242 buffers_.size(), |
243 resources.get()); | 243 resources.get()); |
244 } | 244 } |
245 | 245 |
246 void PPB_VideoCapture_Impl::ReleaseBuffers() { | 246 void PPB_VideoCapture_Impl::ReleaseBuffers() { |
247 ResourceTracker *tracker = ResourceTracker::Get(); | 247 ResourceTracker *tracker = ResourceTracker::Get(); |
248 for (size_t i = 0; i < buffers_.size(); ++i) { | 248 for (size_t i = 0; i < buffers_.size(); ++i) { |
249 buffers_[i].buffer->Unmap(); | 249 buffers_[i].buffer->Unmap(); |
250 tracker->UnrefResource(buffers_[i].buffer->GetReferenceNoAddRef()); | 250 tracker->ReleaseResource(buffers_[i].buffer->pp_resource()); |
251 } | 251 } |
252 buffers_.clear(); | 252 buffers_.clear(); |
253 } | 253 } |
254 | 254 |
255 void PPB_VideoCapture_Impl::SendStatus() { | 255 void PPB_VideoCapture_Impl::SendStatus() { |
256 ppp_videocapture_->OnStatus(instance()->pp_instance(), | 256 ppp_videocapture_->OnStatus(instance()->pp_instance(), |
257 ScopedResourceId(this).id, | 257 ScopedResourceId(this).id, |
258 status_); | 258 status_); |
259 } | 259 } |
260 | 260 |
261 PPB_VideoCapture_Impl::BufferInfo::BufferInfo() | 261 PPB_VideoCapture_Impl::BufferInfo::BufferInfo() |
262 : in_use(false), | 262 : in_use(false), |
263 data(NULL), | 263 data(NULL), |
264 buffer() { | 264 buffer() { |
265 } | 265 } |
266 | 266 |
267 PPB_VideoCapture_Impl::BufferInfo::~BufferInfo() { | 267 PPB_VideoCapture_Impl::BufferInfo::~BufferInfo() { |
268 } | 268 } |
269 | 269 |
270 } // namespace ppapi | 270 } // namespace ppapi |
271 } // namespace webkit | 271 } // namespace webkit |
OLD | NEW |