| 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)
|
| + // 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_;
|
| @@ -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_;
|
| +#endif
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(Mp2tStreamParser);
|
| };
|
|
|
|
|