Index: webrtc/video/payload_router.cc |
diff --git a/webrtc/video/payload_router.cc b/webrtc/video/payload_router.cc |
index 21439022c1dc3b69a91c981e63dcd42357def8ca..958785269468977dff74daa844a9f00a22879f9e 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 Result(Result::ERROR_SEND_FAILED); |
- int stream_idx = 0; |
+ int stream_index = 0; |
RTPVideoHeader rtp_video_header; |
memset(&rtp_video_header, 0, sizeof(RTPVideoHeader)); |
@@ -158,13 +159,21 @@ 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 Result(Result::ERROR_SEND_FAILED); |
+ stream_index = 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); |
+ 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); |
+ |
+ if (send_result < 0) |
+ return Result(Result::ERROR_SEND_FAILED); |
+ |
+ // TODO(sergeyu): Update RtpRtcp::SendOutgoingData() to return timestamp. |
+ uint32_t frame_id = |
+ rtp_modules_[stream_index]->StartTimestamp() + encoded_image._timeStamp; |
+ return Result(Result::OK, frame_id); |
} |
void PayloadRouter::SetTargetSendBitrate(uint32_t bitrate_bps) { |