summaryrefslogtreecommitdiffstats
path: root/remoting/proto/audio.proto
blob: dacfb5e273ba01387966f94791e5a87c5fd5155c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 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;
    ENCODING_SPEEX = 2;
  }

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

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