Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / media / formats / webm / webm_content_encodings.h
blob5890ecf04f39c59a85322d70477a22cf200e794f
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 MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
6 #define MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "media/base/media_export.h"
14 namespace media {
16 class MEDIA_EXPORT ContentEncoding {
17 public:
18 // The following enum definitions are based on the ContentEncoding element
19 // specified in the Matroska spec.
21 static const int kOrderInvalid = -1;
23 enum Scope {
24 kScopeInvalid = 0,
25 kScopeAllFrameContents = 1,
26 kScopeTrackPrivateData = 2,
27 kScopeNextContentEncodingData = 4,
28 kScopeMax = 7,
31 enum Type {
32 kTypeInvalid = -1,
33 kTypeCompression = 0,
34 kTypeEncryption = 1,
37 enum EncryptionAlgo {
38 kEncAlgoInvalid = -1,
39 kEncAlgoNotEncrypted = 0,
40 kEncAlgoDes = 1,
41 kEncAlgo3des = 2,
42 kEncAlgoTwofish = 3,
43 kEncAlgoBlowfish = 4,
44 kEncAlgoAes = 5,
47 enum CipherMode {
48 kCipherModeInvalid = 0,
49 kCipherModeCtr = 1,
52 ContentEncoding();
53 ~ContentEncoding();
55 int64 order() const { return order_; }
56 void set_order(int64 order) { order_ = order; }
58 Scope scope() const { return scope_; }
59 void set_scope(Scope scope) { scope_ = scope; }
61 Type type() const { return type_; }
62 void set_type(Type type) { type_ = type; }
64 EncryptionAlgo encryption_algo() const { return encryption_algo_; }
65 void set_encryption_algo(EncryptionAlgo encryption_algo) {
66 encryption_algo_ = encryption_algo;
69 const std::string& encryption_key_id() const { return encryption_key_id_; }
70 void SetEncryptionKeyId(const uint8* encryption_key_id, int size);
72 CipherMode cipher_mode() const { return cipher_mode_; }
73 void set_cipher_mode(CipherMode mode) { cipher_mode_ = mode; }
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_;
83 DISALLOW_COPY_AND_ASSIGN(ContentEncoding);
86 } // namespace media
88 #endif // MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_