| Index: media/mp4/cenc.cc
|
| diff --git a/media/mp4/cenc.cc b/media/mp4/cenc.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1d8b187200fab234b13d7013cbe5176f5608871d
|
| --- /dev/null
|
| +++ b/media/mp4/cenc.cc
|
| @@ -0,0 +1,45 @@
|
| +// 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.
|
| +
|
| +#include "media/mp4/cenc.h"
|
| +
|
| +#include "media/mp4/box_reader.h"
|
| +#include "media/mp4/rcheck.h"
|
| +
|
| +namespace media {
|
| +namespace mp4 {
|
| +
|
| +FrameCENCInfo::FrameCENCInfo() {};
|
| +FrameCENCInfo::~FrameCENCInfo() {};
|
| +
|
| +bool Parse(size_t iv_size, FrameCENCInfo* cenc, BufferReader* reader) {
|
| + const size_t kEntrySize = sizeof(uint16) + sizeof(uint32);
|
| +
|
| + // Mandated by CENC spec
|
| + RCHECK(iv_size == 8 || iv_size == 16);
|
| + cenc->iv.resize(iv_size);
|
| +
|
| + uint16 subsample_count;
|
| + RCHECK(reader->ReadVec(&cenc->iv, iv_size) &&
|
| + reader->Read(&subsample_count) &&
|
| + reader->HasBytes(subsample_count * kEntrySize));
|
| + cenc->subsamples.resize(subsample_count);
|
| +
|
| + for (size_t i = 0; i < subsample_count; i++) {
|
| + RCHECK(reader->Read(&cenc->subsamples[i].clear_size) &&
|
| + reader->Read(&cenc->subsamples[i].encrypted_size));
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +size_t FrameCENCInfo::GetTotalSize() const {
|
| + size_t size = 0;
|
| + for (size_t i = 0; i < subsamples.size(); i++) {
|
| + size += subsamples[i].clear_size + subsamples[i].encrypted_size;
|
| + }
|
| + return size;
|
| +}
|
| +
|
| +} // namespace mp4
|
| +} // namespace media
|
|
|