diff options
author | damienv <damienv@chromium.org> | 2014-09-04 07:53:35 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-04 14:55:41 +0000 |
commit | c434502c71349dc459aeedf76674897b0af0dc3e (patch) | |
tree | 71f82204b6cf620fa6d740ee2d5b370846f0928c /chromecast | |
parent | f3e9e0cb8d6dc6f0a6f5cec9180c0e538e76c184 (diff) | |
download | chromium_src-c434502c71349dc459aeedf76674897b0af0dc3e.zip chromium_src-c434502c71349dc459aeedf76674897b0af0dc3e.tar.gz chromium_src-c434502c71349dc459aeedf76674897b0af0dc3e.tar.bz2 |
Add the base class for decoder buffers used in cast media.
Creates a decoder buffer base class that exposes only the properties
of a decoder buffer. This makes it possible to hide how a buffer
is created and how it is organized in memory, this is left
as an implementation detail of derived classes.
BUG=408189
Review URL: https://codereview.chromium.org/535563002
Cr-Commit-Position: refs/heads/master@{#293298}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/media/cma/base/decoder_buffer_adapter.cc | 45 | ||||
-rw-r--r-- | chromecast/media/cma/base/decoder_buffer_adapter.h | 45 | ||||
-rw-r--r-- | chromecast/media/cma/base/decoder_buffer_base.cc | 17 | ||||
-rw-r--r-- | chromecast/media/cma/base/decoder_buffer_base.h | 57 | ||||
-rw-r--r-- | chromecast/media/media.gyp | 4 |
5 files changed, 168 insertions, 0 deletions
diff --git a/chromecast/media/cma/base/decoder_buffer_adapter.cc b/chromecast/media/cma/base/decoder_buffer_adapter.cc new file mode 100644 index 0000000..236505b --- /dev/null +++ b/chromecast/media/cma/base/decoder_buffer_adapter.cc @@ -0,0 +1,45 @@ +// 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/base/decoder_buffer_adapter.h" + +#include "media/base/decoder_buffer.h" + +namespace chromecast { +namespace media { + +DecoderBufferAdapter::DecoderBufferAdapter( + const scoped_refptr< ::media::DecoderBuffer>& buffer) + : buffer_(buffer) { +} + +DecoderBufferAdapter::~DecoderBufferAdapter() { +} + +base::TimeDelta DecoderBufferAdapter::timestamp() const { + return buffer_->timestamp(); +} + +const uint8* DecoderBufferAdapter::data() const { + return buffer_->data(); +} + +uint8* DecoderBufferAdapter::writable_data() const { + return buffer_->writable_data(); +} + +int DecoderBufferAdapter::data_size() const { + return buffer_->data_size(); +} + +const ::media::DecryptConfig* DecoderBufferAdapter::decrypt_config() const { + return buffer_->decrypt_config(); +} + +bool DecoderBufferAdapter::end_of_stream() const { + return buffer_->end_of_stream(); +} + +} // namespace media +} // namespace chromecast diff --git a/chromecast/media/cma/base/decoder_buffer_adapter.h b/chromecast/media/cma/base/decoder_buffer_adapter.h new file mode 100644 index 0000000..9fe6da9 --- /dev/null +++ b/chromecast/media/cma/base/decoder_buffer_adapter.h @@ -0,0 +1,45 @@ +// 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 CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_ADAPTER_H_ +#define CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_ADAPTER_H_ + +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "chromecast/media/cma/base/decoder_buffer_base.h" + +namespace media { +class DecoderBuffer; +} + +namespace chromecast { +namespace media { + +// DecoderBufferAdapter wraps a ::media::DecoderBuffer +// into a DecoderBufferBase. +class DecoderBufferAdapter : public DecoderBufferBase { + public: + explicit DecoderBufferAdapter( + const scoped_refptr< ::media::DecoderBuffer>& buffer); + + // DecoderBufferBase implementation. + virtual base::TimeDelta timestamp() const OVERRIDE; + virtual const uint8* data() const OVERRIDE; + virtual uint8* writable_data() const OVERRIDE; + virtual int data_size() const OVERRIDE; + virtual const ::media::DecryptConfig* decrypt_config() const OVERRIDE; + virtual bool end_of_stream() const OVERRIDE; + + private: + virtual ~DecoderBufferAdapter(); + + scoped_refptr< ::media::DecoderBuffer> const buffer_; + + DISALLOW_COPY_AND_ASSIGN(DecoderBufferAdapter); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_ADAPTER_H_ diff --git a/chromecast/media/cma/base/decoder_buffer_base.cc b/chromecast/media/cma/base/decoder_buffer_base.cc new file mode 100644 index 0000000..40c0a7d --- /dev/null +++ b/chromecast/media/cma/base/decoder_buffer_base.cc @@ -0,0 +1,17 @@ +// 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/base/decoder_buffer_base.h" + +namespace chromecast { +namespace media { + +DecoderBufferBase::DecoderBufferBase() { +} + +DecoderBufferBase::~DecoderBufferBase() { +} + +} // namespace media +} // namespace chromecast diff --git a/chromecast/media/cma/base/decoder_buffer_base.h b/chromecast/media/cma/base/decoder_buffer_base.h new file mode 100644 index 0000000..9143104 --- /dev/null +++ b/chromecast/media/cma/base/decoder_buffer_base.h @@ -0,0 +1,57 @@ +// 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 CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ +#define CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ + +#include "base/basictypes.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/time/time.h" + +namespace media { +class DecryptConfig; +} + +namespace chromecast { +namespace media { + +// DecoderBufferBase exposes only the properties of an audio/video buffer. +// The way a DecoderBufferBase is created and organized in memory +// is left as a detail of the implementation of derived classes. +class DecoderBufferBase + : public base::RefCountedThreadSafe<DecoderBufferBase> { + public: + DecoderBufferBase(); + + // Returns the PTS of the frame. + virtual base::TimeDelta timestamp() const = 0; + + // Gets the frame data. + virtual const uint8* data() const = 0; + virtual uint8* writable_data() const = 0; + + // Returns the size of the frame in bytes. + virtual int data_size() const = 0; + + // Returns the decrypt configuration. + // Returns NULL if the buffer has no decrypt info. + virtual const ::media::DecryptConfig* decrypt_config() const = 0; + + // Indicate if this is a special frame that indicates the end of the stream. + // If true, functions to access the frame content cannot be called. + virtual bool end_of_stream() const = 0; + + protected: + friend class base::RefCountedThreadSafe<DecoderBufferBase>; + virtual ~DecoderBufferBase(); + + private: + DISALLOW_COPY_AND_ASSIGN(DecoderBufferBase); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ diff --git a/chromecast/media/media.gyp b/chromecast/media/media.gyp index c6f7030..6f7662d 100644 --- a/chromecast/media/media.gyp +++ b/chromecast/media/media.gyp @@ -20,6 +20,10 @@ 'cma/base/buffering_state.cc', 'cma/base/buffering_state.h', 'cma/base/cma_logging.h', + 'cma/base/decoder_buffer_adapter.cc', + 'cma/base/decoder_buffer_adapter.h', + 'cma/base/decoder_buffer_base.cc', + 'cma/base/decoder_buffer_base.h', ], }, { |