1 // Copyright (c) 2012 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_WEBM_WEBM_CONTENT_ENCODINGS_H_ 6 #define MEDIA_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 55 int64 order() const { return order_; } 56 void set_order(int64 order) { order_ = order; } 57 58 Scope scope() const { return scope_; } 59 void set_scope(Scope scope) { scope_ = scope; } 60 61 Type type() const { return type_; } 62 void set_type(Type type) { type_ = type; } 63 64 EncryptionAlgo encryption_algo() const { return encryption_algo_; } 65 void set_encryption_algo(EncryptionAlgo encryption_algo) { 66 encryption_algo_ = encryption_algo; 67 } 68 69 const std::string& encryption_key_id() const { return encryption_key_id_; } 70 void SetEncryptionKeyId(const uint8* encryption_key_id, int size); 71 72 CipherMode cipher_mode() const { return cipher_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_WEBM_WEBM_CONTENT_ENCODINGS_H_ 89