| 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*>;
|
|
|
| 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);
|
| };
|
|
|
|
|