Index: webrtc/modules/video_coding/decoding_state.cc |
diff --git a/webrtc/modules/video_coding/decoding_state.cc b/webrtc/modules/video_coding/decoding_state.cc |
index 530d167868c04e4eb573002c697883304dad9629..89be9b66c1fe6e416069f248126733d742a5b7bc 100644 |
--- a/webrtc/modules/video_coding/decoding_state.cc |
+++ b/webrtc/modules/video_coding/decoding_state.cc |
@@ -10,8 +10,6 @@ |
#include "webrtc/modules/video_coding/decoding_state.h" |
-#include "webrtc/base/logging.h" |
-#include "webrtc/common_video/h264/h264_common.h" |
#include "webrtc/modules/include/module_common_types.h" |
#include "webrtc/modules/video_coding/frame_buffer.h" |
#include "webrtc/modules/video_coding/jitter_buffer_common.h" |
@@ -42,8 +40,6 @@ |
full_sync_ = true; |
in_initial_state_ = true; |
memset(frame_decoded_, 0, sizeof(frame_decoded_)); |
- received_sps_.clear(); |
- received_pps_.clear(); |
} |
uint32_t VCMDecodingState::time_stamp() const { |
@@ -77,24 +73,6 @@ |
picture_id_ = frame->PictureId(); |
temporal_id_ = frame->TemporalId(); |
tl0_pic_id_ = frame->Tl0PicId(); |
- |
- for (const NaluInfo& nalu : frame->GetNaluInfos()) { |
- if (nalu.type == H264::NaluType::kPps) { |
- if (nalu.pps_id < 0) { |
- LOG(LS_WARNING) << "Received pps without pps id."; |
- } else if (nalu.sps_id < 0) { |
- LOG(LS_WARNING) << "Received pps without sps id."; |
- } else { |
- received_pps_[nalu.pps_id] = nalu.sps_id; |
- } |
- } else if (nalu.type == H264::NaluType::kSps) { |
- if (nalu.sps_id < 0) { |
- LOG(LS_WARNING) << "Received sps without sps id."; |
- } else { |
- received_sps_.insert(nalu.sps_id); |
- } |
- } |
- } |
if (UsingFlexibleMode(frame)) { |
uint16_t frame_index = picture_id_ % kFrameDecodedLength; |
@@ -128,8 +106,6 @@ |
in_initial_state_ = state.in_initial_state_; |
frame_decoded_cleared_to_ = state.frame_decoded_cleared_to_; |
memcpy(frame_decoded_, state.frame_decoded_, sizeof(frame_decoded_)); |
- received_sps_ = state.received_sps_; |
- received_pps_ = state.received_pps_; |
} |
bool VCMDecodingState::UpdateEmptyFrame(const VCMFrameBuffer* frame) { |
@@ -207,10 +183,8 @@ |
// A key frame is always considered continuous as it doesn't refer to any |
// frames and therefore won't introduce any errors even if prior frames are |
// missing. |
- if (frame->FrameType() == kVideoFrameKey && |
- HaveSpsAndPps(frame->GetNaluInfos())) { |
- return true; |
- } |
+ if (frame->FrameType() == kVideoFrameKey) |
+ return true; |
// When in the initial state we always require a key frame to start decoding. |
if (in_initial_state_) |
return false; |
@@ -231,8 +205,7 @@ |
return ContinuousPictureId(frame->PictureId()); |
} |
} else { |
- return ContinuousSeqNum(static_cast<uint16_t>(frame->GetLowSeqNum())) && |
- HaveSpsAndPps(frame->GetNaluInfos()); |
+ return ContinuousSeqNum(static_cast<uint16_t>(frame->GetLowSeqNum())); |
} |
} |
@@ -309,48 +282,4 @@ |
return diff > kFrameDecodedLength / 2; |
} |
-bool VCMDecodingState::HaveSpsAndPps(const std::vector<NaluInfo>& nalus) const { |
- std::set<int> new_sps; |
- std::map<int, int> new_pps; |
- for (const NaluInfo& nalu : nalus) { |
- switch (nalu.type) { |
- case H264::NaluType::kPps: |
- if (nalu.pps_id < 0) { |
- LOG(LS_WARNING) << "Received pps without pps id."; |
- } else if (nalu.sps_id < 0) { |
- LOG(LS_WARNING) << "Received pps without sps id."; |
- } else { |
- new_pps[nalu.pps_id] = nalu.sps_id; |
- } |
- break; |
- case H264::NaluType::kSps: |
- if (nalu.sps_id < 0) { |
- LOG(LS_WARNING) << "Received sps without sps id."; |
- } else { |
- new_sps.insert(nalu.sps_id); |
- } |
- break; |
- default: { |
- int sps_needed = -1; |
- auto pps_it = new_pps.find(nalu.pps_id); |
- if (pps_it != new_pps.end()) { |
- sps_needed = pps_it->second; |
- } else { |
- auto pps_it2 = received_pps_.find(nalu.pps_id); |
- if (pps_it2 == received_pps_.end()) { |
- return false; |
- } |
- sps_needed = pps_it2->second; |
- } |
- if (new_sps.find(sps_needed) == new_sps.end() && |
- received_sps_.find(sps_needed) == received_sps_.end()) { |
- return false; |
- } |
- break; |
- } |
- } |
- } |
- return true; |
-} |
- |
} // namespace webrtc |