Chromium Code Reviews| Index: media/formats/mp2t/ts_section_pmt.cc |
| diff --git a/media/formats/mp2t/ts_section_pmt.cc b/media/formats/mp2t/ts_section_pmt.cc |
| index 72b492aaa4308fb3846d93ad8937c9647003a8c1..c10851666df1415c171998e987dde27e22aacbdc 100644 |
| --- a/media/formats/mp2t/ts_section_pmt.cc |
| +++ b/media/formats/mp2t/ts_section_pmt.cc |
| @@ -5,6 +5,7 @@ |
| #include "media/formats/mp2t/ts_section_pmt.h" |
| #include <map> |
| +#include <string> |
|
ddorwin
2016/04/12 00:40:48
unused?
dougsteed
2016/05/08 23:18:45
Done.
|
| #include "base/logging.h" |
| #include "media/base/bit_reader.h" |
| @@ -79,7 +80,9 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) { |
| // The end of the PID map if 4 bytes away from the end of the section |
| // (4 bytes = size of the CRC). |
| int pid_map_end_marker = section_start_marker - section_length + 4; |
| - std::map<int, int> pid_map; |
| + using PidMapValue = std::pair<int, Descriptors>; |
| + using PidMapElement = std::pair<int, PidMapValue>; |
| + std::map<int, PidMapValue> pid_map; |
| while (bit_reader->bits_available() > 8 * pid_map_end_marker) { |
| int stream_type; |
| int reserved; |
| @@ -91,15 +94,14 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) { |
| RCHECK(bit_reader->ReadBits(4, &reserved)); |
| RCHECK(bit_reader->ReadBits(12, &es_info_length)); |
| + Descriptors descriptors; |
| + RCHECK(descriptors.Read(bit_reader, es_info_length)); |
| + |
| // Do not register the PID right away. |
| // Wait for the end of the section to be fully parsed |
| // to make sure there is no error. |
| - pid_map.insert(std::pair<int, int>(pid_es, stream_type)); |
| - |
| - // Read the ES info descriptors. |
| - // TODO(damienv): check wether any of the descriptors could be useful. |
| - // Defined in section 2.6 of ISO-13818. |
| - RCHECK(bit_reader->SkipBits(8 * es_info_length)); |
| + PidMapValue stream_info(stream_type, descriptors); |
| + pid_map.insert(PidMapElement(pid_es, stream_info)); |
| } |
| // Read the CRC. |
| @@ -107,9 +109,8 @@ bool TsSectionPmt::ParsePsiSection(BitReader* bit_reader) { |
| RCHECK(bit_reader->ReadBits(32, &crc32)); |
| // Once the PMT has been proved to be correct, register the PIDs. |
| - for (std::map<int, int>::iterator it = pid_map.begin(); |
| - it != pid_map.end(); ++it) |
| - register_pes_cb_.Run(it->first, it->second); |
| + for (const auto& it : pid_map) |
| + register_pes_cb_.Run(it.first, it.second.first, it.second.second); |
| return true; |
| } |