 Chromium Code Reviews
 Chromium Code Reviews Issue 3009833002:
  Avoid calling RtpFrameObject::GetCodecHeader twice in the RtpFrameReferenceFinder.  (Closed)
    
  
    Issue 3009833002:
  Avoid calling RtpFrameObject::GetCodecHeader twice in the RtpFrameReferenceFinder.  (Closed) 
  | Index: webrtc/modules/video_coding/rtp_frame_reference_finder.cc | 
| diff --git a/webrtc/modules/video_coding/rtp_frame_reference_finder.cc b/webrtc/modules/video_coding/rtp_frame_reference_finder.cc | 
| index 8d74c363c511b07420f961e75f93e152c8df71df..52947cb2d077a5bef2fd458bd0ae3a46eb5f1498 100644 | 
| --- a/webrtc/modules/video_coding/rtp_frame_reference_finder.cc | 
| +++ b/webrtc/modules/video_coding/rtp_frame_reference_finder.cc | 
| @@ -285,7 +285,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8( | 
| if (frame->frame_type() == kVideoFrameKey) { | 
| frame->num_references = 0; | 
| layer_info_[codec_header.tl0PicIdx].fill(-1); | 
| - UpdateLayerInfoVp8(frame); | 
| + UpdateLayerInfoVp8(frame, codec_header); | 
| return kHandOff; | 
| } | 
| @@ -307,7 +307,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8( | 
| .first; | 
| frame->num_references = 1; | 
| frame->references[0] = layer_info_it->second[0]; | 
| - UpdateLayerInfoVp8(frame); | 
| + UpdateLayerInfoVp8(frame, codec_header); | 
| return kHandOff; | 
| } | 
| @@ -316,7 +316,7 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8( | 
| frame->num_references = 1; | 
| frame->references[0] = layer_info_it->second[0]; | 
| - UpdateLayerInfoVp8(frame); | 
| + UpdateLayerInfoVp8(frame, codec_header); | 
| return kHandOff; | 
| } | 
| @@ -359,15 +359,13 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp8( | 
| frame->references[layer] = layer_info_it->second[layer]; | 
| } | 
| - UpdateLayerInfoVp8(frame); | 
| + UpdateLayerInfoVp8(frame, codec_header); | 
| return kHandOff; | 
| } | 
| -void RtpFrameReferenceFinder::UpdateLayerInfoVp8(RtpFrameObject* frame) { | 
| - rtc::Optional<RTPVideoTypeHeader> rtp_codec_header = frame->GetCodecHeader(); | 
| - RTC_DCHECK(rtp_codec_header); | 
| - const RTPVideoHeaderVP8& codec_header = rtp_codec_header->VP8; | 
| - | 
| +void RtpFrameReferenceFinder::UpdateLayerInfoVp8( | 
| + RtpFrameObject* frame, | 
| + const RTPVideoHeaderVP8& codec_header) { | 
| uint8_t tl0_pic_idx = codec_header.tl0PicIdx; | 
| uint8_t temporal_index = codec_header.temporalIdx; | 
| auto layer_info_it = layer_info_.find(tl0_pic_idx); | 
| @@ -394,7 +392,9 @@ void RtpFrameReferenceFinder::UpdateLayerInfoVp8(RtpFrameObject* frame) { | 
| RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp9( | 
| RtpFrameObject* frame) { | 
| rtc::Optional<RTPVideoTypeHeader> rtp_codec_header = frame->GetCodecHeader(); | 
| - RTC_DCHECK(rtp_codec_header); | 
| + if (!rtp_codec_header) | 
| 
philipel
2017/08/30 08:54:37
I thought I had made this change at some earlier p
 | 
| + return kDrop; | 
| + | 
| const RTPVideoHeaderVP9& codec_header = rtp_codec_header->VP9; | 
| if (codec_header.picture_id == kNoPictureId || |