From 94cd3fa03ad47debf1d462053e90771d20595e36 Mon Sep 17 00:00:00 2001 From: nisse Date: Mon, 23 May 2016 23:35:54 -0700 Subject: [PATCH] Eliminate use of IsZeroSize method Check for dropped frames by instead checking the frame_buffer pointer directly. Also add RTC_DCHECK to verify that a webrtc::VideoFrame never has video_frame_buffer_ set to nullptr (except by the default constructor). BUG=webrtc:5682 Review-Url: https://codereview.webrtc.org/1995343002 Cr-Commit-Position: refs/heads/master@{#12859} --- webrtc/api/java/jni/androidmediadecoder_jni.cc | 13 ++++++------- webrtc/common_video/video_frame.cc | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/webrtc/api/java/jni/androidmediadecoder_jni.cc b/webrtc/api/java/jni/androidmediadecoder_jni.cc index b3c2ffc241..831b68d512 100644 --- a/webrtc/api/java/jni/androidmediadecoder_jni.cc +++ b/webrtc/api/java/jni/androidmediadecoder_jni.cc @@ -823,10 +823,6 @@ bool MediaCodecVideoDecoder::DeliverPendingOutputs( return false; } } - VideoFrame decoded_frame(frame_buffer, 0, 0, webrtc::kVideoRotation_0); - decoded_frame.set_timestamp(output_timestamps_ms); - decoded_frame.set_ntp_time_ms(output_ntp_timestamps_ms); - if (frames_decoded_ < frames_decoded_logged_) { ALOGD << "Decoder frame out # " << frames_decoded_ << ". " << width << " x " << height << @@ -862,9 +858,12 @@ bool MediaCodecVideoDecoder::DeliverPendingOutputs( current_delay_time_ms_ = 0; } - // |.IsZeroSize())| returns true when a frame has been dropped. - if (!decoded_frame.IsZeroSize()) { - // Callback - output decoded frame. + // If the frame was dropped, frame_buffer is left as nullptr. + if (frame_buffer) { + VideoFrame decoded_frame(frame_buffer, 0, 0, webrtc::kVideoRotation_0); + decoded_frame.set_timestamp(output_timestamps_ms); + decoded_frame.set_ntp_time_ms(output_ntp_timestamps_ms); + const int32_t callback_status = callback_->Decoded(decoded_frame, decode_time_ms); if (callback_status > 0) { diff --git a/webrtc/common_video/video_frame.cc b/webrtc/common_video/video_frame.cc index cf6b9c82af..4bd23f98dc 100644 --- a/webrtc/common_video/video_frame.cc +++ b/webrtc/common_video/video_frame.cc @@ -45,6 +45,7 @@ VideoFrame::VideoFrame(const rtc::scoped_refptr& buffer, ntp_time_ms_(0), render_time_ms_(render_time_ms), rotation_(rotation) { + RTC_DCHECK(buffer); } void VideoFrame::CreateEmptyFrame(int width, @@ -173,6 +174,7 @@ const rtc::scoped_refptr& VideoFrame::video_frame_buffer() void VideoFrame::set_video_frame_buffer( const rtc::scoped_refptr& buffer) { + RTC_DCHECK(buffer); video_frame_buffer_ = buffer; }