Chromium Code Reviews| Index: media/filters/h264_to_annex_b_bitstream_converter.cc |
| diff --git a/media/filters/h264_to_annex_b_bitstream_converter.cc b/media/filters/h264_to_annex_b_bitstream_converter.cc |
| index e4860ecf8713b4773f8f6f3945dd7c8dc353c1c1..98b5c732be1b4002e9f26c9dc97085503bcabb5a 100644 |
| --- a/media/filters/h264_to_annex_b_bitstream_converter.cc |
| +++ b/media/filters/h264_to_annex_b_bitstream_converter.cc |
| @@ -265,9 +265,17 @@ bool H264ToAnnexBBitstreamConverter::WriteParamSet( |
| const std::vector<uint8_t>& param_set, |
| uint8_t** out, |
| uint32_t* out_size) const { |
| + // Strip trailing null bytes. |
| + uint32_t size = param_set.size(); |
|
Pawel Osciak
2016/03/01 08:56:21
s/uint32_t/size_t/
sandersd (OOO until July 31)
2016/03/17 19:07:51
Done.
|
| + while (size && param_set[size - 1] == 0) |
| + size--; |
| + if (!size) |
| + return false; |
| + |
| + // Verify space. |
| uint32_t bytes_left = *out_size; |
| if (bytes_left < kParamSetStartCodeSize || |
| - bytes_left - kParamSetStartCodeSize < param_set.size()) { |
| + bytes_left - kParamSetStartCodeSize < size) { |
| return false; |
| } |
| @@ -279,8 +287,9 @@ bool H264ToAnnexBBitstreamConverter::WriteParamSet( |
| memcpy(buf, kStartCodePrefix, sizeof(kStartCodePrefix)); |
| buf += sizeof(kStartCodePrefix); |
| - memcpy(buf, ¶m_set[0], param_set.size()); |
| - buf += param_set.size(); |
| + // Copy the data. |
| + memcpy(buf, ¶m_set[0], size); |
| + buf += size; |
| *out = buf; |
| *out_size -= buf - start; |