// Copyright (c) 2012 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.

// 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];
}

