syntax = "proto3";

package sabr.videostreaming;

import "sabr/misc/common.proto";
import "sabr/videostreaming/media_capabilities.proto";

option java_multiple_files = true;
option java_package = "com.google.android.exoplayer2.source.sabr.protos.videostreaming";
option optimize_for = LITE_RUNTIME;

message ClientAbrState {
  optional int64 time_since_last_manual_format_selection_ms = 13;
  optional sint32 last_manual_direction = 14;
  optional int32 last_manual_selected_resolution = 16;
  optional int32 detailed_network_type = 17;
  optional int32 client_viewport_width = 18;
  optional int32 client_viewport_height = 19;
  optional int64 client_bitrate_cap_bytes_per_sec = 20;
  optional int32 sticky_resolution = 21;
  optional bool client_viewport_is_flexible = 22;
  optional int64 bandwidth_estimate = 23;
  optional sabr.misc.AudioQuality min_audio_quality = 24;
  optional sabr.misc.AudioQuality max_audio_quality = 25;
  optional sabr.misc.VideoQualitySetting video_quality_setting = 26;
  optional sabr.misc.PlaybackAudioRouteOutputType audio_route = 27;
  optional int64 player_time_ms = 28;
  optional int64 time_since_last_seek = 29;
  optional bool data_saver_mode = 30;
  optional sabr.misc.NetworkMeteredState network_metered_state = 32;
  optional int32 visibility = 34;
  optional float playback_rate = 35;
  optional int64 elapsed_wall_time_ms = 36;
  optional MediaCapabilities media_capabilities = 38;
  optional int64 time_since_last_action_ms = 39;
  optional int32 enabled_track_types_bitfield = 40;
  optional int32 max_pacing_rate = 43;
  optional int64 player_state = 44;
  optional bool drc_enabled = 46;
  optional int32 field48 = 48;
  optional int32 field50 = 50;
  optional int32 field51 = 51;
  optional int32 sabr_report_request_cancellation_info = 54;
  optional bool disable_streaming_xhr = 56;
  optional int64 field57 = 57;
  optional bool prefer_vp9 = 58;
  optional int32 av1_quality_threshold = 59; // 2160
  optional int32 field60 = 60;
  optional bool is_prefetch = 61;
  optional bool sabr_support_quality_constraints = 62;
  optional bytes sabr_license_constraint = 63;
  optional int32 allow_proxima_live_latency = 64;
  optional int32 sabr_force_proxima = 66;
  optional int32 field67 = 67;
  optional int64 sabr_force_max_network_interruption_duration_ms = 68;
  optional string audio_track_id = 69;
  optional bool enable_voice_boost = 76;
  optional sabr.misc.PlaybackAuthorization playback_authorization = 79;
}