| Index: webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc
|
| index 32ba26f54b88a5e9eaa6d2cf4d2c785aa857405e..ae867fee442b79b7bf723e7450b7c91e8b9f18a1 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc
|
| @@ -43,7 +43,8 @@ RTPSenderVideo::RTPSenderVideo(Clock* clock, RTPSenderInterface* rtpSender)
|
| key_fec_params_(),
|
| producer_fec_(&fec_),
|
| _fecOverheadRate(clock, NULL),
|
| - _videoBitrate(clock, NULL) {
|
| + _videoBitrate(clock, NULL),
|
| + sent_first_frame_(false) {
|
| memset(&delta_fec_params_, 0, sizeof(delta_fec_params_));
|
| memset(&key_fec_params_, 0, sizeof(key_fec_params_));
|
| delta_fec_params_.max_fec_frames = key_fec_params_.max_fec_frames = 1;
|
| @@ -232,6 +233,7 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType,
|
|
|
| StorageType storage;
|
| bool fec_enabled;
|
| + bool first_frame = false;
|
| {
|
| CriticalSectionScoped cs(crit_.get());
|
| FecProtectionParams* fec_params =
|
| @@ -239,6 +241,10 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType,
|
| producer_fec_.SetFecParameters(fec_params, 0);
|
| storage = packetizer->GetStorageType(_retransmissionSettings);
|
| fec_enabled = fec_enabled_;
|
| + if (!sent_first_frame_) {
|
| + first_frame = true;
|
| + sent_first_frame_ = true;
|
| + }
|
| }
|
|
|
| // Register CVO rtp header extension at the first time when we receive a frame
|
| @@ -260,6 +266,7 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType,
|
|
|
| packetizer->SetPayloadData(data, payload_bytes_to_send, frag);
|
|
|
| + bool first = true;
|
| bool last = false;
|
| while (!last) {
|
| uint8_t dataBuffer[IP_PACKET_SIZE] = {0};
|
| @@ -268,6 +275,7 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType,
|
| &payload_bytes_in_packet, &last)) {
|
| return -1;
|
| }
|
| +
|
| // Write RTP header.
|
| // Set marker bit true if this is the last packet in frame.
|
| _rtpSender.BuildRTPheader(
|
| @@ -309,6 +317,18 @@ int32_t RTPSenderVideo::SendVideo(const RtpVideoCodecTypes videoType,
|
| _rtpSender.SequenceNumber(), captureTimeStamp,
|
| capture_time_ms, storage);
|
| }
|
| +
|
| + if (first_frame) {
|
| + if (first) {
|
| + LOG(LS_INFO)
|
| + << "Sent first RTP packet of the first video frame (pre-pacer)";
|
| + }
|
| + if (last) {
|
| + LOG(LS_INFO)
|
| + << "Sent last RTP packet of the first video frame (pre-pacer)";
|
| + }
|
| + }
|
| + first = false;
|
| }
|
|
|
| TRACE_EVENT_ASYNC_END1(
|
|
|