blob: e318f4e562b8eed71b2932d23dd257f5feba1152 [file] [log] [blame]
// 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.
struct Range {
double max;
double min;
double current;
double step;
enum RedEyeReduction { NEVER, ALWAYS, CONTROLLABLE };
enum FillLightMode { OFF, AUTO, FLASH };
// Equivalent to idl's MediaTrackCapabilities plus PhotoCapabilities and their
// associated settings.
struct PhotoState {
// and
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 color_temperature;
Range iso;
Range brightness;
Range contrast;
Range saturation;
Range sharpness;
Range zoom;
bool supports_torch;
bool torch;
// and
RedEyeReduction red_eye_reduction;
Range height;
Range width;
array<FillLightMode> fill_light_mode;
// Equivalent to idl Point2D.
// TODO(mcasas): use gfx::mojom::PointF after
struct Point2D {
float x;
float y;
// Equivalent to idl PhotoSettings + MediaTrackSettings/MediaTrackConstraintSet.
// PODs cannot be nullable, i.e. uint32? bla doesn't work, use |has_bla| flags.
struct PhotoSettings {
// and
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_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_zoom;
double zoom;
bool has_torch;
bool torch;
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.
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.
GetPhotoState(string source_id)
=> (PhotoState state);
// Sets the |settings| on the associated video capture device.
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|.
TakePhoto(string source_id)
=> (Blob blob);