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>PPP_VideoCapture_Dev</code> interface.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  M15 = 0.1
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Video Capture client interface. See |PPB_VideoCapture_Dev| for general theory
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of operation.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[macro="PPP_VIDEO_CAPTURE_DEV_INTERFACE"]
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPP_VideoCapture_Dev {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Signals the capture device information, such as resolution and frame rate,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * and the array of buffers that the browser will use to send pixel data.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |info| is a pointer to the PP_VideoCaptureDeviceInfo_Dev structure
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * containing resolution and frame rate.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |buffer_count| is the number of buffers, and |buffers| is the array of
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * PPB_Buffer_Dev buffers.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Note: the buffers are passed without an extra reference. The plugin is
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * expected to add its own references to the buffers.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDeviceInfo([in] PP_Instance instance,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    [in] PP_Resource video_capture,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    [in] PP_VideoCaptureDeviceInfo_Dev info,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    [in] uint32_t buffer_count,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    [in, size_is(buffer_count)] PP_Resource[] buffers);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Signals status changes on the VideoCapture. |status| is a
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * one of the values from PP_VideoCaptureStatus_Dev;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnStatus([in] PP_Instance instance,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                [in] PP_Resource video_capture,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                [in] uint32_t status);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Signals an error from the video capture system.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Errors that can be generated:
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * - PP_ERROR_NOMEMORY: not enough memory was available to allocate buffers.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * - PP_ERROR_FAILED: video capture could not start.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnError([in] PP_Instance instance,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               [in] PP_Resource video_capture,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               [in] uint32_t error_code);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Signals that a buffer is available for consumption by the plugin.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * |buffer| is the index of the buffer, in the array returned by OnDeviceInfo.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnBufferReady([in] PP_Instance instance,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     [in] PP_Resource video_capture,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     [in] uint32_t buffer);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
65