1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
6#define CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
7
8#include "base/basictypes.h"
9
10namespace chromecast {
11namespace media {
12
13// MediaMemoryChunk represents a block of memory without doing any assumption
14// about the type of memory (e.g. shared memory) nor about the underlying
15// memory ownership.
16// The block of memory can be invalidated under the cover (e.g. if the derived
17// class does not own the underlying memory),
18// in that case, MediaMemoryChunk::valid() will return false.
19class MediaMemoryChunk {
20 public:
21  virtual ~MediaMemoryChunk();
22
23  // Returns the start of the block of memory.
24  virtual void* data() const = 0;
25
26  // Returns the size of the block of memory.
27  virtual size_t size() const = 0;
28
29  // Returns whether the underlying block of memory is valid.
30  // Since MediaMemoryChunk does not specify a memory ownership model,
31  // the underlying block of memory might be invalidated by a third party.
32  // In that case, valid() will return false.
33  virtual bool valid() const = 0;
34};
35
36}  // namespace media
37}  // namespace chromecast
38
39#endif  // CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
40