Chromium Code Reviews| Index: media/formats/mp2t/mp2t_stream_parser.h |
| diff --git a/media/formats/mp2t/mp2t_stream_parser.h b/media/formats/mp2t/mp2t_stream_parser.h |
| index bf7b4873ff9f32d67bc1a5c20251bebb6d909d10..03f61ba6b06e1ebe250156b5c0069ffe0ba2eb7c 100644 |
| --- a/media/formats/mp2t/mp2t_stream_parser.h |
| +++ b/media/formats/mp2t/mp2t_stream_parser.h |
| @@ -15,17 +15,21 @@ |
| #include "base/memory/ref_counted.h" |
| #include "media/base/audio_decoder_config.h" |
| #include "media/base/byte_queue.h" |
| +#include "media/base/decrypt_config.h" |
| #include "media/base/media_export.h" |
| #include "media/base/stream_parser.h" |
| #include "media/base/video_decoder_config.h" |
| #include "media/formats/mp2t/timestamp_unroller.h" |
| +#include "media/media_features.h" |
| namespace media { |
| +class DecryptConfig; |
| class StreamParserBuffer; |
| namespace mp2t { |
| +class Descriptors; |
| class PidState; |
| class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| @@ -46,7 +50,8 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| bool Parse(const uint8_t* buf, int size) override; |
| private: |
| - typedef std::map<int, PidState*> PidMap; |
| + using PidMap = std::map<int, PidState*>; |
| + using PidMapElement = std::pair<int, PidState*>; |
|
yucliu1
2016/05/26 23:28:47
Probably we can remove the define here if 'insert'
dougsteed
2016/09/25 21:52:30
Sadly map::emplace is not yet supported.
|
| struct BufferQueueWithConfig { |
| BufferQueueWithConfig(bool is_cfg_sent, |
| @@ -70,7 +75,11 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| // Possible values for |stream_type| are defined in: |
| // ISO-13818.1 / ITU H.222 Table 2.34 "Stream type assignments". |
| // |pes_pid| is part of the Program Map Table refered by |pmt_pid|. |
| - void RegisterPes(int pmt_pid, int pes_pid, int stream_type); |
| + // Some stream types are qualified by additional |descriptors|. |
| + void RegisterPes(int pmt_pid, |
| + int pes_pid, |
| + int stream_type, |
| + const Descriptors& descriptors); |
| // Since the StreamParser interface allows only one audio & video streams, |
| // an automatic PID filtering should be applied to select the audio & video |
| @@ -97,6 +106,24 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| scoped_refptr<StreamParserBuffer> stream_parser_buffer); |
| bool EmitRemainingBuffers(); |
| +#if BUILDFLAG(ENABLE_HLS_SAMPLE_AES) |
| + // Register the parser for CA Table. |
| + PidMap::iterator RegisterCat(); |
| + void UnregisterCat(); |
| + |
| + // Register the PIDs for the Cenc packets (CENC-ECM and CENC-PSSH). |
| + void RegisterCencPids(int ca_pid, int pssh_pid); |
| + void UnregisterCencPids(); |
| + |
| + // Register the DecryptConfig (parsed from CENC-ECM). |
| + void RegisterDecryptConfig(const DecryptConfig& config); |
| + |
| + // Register the PSSH (parsed from CENC-PSSH). |
| + void RegisterPsshBoxes(const std::vector<uint8_t>& init_data); |
| + |
| + const DecryptConfig* GetDecryptConfig() { return decrypt_config_.get(); } |
| +#endif |
| + |
| // List of callbacks. |
| InitCB init_cb_; |
| NewConfigCB config_cb_; |
| @@ -134,6 +161,10 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| // So the unroller is global between PES pids. |
| TimestampUnroller timestamp_unroller_; |
| +#if BUILDFLAG(ENABLE_HLS_SAMPLE_AES) |
| + std::unique_ptr<DecryptConfig> decrypt_config_; |
| +#endif |
| + |
| DISALLOW_COPY_AND_ASSIGN(Mp2tStreamParser); |
| }; |