Handle empty GOF.

Assume that stream has single temporal layer if number of frames in GOF
is set to zero (valid case).

Bug: chromium:879584
Change-Id: I7ced082190e40c1bf4cc1468babfd98b0a61f0dd
Reviewed-on: https://webrtc-review.googlesource.com/98800
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24622}
This commit is contained in:
Sergey Silkin
2018-09-07 11:49:38 +02:00
committed by Commit Bot
parent 3445b6bc51
commit 2f864fb4ab
2 changed files with 24 additions and 4 deletions

View File

@ -440,13 +440,19 @@ RtpFrameReferenceFinder::FrameDecision RtpFrameReferenceFinder::ManageFrameVp9(
RTC_LOG(LS_WARNING) << "Received scalability structure on a non base "
"layer frame. Scalability structure ignored.";
} else {
current_ss_idx_ = Add<kMaxGofSaved>(current_ss_idx_, 1);
if (codec_header.gof.num_frames_in_gof == 0 ||
codec_header.gof.num_frames_in_gof > kMaxVp9FramesInGof) {
if (codec_header.gof.num_frames_in_gof > kMaxVp9FramesInGof) {
return kDrop;
}
scalability_structures_[current_ss_idx_] = codec_header.gof;
GofInfoVP9 gof = codec_header.gof;
if (gof.num_frames_in_gof == 0) {
RTC_LOG(LS_WARNING) << "Number of frames in GOF is zero. Assume "
"that stream has only one temporal layer.";
gof.SetGofInfoVP9(kTemporalStructureMode1);
}
current_ss_idx_ = Add<kMaxGofSaved>(current_ss_idx_, 1);
scalability_structures_[current_ss_idx_] = gof;
scalability_structures_[current_ss_idx_].pid_start = frame->id.picture_id;
gof_info_.emplace(unwrapped_tl0,
GofInfo(&scalability_structures_[current_ss_idx_],