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