From 49b46e0085c036eb1e2e36781d7e9a1c7b1c4cb2 Mon Sep 17 00:00:00 2001 From: philipel Date: Mon, 11 Dec 2017 14:52:58 +0100 Subject: [PATCH] Added WEBRTC_VIDEO_CODEC_OK_REQUEST_KEYFRAME decoder return code. Bug: None Change-Id: I71e1d42c92273dc4ce3f5f5e7052615d68e65a38 Reviewed-on: https://webrtc-review.googlesource.com/31860 Reviewed-by: Stefan Holmer Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#21363} --- modules/video_coding/include/video_error_codes.h | 1 + video/video_receive_stream.cc | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/video_coding/include/video_error_codes.h b/modules/video_coding/include/video_error_codes.h index 40e5a9a8ea..4f0da22ff2 100644 --- a/modules/video_coding/include/video_error_codes.h +++ b/modules/video_coding/include/video_error_codes.h @@ -15,6 +15,7 @@ // Define return values +#define WEBRTC_VIDEO_CODEC_OK_REQUEST_KEYFRAME 4 #define WEBRTC_VIDEO_CODEC_REQUEST_SLI 2 #define WEBRTC_VIDEO_CODEC_NO_OUTPUT 1 #define WEBRTC_VIDEO_CODEC_OK 0 diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc index c0e1d36256..42e532a697 100644 --- a/video/video_receive_stream.cc +++ b/video/video_receive_stream.cc @@ -424,10 +424,15 @@ bool VideoReceiveStream::Decode() { if (frame) { int64_t now_ms = clock_->TimeInMilliseconds(); RTC_DCHECK_EQ(res, video_coding::FrameBuffer::ReturnReason::kFrameFound); - if (video_receiver_.Decode(frame.get()) == VCM_OK) { + int decode_result = video_receiver_.Decode(frame.get()); + if (decode_result == WEBRTC_VIDEO_CODEC_OK || + decode_result == WEBRTC_VIDEO_CODEC_OK_REQUEST_KEYFRAME) { keyframe_required_ = false; frame_decoded_ = true; rtp_video_stream_receiver_.FrameDecoded(frame->picture_id); + + if (decode_result == WEBRTC_VIDEO_CODEC_OK_REQUEST_KEYFRAME) + RequestKeyFrame(); } else if (!frame_decoded_ || !keyframe_required_ || (last_keyframe_request_ms_ + kMaxWaitForKeyFrameMs < now_ms)) { keyframe_required_ = true;