1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport [email protected]::IGraphicBufferProducer; 20*4d7e907cSAndroid Build Coastguard Worker 21*4d7e907cSAndroid Build Coastguard Workerimport IConfigurable; 22*4d7e907cSAndroid Build Coastguard Workerimport IInputSink; 23*4d7e907cSAndroid Build Coastguard Workerimport IInputSurfaceConnection; 24*4d7e907cSAndroid Build Coastguard Worker 25*4d7e907cSAndroid Build Coastguard Worker/** 26*4d7e907cSAndroid Build Coastguard Worker * Input surface for a Codec2 component. 27*4d7e907cSAndroid Build Coastguard Worker * 28*4d7e907cSAndroid Build Coastguard Worker * An <em>input surface</em> is an instance of `IInputSurface`, which may be 29*4d7e907cSAndroid Build Coastguard Worker * created by calling IComponentStore::createInputSurface(). Once created, the 30*4d7e907cSAndroid Build Coastguard Worker * client may 31*4d7e907cSAndroid Build Coastguard Worker * 1. write data to it via the `IGraphicBufferProducer` interface; and 32*4d7e907cSAndroid Build Coastguard Worker * 2. use it as input to a Codec2 encoder. 33*4d7e907cSAndroid Build Coastguard Worker * 34*4d7e907cSAndroid Build Coastguard Worker * @sa IInputSurfaceConnection, IComponentStore::createInputSurface(), 35*4d7e907cSAndroid Build Coastguard Worker * IComponent::connectToInputSurface(). 36*4d7e907cSAndroid Build Coastguard Worker */ 37*4d7e907cSAndroid Build Coastguard Workerinterface IInputSurface { 38*4d7e907cSAndroid Build Coastguard Worker /** 39*4d7e907cSAndroid Build Coastguard Worker * Returns the producer interface into the internal buffer queue. 40*4d7e907cSAndroid Build Coastguard Worker * 41*4d7e907cSAndroid Build Coastguard Worker * @return producer `IGraphicBufferProducer` instance. This must not be 42*4d7e907cSAndroid Build Coastguard Worker * null. 43*4d7e907cSAndroid Build Coastguard Worker */ 44*4d7e907cSAndroid Build Coastguard Worker getGraphicBufferProducer() generates (IGraphicBufferProducer producer); 45*4d7e907cSAndroid Build Coastguard Worker 46*4d7e907cSAndroid Build Coastguard Worker /** 47*4d7e907cSAndroid Build Coastguard Worker * Returns the @ref IConfigurable instance associated to this input surface. 48*4d7e907cSAndroid Build Coastguard Worker * 49*4d7e907cSAndroid Build Coastguard Worker * @return configurable `IConfigurable` instance. This must not be null. 50*4d7e907cSAndroid Build Coastguard Worker */ 51*4d7e907cSAndroid Build Coastguard Worker getConfigurable() generates (IConfigurable configurable); 52*4d7e907cSAndroid Build Coastguard Worker 53*4d7e907cSAndroid Build Coastguard Worker /** 54*4d7e907cSAndroid Build Coastguard Worker * Connects the input surface to an input sink. 55*4d7e907cSAndroid Build Coastguard Worker * 56*4d7e907cSAndroid Build Coastguard Worker * This function is generally called from inside the implementation of 57*4d7e907cSAndroid Build Coastguard Worker * IComponent::connectToInputSurface(), where @p sink is a thin wrapper of 58*4d7e907cSAndroid Build Coastguard Worker * the component that consumes buffers from this surface. 59*4d7e907cSAndroid Build Coastguard Worker * 60*4d7e907cSAndroid Build Coastguard Worker * @param sink Input sink. See `IInputSink` for more information. 61*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the call, which may be 62*4d7e907cSAndroid Build Coastguard Worker * - `OK` - Configuration successful. 63*4d7e907cSAndroid Build Coastguard Worker * - `BAD_VALUE` - @p sink is invalid. 64*4d7e907cSAndroid Build Coastguard Worker * - `CORRUPTED` - Some unknown error occurred. 65*4d7e907cSAndroid Build Coastguard Worker * @return connection `IInputSurfaceConnection` object. This must not be 66*4d7e907cSAndroid Build Coastguard Worker * null if @p status is `OK`. 67*4d7e907cSAndroid Build Coastguard Worker */ 68*4d7e907cSAndroid Build Coastguard Worker connect( 69*4d7e907cSAndroid Build Coastguard Worker IInputSink sink 70*4d7e907cSAndroid Build Coastguard Worker ) generates ( 71*4d7e907cSAndroid Build Coastguard Worker Status status, 72*4d7e907cSAndroid Build Coastguard Worker IInputSurfaceConnection connection 73*4d7e907cSAndroid Build Coastguard Worker ); 74*4d7e907cSAndroid Build Coastguard Worker}; 75*4d7e907cSAndroid Build Coastguard Worker 76