Index: webrtc/video/payload_router.cc |
diff --git a/webrtc/video/payload_router.cc b/webrtc/video/payload_router.cc |
index 21439022c1dc3b69a91c981e63dcd42357def8ca..c28529d5ea09ea2c4be025d02fbf0ad72ba9a837 100644 |
--- a/webrtc/video/payload_router.cc |
+++ b/webrtc/video/payload_router.cc |
@@ -137,15 +137,16 @@ void PayloadRouter::UpdateModuleSendingState() { |
} |
} |
-int32_t PayloadRouter::Encoded(const EncodedImage& encoded_image, |
- const CodecSpecificInfo* codec_specific_info, |
- const RTPFragmentationHeader* fragmentation) { |
+EncodedImageCallback::Result PayloadRouter::OnEncodedImage( |
+ const EncodedImage& encoded_image, |
+ const CodecSpecificInfo* codec_specific_info, |
+ const RTPFragmentationHeader* fragmentation) { |
rtc::CritScope lock(&crit_); |
RTC_DCHECK(!rtp_modules_.empty()); |
if (!active_ || num_sending_modules_ == 0) |
- return -1; |
+ return EncodedImageCallback::Result::FrameDropped(); |
- int stream_idx = 0; |
+ int stream_index = 0; |
RTPVideoHeader rtp_video_header; |
memset(&rtp_video_header, 0, sizeof(RTPVideoHeader)); |
@@ -158,13 +159,22 @@ int32_t PayloadRouter::Encoded(const EncodedImage& encoded_image, |
// The simulcast index might actually be larger than the number of modules |
// in case the encoder was processing a frame during a codec reconfig. |
if (rtp_video_header.simulcastIdx >= num_sending_modules_) |
- return -1; |
- stream_idx = rtp_video_header.simulcastIdx; |
- |
- return rtp_modules_[stream_idx]->SendOutgoingData( |
- encoded_image._frameType, payload_type_, encoded_image._timeStamp, |
- encoded_image.capture_time_ms_, encoded_image._buffer, |
- encoded_image._length, fragmentation, &rtp_video_header); |
+ return EncodedImageCallback::Result::FrameDropped(); |
+ stream_index = rtp_video_header.simulcastIdx; |
+ |
+ int send_result = rtp_modules_[stream_index]->SendOutgoingData( |
+ encoded_image._frameType, payload_type_, encoded_image._timeStamp, |
+ encoded_image.capture_time_ms_, encoded_image._buffer, |
+ encoded_image._length, fragmentation, &rtp_video_header); |
+ |
+ EncodedImageCallback::Result result; |
+ if (send_result < 0) { |
+ result.dropped = true; |
+ } else { |
+ result.frame_id = |
+ rtp_modules_[stream_index]->StartTimestamp() + encoded_image._timeStamp; |
+ } |
+ return result; |
} |
void PayloadRouter::SetTargetSendBitrate(uint32_t bitrate_bps) { |