/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package hardware.google.media.c2@1.0; /** * Generic configuration interface used by all configurable Codec 2.0 * components. * * This interface must be supported in all states of the inheriting * object, and must not change the state of the inheriting object. */ interface IConfigurable { /** * Returns the name of this object. This must match the name that was * supplied during the creation of the object. * * @return name Name of this object. */ getName() generates (string name); /** * Queries a set of parameters from the object. Querying is performed at * best effort: the object must query all supported parameters and skip * unsupported ones, or parameters that could not be allocated. Any errors * are communicated in the return value. * * \note Parameter values do not depend on the order of query. * * This method must return within 1ms if \p mayBlock is DONT_BLOCK, and * within 5ms otherwise. * * @param indices List of param indices for params to be queried. * @param mayBlock Whether this call may block or not. * @return status Status of the call, which may be * - OK - All parameters could be queried. * - BAD_INDEX - All supported parameters could be queried, but some * parameters were not supported. * - NO_MEMORY - Could not allocate memory for a supported parameter. * - BLOCKING - Querying some parameters requires blocking. * - CORRUPTED - Some unknown error prevented the querying of the * parameters. (unexpected) * @return params List of params queried corresponding to \p indices. */ query( vec indices, bool mayBlock ) generates ( Status status, Params params ); /** * Sets a set of parameters for the object. Tuning is performed at best * effort: the object must update all supported configuration at best * effort and skip unsupported parameters. Any errors are communicated in * the return value and in \p failures. * * \note Parameter tuning DOES depend on the order of the tuning parameters. * E.g. some parameter update may allow some subsequent parameter update. * * This method must return within 1ms if \p mayBlock is false, and within * 5ms otherwise. * * @param inParams Requested parameter updates. * @param mayBlock Whether this call may block or not. * @return status Status of the call, which may be * - OK - All parameters could be updated successfully. * - BAD_INDEX - All supported parameters could be updated successfully, * but some parameters were not supported. * - NO_MEMORY - Some supported parameters could not be updated * successfully because they contained unsupported values. * These are returned in \p failures. * - BLOCKING - Setting some parameters requires blocking. * - CORRUPTED - Some unknown error prevented the update of the * parameters. (unexpected) * @return failures List of parameter failures. * @return outParams Resulting values for the configured parameters. */ config( Params inParams, bool mayBlock ) generates ( Status status, vec failures, Params outParams ); // REFLECTION MECHANISM // ========================================================================= /** * Returns a selected range of the set of supported parameters. * * The set of supported parameters are represented in a vector with a * start index of 0, and the selected range are indices into this vector. * Fewer than \p count parameters are returned if the selected range is * not fully/not at all part of the available vector indices. * * This method must return within 1ms. * * @param start start index of selected range * @param count size of the selected * @return status Status of the call, which may be * - OK - The operation completed successfully. * - NO_MEMORY - Not enough memory to complete this method. * @return params Vector containing the selected range of supported * parameters. */ querySupportedParams( uint32_t start, uint32_t count ) generates ( Status status, vec params ); /** * Retrieves the supported values for the queried fields. * * Upon return the object must fill in the supported * values for the fields listed as well as a status for each field. * Object shall process all fields queried even if some queries fail. * * This method must return within 1ms if \p mayBlock is false, and within * 5ms otherwise. * * @param inFields Vector of field queries. * @param mayBlock Whether this call may block or not. * @return status Status of the call, which may be * - OK - The operation completed successfully. * - BLOCKING - Querying some parameters requires blocking. * - NO_MEMORY - Not enough memory to complete this method. * - BAD_INDEX - At least one field was not recognized as a component * field. * @return outFields Vector containing supported values and query result * for the selected fields. */ querySupportedValues( vec inFields, bool mayBlock ) generates ( Status status, vec outFields ); };