diff --git a/webrtc/modules/audio_coding/main/acm2/dump.proto b/webrtc/modules/audio_coding/main/acm2/dump.proto index 416bb7a61b..232faec428 100644 --- a/webrtc/modules/audio_coding/main/acm2/dump.proto +++ b/webrtc/modules/audio_coding/main/acm2/dump.proto @@ -10,6 +10,7 @@ message ACMDumpEventStream { repeated ACMDumpEvent stream = 1; } + message ACMDumpEvent { // required - Elapsed wallclock time in us since the start of the log. optional int64 timestamp_us = 1; @@ -21,6 +22,7 @@ message ACMDumpEvent { UNKNOWN_EVENT = 0; RTP_EVENT = 1; DEBUG_EVENT = 2; + CONFIG_EVENT = 3; } // required - Indicates the type of this event @@ -31,8 +33,12 @@ message ACMDumpEvent { // optional - but required if type == DEBUG_EVENT optional ACMDumpDebugEvent debug_event = 4; + + // optional - but required if type == CONFIG_EVENT + optional ACMDumpConfigEvent config = 5; } + message ACMDumpRTPPacket { // Indicates if the packet is incoming or outgoing with respect to the user // that is logging the data. @@ -58,6 +64,7 @@ message ACMDumpRTPPacket { optional bytes RTP_data = 3; } + message ACMDumpDebugEvent { // Indicates the type of the debug event. // LOG_START and LOG_END indicate the start and end of the log respectively. @@ -75,4 +82,88 @@ message ACMDumpDebugEvent { // An optional message that can be used to store additional information about // the debug event. optional string message = 2; -} \ No newline at end of file +} + + +// TODO(terelius): Video and audio streams could in principle share SSRC, +// so identifying a stream based only on SSRC might not work. +// It might be better to use a combination of SSRC and media type +// or SSRC and port number, but for now we will rely on SSRC only. +message ACMDumpConfigEvent { + // Synchronization source (stream identifier) to be received. + optional uint32 remote_ssrc = 1; + + // RTX settings for incoming video payloads that may be received. RTX is + // disabled if there's no config present. + optional RtcpConfig rtcp_config = 3; + + // Map from video RTP payload type -> RTX config. + repeated RtxMap rtx_map = 4; + + // RTP header extensions used for the received stream. + repeated RtpHeaderExtension header_extensions = 5; + + // List of decoders associated with the stream. + repeated DecoderConfig decoders = 6; +} + + +// Maps decoder names to payload types. +message DecoderConfig { + // required + optional string name = 1; + + // required + optional sint32 payload_type = 2; +} + + +// Maps RTP header extension names to numerical ids. +message RtpHeaderExtension { + // required + optional string name = 1; + + // required + optional sint32 id = 2; +} + + +// RTX settings for incoming video payloads that may be received. +// RTX is disabled if there's no config present. +message RtxConfig { + // required - SSRCs to use for the RTX streams. + optional uint32 ssrc = 1; + + // required - Payload type to use for the RTX stream. + optional sint32 payload_type = 2; +} + + +message RtxMap { + // required + optional sint32 payload_type = 1; + + // required + optional RtxConfig config = 2; +} + + +// Configuration information for RTCP. +// For bandwidth estimation purposes it is more interesting to log the +// RTCP messages that the sender receives, but we will support logging +// at the receiver side too. +message RtcpConfig { + // Sender SSRC used for sending RTCP (such as receiver reports). + optional uint32 local_ssrc = 1; + + // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size + // RTCP mode is described by RFC 5506. + enum RtcpMode {RTCP_COMPOUND = 1; RTCP_REDUCEDSIZE = 2;} + optional RtcpMode rtcp_mode = 2; + + // Extended RTCP settings. + optional bool receiver_reference_time_report = 3; + + // Receiver estimated maximum bandwidth. + optional bool remb = 4; +}