diff --git a/webrtc/base/buffer.h b/webrtc/base/buffer.h index 2bb241d9e5..cdaab544a7 100644 --- a/webrtc/base/buffer.h +++ b/webrtc/base/buffer.h @@ -11,6 +11,7 @@ #ifndef WEBRTC_BASE_BUFFER_H_ #define WEBRTC_BASE_BUFFER_H_ +#include #include #include #include diff --git a/webrtc/common_video/h264/h264_common.cc b/webrtc/common_video/h264/h264_common.cc index efdaded1e0..c17b118ce0 100644 --- a/webrtc/common_video/h264/h264_common.cc +++ b/webrtc/common_video/h264/h264_common.cc @@ -59,7 +59,7 @@ NaluType ParseNaluType(uint8_t data) { } std::unique_ptr ParseRbsp(const uint8_t* data, size_t length) { - std::unique_ptr rbsp_buffer(new rtc::Buffer()); + std::unique_ptr rbsp_buffer(new rtc::Buffer(0, length)); const char* sps_bytes = reinterpret_cast(data); for (size_t i = 0; i < length;) { // Be careful about over/underflow here. byte_length_ - 3 can underflow, and @@ -84,6 +84,7 @@ void WriteRbsp(const uint8_t* bytes, size_t length, rtc::Buffer* destination) { static const uint8_t kZerosInStartSequence = 2; static const uint8_t kEmulationByte = 0x03u; size_t num_consecutive_zeros = 0; + destination->EnsureCapacity(destination->size() + length); for (size_t i = 0; i < length; ++i) { uint8_t byte = bytes[i];