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