15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_DeviceRef_Dev</code> interface. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)[generate_thunk] 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) M18 = 0.1 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Defines the callback type to receive device change notifications for 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>PPB_AudioInput_Dev.MonitorDeviceChange()</code> and 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>PPB_VideoCapture_Dev.MonitorDeviceChange()</code>. 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[inout] user_data The opaque pointer that the caller passed into 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>MonitorDeviceChange()</code>. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] device_count How many devices in the array. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] devices An array of <code>PPB_DeviceRef_Dev</code>. Please note 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * that the ref count of the elements is not increased on behalf of the plugin. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef void PP_MonitorDeviceChangeCallback( 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [inout] mem_t user_data, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [in] uint32_t device_count, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [in, size_is(device_count)] PP_Resource[] devices); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Device types. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[assert_size(4)] 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PP_DeviceType_Dev { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DEVICETYPE_DEV_INVALID = 0, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DEVICETYPE_DEV_AUDIOCAPTURE = 1, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DEVICETYPE_DEV_VIDEOCAPTURE = 2 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPB_DeviceRef_Dev { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Determines if the provided resource is a device reference. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a generic 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Bool</code> that is <code>PP_TRUE</code> if the given 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource is a device reference, otherwise <code>PP_FALSE</code>. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool IsDeviceRef([in] PP_Resource resource); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets the device type. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] device_ref A <code>PP_Resource</code> corresponding to a device 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * reference. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_DeviceType_Dev</code> value. 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [on_failure=PP_DEVICETYPE_DEV_INVALID] 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_DeviceType_Dev GetType([in] PP_Resource device_ref); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets the device name. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] device_ref A <code>PP_Resource</code> corresponding to a device 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * reference. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> of type <code>PP_VARTYPE_STRING</code> 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * containing the name of the device if successful; a <code>PP_Var</code> of 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * type <code>PP_VARTYPE_UNDEFINED</code> if failed. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Var GetName([in] PP_Resource device_ref); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 77