Index: media/mp4/avc.cc |
diff --git a/media/mp4/avc.cc b/media/mp4/avc.cc |
index faf9939cf966b1aa1769cf7624e6fd1005fe08ee..9896e2c366e0d396e458d0ef54b1807534c10c82 100644 |
--- a/media/mp4/avc.cc |
+++ b/media/mp4/avc.cc |
@@ -59,32 +59,30 @@ bool AVC::ConvertToAnnexB(int length_size, std::vector<uint8>* buffer) { |
} |
// static |
-bool AVC::InsertParameterSets(const AVCDecoderConfigurationRecord& avc_config, |
- std::vector<uint8>* buffer) { |
+bool AVC::ConvertParameterSets(const AVCDecoderConfigurationRecord& avc_config, |
+ std::vector<uint8>* buffer) { |
+ DCHECK(buffer->empty()); |
+ buffer->clear(); |
int total_size = 0; |
for (size_t i = 0; i < avc_config.sps_list.size(); i++) |
total_size += avc_config.sps_list[i].size() + kAnnexBStartCodeSize; |
for (size_t i = 0; i < avc_config.pps_list.size(); i++) |
total_size += avc_config.pps_list[i].size() + kAnnexBStartCodeSize; |
- |
- std::vector<uint8> temp; |
- temp.reserve(total_size); |
+ buffer->reserve(total_size); |
for (size_t i = 0; i < avc_config.sps_list.size(); i++) { |
- temp.insert(temp.end(), kAnnexBStartCode, |
+ buffer->insert(buffer->end(), kAnnexBStartCode, |
kAnnexBStartCode + kAnnexBStartCodeSize); |
- temp.insert(temp.end(), avc_config.sps_list[i].begin(), |
+ buffer->insert(buffer->end(), avc_config.sps_list[i].begin(), |
avc_config.sps_list[i].end()); |
} |
for (size_t i = 0; i < avc_config.pps_list.size(); i++) { |
- temp.insert(temp.end(), kAnnexBStartCode, |
- kAnnexBStartCode + kAnnexBStartCodeSize); |
- temp.insert(temp.end(), avc_config.pps_list[i].begin(), |
- avc_config.pps_list[i].end()); |
+ buffer->insert(buffer->end(), kAnnexBStartCode, |
+ kAnnexBStartCode + kAnnexBStartCodeSize); |
+ buffer->insert(buffer->end(), avc_config.pps_list[i].begin(), |
+ avc_config.pps_list[i].end()); |
} |
- |
- buffer->insert(buffer->begin(), temp.begin(), temp.end()); |
return true; |
} |