chromium/remoting/proto/audio.proto

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

// Protocol for audio messages.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package remoting;

message AudioPacket {
  optional int32 timestamp = 1 [default = 0];

  // Packets with raw data must have exactly one data field.
  // For those packets, samples are signed and represented using little endian.
  // Some encoders (eg. Speex) may add multiple data fields to separate encoded
  // frames.
  repeated bytes data = 2;

  enum Encoding {
    ENCODING_INVALID = -1;
    ENCODING_RAW = 0;  // Uncompressed encoding
    ENCODING_OPUS = 1;
  }

  optional Encoding encoding = 3 [default = ENCODING_INVALID];

  enum SamplingRate {
    SAMPLING_RATE_INVALID = -1;
    SAMPLING_RATE_44100 = 44100;
    SAMPLING_RATE_48000 = 48000;
  }

  optional SamplingRate sampling_rate = 4 [default = SAMPLING_RATE_INVALID];

  enum BytesPerSample {
    BYTES_PER_SAMPLE_INVALID = -1;
    BYTES_PER_SAMPLE_2 = 2;
  }

  optional BytesPerSample bytes_per_sample = 5
      [default = BYTES_PER_SAMPLE_INVALID];

  enum Channels {
    CHANNELS_INVALID = -1;
    CHANNELS_MONO = 1;
    CHANNELS_STEREO = 2;
    CHANNELS_SURROUND = 3;
    CHANNELS_4_0 = 4;
    CHANNELS_4_1 = 5;
    CHANNELS_5_1 = 6;
    CHANNELS_6_1 = 7;
    CHANNELS_7_1 = 8;
  }

  optional Channels channels = 6 [default = CHANNELS_INVALID];
}