blob: 52ad052585b9659cbabe2a9ac8a63483dbbfc838 [file] [log] [blame]
// 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_IPC_MEDIA_MEMORY_CHUNK_H_
#define CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_
#include <stddef.h>
namespace chromecast {
namespace media {
// MediaMemoryChunk represents a block of memory without doing any assumption
// about the type of memory (e.g. shared memory) nor about the underlying
// memory ownership.
// The block of memory can be invalidated under the cover (e.g. if the derived
// class does not own the underlying memory),
// in that case, MediaMemoryChunk::valid() will return false.
class MediaMemoryChunk {
public:
virtual ~MediaMemoryChunk();
// Returns the start of the block of memory.
virtual void* data() const = 0;
// Returns the size of the block of memory.
virtual size_t size() const = 0;
// Returns whether the underlying block of memory is valid.
// Since MediaMemoryChunk does not specify a memory ownership model,
// the underlying block of memory might be invalidated by a third party.
// In that case, valid() will return false.
virtual bool valid() const = 0;
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_CMA_IPC_MEDIA_MEMORY_CHUNK_H_