12ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa/* 22ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * Copyright (C) 2009 The Android Open Source Project 32ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * 42ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * Licensed under the Apache License, Version 2.0 (the "License"); 52ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * you may not use this file except in compliance with the License. 62ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * You may obtain a copy of the License at 72ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * 82ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * http://www.apache.org/licenses/LICENSE-2.0 92ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * 102ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * Unless required by applicable law or agreed to in writing, software 112ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * distributed under the License is distributed on an "AS IS" BASIS, 122ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * See the License for the specific language governing permissions and 142ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa * limitations under the License. 152ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa */ 162ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 172ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#ifndef ANDROID_IOMXSTORE_H_ 182ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 192ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#define ANDROID_IOMXSTORE_H_ 202ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 212ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <media/IOMX.h> 222ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <android/hardware/media/omx/1.0/IOmxStore.h> 232ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 242ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <binder/IInterface.h> 252ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <binder/IBinder.h> 262ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 272ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <vector> 282ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#include <string> 292ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 302ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasanamespace android { 312ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 322ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasausing hardware::media::omx::V1_0::IOmxStore; 332ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 342ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasaclass IOMXStore : public IInterface { 352ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasapublic: 362ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa DECLARE_META_INTERFACE(OMXStore); 372ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 382ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa struct Attribute { 392ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string key; 402ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string value; 412ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa }; 422ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 432ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa struct NodeInfo { 442ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string name; 452ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string owner; 462ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::vector<Attribute> attributes; 472ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa }; 482ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 492ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa struct RoleInfo { 502ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string role; 512ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::string type; 522ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa bool isEncoder; 532ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa bool preferPlatformNodes; 542ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::vector<NodeInfo> nodes; 552ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa }; 562ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 572ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa virtual status_t listServiceAttributes( 582ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa std::vector<Attribute>* attributes) = 0; 592ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 602ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa virtual status_t getNodePrefix(std::string* prefix) = 0; 612ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 622ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa virtual status_t listRoles(std::vector<RoleInfo>* roleList) = 0; 632ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 642ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa virtual status_t getOmx(const std::string& name, sp<IOMX>* omx) = 0; 652ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa}; 662ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 672ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 682ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa//////////////////////////////////////////////////////////////////////////////// 692ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 702ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasaclass BnOMXStore : public BnInterface<IOMXStore> { 712ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasapublic: 722ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa virtual status_t onTransact( 732ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa uint32_t code, const Parcel &data, Parcel *reply, 742ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa uint32_t flags = 0); 752ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa}; 762ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 772ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa} // namespace android 782ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa 792ef71c5be307e98c6a0164e8b58cb716f9b31622Pawin Vongmasa#endif // ANDROID_IOMX_H_ 80