90 lines
2.2 KiB
C++
90 lines
2.2 KiB
C++
// Copyright 2014 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 PACKAGER_MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
|
|
#define PACKAGER_MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
|
|
|
|
#include <stdint.h>
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
namespace shaka {
|
|
namespace media {
|
|
|
|
class 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_t order() const { return order_; }
|
|
void set_order(int64_t 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_t* encryption_key_id, int size);
|
|
|
|
CipherMode cipher_mode() const { return cipher_mode_; }
|
|
void set_cipher_mode(CipherMode mode) { cipher_mode_ = mode; }
|
|
|
|
private:
|
|
ContentEncoding(const ContentEncoding&) = delete;
|
|
ContentEncoding& operator=(const ContentEncoding&) = delete;
|
|
|
|
int64_t order_;
|
|
Scope scope_;
|
|
Type type_;
|
|
EncryptionAlgo encryption_algo_;
|
|
std::string encryption_key_id_;
|
|
CipherMode cipher_mode_;
|
|
};
|
|
|
|
} // namespace media
|
|
} // namespace shaka
|
|
|
|
#endif // PACKAGER_MEDIA_FORMATS_WEBM_WEBM_CONTENT_ENCODINGS_H_
|