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 dd8beb74ffdd5b5882ef79a03e6bc4c9c05e1677..7234a81f1e7c16b355af337edfb36b96fb473450 100644 |
| --- a/media/formats/mp2t/mp2t_stream_parser.h |
| +++ b/media/formats/mp2t/mp2t_stream_parser.h |
| @@ -15,17 +15,21 @@ |
| #include "base/memory/scoped_ptr.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*>; |
| struct BufferQueueWithConfig { |
| BufferQueueWithConfig(bool is_cfg_sent, |
| @@ -69,7 +74,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 |
| @@ -96,6 +105,24 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| scoped_refptr<StreamParserBuffer> stream_parser_buffer); |
| bool EmitRemainingBuffers(); |
| +#if BUILDFLAG(ENABLE_HLS_SAMPLE_AES) |
|
ddorwin
2016/04/12 00:40:48
Is this the best object for storing some of these
dougsteed
2016/05/08 23:18:44
I've explored this a little, and it could be done.
|
| + // Register the parser for CA Table. |
|
ddorwin
2016/04/12 00:40:47
s/Register/Set/?
dougsteed
2016/05/08 23:18:44
Was using the existing terminology q.v. RegisterPm
|
| + 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(); } |
|
ddorwin
2016/04/12 00:40:48
See below regarding "external" or other naming. Th
|
| +#endif |
| + |
| // List of callbacks. |
| InitCB init_cb_; |
| NewConfigCB config_cb_; |
| @@ -133,6 +160,10 @@ class MEDIA_EXPORT Mp2tStreamParser : public StreamParser { |
| // So the unroller is global between PES pids. |
| TimestampUnroller timestamp_unroller_; |
| +#if BUILDFLAG(ENABLE_HLS_SAMPLE_AES) |
| + scoped_ptr<DecryptConfig> decrypt_config_; |
|
ddorwin
2016/04/12 00:40:48
Why does only Sample AES need a config? Perhaps th
dougsteed
2016/05/08 23:18:44
It's not really "external", it is derived from inf
|
| +#endif |
| + |
| DISALLOW_COPY_AND_ASSIGN(Mp2tStreamParser); |
| }; |