1c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu// Use of this source code is governed by a BSD-style license that can be 3c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu// found in the LICENSE file. 4c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu 5c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu#ifndef PPAPI_CPP_DEV_VIDEO_CAPTURE_DEV_H_ 6c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu#define PPAPI_CPP_DEV_VIDEO_CAPTURE_DEV_H_ 7c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu 8c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu#include <vector> 9c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu 109b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#include "ppapi/c/dev/pp_video_capture_dev.h" 11c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu#include "ppapi/cpp/completion_callback.h" 12c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu#include "ppapi/cpp/dev/device_ref_dev.h" 139ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremenek#include "ppapi/cpp/resource.h" 14c6238d2786cfd961b94580b3d3675a1b3ff0721cZhongxing Xu 1599ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikienamespace pp { 1699ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 17d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikieclass InstanceHandle; 18ef3643fbbbf66247c5e205497fae0f46e240c143David Blaikie 19c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenekclass VideoCapture_Dev : public Resource { 204fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek public: 214fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek explicit VideoCapture_Dev(const InstanceHandle& instance); 224fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek VideoCapture_Dev(PP_Resource resource); 23255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek 24255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek virtual ~VideoCapture_Dev(); 255a1ffe98b04120846a15f7105905b5f363b08635Jordan Rose 265a1ffe98b04120846a15f7105905b5f363b08635Jordan Rose // Returns true if the required interface is available. 27a43df9539644bf1c258e12710cd69d79b0b078cdTed Kremenek static bool IsAvailable(); 28a43df9539644bf1c258e12710cd69d79b0b078cdTed Kremenek 29255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek int32_t EnumerateDevices( 30255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& 31255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek callback); 32c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek int32_t MonitorDeviceChange(PP_MonitorDeviceChangeCallback callback, 334fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek void* user_data); 347b73e0832b20af1f43601a3d19e76d02d9f4dce5Ted Kremenek int32_t Open(const DeviceRef_Dev& device_ref, 35255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek const PP_VideoCaptureDeviceInfo_Dev& requested_info, 36882998923889a2fcce9b49696506c499e22cf38fTed Kremenek uint32_t buffer_count, 374fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek const CompletionCallback& callback); 384fed22cdd8bb7d98127853ebb3f42be66bf2ce59Ted Kremenek int32_t StartCapture(); 39c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek int32_t ReuseBuffer(uint32_t buffer); 40c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek int32_t StopCapture(); 41c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek void Close(); 42c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek}; 43c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek 44c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek} // namespace pp 45c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek 46c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek#endif // PPAPI_CPP_DEV_VIDEO_CAPTURE_DEV_H_ 47c4bac8e376b98d633bb00ee5f510d5e58449753cTed Kremenek