Chromium Code Reviews| Index: webkit/media/crypto/proxy_decryptor.h |
| diff --git a/webkit/media/crypto/proxy_decryptor.h b/webkit/media/crypto/proxy_decryptor.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..cf305dc67c1210ef3c2082c2285276bf321e59f8 |
| --- /dev/null |
| +++ b/webkit/media/crypto/proxy_decryptor.h |
| @@ -0,0 +1,54 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef WEBKIT_MEDIA_CRYPTO_PROXY_DECRYPTOR_H_ |
| +#define WEBKIT_MEDIA_CRYPTO_PROXY_DECRYPTOR_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/synchronization/lock.h" |
| +#include "media/base/decryptor.h" |
| + |
| +namespace media { |
| +class DecryptorClient; |
| +} |
| + |
| +namespace webkit_media { |
| + |
| +// A decryptor proxy that creates a real decryptor object on demand and |
| +// forwards decryptor calls to it. Currently we don't support run-time |
|
ddorwin
2012/06/27 04:00:08
Make the second sentence a TODO so we don't forget
xhwang
2012/06/27 21:41:26
Done.
|
| +// switching among decryptor objects. |
| +class ProxyDecryptor : public media::Decryptor { |
| + public: |
| + explicit ProxyDecryptor(media::DecryptorClient* client); |
| + virtual ~ProxyDecryptor(); |
| + |
| + // media::Decryptor implementation. |
| + virtual void GenerateKeyRequest(const std::string& key_system, |
| + const uint8* init_data, |
| + int init_data_length) OVERRIDE; |
| + virtual void AddKey(const std::string& key_system, |
| + const uint8* key, |
| + int key_length, |
| + const uint8* init_data, |
| + int init_data_length, |
| + const std::string& session_id) OVERRIDE; |
| + virtual void CancelKeyRequest(const std::string& key_system, |
| + const std::string& session_id) OVERRIDE; |
| + virtual scoped_refptr<media::DecoderBuffer> Decrypt( |
| + const scoped_refptr<media::DecoderBuffer>& input) OVERRIDE; |
| + |
| + private: |
| + media::DecryptorClient* const client_; |
| + base::Lock lock_; |
| + scoped_ptr<media::Decryptor> decryptor_; |
| + std::string current_key_system_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ProxyDecryptor); |
| +}; |
| + |
| +} // namespace webkit_media |
| + |
| +#endif // WEBKIT_MEDIA_CRYPTO_PROXY_DECRYPTOR_H_ |