Home | History | Annotate | Download | only in dev
      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
      3  * found in the LICENSE file.
      4  */
      5 
      6 /* From dev/ppb_device_ref_dev.idl modified Wed Nov 07 13:28:37 2012. */
      7 
      8 #ifndef PPAPI_C_DEV_PPB_DEVICE_REF_DEV_H_
      9 #define PPAPI_C_DEV_PPB_DEVICE_REF_DEV_H_
     10 
     11 #include "ppapi/c/pp_bool.h"
     12 #include "ppapi/c/pp_macros.h"
     13 #include "ppapi/c/pp_resource.h"
     14 #include "ppapi/c/pp_stdint.h"
     15 #include "ppapi/c/pp_var.h"
     16 
     17 #define PPB_DEVICEREF_DEV_INTERFACE_0_1 "PPB_DeviceRef(Dev);0.1"
     18 #define PPB_DEVICEREF_DEV_INTERFACE PPB_DEVICEREF_DEV_INTERFACE_0_1
     19 
     20 /**
     21  * @file
     22  * This file defines the <code>PPB_DeviceRef_Dev</code> interface.
     23  */
     24 
     25 
     26 /**
     27  * @addtogroup Typedefs
     28  * @{
     29  */
     30 /**
     31  * Defines the callback type to receive device change notifications for
     32  * <code>PPB_AudioInput_Dev.MonitorDeviceChange()</code> and
     33  * <code>PPB_VideoCapture_Dev.MonitorDeviceChange()</code>.
     34  *
     35  * @param[inout] user_data The opaque pointer that the caller passed into
     36  * <code>MonitorDeviceChange()</code>.
     37  * @param[in] device_count How many devices in the array.
     38  * @param[in] devices An array of <code>PPB_DeviceRef_Dev</code>. Please note
     39  * that the ref count of the elements is not increased on behalf of the plugin.
     40  */
     41 typedef void (*PP_MonitorDeviceChangeCallback)(void* user_data,
     42                                                uint32_t device_count,
     43                                                const PP_Resource devices[]);
     44 /**
     45  * @}
     46  */
     47 
     48 /**
     49  * @addtogroup Enums
     50  * @{
     51  */
     52 /**
     53  * Device types.
     54  */
     55 typedef enum {
     56   PP_DEVICETYPE_DEV_INVALID = 0,
     57   PP_DEVICETYPE_DEV_AUDIOCAPTURE = 1,
     58   PP_DEVICETYPE_DEV_VIDEOCAPTURE = 2
     59 } PP_DeviceType_Dev;
     60 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_DeviceType_Dev, 4);
     61 /**
     62  * @}
     63  */
     64 
     65 /**
     66  * @addtogroup Interfaces
     67  * @{
     68  */
     69 struct PPB_DeviceRef_Dev_0_1 {
     70   /**
     71    * Determines if the provided resource is a device reference.
     72    *
     73    * @param[in] resource A <code>PP_Resource</code> corresponding to a generic
     74    * resource.
     75    *
     76    * @return A <code>PP_Bool</code> that is <code>PP_TRUE</code> if the given
     77    * resource is a device reference, otherwise <code>PP_FALSE</code>.
     78    */
     79   PP_Bool (*IsDeviceRef)(PP_Resource resource);
     80   /**
     81    * Gets the device type.
     82    *
     83    * @param[in] device_ref A <code>PP_Resource</code> corresponding to a device
     84    * reference.
     85    *
     86    * @return A <code>PP_DeviceType_Dev</code> value.
     87    */
     88   PP_DeviceType_Dev (*GetType)(PP_Resource device_ref);
     89   /**
     90    * Gets the device name.
     91    *
     92    * @param[in] device_ref A <code>PP_Resource</code> corresponding to a device
     93    * reference.
     94    *
     95    * @return A <code>PP_Var</code> of type <code>PP_VARTYPE_STRING</code>
     96    * containing the name of the device if successful; a <code>PP_Var</code> of
     97    * type <code>PP_VARTYPE_UNDEFINED</code> if failed.
     98    */
     99   struct PP_Var (*GetName)(PP_Resource device_ref);
    100 };
    101 
    102 typedef struct PPB_DeviceRef_Dev_0_1 PPB_DeviceRef_Dev;
    103 /**
    104  * @}
    105  */
    106 
    107 #endif  /* PPAPI_C_DEV_PPB_DEVICE_REF_DEV_H_ */
    108 
    109