1de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde/* 2de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * Copyright (C) 2015 The Android Open Source Project 3de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * 4de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * Licensed under the Apache License, Version 2.0 (the "License"); 5de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * you may not use this file except in compliance with the License. 6de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * You may obtain a copy of the License at 7de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * 8de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * http://www.apache.org/licenses/LICENSE-2.0 9de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * 10de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * Unless required by applicable law or agreed to in writing, software 11de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * distributed under the License is distributed on an "AS IS" BASIS, 12de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * See the License for the specific language governing permissions and 14de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * limitations under the License. 15de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde */ 16de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde 17de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohdepackage com.android.camera.processing.memory; 18de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde 19de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohdeimport java.nio.ByteBuffer; 20de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde 21de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde/** 22de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * Resource pool for large, directly allocated byte buffers. The integer key 23de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde * represents the size of the bytebuffer. 24de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde */ 25de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohdepublic final class ByteBufferDirectPool extends SimpleLruResourcePool<Integer, ByteBuffer> { 26de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde public ByteBufferDirectPool(int lruSize) { 27de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde super(lruSize); 28de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde } 29de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde 30de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde @Override 31de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde protected ByteBuffer create(Integer bytes) { 32de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde return ByteBuffer.allocateDirect(bytes); 33de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde } 34de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde 35de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde @Override 36de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde protected ByteBuffer recycle(Integer integer, ByteBuffer byteBuffer) { 37de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde // Reset byte buffer location and limits 38de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde byteBuffer.rewind(); 39de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde byteBuffer.limit(byteBuffer.capacity()); 40de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde return byteBuffer; 41de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde } 42de2c5f84c216d91a366d3361be78a8c8710bd65dPaul Rohde} 43