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> ¶ms, 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> ¶ms, 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)