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