Index: media/cast/cast_config.h |
diff --git a/media/cast/cast_config.h b/media/cast/cast_config.h |
index 7172f6835cdbd514ce61d5e34682eed3eb903519..ea25d6b6cf74669c4ad24cf7b684db4bd0a6567d 100644 |
--- a/media/cast/cast_config.h |
+++ b/media/cast/cast_config.h |
@@ -27,6 +27,8 @@ enum RtcpMode { |
kRtcpReducedSize, // Reduced-size RTCP mode is described by RFC 5506. |
}; |
+// TODO(miu): Merge AudioSenderConfig and VideoSenderConfig and make their |
+// naming/documentation consistent with FrameReceiverConfig. |
struct AudioSenderConfig { |
AudioSenderConfig(); |
@@ -74,53 +76,68 @@ struct VideoSenderConfig { |
int number_of_encode_threads; |
}; |
-struct AudioReceiverConfig { |
- AudioReceiverConfig(); |
+// TODO(miu): Naming and minor type changes are badly needed in a later CL. |
+struct FrameReceiverConfig { |
+ FrameReceiverConfig(); |
+ ~FrameReceiverConfig(); |
- uint32 feedback_ssrc; |
- uint32 incoming_ssrc; |
+ // The receiver's SSRC identifier. |
+ uint32 feedback_ssrc; // TODO(miu): Rename to receiver_ssrc for clarity. |
- int rtcp_interval; |
- std::string rtcp_c_name; |
- RtcpMode rtcp_mode; |
- |
- // The time the receiver is prepared to wait for retransmissions. |
- int rtp_max_delay_ms; |
- int rtp_payload_type; |
- |
- bool use_external_decoder; |
- int frequency; |
- int channels; |
- transport::AudioCodec codec; |
- |
- std::string aes_key; // Binary string of size kAesKeySize. |
- std::string aes_iv_mask; // Binary string of size kAesKeySize. |
-}; |
- |
-struct VideoReceiverConfig { |
- VideoReceiverConfig(); |
- |
- uint32 feedback_ssrc; |
- uint32 incoming_ssrc; |
+ // The sender's SSRC identifier. |
+ uint32 incoming_ssrc; // TODO(miu): Rename to sender_ssrc for clarity. |
+ // Mean interval (in milliseconds) between RTCP reports. |
+ // TODO(miu): Remove this since it's never not kDefaultRtcpIntervalMs. |
int rtcp_interval; |
+ |
+ // CNAME representing this receiver. |
+ // TODO(miu): Remove this since it should be derived elsewhere (probably in |
+ // the transport layer). |
std::string rtcp_c_name; |
+ |
+ // Determines amount of detail in RTCP reports. |
+ // TODO(miu): Remove this since it's never anything but kRtcpReducedSize. |
RtcpMode rtcp_mode; |
- // The time the receiver is prepared to wait for retransmissions. |
- int rtp_max_delay_ms; |
+ // The total amount of time between a frame's capture/recording on the sender |
+ // and its playback on the receiver (i.e., shown to a user). This is fixed as |
+ // a value large enough to give the system sufficient time to encode, |
+ // transmit/retransmit, receive, decode, and render; given its run-time |
+ // environment (sender/receiver hardware performance, network conditions, |
+ // etc.). |
+ int rtp_max_delay_ms; // TODO(miu): Change to TimeDelta target_playout_delay. |
+ |
+ // RTP payload type enum: Specifies the type/encoding of frame data. |
int rtp_payload_type; |
- bool use_external_decoder; |
- int max_frame_rate; |
+ // RTP timebase: The number of RTP units advanced per one second. For audio, |
+ // this is the sampling rate. For video, by convention, this is 90 kHz. |
+ int frequency; // TODO(miu): Rename to rtp_timebase for clarity. |
- // Some HW decoders can not run faster than the frame rate, preventing it |
- // from catching up after a glitch. |
- bool decoder_faster_than_max_frame_rate; |
- transport::VideoCodec codec; |
+ // Number of channels. For audio, this is normally 2. For video, this must |
+ // be 1 as Cast does not have support for stereoscopic video. |
+ int channels; |
- std::string aes_key; // Binary string of size kAesKeySize. |
- std::string aes_iv_mask; // Binary string of size kAesKeySize. |
+ // The target frame rate. For audio, this is normally 100 (i.e., frames have |
+ // a duration of 10ms each). For video, this is normally 30, but any frame |
+ // rate is supported. |
+ int max_frame_rate; // TODO(miu): Rename to target_frame_rate. |
+ |
+ // Codec used for the compression of signal data. |
+ // TODO(miu): Merge the AudioCodec and VideoCodec enums into one so this union |
+ // is not necessary. |
+ union MergedCodecPlaceholder { |
+ transport::AudioCodec audio; |
+ transport::VideoCodec video; |
+ MergedCodecPlaceholder() : audio(transport::kUnknownAudioCodec) {} |
+ } codec; |
+ |
+ // The AES crypto key and initialization vector. Each of these strings |
+ // contains the data in binary form, of size kAesKeySize. If they are empty |
+ // strings, crypto is not being used. |
+ std::string aes_key; |
+ std::string aes_iv_mask; |
}; |
// import from media::cast::transport |