1ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala/* 2ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 3ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * 4ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * you may not use this file except in compliance with the License. 6ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * You may obtain a copy of the License at 7ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * 8ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * 10ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * See the License for the specific language governing permissions and 14ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala * limitations under the License. 15ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala */ 16ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 17ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#ifndef ANDROiD_SERVERS_CAMERA_CAMERA2HEAP_H 18ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#define ANDROiD_SERVERS_CAMERA_CAMERA2HEAP_H 19ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 20ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#include <binder/MemoryBase.h> 21ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#include <binder/MemoryHeapBase.h> 22ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 23ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvalanamespace android { 24ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvalanamespace camera2 { 25ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 26ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala// Utility class for managing a set of IMemory blocks 27ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvalaclass Camera2Heap : public RefBase { 28ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala public: 298b0b971b1416738f22488a80be726d1ec12552a8Chih-Hung Hsieh explicit Camera2Heap(size_t buf_size, uint_t num_buffers = 1, 30ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala const char *name = NULL) : 31ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mBufSize(buf_size), 32ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mNumBufs(num_buffers) { 33ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mHeap = new MemoryHeapBase(buf_size * num_buffers, 0, name); 34ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mBuffers = new sp<MemoryBase>[mNumBufs]; 35ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala for (uint_t i = 0; i < mNumBufs; i++) 36ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mBuffers[i] = new MemoryBase(mHeap, 37ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala i * mBufSize, 38ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala mBufSize); 39ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala } 40ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 41ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala virtual ~Camera2Heap() 42ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala { 43ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala delete [] mBuffers; 44ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala } 45ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 46ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala size_t mBufSize; 47ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala uint_t mNumBufs; 48ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala sp<MemoryHeapBase> mHeap; 49ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala sp<MemoryBase> *mBuffers; 50ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala}; 51ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 52ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala}; // namespace camera2 53ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala}; // namespace android 54ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala 55ea0d51b5ed0b474433b02414f9133b835f972569Eino-Ville Talvala#endif 56