1/* Copyright 2014 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 private/ppb_camera_capabilities_private.idl,
7 *   modified Fri Aug 22 11:08:14 2014.
8 */
9
10#ifndef PPAPI_C_PRIVATE_PPB_CAMERA_CAPABILITIES_PRIVATE_H_
11#define PPAPI_C_PRIVATE_PPB_CAMERA_CAPABILITIES_PRIVATE_H_
12
13#include "ppapi/c/pp_bool.h"
14#include "ppapi/c/pp_instance.h"
15#include "ppapi/c/pp_macros.h"
16#include "ppapi/c/pp_resource.h"
17#include "ppapi/c/pp_size.h"
18#include "ppapi/c/pp_stdint.h"
19
20#define PPB_CAMERACAPABILITIES_PRIVATE_INTERFACE_0_1 \
21    "PPB_CameraCapabilities_Private;0.1"
22#define PPB_CAMERACAPABILITIES_PRIVATE_INTERFACE \
23    PPB_CAMERACAPABILITIES_PRIVATE_INTERFACE_0_1
24
25/**
26 * @file
27 * This file defines the PPB_CameraCapabilities_Private interface for
28 * establishing an image capture configuration resource within the browser.
29 */
30
31
32/**
33 * @addtogroup Interfaces
34 * @{
35 */
36/**
37 * The <code>PPB_CameraCapabilities_Private</code> interface contains pointers
38 * to several functions for getting the image capture capabilities within the
39 * browser.
40 */
41struct PPB_CameraCapabilities_Private_0_1 {
42  /**
43   * Creates a PPB_CameraCapabilities_Private resource.
44   *
45   * @param[in] instance A <code>PP_Instance</code> identifying one instance of
46   * a module.
47   *
48   * @return A <code>PP_Resource</code> corresponding to a
49   * PPB_CameraCapabilities_Private resource if successful, 0 if failed.
50   */
51  PP_Resource (*Create)(PP_Instance instance);
52  /**
53   * IsCameraCapabilities() determines if the given resource is a
54   * <code>PPB_CameraCapabilities_Private</code>.
55   *
56   * @param[in] resource A <code>PP_Resource</code> corresponding to an image
57   * capture capabilities resource.
58   *
59   * @return A <code>PP_Bool</code> containing <code>PP_TRUE</code> if the given
60   * resource is an <code>PP_CameraCapabilities_Private</code> resource,
61   * otherwise <code>PP_FALSE</code>.
62   */
63  PP_Bool (*IsCameraCapabilities)(PP_Resource resource);
64  /**
65   * GetSupportedPreviewSizes() returns the supported preview sizes for the
66   * given <code>PPB_CameraCapabilities_Private</code>.
67   *
68   * @param[in] capabilities A <code>PP_Resource</code> corresponding to an
69   * image capture capabilities resource.
70   * @param[out] array_size The size of preview size array.
71   * @param[out] preview_sizes An array of <code>PP_Size</code> corresponding
72   * to the supported preview sizes in pixels. The ownership of the array
73   * belongs to <code>PPB_CameraCapabilities_Private</code> and the caller
74   * should not free it. When a PPB_CameraCapabilities_Private is deleted,
75   * the array returning from this is no longer valid.
76   */
77  void (*GetSupportedPreviewSizes)(PP_Resource capabilities,
78                                   int32_t* array_size,
79                                   struct PP_Size** preview_sizes);
80  /**
81   * GetSupportedJpegSize() returns the supported JPEG sizes for the given
82   * <code>PPB_CameraCapabilities_Private</code>.
83   *
84   * @param[in] capabilities A <code>PP_Resource</code> corresponding to an
85   * image capture capabilities resource.
86   * @param[out] array_size The size of JPEG size array. If the output of this
87   * is 0, the camera has no support for generating JPEG images.
88   * @param[out] jpeg_sizes An array of <code>PP_Size</code> corresponding to
89   * the supported JPEG image sizes in pixels. The ownership of the array
90   * belongs to <code>PPB_CameraCapabilities_Private</code> and the caller
91   * should not free it. When a PPB_CameraCapabilities_Private is deleted, the
92   * array returning from this is no longer valid.
93   */
94  void (*GetSupportedJpegSizes)(PP_Resource capabilities,
95                                int32_t* array_size,
96                                struct PP_Size** jpeg_sizes);
97};
98
99typedef struct PPB_CameraCapabilities_Private_0_1
100    PPB_CameraCapabilities_Private;
101/**
102 * @}
103 */
104
105#endif  /* PPAPI_C_PRIVATE_PPB_CAMERA_CAPABILITIES_PRIVATE_H_ */
106
107