11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/basictypes.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace chromecast {
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace media {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// MediaMemoryChunk represents a block of memory without doing any assumption
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// about the type of memory (e.g. shared memory) nor about the underlying
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// memory ownership.
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// The block of memory can be invalidated under the cover (e.g. if the derived
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// class does not own the underlying memory),
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// in that case, MediaMemoryChunk::valid() will return false.
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass MediaMemoryChunk {
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~MediaMemoryChunk();
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the start of the block of memory.
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void* data() const = 0;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns the size of the block of memory.
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual size_t size() const = 0;
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Returns whether the underlying block of memory is valid.
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Since MediaMemoryChunk does not specify a memory ownership model,
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // the underlying block of memory might be invalidated by a third party.
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // In that case, valid() will return false.
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool valid() const = 0;
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace media
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace chromecast
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
40