| // 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 MEDIA_WEBM_WEBM_CONTENT_ENCODINGS_H_ |
| #define MEDIA_WEBM_WEBM_CONTENT_ENCODINGS_H_ |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "media/base/media_export.h" |
| |
| namespace media { |
| |
| class MEDIA_EXPORT ContentEncoding { |
| public: |
| // The following enum definitions are based on the ContentEncoding element |
| // specified in the Matroska spec. |
| |
| static const int kOrderInvalid = -1; |
| |
| enum Scope { |
| kScopeInvalid = 0, |
| kScopeAllFrameContents = 1, |
| kScopeTrackPrivateData = 2, |
| kScopeNextContentEncodingData = 4, |
| kScopeMax = 7, |
| }; |
| |
| enum Type { |
| kTypeInvalid = -1, |
| kTypeCompression = 0, |
| kTypeEncryption = 1, |
| }; |
| |
| enum EncryptionAlgo { |
| kEncAlgoInvalid = -1, |
| kEncAlgoNotEncrypted = 0, |
| kEncAlgoDes = 1, |
| kEncAlgo3des = 2, |
| kEncAlgoTwofish = 3, |
| kEncAlgoBlowfish = 4, |
| kEncAlgoAes = 5, |
| }; |
| |
| enum CipherMode { |
| kCipherModeInvalid = 0, |
| kCipherModeCtr = 1, |
| }; |
| |
| ContentEncoding(); |
| ~ContentEncoding(); |
| |
| int64 order() const { return order_; } |
| void set_order(int64 order) { order_ = order; } |
| |
| Scope scope() const { return scope_; } |
| void set_scope(Scope scope) { scope_ = scope; } |
| |
| Type type() const { return type_; } |
| void set_type(Type type) { type_ = type; } |
| |
| EncryptionAlgo encryption_algo() const { return encryption_algo_; } |
| void set_encryption_algo(EncryptionAlgo encryption_algo) { |
| encryption_algo_ = encryption_algo; |
| } |
| |
| const std::string& encryption_key_id() const { return encryption_key_id_; } |
| void SetEncryptionKeyId(const uint8* encryption_key_id, int size); |
| |
| CipherMode cipher_mode() const { return cipher_mode_; } |
| void set_cipher_mode(CipherMode mode) { cipher_mode_ = mode; } |
| |
| private: |
| int64 order_; |
| Scope scope_; |
| Type type_; |
| EncryptionAlgo encryption_algo_; |
| std::string encryption_key_id_; |
| CipherMode cipher_mode_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ContentEncoding); |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_WEBM_WEBM_CONTENT_ENCODINGS_H_ |