1e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman/* 2e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Copyright (C) 2009 The Android Open Source Project 3e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * 4e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Licensed under the Apache License, Version 2.0 (the "License"); 5e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * you may not use this file except in compliance with the License. 6e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * You may obtain a copy of the License at 7e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * 8e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * http://www.apache.org/licenses/LICENSE-2.0 9e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * 10e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Unless required by applicable law or agreed to in writing, software 11e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * distributed under the License is distributed on an "AS IS" BASIS, 12e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * See the License for the specific language governing permissions and 14e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * limitations under the License. 15e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman */ 16e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 17e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#ifndef ANDROID_IOMX_H_ 18e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 19e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#define ANDROID_IOMX_H_ 20e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 21e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <binder/IInterface.h> 22e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <utils/List.h> 23e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <utils/String8.h> 24e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <cutils/native_handle.h> 25e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 26e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <list> 27e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 2804563aafa0debc95d50951ca944abf37ef2777cePawin Vongmasa#include <hidl/HybridInterface.h> 29e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <media/hardware/MetadataBufferType.h> 30ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa#include <android/hardware/media/omx/1.0/IOmxNode.h> 31e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 32e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <OMX_Core.h> 33e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <OMX_Video.h> 34e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 35e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramannamespace android { 36e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 37e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IGraphicBufferProducer; 38e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IGraphicBufferSource; 39e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IMemory; 40e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMXBufferSource; 41e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMXNode; 42e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMXObserver; 43e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass NativeHandle; 44e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass OMXBuffer; 45e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanstruct omx_message; 46e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 47ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasausing hardware::media::omx::V1_0::IOmxNode; 48ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa 49e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMX : public IInterface { 50e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 51e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman DECLARE_META_INTERFACE(OMX); 52e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 53e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman typedef uint32_t buffer_id; 54e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 55e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman enum { 56e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kFenceTimeoutMs = 1000 57e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman }; 58e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 59e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman enum PortMode { 60e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModePresetStart = 0, 61e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModePresetByteBuffer, 62e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModePresetANWBuffer, 63e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModePresetSecureBuffer, 64e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModePresetEnd, 65e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 66e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModeDynamicStart = 100, 67e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModeDynamicANWBuffer, // uses metadata mode kMetadataBufferTypeANWBuffer 68e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // or kMetadataBufferTypeGrallocSource 69e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModeDynamicNativeHandle, // uses metadata mode kMetadataBufferTypeNativeHandleSource 70e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman kPortModeDynamicEnd, 71e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman }; 72e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 73e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman struct ComponentInfo { 74e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman String8 mName; 75e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman List<String8> mRoles; 76e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman }; 77e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t listNodes(List<ComponentInfo> *list) = 0; 78e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 79e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t allocateNode( 80e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman const char *name, const sp<IOMXObserver> &observer, 81e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman sp<IOMXNode> *omxNode) = 0; 82e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 83e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t createInputSurface( 84e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman sp<IGraphicBufferProducer> *bufferProducer, 85e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman sp<IGraphicBufferSource> *bufferSource) = 0; 86e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 87e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 88e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMXNode : public IInterface { 89e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 90ac7d4125516299b8a3e6f2b25822a692bdd96311Pawin Vongmasa DECLARE_HYBRID_META_INTERFACE(OMXNode, IOmxNode); 91e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 92e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman typedef IOMX::buffer_id buffer_id; 93e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 94e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t freeNode() = 0; 95e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 96e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t sendCommand( 97e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_COMMANDTYPE cmd, OMX_S32 param) = 0; 98e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 99e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getParameter( 100e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_INDEXTYPE index, void *params, size_t size) = 0; 101e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 102e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setParameter( 103e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_INDEXTYPE index, const void *params, size_t size) = 0; 104e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 105e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getConfig( 106e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_INDEXTYPE index, void *params, size_t size) = 0; 107e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 108e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setConfig( 109e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_INDEXTYPE index, const void *params, size_t size) = 0; 110e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 111e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setPortMode( 112e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 port_index, IOMX::PortMode mode) = 0; 113e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 114e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t prepareForAdaptivePlayback( 115e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 portIndex, OMX_BOOL enable, 116e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 maxFrameWidth, OMX_U32 maxFrameHeight) = 0; 117e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 118e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t configureVideoTunnelMode( 119e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 portIndex, OMX_BOOL tunneled, 120e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 audioHwSync, native_handle_t **sidebandHandle) = 0; 121e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 122e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getGraphicBufferUsage( 123e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 port_index, OMX_U32* usage) = 0; 124e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 125e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t setInputSurface( 126e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman const sp<IOMXBufferSource> &bufferSource) = 0; 127e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 128e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Allocate an opaque buffer as a native handle. If component supports returning native 129e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // handles, those are returned in *native_handle. Otherwise, the allocated buffer is 130e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // returned in *buffer_data. This clearly only makes sense if the caller lives in the 131e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // same process as the callee, i.e. is the media_server, as the returned "buffer_data" 132e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // pointer is just that, a pointer into local address space. 133e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t allocateSecureBuffer( 134e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 port_index, size_t size, buffer_id *buffer, 135e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman void **buffer_data, sp<NativeHandle> *native_handle) = 0; 136e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 137e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Instructs the component to use the buffer passed in via |omxBuf| on the 138e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // specified port. Returns in |*buffer| the buffer id that the component 139e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // assigns to this buffer. |omxBuf| must be one of: 140e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // 1) OMXBuffer::sPreset for meta-mode, 141e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // 2) type kBufferTypeANWBuffer for non-meta-graphic buffer mode, 142e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // 3) type kBufferTypeSharedMem for bytebuffer mode. 143e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t useBuffer( 144e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 port_index, const OMXBuffer &omxBuf, buffer_id *buffer) = 0; 145e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 146e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Frees the buffer on the specified port with buffer id |buffer|. 147e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t freeBuffer( 148e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 port_index, buffer_id buffer) = 0; 149e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 150e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Calls OMX_FillBuffer on buffer. Passes |fenceFd| to component if it 151e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // supports fences. Otherwise, it waits on |fenceFd| before calling 152e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // OMX_FillBuffer. Takes ownership of |fenceFd| even if this call fails. 153e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // If the port is in metadata mode, the buffer will be updated to point 154e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // to the new buffer passed in via |omxBuf| before OMX_FillBuffer is called. 155e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Otherwise info in the |omxBuf| is not used. 156e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t fillBuffer( 157e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman buffer_id buffer, const OMXBuffer &omxBuf, int fenceFd = -1) = 0; 158e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 159e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Calls OMX_EmptyBuffer on buffer. Passes |fenceFd| to component if it 160e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // supports fences. Otherwise, it waits on |fenceFd| before calling 161e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // OMX_EmptyBuffer. Takes ownership of |fenceFd| even if this call fails. 162e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // If the port is in metadata mode, the buffer will be updated to point 163e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // to the new buffer passed in via |omxBuf| before OMX_EmptyBuffer is called. 164e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t emptyBuffer( 165e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman buffer_id buffer, const OMXBuffer &omxBuf, 166e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 flags, OMX_TICKS timestamp, int fenceFd = -1) = 0; 167e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 168e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t getExtensionIndex( 169e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman const char *parameter_name, 170e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_INDEXTYPE *index) = 0; 171e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 172e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t dispatchMessage(const omx_message &msg) = 0; 173e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 174e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 175e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanstruct omx_message { 176e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman enum { 177e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman EVENT, 178e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman EMPTY_BUFFER_DONE, 179e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman FILL_BUFFER_DONE, 180e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman FRAME_RENDERED, 181e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } type; 182e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 183e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman int fenceFd; // used for EMPTY_BUFFER_DONE and FILL_BUFFER_DONE; client must close this 184e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 185e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman union { 186e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // if type == EVENT 187e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman struct { 188e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_EVENTTYPE event; 189e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 data1; 190e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 data2; 191e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 data3; 192e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 data4; 193e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } event_data; 194e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 195e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // if type == EMPTY_BUFFER_DONE 196e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman struct { 197e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman IOMX::buffer_id buffer; 198e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } buffer_data; 199e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 200e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // if type == FILL_BUFFER_DONE 201e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman struct { 202e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman IOMX::buffer_id buffer; 203e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 range_offset; 204e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 range_length; 205e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_U32 flags; 206e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_TICKS timestamp; 207e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } extended_buffer_data; 208e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 209e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // if type == FRAME_RENDERED 210e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman struct { 211e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_TICKS timestamp; 212e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman OMX_S64 nanoTime; 213e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } render_data; 214e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } u; 215e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 216e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 217e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass IOMXObserver : public IInterface { 218e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 219e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman DECLARE_META_INTERFACE(OMXObserver); 220e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 221e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // Handle (list of) messages. 222e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual void onMessages(const std::list<omx_message> &messages) = 0; 223e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 224e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 225e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman//////////////////////////////////////////////////////////////////////////////// 226e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 227e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass BnOMX : public BnInterface<IOMX> { 228e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 229e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t onTransact( 230e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t code, const Parcel &data, Parcel *reply, 231e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t flags = 0); 232e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 233e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 234e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass BnOMXNode : public BnInterface<IOMXNode> { 235e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 236e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t onTransact( 237e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t code, const Parcel &data, Parcel *reply, 238e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t flags = 0); 239e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 240e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanprotected: 241e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman // check if the codec is secure. 242e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual bool isSecure() const { 243e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman return false; 244e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman } 245e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 246e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 247e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass BnOMXObserver : public BnInterface<IOMXObserver> { 248e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic: 249e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman virtual status_t onTransact( 250e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t code, const Parcel &data, Parcel *reply, 251e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman uint32_t flags = 0); 252e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; 253e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 254e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman} // namespace android 255e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman 256e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#endif // ANDROID_IOMX_H_ 257