| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module media.mojom; |
| |
| // Equivalent to idl MediaSettingsRange, arbitrary range representing the |
| // allowed variations of a Capability or an Option. |
| // https://w3c.github.io/mediacapture-image/#mediasettingsrange-section |
| [Stable] |
| struct Range { |
| double max; |
| double min; |
| double current; |
| double step; |
| }; |
| |
| // https://w3c.github.io/mediacapture-image/#meteringmode-section |
| [Stable, Extensible] |
| enum MeteringMode { NONE, MANUAL, SINGLE_SHOT, CONTINUOUS }; |
| |
| // https://w3c.github.io/mediacapture-image/#redeyereduction-section |
| [Stable, Extensible] |
| enum RedEyeReduction { NEVER, ALWAYS, CONTROLLABLE }; |
| |
| // https://www.w3.org/TR/image-capture/#FillLightMode |
| [Stable, Extensible] |
| enum FillLightMode { OFF, AUTO, FLASH }; |
| |
| // Equivalent to idl's MediaTrackCapabilities plus PhotoCapabilities and their |
| // associated settings. |
| [Stable] |
| struct PhotoState { |
| // https://w3c.github.io/mediacapture-image/#mediatrackcapabilities-section |
| // and https://w3c.github.io/mediacapture-image/#mediatracksettings-section |
| array<MeteringMode> supported_white_balance_modes; |
| MeteringMode current_white_balance_mode; |
| array<MeteringMode> supported_exposure_modes; |
| MeteringMode current_exposure_mode; |
| array<MeteringMode> supported_focus_modes; |
| MeteringMode current_focus_mode; |
| array<Point2D> points_of_interest; |
| |
| Range exposure_compensation; |
| Range exposure_time; |
| Range color_temperature; |
| Range iso; |
| |
| Range brightness; |
| Range contrast; |
| Range saturation; |
| Range sharpness; |
| |
| Range focus_distance; |
| |
| Range pan; |
| Range tilt; |
| Range zoom; |
| |
| bool supports_torch; |
| bool torch; |
| |
| // https://w3c.github.io/mediacapture-image/##photocapabilities-section and |
| // https://w3c.github.io/mediacapture-image/##photosettings-section |
| RedEyeReduction red_eye_reduction; |
| Range height; |
| Range width; |
| array<FillLightMode> fill_light_mode; |
| }; |
| |
| // Equivalent to idl Point2D. |
| // https://w3c.github.io/mediacapture-image/#point2d-section |
| // TODO(mcasas): use gfx::mojom::PointF after https://crbug.com/640049. |
| [Stable] |
| struct Point2D { |
| double x; |
| double y; |
| }; |
| |
| // Equivalent to idl PhotoSettings + MediaTrackSettings/MediaTrackConstraintSet. |
| // PODs cannot be nullable, i.e. uint32? bla doesn't work, use |has_bla| flags. |
| [Stable] |
| struct PhotoSettings { |
| // https://w3c.github.io/mediacapture-image/#mediatracksettings-section and |
| // https://w3c.github.io/mediacapture-image/#mediatrackconstraintset-section |
| bool has_white_balance_mode; |
| MeteringMode white_balance_mode; |
| bool has_exposure_mode; |
| MeteringMode exposure_mode; |
| bool has_focus_mode; |
| MeteringMode focus_mode; |
| array<Point2D> points_of_interest; |
| |
| bool has_exposure_compensation; |
| double exposure_compensation; |
| bool has_exposure_time; |
| double exposure_time; |
| bool has_color_temperature; |
| double color_temperature; |
| bool has_iso; |
| double iso; |
| |
| bool has_brightness; |
| double brightness; |
| bool has_contrast; |
| double contrast; |
| bool has_saturation; |
| double saturation; |
| bool has_sharpness; |
| double sharpness; |
| |
| bool has_focus_distance; |
| double focus_distance; |
| |
| bool has_pan; |
| double pan; |
| bool has_tilt; |
| double tilt; |
| bool has_zoom; |
| double zoom; |
| |
| bool has_torch; |
| bool torch; |
| |
| // https://w3c.github.io/mediacapture-image/##photosettings-section |
| bool has_fill_light_mode; |
| FillLightMode fill_light_mode; |
| bool has_width; |
| double width; |
| bool has_height; |
| double height; |
| bool has_red_eye_reduction; |
| bool red_eye_reduction; |
| }; |
| |
| // This is a mojo move-only equivalent of a Blob, i.e. MIME type and Data. |
| [Stable] |
| struct Blob { |
| string mime_type; |
| array<uint8> data; |
| }; |
| |
| // |source_id| is the renderer-side UUID identifier of the image capture device. |
| interface ImageCapture |
| { |
| // Retrieves the image capture device capabilities and current settings. |
| // https://www.w3.org/TR/image-capture/#dom-imagecapture-getphotocapabilities |
| GetPhotoState(string source_id) |
| => (PhotoState state); |
| |
| // Sets the |settings| on the associated video capture device. |
| // https://www.w3.org/TR/image-capture/#dom-imagecapture-setoptions |
| SetOptions(string source_id, PhotoSettings settings) |
| => (bool success); |
| |
| // Takes a Photo from the given |source_id|, returning it encoded in |blob| |
| // with the format specified in its |mime_type|. |
| // https://www.w3.org/TR/image-capture/#dom-imagecapture-takephoto |
| TakePhoto(string source_id) |
| => (Blob blob); |
| }; |