// Copyright 2014 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;

import "gpu/ipc/common/mailbox_holder.mojom";
import "mojo/public/mojom/base/time.mojom";
import "mojo/public/mojom/base/values.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
import "ui/gfx/mojo/color_space.mojom";

// See media/base/audio_codecs.h for descriptions.
[Native]
enum AudioCodec;

// See media/base/buffering_state.h for descriptions.
[Native]
enum BufferingState;

// See media/base/channel_layout.h for descriptions.
[Native]
enum ChannelLayout;

// See media/base/video_types.h for descriptions.
[Native]
enum ColorSpace;

// See media/base/decode_status.h for descriptions.
[Native]
enum DecodeStatus;

// See media/base/media_log_event.h for description.
[Native]
struct MediaLogEvent;

// See media/base/output_device_info.h for descriptions.
[Native]
enum OutputDeviceStatus;

// See media/base/pipeline_status.h for descriptions.
[Native]
enum PipelineStatus;

// See media/base/sample_format.h for descriptions.
[Native]
enum SampleFormat;

// See media/base/video_codecs.h for descriptions.
[Native]
enum VideoCodec;

// See media/base/video_codecs.h for descriptions.
[Native]
enum VideoCodecProfile;

// See media/base/video_types.h for descriptions.
[Native]
enum VideoPixelFormat;

// See media/base/video_rotation.h for descriptions.
[Native]
enum VideoRotation;

// See media/base/waiting.h for descriptions.
[Native]
enum WaitingReason;

// See media/base/watch_time_keys.h for descriptions.
[Native]
enum WatchTimeKey;

// See media/base/decrypt_config.h for descriptions.
[Native]
enum EncryptionMode;

// See media/base/container_names.h for descriptions.
[Native]
enum MediaContainerName;

// This defines a mojo transport format for media::EncryptionPattern
// See media/base/encryption_pattern.h for description.
struct EncryptionPattern {
  uint32 crypt_byte_block;
  uint32 skip_byte_block;
};

// This defines a mojo transport format for media::EncryptionScheme.
// See media/base/encryption_scheme.h for description.
struct EncryptionScheme {
  [Native]
  enum CipherMode;

  CipherMode mode;
  EncryptionPattern pattern;
};

// This defines a mojo transport format for media::VideoColorSpace.
// See media/base/video_color_space.h for description.
struct VideoColorSpace {
  [Native]
  enum PrimaryID;

  [Native]
  enum TransferID;

  [Native]
  enum MatrixID;

  [Native]
  enum RangeID;

  PrimaryID primaries;
  TransferID transfer;
  MatrixID matrix;
  RangeID range;
};

// This defines a mojo transport format for media::HDRMetadata.
// See media/base/hdr_metadata.h for description.
struct MasteringMetadata {
  gfx.mojom.PointF primary_r;
  gfx.mojom.PointF primary_g;
  gfx.mojom.PointF primary_b;
  gfx.mojom.PointF white_point;
  float luminance_max;
  float luminance_min;
};

struct HDRMetadata {
  MasteringMetadata mastering_metadata;
  uint32 max_content_light_level;
  uint32 max_frame_average_light_level;
};

// This defines a mojo transport format for media::AudioDecoderConfig.
// See media/base/audio_decoder_config.h for descriptions.
struct AudioDecoderConfig {
  AudioCodec codec;
  SampleFormat sample_format;
  ChannelLayout channel_layout;
  int32 samples_per_second;
  array<uint8> extra_data;
  mojo_base.mojom.TimeDelta seek_preroll;
  int32 codec_delay;
  EncryptionScheme encryption_scheme;
};

// This defines a mojo transport format for media::VideoDecoderConfig.
// See media/base/video_decoder_config.h for descriptions.
struct VideoDecoderConfig {
  VideoCodec codec;
  VideoCodecProfile profile;
  VideoPixelFormat format;
  VideoRotation video_rotation;
  gfx.mojom.Size coded_size;
  gfx.mojom.Rect visible_rect;
  gfx.mojom.Size natural_size;
  array<uint8> extra_data;
  EncryptionScheme encryption_scheme;
  VideoColorSpace color_space_info;
  HDRMetadata? hdr_metadata;
};

// Native struct media::SubsampleEntry;
[Native]
struct SubsampleEntry;

// This defines a mojo transport format for media::DecryptConfig.
// See media/base/decrypt_config.h for descriptions.
struct DecryptConfig {
  EncryptionMode encryption_mode;
  string key_id;
  string iv;
  array<SubsampleEntry> subsamples;
  EncryptionPattern? encryption_pattern;
};

// This defines a mojo transport format for media::DecoderBuffer.
struct DecoderBuffer {
  mojo_base.mojom.TimeDelta timestamp;
  mojo_base.mojom.TimeDelta duration;

  // Whether the buffer is an end-of-stream (EOS) buffer.
  bool is_end_of_stream;

  // The number of bytes present in this buffer. The data is not serialized
  // along with this structure and must be read from a separate DataPipe.
  // Note that |data_size| could be zero even for a non-EOS buffer (e.g.
  // with non-empty |size_data|). See http://crbug.com/663438
  uint32 data_size;

  // Indicates whether or not this buffer is a random access point.
  bool is_key_frame;

  // Empty when |side_data| doesn't exist.
  array<uint8> side_data;

  // DecryptConfig for a encrypted buffer. NULL if the buffer is not encrypted.
  DecryptConfig? decrypt_config;

  // These fields indicate the amount of data to discard after decoding.
  mojo_base.mojom.TimeDelta front_discard;
  mojo_base.mojom.TimeDelta back_discard;
};

// This defines a mojo transport format for media::AudioBuffer.
struct AudioBuffer {
  // Format of the audio.
  SampleFormat sample_format;

  // How the channels are laid out.
  ChannelLayout channel_layout;

  // Number of channels.
  int32 channel_count;

  // Sample rate of the buffer.
  int32 sample_rate;

  // Number of frames in the buffer.
  int32 frame_count;

  // True if end of stream.
  bool end_of_stream;

  // Timestamp in microseconds of the first frame.
  mojo_base.mojom.TimeDelta timestamp;

  // Channel data. Will be empty for EOS buffers.
  array<uint8> data;
};

// This defines a mojo transport format for media::VideoFrame.
struct VideoFrame {
  // Format of the frame.
  VideoPixelFormat format;

  // Width and height of the video frame, in pixels.
  gfx.mojom.Size coded_size;

  // Visible size of the frame.
  gfx.mojom.Rect visible_rect;

  // Natural size of the frame.
  gfx.mojom.Size natural_size;

  // Timestamp in microseconds of the associated frame.
  mojo_base.mojom.TimeDelta timestamp;

  // Contents of the video frame (or EOS marker).
  VideoFrameData data;

  // Extra properties associated with the VideoFrame.
  mojo_base.mojom.DictionaryValue metadata;

  gfx.mojom.ColorSpace color_space;
};

// Possible choices for storing VideoFrame data.
union VideoFrameData {
  EosVideoFrameData eos_data;
  SharedBufferVideoFrameData shared_buffer_data;
  MailboxVideoFrameData mailbox_data;
};

// A marker for EOS frames.
struct EosVideoFrameData {
};

// This defines video frame data stored in a Mojo shared buffer.
struct SharedBufferVideoFrameData {
  // Reference to the shared memory containing the frame's data.
  handle<shared_buffer> frame_data;
  uint64 frame_data_size;

  // Stride and offsets for each plane. Offsets are relative to the start
  // of |frame_data|.
  int32 y_stride;
  int32 u_stride;
  int32 v_stride;
  uint64 y_offset;
  uint64 u_offset;
  uint64 v_offset;
};

// This defines video frame data stored in texture mailboxes.
struct MailboxVideoFrameData {
  // Size must be kept in sync with media::VideoFrame::kMaxPlanes.
  array<gpu.mojom.MailboxHolder, 4> mailbox_holder;
};

struct PipelineStatistics {
  uint64 audio_bytes_decoded;
  uint64 video_bytes_decoded;
  uint32 video_frames_decoded;
  uint32 video_frames_dropped;
  int64 audio_memory_usage;
  int64 video_memory_usage;
};

// Set of features for MediaCapabilities prediction.
// TODO(liberato): consider generalizing this.
struct PredictionFeatures {
    // It would be nice to initialize this to VIDEO_CODEC_PROFILE_UNKNOWN (-1),
    // but we can't do that with native enums.
    VideoCodecProfile profile;
    gfx.mojom.Size video_size;
    int32 frames_per_sec = 0;
};

// Target values for MediaCapabilities predictions.
// TODO(liberato): consider generalizing this.
struct PredictionTargets {
  uint32 frames_decoded = 0;
  uint32 frames_dropped = 0;
  uint32 frames_power_efficient = 0;
};

