blob: 590e65c3894363e30b5f828daba273741e0642ba [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package chromecast.media.audio_output_service;
import "chromecast/media/audio/net/common.proto";
message ApplicationMediaInfo {
optional string application_session_id = 1;
}
message AudioDecoderConfig {
optional audio_service.AudioCodec audio_codec = 1;
optional audio_service.ChannelLayout channel_layout = 2;
optional audio_service.SampleFormat sample_format = 3;
optional int32 num_channels = 4;
optional int32 sample_rate = 5;
optional bytes extra_data = 6;
}
message CmaBackendParams {
optional ApplicationMediaInfo application_media_info = 1;
optional AudioDecoderConfig audio_decoder_config = 2;
}
// Indicates that we want to start playing the sample with PTS |start_pts|
// at audio clock timestamp |start_timestamp| in microseconds. May be sent
// multiple times to restart playback at a new timestamp (ie for hard
// corrections).
message SetStartTimestamp {
optional int64 start_timestamp = 1;
optional int64 start_pts = 2;
}
// Informs the backend how fast the PTS increases per frame. For example if the
// playback rate is 2.0, then each frame increases the PTS by 2.0 / sample_rate
// seconds.
message SetPlaybackRate {
optional float playback_rate = 1;
}
// Changes the volume multiplier for an audio output stream.
message StreamVolume {
optional float volume = 1;
}
// Indicates that EOS for an audio output stream has been played out.
message EosPlayedOut {}
// Current media pts, the corresponding reference timestamp, rendering delay and
// the timestamp when the delay was measured.
// TODO(b/173250111): Rename this message to RenderingDelay when all users of
// |media_timestamp_microseconds| and |reference_timestamp_microseconds| have
// migrated to using delay information.
message CurrentMediaTimestamp {
optional int64 media_timestamp_microseconds = 1;
optional int64 reference_timestamp_microseconds = 2;
optional int64 delay_microseconds = 3;
optional int64 delay_timestamp_microseconds = 4;
}
// Informs the backend to stop the playback.
message StopPlayback {}
// Indicates the status of the initialization of the audio pipeline backend.
message BackendInitializationStatus {
enum Status {
// Audio pipeline backend is successfully initialized.
SUCCESS = 0;
// There was an error during the initialization of audio pipeline backend.
ERROR = 1;
}
optional Status status = 1;
}
// Used to keep the socket connection active.
message Heartbeat {}
message Generic {
optional CmaBackendParams backend_params = 1;
optional SetStartTimestamp set_start_timestamp = 2;
optional SetPlaybackRate set_playback_rate = 3;
optional StreamVolume set_stream_volume = 4;
optional EosPlayedOut eos_played_out = 5;
optional CurrentMediaTimestamp current_media_timestamp = 6;
optional StopPlayback stop_playback = 7;
optional BackendInitializationStatus backend_initialization_status = 8;
optional Heartbeat heartbeat = 9;
}