1c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa/* 2c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * Copyright (C) 2018 The Android Open Source Project 3c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * 4c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * Licensed under the Apache License, Version 2.0 (the "License"); 5c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * you may not use this file except in compliance with the License. 6c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * You may obtain a copy of the License at 7c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * 8c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * http://www.apache.org/licenses/LICENSE-2.0 9c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * 10c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * Unless required by applicable law or agreed to in writing, software 11c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * distributed under the License is distributed on an "AS IS" BASIS, 12c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * See the License for the specific language governing permissions and 14c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * limitations under the License. 15c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa */ 16c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 17c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#ifndef HARDWARE_GOOGLE_MEDIA_C2_V1_0_UTILS_CONFIGURABLEC2INTF_H 18c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#define HARDWARE_GOOGLE_MEDIA_C2_V1_0_UTILS_CONFIGURABLEC2INTF_H 19c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 20c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <C2Work.h> 21c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <C2Component.h> 22c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <C2Param.h> 23c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <C2.h> 24c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 25c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <hidl/HidlSupport.h> 26c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <utils/StrongPointer.h> 27c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <vector> 28c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#include <memory> 29c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 30c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace hardware { 31c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace google { 32c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace media { 33c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace c2 { 34c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace V1_0 { 35c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasanamespace utils { 36c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 37c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasausing ::android::sp; 38c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasausing ::android::hardware::hidl_string; 39c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasausing ::android::hardware::hidl_vec; 40c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasausing ::android::hardware::Return; 41c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasausing ::android::hardware::Void; 42c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 43c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa/** 44c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa * Common Codec 2.0 interface wrapper. 45c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa */ 46c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasastruct ConfigurableC2Intf { 47c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa C2String getName() const { return mName; } 48c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa /** C2ComponentInterface::query_vb sans stack params */ 49c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa virtual c2_status_t query( 50c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa const std::vector<C2Param::Index> &indices, 51c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa c2_blocking_t mayBlock, 52c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa std::vector<std::unique_ptr<C2Param>>* const params) const = 0; 53c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa /** C2ComponentInterface::config_vb */ 54c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa virtual c2_status_t config( 55c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa const std::vector<C2Param*> ¶ms, 56c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa c2_blocking_t mayBlock, 57c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa std::vector<std::unique_ptr<C2SettingResult>>* const failures) = 0; 58c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa /** C2ComponentInterface::querySupportedParams_nb */ 59c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa virtual c2_status_t querySupportedParams( 60c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa std::vector<std::shared_ptr<C2ParamDescriptor>>* const params) const = 0; 61c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa /** C2ComponentInterface::querySupportedParams_nb */ 62c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa virtual c2_status_t querySupportedValues( 63c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa std::vector<C2FieldSupportedValuesQuery>& fields, c2_blocking_t mayBlock) const = 0; 64c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 65c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa virtual ~ConfigurableC2Intf() = default; 66c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 67c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa ConfigurableC2Intf(const C2String& name) : mName(name) {} 68c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 69c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasaprotected: 70c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa C2String mName; /* cache component name */ 71c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa}; 72c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 73c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace utils 74c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace V1_0 75c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace c2 76c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace media 77c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace google 78c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa} // namespace hardware 79c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa 80c470281b28a572f8e3331341a3855344608d0f72Pawin Vongmasa#endif // HARDWARE_GOOGLE_MEDIA_C2_V1_0_UTILS_CONFIGURABLEC2INTF_H 81