|  | syntax = "proto2"; | 
|  | option optimize_for = LITE_RUNTIME; | 
|  | package webrtc.audioproc; | 
|  |  | 
|  | message Init { | 
|  | optional int32 sample_rate = 1; | 
|  | optional int32 device_sample_rate = 2 [deprecated=true]; | 
|  | optional int32 num_input_channels = 3; | 
|  | optional int32 num_output_channels = 4; | 
|  | optional int32 num_reverse_channels = 5; | 
|  | optional int32 reverse_sample_rate = 6; | 
|  | optional int32 output_sample_rate = 7; | 
|  | } | 
|  |  | 
|  | // May contain interleaved or deinterleaved data, but don't store both formats. | 
|  | message ReverseStream { | 
|  | // int16 interleaved data. | 
|  | optional bytes data = 1; | 
|  |  | 
|  | // float deinterleaved data, where each repeated element points to a single | 
|  | // channel buffer of data. | 
|  | repeated bytes channel = 2; | 
|  | } | 
|  |  | 
|  | // May contain interleaved or deinterleaved data, but don't store both formats. | 
|  | message Stream { | 
|  | // int16 interleaved data. | 
|  | optional bytes input_data = 1; | 
|  | optional bytes output_data = 2; | 
|  |  | 
|  | optional int32 delay = 3; | 
|  | optional sint32 drift = 4; | 
|  | optional int32 level = 5; | 
|  | optional bool keypress = 6; | 
|  |  | 
|  | // float deinterleaved data, where each repeated element points to a single | 
|  | // channel buffer of data. | 
|  | repeated bytes input_channel = 7; | 
|  | repeated bytes output_channel = 8; | 
|  | } | 
|  |  | 
|  | message Event { | 
|  | enum Type { | 
|  | INIT = 0; | 
|  | REVERSE_STREAM = 1; | 
|  | STREAM = 2; | 
|  | } | 
|  |  | 
|  | required Type type = 1; | 
|  |  | 
|  | optional Init init = 2; | 
|  | optional ReverseStream reverse_stream = 3; | 
|  | optional Stream stream = 4; | 
|  | } |