15d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall/*
25d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * Copyright (C) 2014 The Android Open Source Project
35d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall *
45d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License");
55d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * you may not use this file except in compliance with the License.
65d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * You may obtain a copy of the License at
75d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall *
85d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall *      http://www.apache.org/licenses/LICENSE-2.0
95d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall *
105d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * Unless required by applicable law or agreed to in writing, software
115d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS,
125d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * See the License for the specific language governing permissions and
145d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall * limitations under the License.
155d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall */
1612f608f3d2089439a108788a1908941eea4277b9Puneet Lall
1712f608f3d2089439a108788a1908941eea4277b9Puneet Lallpackage com.android.camera.one.v2.sharedimagereader.imagedistributor;
1812f608f3d2089439a108788a1908941eea4277b9Puneet Lall
1912f608f3d2089439a108788a1908941eea4277b9Puneet Lallimport com.android.camera.async.BufferQueue;
2012f608f3d2089439a108788a1908941eea4277b9Puneet Lallimport com.android.camera.async.BufferQueueController;
2112f608f3d2089439a108788a1908941eea4277b9Puneet Lallimport com.android.camera.one.v2.camera2proxy.ImageProxy;
225d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall
2320aa834e03da0af6d3d9c64086efb4a1f6f424b5Puneet Lallimport javax.annotation.ParametersAreNonnullByDefault;
2420aa834e03da0af6d3d9c64086efb4a1f6f424b5Puneet Lall
2520aa834e03da0af6d3d9c64086efb4a1f6f424b5Puneet Lall@ParametersAreNonnullByDefault
2612f608f3d2089439a108788a1908941eea4277b9Puneet Lallpublic interface ImageDistributor {
278d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall    /**
288d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * Begins routing new images with timestamps matching those found in
298d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * inputTimestampQueue to outputStream.
308d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * <p>
318d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * The route is removed when either inputTimestampQueue is closed, or
328d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * outputStream is closed.
338d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * <p>
348d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * If multiple routes request the same image, they will both receive a
358d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * reference-counted "copy".
368d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     *
378d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * @param inputTimestampQueue A queue containing timestamps of all images to
388d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     *            be routed to outputStream.
398d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     * @param outputStream The output queue in which to add images.
408d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall     */
418d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall    void addRoute(BufferQueue<Long> inputTimestampQueue,
428d40d27547bccab77d448af2e92b4059b2e6d206Puneet Lall            BufferQueueController<ImageProxy> outputStream);
435d4fb6accab3bcbe737d52747c328de5cc092d02Puneet Lall}
44