• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
6 #define MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
7 
8 #include <string>
9 
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "media/base/media_export.h"
13 
14 namespace media {
15 
16 class MEDIA_EXPORT ContentEncoding {
17  public:
18   // The following enum definitions are based on the ContentEncoding element
19   // specified in the Matroska spec.
20 
21   static const int kOrderInvalid = -1;
22 
23   enum Scope {
24     kScopeInvalid = 0,
25     kScopeAllFrameContents = 1,
26     kScopeTrackPrivateData = 2,
27     kScopeNextContentEncodingData = 4,
28     kScopeMax = 7,
29   };
30 
31   enum Type {
32     kTypeInvalid = -1,
33     kTypeCompression = 0,
34     kTypeEncryption = 1,
35   };
36 
37   enum EncryptionAlgo {
38     kEncAlgoInvalid = -1,
39     kEncAlgoNotEncrypted = 0,
40     kEncAlgoDes = 1,
41     kEncAlgo3des = 2,
42     kEncAlgoTwofish = 3,
43     kEncAlgoBlowfish = 4,
44     kEncAlgoAes = 5,
45   };
46 
47   enum CipherMode {
48     kCipherModeInvalid = 0,
49     kCipherModeCtr = 1,
50   };
51 
52   ContentEncoding();
53   ~ContentEncoding();
54 
order()55   int64 order() const { return order_; }
set_order(int64 order)56   void set_order(int64 order) { order_ = order; }
57 
scope()58   Scope scope() const { return scope_; }
set_scope(Scope scope)59   void set_scope(Scope scope) { scope_ = scope; }
60 
type()61   Type type() const { return type_; }
set_type(Type type)62   void set_type(Type type) { type_ = type; }
63 
encryption_algo()64   EncryptionAlgo encryption_algo() const { return encryption_algo_; }
set_encryption_algo(EncryptionAlgo encryption_algo)65   void set_encryption_algo(EncryptionAlgo encryption_algo) {
66     encryption_algo_ = encryption_algo;
67   }
68 
encryption_key_id()69   const std::string& encryption_key_id() const { return encryption_key_id_; }
70   void SetEncryptionKeyId(const uint8* encryption_key_id, int size);
71 
cipher_mode()72   CipherMode cipher_mode() const { return cipher_mode_; }
set_cipher_mode(CipherMode mode)73   void set_cipher_mode(CipherMode mode) { cipher_mode_ = mode; }
74 
75  private:
76   int64 order_;
77   Scope scope_;
78   Type type_;
79   EncryptionAlgo encryption_algo_;
80   std::string encryption_key_id_;
81   CipherMode cipher_mode_;
82 
83   DISALLOW_COPY_AND_ASSIGN(ContentEncoding);
84 };
85 
86 }  // namespace media
87 
88 #endif  // MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
89