blob: 3463998699877b057aa9dbf4f74ef8c9087dd1f8 [file] [log] [blame]
// Copyright 2014 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 media.cast.proto;
// Keep in sync with media/cast/logging/logging_defines.h.
// For compatibility reasons, existing values in this enum must not be changed.
enum EventType {
UNKNOWN = 0;
// Note: 1-28 are deprecated in favor of unified event types. Do not use.
// Generic events. No longer used.
RTT_MS = 1;
PACKET_LOSS = 2;
JITTER_MS = 3;
VIDEO_ACK_RECEIVED = 4; // Sender side frame event.
REMB_BITRATE = 5; // Generic event. No longer used.
// Audio receiver.
AUDIO_ACK_SENT = 6;
// Video receiver.
VIDEO_ACK_SENT = 7;
// Audio sender.
AUDIO_FRAME_CAPTURE_END = 8;
AUDIO_FRAME_CAPTURE_BEGIN = 9;
AUDIO_FRAME_ENCODED = 10;
// Audio receiver.
AUDIO_PLAYOUT_DELAY = 11;
AUDIO_FRAME_DECODED = 12;
// Video sender.
VIDEO_FRAME_CAPTURE_BEGIN = 13;
VIDEO_FRAME_CAPTURE_END = 14;
VIDEO_FRAME_SENT_TO_ENCODER = 15; // Deprecated
VIDEO_FRAME_ENCODED = 16;
// Video receiver.
VIDEO_FRAME_DECODED = 17;
VIDEO_RENDER_DELAY = 18;
// Send-side packet events.
// AUDIO_PACKET_SENT_TO_PACER = 19; // Deprecated
// VIDEO_PACKET_SENT_TO_PACER = 20; // Deprecated
AUDIO_PACKET_SENT_TO_NETWORK = 21;
VIDEO_PACKET_SENT_TO_NETWORK = 22;
AUDIO_PACKET_RETRANSMITTED = 23;
VIDEO_PACKET_RETRANSMITTED = 24;
// Receiver-side packet events.
AUDIO_PACKET_RECEIVED = 25;
VIDEO_PACKET_RECEIVED = 26;
DUPLICATE_AUDIO_PACKET_RECEIVED = 27;
DUPLICATE_VIDEO_PACKET_RECEIVED = 28;
// New, unified event types.
FRAME_CAPTURE_BEGIN = 29;
FRAME_CAPTURE_END = 30;
FRAME_ENCODED = 31;
FRAME_ACK_RECEIVED = 32;
FRAME_ACK_SENT = 33;
FRAME_DECODED = 34;
FRAME_PLAYOUT = 35;
PACKET_SENT_TO_NETWORK = 36;
PACKET_RETRANSMITTED = 37;
PACKET_RECEIVED = 38;
PACKET_RTX_REJECTED = 39;
}
// Contains information independent of the stream that describes the system
// setup, e.g. OS and hardware info.
message GeneralDescription {
optional string product = 1;
optional string product_version = 2;
optional string os = 3;
}
// Each log will contain one |LogMetadata|.
message LogMetadata {
// |true| if the events are related to audio. |false| if they are related to
// video.
optional bool is_audio = 1;
// Used as a reference for all event entries.
// i.e. the original RTP timestamp for each event will be
// |first_rtp_timestamp| + |relative_rtp_timestamp|.
optional uint32 first_rtp_timestamp = 2;
// Number of AggregatedFrameEvent's.
optional int32 num_frame_events = 3;
// Number of AggregatedPacketEvent's.
optional int32 num_packet_events = 4;
// The internal timestamp value in milliseconds that represents the time
// of the Unix epoch. This is used for relating the timestamps in the events
// to a real time and date.
optional int64 reference_timestamp_ms_at_unix_epoch = 5;
// Extra data to attach to the log, e.g. experiment tags,
// in key-value JSON string format. The data is supplied by the application.
optional string extra_data = 6;
optional GeneralDescription general_description = 7;
}
message AggregatedFrameEvent {
optional uint32 relative_rtp_timestamp = 1;
repeated EventType event_type = 2 [packed = true];
// The internal timestamp value in milliseconds. Use
// LogMetadata.reference_timestamp_ms_at_unix_epoch to relate to a real time
// and date.
repeated int64 event_timestamp_ms = 3 [packed = true];
// Only set if there is a frame encoded event.
optional int32 encoded_frame_size = 4;
// Only set if there is a frame playout event.
optional int64 delay_millis = 5;
// Only set if there is a video frame encoded event.
optional bool key_frame = 6;
// Only set if there is a video frame encoded event.
optional int32 target_bitrate = 7;
// Only set if there is a frame capture event.
optional int32 width = 8;
optional int32 height = 9;
// Only set if there is a frame encoded event.
optional int32 encoder_cpu_percent_utilized = 10;
optional int32 idealized_bitrate_percent_utilized = 11;
};
message BasePacketEvent {
optional int32 packet_id = 1;
repeated EventType event_type = 2 [packed = true];
// The internal timestamp value in milliseconds. Use
// LogMetadata.reference_timestamp_ms_at_unix_epoch to relate to a real time
// and date.
repeated int64 event_timestamp_ms = 3 [packed = true];
// Size of the packet.
optional int32 size = 4;
}
message AggregatedPacketEvent {
optional uint32 relative_rtp_timestamp = 1;
repeated BasePacketEvent base_packet_event = 2;
};