// Copyright 2017 Google Inc. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd #ifndef MEDIA_BASE_PLAYREADY_PSSH_GENERATOR_H_ #define MEDIA_BASE_PLAYREADY_PSSH_GENERATOR_H_ #include #include "packager/media/base/pssh_generator.h" #include "testing/gtest/include/gtest/gtest_prod.h" namespace shaka { namespace media { // SystemID defined for PlayReady Drm. const uint8_t kPlayReadySystemId[] = {0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95}; class PlayReadyPsshGenerator : public PsshGenerator { public: PlayReadyPsshGenerator(); ~PlayReadyPsshGenerator() override; static std::vector GeneratePsshFromKeyIdAndKey( const std::vector& key_id, const std::vector& key); /// @name PsshGenerator implemetation overrides. /// @{ bool SupportMultipleKeys() override; /// @} private: PlayReadyPsshGenerator& operator=(const PlayReadyPsshGenerator&) = delete; PlayReadyPsshGenerator(const PlayReadyPsshGenerator&) = delete; // PsshGenerator implemetation overrides. uint8_t PsshBoxVersion() const override; const std::vector& SystemId() const override; base::Optional> GeneratePsshDataFromKeyIds( const std::vector>& key_ids) const override; base::Optional> GeneratePsshDataFromKeyIdAndKey( const std::vector& key_id, const std::vector& key) const override; std::vector system_id_; FRIEND_TEST(PsshGeneratorTest, GeneratePlayReadyPsshDataFromKeyIdAndKey); }; } // namespace media } // namespace shaka #endif // MEDIA_BASE_PLAYREADY_PSSH_GENERATOR_H_