1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMECAST_MEDIA_BASE_DECRYPT_CONTEXT_H_
6 #define CHROMECAST_MEDIA_BASE_DECRYPT_CONTEXT_H_
8 #include "base/macros.h"
9 #include "base/memory/ref_counted.h"
10 #include "chromecast/media/base/key_systems_common.h"
16 namespace chromecast
{
19 // Base class of a decryption context: a decryption context gathers all the
20 // information needed to decrypt frames with a given key id.
21 // Each CDM should implement this and add fields needed to fully describe a
22 // decryption context.
24 class DecryptContext
: public base::RefCountedThreadSafe
<DecryptContext
> {
26 explicit DecryptContext(CastKeySystem key_system
);
28 CastKeySystem
key_system() const { return key_system_
; }
30 // Returns the clear key if available, NULL otherwise.
31 virtual crypto::SymmetricKey
* GetKey() const;
34 friend class base::RefCountedThreadSafe
<DecryptContext
>;
35 virtual ~DecryptContext();
38 CastKeySystem key_system_
;
40 DISALLOW_COPY_AND_ASSIGN(DecryptContext
);
44 } // namespace chromecast
46 #endif // CHROMECAST_MEDIA_BASE_DECRYPT_CONTEXT_H_