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

Unified Diff: content/renderer/pepper/pepper_platform_image_capture.cc

Issue 848863002: PPAPI: implement GetSupportedPreviewSizes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove video_capture_types.* Created 5 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/pepper/pepper_platform_image_capture.cc
diff --git a/content/renderer/pepper/pepper_platform_video_capture.cc b/content/renderer/pepper/pepper_platform_image_capture.cc
similarity index 53%
copy from content/renderer/pepper/pepper_platform_video_capture.cc
copy to content/renderer/pepper/pepper_platform_image_capture.cc
index 0d011f3fdc4217392897e9975df7cadd9f6eb66e..d9b3908d6f88b69c95769003172bf508fc67cbab 100644
--- a/content/renderer/pepper/pepper_platform_video_capture.cc
+++ b/content/renderer/pepper/pepper_platform_image_capture.cc
@@ -1,15 +1,17 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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 "content/renderer/pepper/pepper_platform_video_capture.h"
+#include "content/renderer/pepper/pepper_platform_image_capture.h"
#include "base/bind.h"
+#include "base/callback_helpers.h"
#include "base/logging.h"
#include "base/message_loop/message_loop_proxy.h"
#include "content/renderer/media/video_capture_impl_manager.h"
+#include "content/renderer/pepper/gfx_conversion.h"
+#include "content/renderer/pepper/pepper_image_capture_host.h"
#include "content/renderer/pepper/pepper_media_device_manager.h"
-#include "content/renderer/pepper/pepper_video_capture_host.h"
#include "content/renderer/render_frame_impl.h"
#include "content/renderer/render_thread_impl.h"
#include "media/base/bind_to_current_loop.h"
@@ -17,11 +19,11 @@
namespace content {
-PepperPlatformVideoCapture::PepperPlatformVideoCapture(
+PepperPlatformImageCapture::PepperPlatformImageCapture(
int render_frame_id,
const std::string& device_id,
const GURL& document_url,
- PepperVideoCaptureHost* handler)
+ PepperImageCaptureHost* handler)
: render_frame_id_(render_frame_id),
device_id_(device_id),
session_id_(0),
@@ -37,44 +39,30 @@ PepperPlatformVideoCapture::PepperPlatformVideoCapture(
PP_DEVICETYPE_DEV_VIDEOCAPTURE,
device_id,
document_url,
- base::Bind(&PepperPlatformVideoCapture::OnDeviceOpened,
+ base::Bind(&PepperPlatformImageCapture::OnDeviceOpened,
weak_factory_.GetWeakPtr()));
pending_open_device_ = true;
}
}
-void PepperPlatformVideoCapture::StartCapture(
- const media::VideoCaptureParams& params) {
+void PepperPlatformImageCapture::GetPreviewSizes() {
DCHECK(thread_checker_.CalledOnValidThread());
- if (!stop_capture_cb_.is_null())
- return;
+
VideoCaptureImplManager* manager =
RenderThreadImpl::current()->video_capture_impl_manager();
- stop_capture_cb_ =
- manager->StartCapture(session_id_,
- params,
- media::BindToCurrentLoop(base::Bind(
- &PepperPlatformVideoCapture::OnStateUpdate,
- weak_factory_.GetWeakPtr())),
- media::BindToCurrentLoop(base::Bind(
- &PepperPlatformVideoCapture::OnFrameReady,
- weak_factory_.GetWeakPtr())));
-}
-
-void PepperPlatformVideoCapture::StopCapture() {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (stop_capture_cb_.is_null())
- return;
- stop_capture_cb_.Run();
- stop_capture_cb_.Reset();
+ manager->GetDeviceSupportedFormats(
+ session_id_,
+ media::BindToCurrentLoop(
+ base::Bind(
+ &PepperPlatformImageCapture::OnDeviceSupportedFormatsEnumerated,
+ weak_factory_.GetWeakPtr())));
}
-void PepperPlatformVideoCapture::DetachEventHandler() {
+void PepperPlatformImageCapture::DetachEventHandler() {
wuchengli 2015/01/29 13:52:14 Add DCHECK(thread_checker_.CalledOnValidThread());
Justin Chuang 2015/02/02 08:43:44 Done.
handler_ = NULL;
- StopCapture();
+
if (!release_device_cb_.is_null()) {
- release_device_cb_.Run();
- release_device_cb_.Reset();
+ base::ResetAndReturn(&release_device_cb_).Run();
}
if (!label_.empty()) {
PepperMediaDeviceManager* const device_manager = GetMediaDeviceManager();
@@ -91,16 +79,20 @@ void PepperPlatformVideoCapture::DetachEventHandler() {
}
}
-PepperPlatformVideoCapture::~PepperPlatformVideoCapture() {
- DCHECK(stop_capture_cb_.is_null());
+PepperPlatformImageCapture::~PepperPlatformImageCapture() {
DCHECK(release_device_cb_.is_null());
DCHECK(label_.empty());
DCHECK(!pending_open_device_);
}
-void PepperPlatformVideoCapture::OnDeviceOpened(int request_id,
+void PepperPlatformImageCapture::OnDeviceOpened(int request_id,
bool succeeded,
const std::string& label) {
+ if (!handler_) {
+ NOTREACHED();
+ return;
+ }
+
pending_open_device_ = false;
pending_open_device_id_ = -1;
@@ -115,44 +107,29 @@ void PepperPlatformVideoCapture::OnDeviceOpened(int request_id,
release_device_cb_ = manager->UseDevice(session_id_);
}
- if (handler_)
- handler_->OnInitialized(succeeded);
+ handler_->OnInitialized(succeeded);
}
-void PepperPlatformVideoCapture::OnStateUpdate(VideoCaptureState state) {
- if (!handler_)
+void PepperPlatformImageCapture::OnDeviceSupportedFormatsEnumerated(
+ const media::VideoCaptureFormats& formats) {
+ if (!handler_) {
+ NOTREACHED();
return;
- switch (state) {
- case VIDEO_CAPTURE_STATE_STARTED:
- handler_->OnStarted();
- break;
- case VIDEO_CAPTURE_STATE_STOPPED:
- handler_->OnStopped();
- break;
- case VIDEO_CAPTURE_STATE_PAUSED:
- handler_->OnPaused();
- break;
- case VIDEO_CAPTURE_STATE_ERROR:
- handler_->OnError();
- break;
- default:
- NOTREACHED() << "Unexpected state: " << state << ".";
}
-}
-void PepperPlatformVideoCapture::OnFrameReady(
- const scoped_refptr<media::VideoFrame>& frame,
- const media::VideoCaptureFormat& format,
- const base::TimeTicks& estimated_capture_time) {
- if (handler_ && !stop_capture_cb_.is_null())
- handler_->OnFrameReady(frame, format);
+ std::vector<PP_Size> sizes;
+ for (media::VideoCaptureFormats::const_iterator it = formats.begin();
+ it != formats.end(); it++) {
+ sizes.push_back(PP_FromGfxSize(it->frame_size));
+ }
+ handler_->OnPlatformPreviewSizesEnumerated(sizes);
}
-PepperMediaDeviceManager* PepperPlatformVideoCapture::GetMediaDeviceManager() {
+PepperMediaDeviceManager* PepperPlatformImageCapture::GetMediaDeviceManager() {
RenderFrameImpl* const render_frame =
RenderFrameImpl::FromRoutingID(render_frame_id_);
- return render_frame ?
- PepperMediaDeviceManager::GetForRenderFrame(render_frame).get() : NULL;
+ return render_frame
+ ? PepperMediaDeviceManager::GetForRenderFrame(render_frame).get() : NULL;
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698