| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/formats/mp4/box_reader.h" | 5 #include "media/formats/mp4/box_reader.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 } | 212 } |
| 213 | 213 |
| 214 bool BoxReader::ReadHeader(bool* err) { | 214 bool BoxReader::ReadHeader(bool* err) { |
| 215 uint64 size = 0; | 215 uint64 size = 0; |
| 216 *err = false; | 216 *err = false; |
| 217 | 217 |
| 218 if (!HasBytes(8)) return false; | 218 if (!HasBytes(8)) return false; |
| 219 CHECK(Read4Into8(&size) && ReadFourCC(&type_)); | 219 CHECK(Read4Into8(&size) && ReadFourCC(&type_)); |
| 220 | 220 |
| 221 if (size == 0) { | 221 if (size == 0) { |
| 222 // Media Source specific: we do not support boxes that run to EOS. | 222 MEDIA_LOG(DEBUG, log_cb_) << "Media Source Extensions do not support ISO " |
| 223 "BMFF boxes that run to EOS"; |
| 223 *err = true; | 224 *err = true; |
| 224 return false; | 225 return false; |
| 225 } else if (size == 1) { | 226 } else if (size == 1) { |
| 226 if (!HasBytes(8)) return false; | 227 if (!HasBytes(8)) return false; |
| 227 CHECK(Read8(&size)); | 228 CHECK(Read8(&size)); |
| 228 } | 229 } |
| 229 | 230 |
| 230 // Implementation-specific: support for boxes larger than 2^31 has been | 231 // Implementation-specific: support for boxes larger than 2^31 has been |
| 231 // removed. | 232 // removed. |
| 232 if (size < static_cast<uint64>(pos_) || | 233 if (size < static_cast<uint64>(pos_) || |
| 233 size > static_cast<uint64>(kint32max)) { | 234 size > static_cast<uint64>(kint32max)) { |
| 234 *err = true; | 235 *err = true; |
| 235 return false; | 236 return false; |
| 236 } | 237 } |
| 237 | 238 |
| 238 // Note that the pos_ head has advanced to the byte immediately after the | 239 // Note that the pos_ head has advanced to the byte immediately after the |
| 239 // header, which is where we want it. | 240 // header, which is where we want it. |
| 240 size_ = size; | 241 size_ = size; |
| 241 return true; | 242 return true; |
| 242 } | 243 } |
| 243 | 244 |
| 244 } // namespace mp4 | 245 } // namespace mp4 |
| 245 } // namespace media | 246 } // namespace media |
| OLD | NEW |