Index: webrtc/modules/video_coding/frame_buffer2.cc |
diff --git a/webrtc/modules/video_coding/frame_buffer2.cc b/webrtc/modules/video_coding/frame_buffer2.cc |
index dab783254684e2ff140ed598bd3fdc022f9dbd57..e533e39834ada2387335658572c7d84901fd6b95 100644 |
--- a/webrtc/modules/video_coding/frame_buffer2.cc |
+++ b/webrtc/modules/video_coding/frame_buffer2.cc |
@@ -52,7 +52,8 @@ FrameBuffer::FrameBuffer(Clock* clock, |
stopped_(false), |
protection_mode_(kProtectionNack) {} |
-std::unique_ptr<FrameObject> FrameBuffer::NextFrame(int64_t max_wait_time_ms) { |
+std::pair<FrameBuffer::ReturnReason, std::unique_ptr<FrameObject>> |
+FrameBuffer::NextFrame(int64_t max_wait_time_ms) { |
int64_t latest_return_time = clock_->TimeInMilliseconds() + max_wait_time_ms; |
int64_t now = clock_->TimeInMilliseconds(); |
int64_t wait_ms = max_wait_time_ms; |
@@ -63,7 +64,7 @@ std::unique_ptr<FrameObject> FrameBuffer::NextFrame(int64_t max_wait_time_ms) { |
rtc::CritScope lock(&crit_); |
frame_inserted_event_.Reset(); |
if (stopped_) |
- return std::unique_ptr<FrameObject>(); |
+ return std::make_pair(kStopped, nullptr); |
now = clock_->TimeInMilliseconds(); |
wait_ms = max_wait_time_ms; |
@@ -115,9 +116,9 @@ std::unique_ptr<FrameObject> FrameBuffer::NextFrame(int64_t max_wait_time_ms) { |
decoded_frames_.insert(next_frame_it->first); |
std::unique_ptr<FrameObject> frame = std::move(next_frame_it->second); |
frames_.erase(frames_.begin(), ++next_frame_it); |
- return frame; |
+ return std::make_pair(kFrameFound, std::move(frame)); |
} else { |
- return std::unique_ptr<FrameObject>(); |
+ return std::make_pair(kTimeout, nullptr); |
} |
} |
} |