IOMX.h revision 56ce726019f700a95ce5b45beebceadae4836e30
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2009 The Android Open Source Project
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * you may not use this file except in compliance with the License.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may obtain a copy of the License at
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * See the License for the specific language governing permissions and
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * limitations under the License.
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef ANDROID_IOMX_H_
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define ANDROID_IOMX_H_
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <binder/IInterface.h>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <gui/IGraphicBufferProducer.h>
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ui/GraphicBuffer.h>
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utils/List.h>
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utils/String8.h>
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <OMX_Core.h>
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <OMX_Video.h>
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IMemory;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IOMXObserver;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IOMXRenderer;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Surface;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IOMX : public IInterface {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public:
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DECLARE_META_INTERFACE(OMX);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef void *buffer_id;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef void *node_id;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Given a node_id and the calling process' pid, returns true iff
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // the implementation of the OMX interface lives in the same
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // process.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual bool livesLocally(node_id node, pid_t pid) = 0;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct ComponentInfo {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        String8 mName;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        List<String8> mRoles;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    };
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t listNodes(List<ComponentInfo> *list) = 0;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t allocateNode(
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const char *name, const sp<IOMXObserver> &observer,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id *node) = 0;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t freeNode(node_id node) = 0;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t sendCommand(
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_COMMANDTYPE cmd, OMX_S32 param) = 0;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    virtual status_t getParameter(
65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            node_id node, OMX_INDEXTYPE index,
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            void *params, size_t size) = 0;
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    virtual status_t setParameter(
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node, OMX_INDEXTYPE index,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const void *params, size_t size) = 0;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t getConfig(
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_INDEXTYPE index,
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            void *params, size_t size) = 0;
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t setConfig(
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node, OMX_INDEXTYPE index,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const void *params, size_t size) = 0;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t getState(
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_STATETYPE* state) = 0;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t storeMetaDataInBuffers(
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node, OMX_U32 port_index, OMX_BOOL enable) = 0;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t prepareForAdaptivePlayback(
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_U32 portIndex, OMX_BOOL enable,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 maxFrameWidth, OMX_U32 maxFrameHeight) = 0;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t enableGraphicBuffers(
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_U32 port_index, OMX_BOOL enable) = 0;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t getGraphicBufferUsage(
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_U32 port_index, OMX_U32* usage) = 0;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t useBuffer(
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_U32 port_index, const sp<IMemory> &params,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            buffer_id *buffer) = 0;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t useGraphicBuffer(
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node, OMX_U32 port_index,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const sp<GraphicBuffer> &graphicBuffer, buffer_id *buffer) = 0;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t updateGraphicBufferInMeta(
105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            node_id node, OMX_U32 port_index,
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            const sp<GraphicBuffer> &graphicBuffer, buffer_id buffer) = 0;
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual status_t createInputSurface(
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node, OMX_U32 port_index,
110868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)            sp<IGraphicBufferProducer> *bufferProducer) = 0;
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t signalEndOfInputStream(node_id node) = 0;
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    // This API clearly only makes sense if the caller lives in the
115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    // same process as the callee, i.e. is the media_server, as the
116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    // returned "buffer_data" pointer is just that, a pointer into local
117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    // address space.
118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    virtual status_t allocateBuffer(
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            node_id node, OMX_U32 port_index, size_t size,
120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            buffer_id *buffer, void **buffer_data) = 0;
121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    virtual status_t allocateBufferWithBackup(
123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            node_id node, OMX_U32 port_index, const sp<IMemory> &params,
124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            buffer_id *buffer) = 0;
125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    virtual status_t freeBuffer(
127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            node_id node, OMX_U32 port_index, buffer_id buffer) = 0;
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t fillBuffer(node_id node, buffer_id buffer) = 0;
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t emptyBuffer(
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node,
133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            buffer_id buffer,
134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            OMX_U32 range_offset, OMX_U32 range_length,
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 flags, OMX_TICKS timestamp) = 0;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    virtual status_t getExtensionIndex(
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            node_id node,
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const char *parameter_name,
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            OMX_INDEXTYPE *index) = 0;
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    enum InternalOptionType {
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        INTERNAL_OPTION_SUSPEND,  // data is a bool
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        INTERNAL_OPTION_REPEAT_PREVIOUS_FRAME_DELAY,  // data is an int64_t
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    };
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    virtual status_t setInternalOption(
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            node_id node,
148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            OMX_U32 port_index,
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            InternalOptionType type,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            const void *data,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            size_t size) = 0;
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct omx_message {
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    enum {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        EVENT,
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        EMPTY_BUFFER_DONE,
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        FILL_BUFFER_DONE,
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } type;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    IOMX::node_id node;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    union {
165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // if type == EVENT
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        struct {
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_EVENTTYPE event;
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            OMX_U32 data1;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 data2;
170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        } event_data;
171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // if type == EMPTY_BUFFER_DONE
173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        struct {
174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            IOMX::buffer_id buffer;
175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        } buffer_data;
176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // if type == FILL_BUFFER_DONE
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        struct {
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            IOMX::buffer_id buffer;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 range_offset;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 range_length;
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_U32 flags;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_TICKS timestamp;
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            OMX_PTR platform_private;
185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            OMX_PTR data_ptr;
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        } extended_buffer_data;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } u;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IOMXObserver : public IInterface {
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public:
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DECLARE_META_INTERFACE(OMXObserver);
194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual void onMessage(const omx_message &msg) = 0;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BnOMX : public BnInterface<IOMX> {
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public:
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t onTransact(
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            uint32_t code, const Parcel &data, Parcel *reply,
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            uint32_t flags = 0);
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BnOMXObserver : public BnInterface<IOMXObserver> {
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public:
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual status_t onTransact(
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            uint32_t code, const Parcel &data, Parcel *reply,
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            uint32_t flags = 0);
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct CodecProfileLevel {
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OMX_U32 mProfile;
216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    OMX_U32 mLevel;
217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}  // namespace android
220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif  // ANDROID_IOMX_H_
222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)