chromium/media/mojo/mojom/remoting_common.mojom

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module media.mojom;

enum RemotingStopReason {
  ROUTE_TERMINATED,  // User-initiated disconnect, etc.
  LOCAL_PLAYBACK,  // Media switched back to local playback.
  SOURCE_GONE,  // RemotingSource has been destroyed.
  MESSAGE_SEND_FAILED,  // Failed to send a message to the sink.
  DATA_SEND_FAILED,  // Failed to consume from a data pipe or send to the sink.
  UNEXPECTED_FAILURE,  // Unexpected failure or inconsistent state encountered.
  SERVICE_GONE,  // Mirror service disconnected.
  USER_DISABLED,  // Media Remoting was disabled by user.
};

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum RemotingStartFailReason {
  CANNOT_START_MULTIPLE = 0,  // Remoting was already active.
  ROUTE_TERMINATED = 1,  // User-initated disconnect while starting remoting.
  INVALID_ANSWER_MESSAGE = 2,  // Invalid ANSWER message.
  REMOTING_NOT_PERMITTED = 3,  // Remoter does not have dialog permission.
};

enum RemotingSinkFeature {
  RENDERING,
  CONTENT_DECRYPTION,
};

enum RemotingSinkAudioCapability {
  CODEC_BASELINE_SET,
  CODEC_AAC,
  CODEC_OPUS,
};

enum RemotingSinkVideoCapability {
  SUPPORT_4K,
  CODEC_BASELINE_SET,
  CODEC_H264,
  CODEC_VP8,
  CODEC_VP9,
  CODEC_HEVC,
};

struct RemotingSinkMetadata {
  array<RemotingSinkFeature> features;
  array<RemotingSinkAudioCapability> audio_capabilities;
  array<RemotingSinkVideoCapability> video_capabilities;
  string friendly_name;
};