| Index: chromecast/media/cma/ipc_streamer/decoder_buffer_base_marshaller.cc
|
| diff --git a/chromecast/media/cma/ipc_streamer/decoder_buffer_base_marshaller.cc b/chromecast/media/cma/ipc_streamer/decoder_buffer_base_marshaller.cc
|
| deleted file mode 100644
|
| index 8d6a9e03ced81d6ee53f573dd2a6c7087774ec36..0000000000000000000000000000000000000000
|
| --- a/chromecast/media/cma/ipc_streamer/decoder_buffer_base_marshaller.cc
|
| +++ /dev/null
|
| @@ -1,193 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "chromecast/media/cma/ipc_streamer/decoder_buffer_base_marshaller.h"
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -#include <utility>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/macros.h"
|
| -#include "chromecast/media/cma/base/cast_decrypt_config_impl.h"
|
| -#include "chromecast/media/cma/base/decoder_buffer_base.h"
|
| -#include "chromecast/media/cma/ipc/media_message.h"
|
| -#include "chromecast/media/cma/ipc/media_message_type.h"
|
| -#include "chromecast/media/cma/ipc_streamer/decrypt_config_marshaller.h"
|
| -#include "chromecast/public/media/cast_decrypt_config.h"
|
| -#include "media/base/decoder_buffer.h"
|
| -#include "media/base/decrypt_config.h"
|
| -
|
| -namespace chromecast {
|
| -namespace media {
|
| -
|
| -namespace {
|
| -const size_t kMaxFrameSize = 4 * 1024 * 1024;
|
| -
|
| -class DecoderBufferFromMsg : public DecoderBufferBase {
|
| - public:
|
| - explicit DecoderBufferFromMsg(std::unique_ptr<MediaMessage> msg);
|
| -
|
| - void Initialize();
|
| -
|
| - // DecoderBufferBase implementation.
|
| - StreamId stream_id() const override;
|
| - int64_t timestamp() const override;
|
| - void set_timestamp(base::TimeDelta timestamp) override;
|
| - const uint8_t* data() const override;
|
| - uint8_t* writable_data() const override;
|
| - size_t data_size() const override;
|
| - const CastDecryptConfig* decrypt_config() const override;
|
| - bool end_of_stream() const override;
|
| - scoped_refptr<::media::DecoderBuffer> ToMediaBuffer() const override;
|
| -
|
| - private:
|
| - ~DecoderBufferFromMsg() override;
|
| -
|
| - // Indicates whether this is an end of stream frame.
|
| - bool is_eos_;
|
| -
|
| - // Stream Id this decoder buffer belongs to.
|
| - StreamId stream_id_;
|
| -
|
| - // Frame timestamp.
|
| - base::TimeDelta pts_;
|
| -
|
| - // CENC parameters.
|
| - std::unique_ptr<CastDecryptConfig> decrypt_config_;
|
| -
|
| - // Size of the frame.
|
| - size_t data_size_;
|
| -
|
| - // Keeps the message since frame data is not copied.
|
| - std::unique_ptr<MediaMessage> msg_;
|
| - uint8_t* data_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DecoderBufferFromMsg);
|
| -};
|
| -
|
| -DecoderBufferFromMsg::DecoderBufferFromMsg(std::unique_ptr<MediaMessage> msg)
|
| - : is_eos_(true), stream_id_(kPrimary), msg_(std::move(msg)), data_(NULL) {
|
| - CHECK(msg_);
|
| -}
|
| -
|
| -DecoderBufferFromMsg::~DecoderBufferFromMsg() {
|
| -}
|
| -
|
| -void DecoderBufferFromMsg::Initialize() {
|
| - CHECK_EQ(msg_->type(), FrameMediaMsg);
|
| -
|
| - CHECK(msg_->ReadPod(&is_eos_));
|
| - if (is_eos_)
|
| - return;
|
| -
|
| - CHECK(msg_->ReadPod(&stream_id_));
|
| -
|
| - int64_t pts_internal = 0;
|
| - CHECK(msg_->ReadPod(&pts_internal));
|
| - pts_ = base::TimeDelta::FromMicroseconds(pts_internal);
|
| -
|
| - bool has_decrypt_config = false;
|
| - CHECK(msg_->ReadPod(&has_decrypt_config));
|
| - if (has_decrypt_config)
|
| - decrypt_config_.reset(DecryptConfigMarshaller::Read(msg_.get()).release());
|
| -
|
| - CHECK(msg_->ReadPod(&data_size_));
|
| - CHECK_GT(data_size_, 0u);
|
| - CHECK_LT(data_size_, kMaxFrameSize);
|
| -
|
| - // Get a pointer to the frame data inside the message.
|
| - // Avoid copying the frame data here.
|
| - data_ = static_cast<uint8_t*>(msg_->GetWritableBuffer(data_size_));
|
| - CHECK(data_);
|
| -
|
| - if (decrypt_config_) {
|
| - uint32_t subsample_total_size = 0;
|
| - for (size_t k = 0; k < decrypt_config_->subsamples().size(); k++) {
|
| - subsample_total_size += decrypt_config_->subsamples()[k].clear_bytes;
|
| - subsample_total_size += decrypt_config_->subsamples()[k].cypher_bytes;
|
| - }
|
| - CHECK_EQ(subsample_total_size, data_size_);
|
| - }
|
| -}
|
| -
|
| -StreamId DecoderBufferFromMsg::stream_id() const {
|
| - return stream_id_;
|
| -}
|
| -
|
| -int64_t DecoderBufferFromMsg::timestamp() const {
|
| - return pts_.InMicroseconds();
|
| -}
|
| -
|
| -void DecoderBufferFromMsg::set_timestamp(base::TimeDelta timestamp) {
|
| - pts_ = timestamp;
|
| -}
|
| -
|
| -const uint8_t* DecoderBufferFromMsg::data() const {
|
| - CHECK(msg_->IsSerializedMsgAvailable());
|
| - return data_;
|
| -}
|
| -
|
| -uint8_t* DecoderBufferFromMsg::writable_data() const {
|
| - CHECK(msg_->IsSerializedMsgAvailable());
|
| - return data_;
|
| -}
|
| -
|
| -size_t DecoderBufferFromMsg::data_size() const {
|
| - return data_size_;
|
| -}
|
| -
|
| -const CastDecryptConfig* DecoderBufferFromMsg::decrypt_config() const {
|
| - return decrypt_config_.get();
|
| -}
|
| -
|
| -bool DecoderBufferFromMsg::end_of_stream() const {
|
| - return is_eos_;
|
| -}
|
| -
|
| -scoped_refptr<::media::DecoderBuffer>
|
| -DecoderBufferFromMsg::ToMediaBuffer() const {
|
| - if (is_eos_)
|
| - return ::media::DecoderBuffer::CreateEOSBuffer();
|
| -
|
| - scoped_refptr<::media::DecoderBuffer> copy =
|
| - ::media::DecoderBuffer::CopyFrom(data(), data_size());
|
| - copy->set_timestamp(base::TimeDelta::FromMicroseconds(timestamp()));
|
| - return copy;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -void DecoderBufferBaseMarshaller::Write(
|
| - const scoped_refptr<DecoderBufferBase>& buffer,
|
| - MediaMessage* msg) {
|
| - CHECK(msg->WritePod(buffer->end_of_stream()));
|
| - if (buffer->end_of_stream())
|
| - return;
|
| -
|
| - CHECK(msg->WritePod(buffer->stream_id()));
|
| - CHECK(msg->WritePod(buffer->timestamp()));
|
| -
|
| - bool has_decrypt_config = buffer->decrypt_config() != nullptr;
|
| - CHECK(msg->WritePod(has_decrypt_config));
|
| -
|
| - if (has_decrypt_config)
|
| - DecryptConfigMarshaller::Write(*buffer->decrypt_config(), msg);
|
| -
|
| - CHECK(msg->WritePod(buffer->data_size()));
|
| - CHECK(msg->WriteBuffer(buffer->data(), buffer->data_size()));
|
| -}
|
| -
|
| -// static
|
| -scoped_refptr<DecoderBufferBase> DecoderBufferBaseMarshaller::Read(
|
| - std::unique_ptr<MediaMessage> msg) {
|
| - scoped_refptr<DecoderBufferFromMsg> buffer(
|
| - new DecoderBufferFromMsg(std::move(msg)));
|
| - buffer->Initialize();
|
| - return buffer;
|
| -}
|
| -
|
| -} // namespace media
|
| -} // namespace chromecast
|
|
|