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