Index: webrtc/modules/video_coding/h264_sps_pps_tracker.cc |
diff --git a/webrtc/modules/video_coding/h264_sps_pps_tracker.cc b/webrtc/modules/video_coding/h264_sps_pps_tracker.cc |
index 5dfdb49146a5f6874feef864074a8ffa72854166..ad836b621917207739210c108628346cbe9183a7 100644 |
--- a/webrtc/modules/video_coding/h264_sps_pps_tracker.cc |
+++ b/webrtc/modules/video_coding/h264_sps_pps_tracker.cc |
@@ -45,6 +45,7 @@ H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream( |
bool insert_packet = codec_header.nalus_length == 0 ? true : false; |
int pps_id = -1; |
+ int sps_id = -1; |
size_t required_size = 0; |
for (size_t i = 0; i < codec_header.nalus_length; ++i) { |
const NaluInfo& nalu = codec_header.nalus[i]; |
@@ -55,6 +56,8 @@ H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream( |
sps_data_[nalu.sps_id].data.reset(new uint8_t[nalu.size]); |
memcpy(sps_data_[nalu.sps_id].data.get(), data + nalu.offset, |
nalu.size); |
+ sps_data_[nalu.sps_id].width = packet->width; |
+ sps_data_[nalu.sps_id].height = packet->height; |
break; |
} |
case H264::NaluType::kPps: { |
@@ -83,7 +86,8 @@ H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream( |
return kRequestKeyframe; |
} |
- auto sps = sps_data_.find(pps->second.sps_id); |
+ sps_id = pps->second.sps_id; |
+ auto sps = sps_data_.find(sps_id); |
if (sps == sps_data_.end()) { |
LOG(LS_WARNING) << "No SPS with id << " |
<< pps_data_[nalu.pps_id].sps_id << " received"; |
@@ -177,6 +181,11 @@ H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream( |
memcpy(insert_at, data, data_size); |
} |
+ if (sps_id != -1) { |
+ packet->width = sps_data_[sps_id].width; |
+ packet->height = sps_data_[sps_id].height; |
+ } |
+ |
packet->dataPtr = buffer; |
packet->sizeBytes = required_size; |
return kInsert; |
@@ -222,6 +231,8 @@ void H264SpsPpsTracker::InsertSpsPpsNalus(const std::vector<uint8_t>& sps, |
SpsInfo sps_info; |
sps_info.size = sps.size(); |
+ sps_info.width = parsed_sps->width; |
+ sps_info.height = parsed_sps->height; |
uint8_t* sps_data = new uint8_t[sps_info.size]; |
memcpy(sps_data, sps.data(), sps_info.size); |
sps_info.data.reset(sps_data); |