1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.camera.burst;
18 
19 import android.hardware.camera2.TotalCaptureResult;
20 
21 /**
22  * The eviction strategy of the internal Camera image buffer.
23  * <p/>
24  * For a burst the Camera maintains an internal image buffer. This image buffer
25  * has limited memory and old images need to be evicted for storing new images.
26  * The eviction handler encapsulates the eviction strategy that the Camera uses
27  * to evict frames.
28  */
29 public interface EvictionHandler {
30     /**
31      * Return the timestamp of the image that should be dropped.
32      * <p/>
33      * This method is called when the internal image buffer is out of capacity
34      * and needs to drop an image from the buffer.
35      * <p/>
36      * This should return one of the timestamps passed into
37      * {@link #onFrameInserted(long)}, and which has not yet
38      * been dropped.
39      *
40      * @return the timestamp of the frame to drop.
41      */
selectFrameToDrop()42     long selectFrameToDrop();
43 
44     /**
45      * Called when the capture result for a frame is available.
46      *
47      * @param timestamp the timestamp of the frame, this frame may or may not be
48      *            present in the image buffer.
49      * @param captureResult the capture result of the image.
50      */
onFrameCaptureResultAvailable(long timestamp, TotalCaptureResult captureResult)51     void onFrameCaptureResultAvailable(long timestamp,
52             TotalCaptureResult captureResult);
53 
54     /**
55      * Called when an image is inserted in the image buffer.
56      *
57      * @param timestamp the timestamp of the inserted frame in the image buffer.
58      */
onFrameInserted(long timestamp)59     void onFrameInserted(long timestamp);
60 
61     /**
62      * Called when a frame is dropped from the image buffer.
63      *
64      * @param timestamp the timestamp of the dropped frame.
65      */
onFrameDropped(long timestamp)66     void onFrameDropped(long timestamp);
67 }
68