omx_video_base.h revision 8767726b6d6b2194cbb3704d7d82f0c7ef34eeb3
1e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly/*-------------------------------------------------------------------------- 28767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen ChavanCopyright (c) 2010-2014, The Linux Foundation. All rights reserved. 3e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 4e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyRedistribution and use in source and binary forms, with or without 56eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalmodification, are permitted provided that the following conditions are 66eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalmet: 7e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly * Redistributions of source code must retain the above copyright 8e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly notice, this list of conditions and the following disclaimer. 96eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Redistributions in binary form must reproduce the above 106eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal copyright notice, this list of conditions and the following 116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal disclaimer in the documentation and/or other materials provided 126eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal with the distribution. 136eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Neither the name of The Linux Foundation nor the names of its 146eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal contributors may be used to endorse or promote products derived 156eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal from this software without specific prior written permission. 166eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 176eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalTHIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 186eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 196eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 206eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 216eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 226eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 236eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 246eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 256eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 266eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 276eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly--------------------------------------------------------------------------*/ 29e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 30e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifndef __OMX_VIDEO_BASE_H__ 31e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define __OMX_VIDEO_BASE_H__ 32e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly/*============================================================================ 33e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly O p e n M A X Component 34e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly Video Encoder 35e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 36e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly*//** @file comx_video_base.h 37e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly This module contains the class definition for openMAX decoder component. 38e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 39e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly*//*========================================================================*/ 40e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 41e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 42e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// Include Files 43e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 44e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define LOG_TAG "OMX-VENC" 466eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#include <stdlib.h> 47e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <stdio.h> 48826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <sys/mman.h> 49e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifdef _ANDROID_ 5061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include <binder/MemoryHeapBase.h> 51826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 5261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "QComOMXMetadata.h" 53826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 54e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif // _ANDROID_ 55e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <pthread.h> 56e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <semaphore.h> 57e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <linux/msm_vidc_enc.h> 58e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include "OMX_Core.h" 59e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include "OMX_QCOMExtns.h" 607beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano#include "OMX_VideoExt.h" 617beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano#include "OMX_IndexExt.h" 62e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include "qc_omx_component.h" 63e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include "omx_video_common.h" 64826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "extra_data_handler.h" 65826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <linux/videodev2.h> 6661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include <dlfcn.h> 6761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "C2DColorConverter.h" 688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#include "vidc_debug.h" 69e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 70e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifdef _ANDROID_ 71e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyusing namespace android; 72e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// local pmem heap object 73e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyclass VideoHeap : public MemoryHeapBase 74e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 7561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 7661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan VideoHeap(int fd, size_t size, void* base); 7761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual ~VideoHeap() {} 78e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly}; 79e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 80e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <utils/Log.h> 81826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 82e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif // _ANDROID_ 83826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 84826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef USE_ION 8561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstatic const char* MEM_DEVICE = "/dev/ion"; 8661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#if defined(MAX_RES_720P) && !defined(_MSM8974_) 8761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define MEM_HEAP_ID ION_CAMERA_HEAP_ID 8861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#else 8961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#ifdef _MSM8974_ 9061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define MEM_HEAP_ID ION_IOMMU_HEAP_ID 9161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#else 9261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define MEM_HEAP_ID ION_CP_MM_HEAP_ID 9361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif 9461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif 95826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#elif MAX_RES_720P 96826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevstatic const char* MEM_DEVICE = "/dev/pmem_adsp"; 97826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#elif MAX_RES_1080P_EBI 98826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevstatic const char* MEM_DEVICE = "/dev/pmem_adsp"; 99826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#elif MAX_RES_1080P 100826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevstatic const char* MEM_DEVICE = "/dev/pmem_smipool"; 101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#else 102826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#error MEM_DEVICE cannot be determined. 103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 105e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 106e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// Module specific globals 107e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 108e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 109e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_SPEC_VERSION 0x00000101 110e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 111e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 112e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 113e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// Macros 114e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly////////////////////////////////////////////////////////////////////////////// 115e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define PrintFrameHdr(bufHdr) DEBUG_PRINT("bufHdr %x buf %x size %d TS %d\n",\ 11661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (unsigned) bufHdr,\ 11761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (unsigned)((OMX_BUFFERHEADERTYPE *)bufHdr)->pBuffer,\ 11861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (unsigned)((OMX_BUFFERHEADERTYPE *)bufHdr)->nFilledLen,\ 11961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (unsigned)((OMX_BUFFERHEADERTYPE *)bufHdr)->nTimeStamp) 120e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 121e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// BitMask Management logic 122e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITS_PER_BYTE 32 123e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_SIZE(mIndex) (((mIndex) + BITS_PER_BYTE - 1)/BITS_PER_BYTE) 124e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_OFFSET(mIndex) ((mIndex)/BITS_PER_BYTE) 125e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_FLAG(mIndex) (1 << ((mIndex) % BITS_PER_BYTE)) 126e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_CLEAR(mArray,mIndex) (mArray)[BITMASK_OFFSET(mIndex)] \ 12761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &= ~(BITMASK_FLAG(mIndex)) 128e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_SET(mArray,mIndex) (mArray)[BITMASK_OFFSET(mIndex)] \ 12961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan |= BITMASK_FLAG(mIndex) 130e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_PRESENT(mArray,mIndex) ((mArray)[BITMASK_OFFSET(mIndex)] \ 131e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly & BITMASK_FLAG(mIndex)) 132e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_ABSENT(mArray,mIndex) (((mArray)[BITMASK_OFFSET(mIndex)] \ 13361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan & BITMASK_FLAG(mIndex)) == 0x0) 134e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_PRESENT(mArray,mIndex) ((mArray)[BITMASK_OFFSET(mIndex)] \ 135e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly & BITMASK_FLAG(mIndex)) 136e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define BITMASK_ABSENT(mArray,mIndex) (((mArray)[BITMASK_OFFSET(mIndex)] \ 13761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan & BITMASK_FLAG(mIndex)) == 0x0) 138826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 139826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define MAX_NUM_INPUT_BUFFERS 32 140826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 141e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyvoid* message_thread(void *); 1426eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 143e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly// OMX video class 144e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellyclass omx_video: public qc_omx_component 145e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly{ 14661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan protected: 147826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 14861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool meta_mode_enable; 14961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool c2d_opened; 15061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan encoder_media_buffer_type meta_buffers[MAX_NUM_INPUT_BUFFERS]; 15161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *opaque_buffer_hdr[MAX_NUM_INPUT_BUFFERS]; 15261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool mUseProxyColorFormat; 1539ad5c6ee7a6308393e3d11f7d51cd46004473063Praveen Chavan //RGB or non-native input, and we have pre-allocated conversion buffers 1549ad5c6ee7a6308393e3d11f7d51cd46004473063Praveen Chavan bool mUsesColorConversion; 15561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool get_syntaxhdr_enable; 15661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *psource_frame; 15761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *pdest_frame; 1588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bool secure_session; 15956dd7e53ba5657987bd527fa996a7942da01ef63Praveen Chavan //intermediate conversion buffer queued to encoder in case of invalid EOS input 16056dd7e53ba5657987bd527fa996a7942da01ef63Praveen Chavan OMX_BUFFERHEADERTYPE *mEmptyEosBuffer; 16161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 16261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan class omx_c2d_conv 16361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 16461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 16561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_c2d_conv(); 16661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ~omx_c2d_conv(); 16761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool init(); 16861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool open(unsigned int height,unsigned int width, 16961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ColorConvertFormat src, 17061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ColorConvertFormat dest,unsigned int src_stride); 17161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool convert(int src_fd, void *src_base, void *src_viraddr, 17261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int dest_fd, void *dest_base, void *dest_viraddr); 17361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool get_buffer_size(int port,unsigned int &buf_size); 17461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int get_src_format(); 17561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void close(); 17661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan private: 17761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan C2DColorConverterBase *c2dcc; 17861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pthread_mutex_t c_lock; 17961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void *mLibHandle; 18061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ColorConvertFormat src_format; 18161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan createC2DColorConverter_t *mConvertOpen; 18261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan destroyC2DColorConverter_t *mConvertClose; 18361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan }; 18461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_c2d_conv c2d_conv; 185826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 18661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 18761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_video(); // constructor 18861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual ~omx_video(); // destructor 18961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 19061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // virtual int async_message_process (void *context, void* message); 19161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void process_event_cb(void *ctxt,unsigned char id); 19261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 19361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE allocate_buffer( 19461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 19561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 19661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 19761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 19861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes 19961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 20061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_ERRORTYPE component_deinit(OMX_HANDLETYPE hComp)= 0; 20361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_ERRORTYPE component_init(OMX_STRING role)= 0; 20561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_stop(void) = 0; 20761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_pause(void) = 0; 20861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_start(void) = 0; 20961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_flush(unsigned) = 0; 21061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_resume(void) = 0; 21161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_start_done(void) = 0; 21261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_U32 dev_set_message_thread_id(pthread_t) = 0; 21361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_use_buf(void *,unsigned,unsigned) = 0; 21461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_free_buf(void *,unsigned) = 0; 21561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_empty_buf(void *, void *,unsigned,unsigned) = 0; 21661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_fill_buf(void *buffer, void *,unsigned,unsigned) = 0; 21761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_get_buf_req(OMX_U32 *,OMX_U32 *,OMX_U32 *,OMX_U32) = 0; 2188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool dev_get_seq_hdr(void *, unsigned, OMX_U32 *) = 0; 21961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_loaded_start(void) = 0; 22061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_loaded_stop(void) = 0; 22161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_loaded_start_done(void) = 0; 22261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_loaded_stop_done(void) = 0; 2238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool is_secure_session(void) = 0; 2246eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 22561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual int dev_handle_extradata(void*, int) = 0; 22661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual int dev_set_format(int) = 0; 2276eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 22861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_is_video_session_supported(OMX_U32 width, OMX_U32 height) = 0; 22961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual bool dev_get_capability_ltrcount(OMX_U32 *, OMX_U32 *, OMX_U32 *) = 0; 2308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool dev_get_performance_level(OMX_U32 *) = 0; 2318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool dev_get_vui_timing_info(OMX_U32 *) = 0; 2328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool dev_get_peak_bitrate(OMX_U32 *) = 0; 233826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 23461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void omx_release_meta_buffer(OMX_BUFFERHEADERTYPE *buffer); 235826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 236c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan virtual bool dev_color_align(OMX_BUFFERHEADERTYPE *buffer, OMX_U32 width, 237c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan OMX_U32 height) = 0; 2388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual bool dev_get_output_log_flag() = 0; 2398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual int dev_output_log_buffers(const char *buffer_addr, int buffer_len) = 0; 2408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan virtual int dev_extradata_log_buffers(char *buffer_addr) = 0; 24161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE component_role_enum( 24261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 24361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 *role, 24461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 index 24561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 246e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 24761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE component_tunnel_request( 24861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 24961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 25061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE peerComponent, 25161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 peerPort, 25261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_TUNNELSETUPTYPE *tunnelSetup 25361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 254e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 25561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE empty_this_buffer( 25661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 25761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer 25861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 259e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 260e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 261e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 26261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE fill_this_buffer( 26361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 26461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer 26561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 266e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 267e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 26861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE free_buffer( 26961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 27061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 27161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer 27261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 273e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 27461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_component_version( 27561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 27661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_STRING componentName, 27761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VERSIONTYPE *componentVersion, 27861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VERSIONTYPE *specVersion, 27961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_UUIDTYPE *componentUUID 28061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 281e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 28261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_config( 28361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 28461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INDEXTYPE configIndex, 28561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR configData 28661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 287e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 28861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_extension_index( 28961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_HANDLETYPE hComp, 29061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_STRING paramName, 29161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INDEXTYPE *indexType 29261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 293e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 29461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_parameter(OMX_HANDLETYPE hComp, 29561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INDEXTYPE paramIndex, 29661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR paramData); 297e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 29861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_state(OMX_HANDLETYPE hComp, 29961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_STATETYPE *state); 300e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 301e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 302e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 30361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE send_command(OMX_HANDLETYPE hComp, 30461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMMANDTYPE cmd, 30561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 param1, 30661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR cmdData); 307e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 308e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 30961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE set_callbacks(OMX_HANDLETYPE hComp, 31061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CALLBACKTYPE *callbacks, 31161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData); 312e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 31361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_ERRORTYPE set_config(OMX_HANDLETYPE hComp, 31461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INDEXTYPE configIndex, 31561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR configData) = 0; 316e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 31761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan virtual OMX_ERRORTYPE set_parameter(OMX_HANDLETYPE hComp, 31861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INDEXTYPE paramIndex, 31961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR paramData) =0; 320e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 32161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE use_buffer(OMX_HANDLETYPE hComp, 32261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 32361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 32461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 32561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes, 32661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 *buffer); 327e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 328e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 32961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE use_EGL_image(OMX_HANDLETYPE hComp, 33061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 33161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 33261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 33361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void * eglImage); 334e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 335e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 336e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 33761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int m_pipe_in; 33861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int m_pipe_out; 339e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 34061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pthread_t msg_thread_id; 34161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pthread_t async_thread_id; 34261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool async_thread_created; 34361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool msg_thread_created; 344e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 34561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 m_nkind[128]; 346e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 347e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 34861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //int *input_pmem_fd; 34961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //int *output_pmem_fd; 35061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct pmem *m_pInput_pmem; 35161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct pmem *m_pOutput_pmem; 352826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef USE_ION 35361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct venc_ion *m_pInput_ion; 35461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct venc_ion *m_pOutput_ion; 355826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 356826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 357e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 358e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 35961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 36061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Bit Positions 36161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan enum flags_bit_positions { 36261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to IDLE 36361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_IDLE_PENDING =0x1, 36461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to LOADING 36561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_LOADING_PENDING =0x2, 36661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // First Buffer Pending 36761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_FIRST_BUFFER_PENDING =0x3, 36861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Second Buffer Pending 36961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_SECOND_BUFFER_PENDING =0x4, 37061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to Enable 37161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_INPUT_ENABLE_PENDING =0x5, 37261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to Enable 37361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_OUTPUT_ENABLE_PENDING =0x6, 37461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to Disable 37561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_INPUT_DISABLE_PENDING =0x7, 37661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Defer transition to Disable 37761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_OUTPUT_DISABLE_PENDING =0x8, 37861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //defer flush notification 37961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_OUTPUT_FLUSH_PENDING =0x9, 38061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_INPUT_FLUSH_PENDING =0xA, 38161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_PAUSE_PENDING =0xB, 38261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_EXECUTE_PENDING =0xC, 38361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_LOADED_START_PENDING = 0xD, 38461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_LOADED_STOP_PENDING = 0xF, 38561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 38661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan }; 38761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 38861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Deferred callback identifiers 38961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan enum { 39061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Event Callbacks from the venc component thread context 39161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT = 0x1, 39261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Buffer Done callbacks from the venc component thread context 39361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_BUFFER_DONE = 0x2, 39461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Frame Done callbacks from the venc component thread context 39561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_FRAME_DONE = 0x3, 39661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Buffer Done callbacks from the venc component thread context 39761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_FTB = 0x4, 39861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Frame Done callbacks from the venc component thread context 39961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_ETB = 0x5, 40061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Command 40161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_COMMAND = 0x6, 40261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Push-Pending Buffers 40361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_PUSH_PENDING_BUFS = 0x7, 40461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Empty Buffer Done callbacks 40561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EBD = 0x8, 40661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Flush Event Callbacks from the venc component thread context 40761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT_FLUSH = 0x9, 40861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT_INPUT_FLUSH = 0x0A, 40961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT_OUTPUT_FLUSH = 0x0B, 41061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_FBD = 0xc, 41161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_START_DONE = 0xD, 41261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_PAUSE_DONE = 0xE, 41361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_RESUME_DONE = 0xF, 41461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_STOP_DONE = 0x10, 41561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_HARDWARE_ERROR = 0x11, 41661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_LTRUSE_FAILED = 0x12, 41761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_ETB_OPQ = 0x13 41861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan }; 41961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 42061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct omx_event { 4218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long param1; 4228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long param2; 4238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long id; 42461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan }; 42561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 42661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct omx_cmd_queue { 42761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_event m_q[OMX_CORE_CONTROL_CMDQ_SIZE]; 4288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long m_read; 4298767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long m_write; 4308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long m_size; 43161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 43261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue(); 43361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ~omx_cmd_queue(); 4348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bool insert_entry(unsigned long p1, unsigned long p2, unsigned long id); 4358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bool pop_entry(unsigned long *p1,unsigned long *p2, unsigned long *id); 43661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // get msgtype of the first ele from the queue 43761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned get_q_msg_type(); 43861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 43961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan }; 44061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool allocate_done(void); 44261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool allocate_input_done(void); 44361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool allocate_output_done(void); 44461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE free_input_buffer(OMX_BUFFERHEADERTYPE *bufferHdr); 44661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE free_output_buffer(OMX_BUFFERHEADERTYPE *bufferHdr); 44761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE allocate_input_buffer(OMX_HANDLETYPE hComp, 44961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 45061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 45161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 45261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes); 453826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 45461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE allocate_input_meta_buffer(OMX_HANDLETYPE hComp, 45561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 45661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 45761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes); 458826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 45961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE allocate_output_buffer(OMX_HANDLETYPE hComp, 46061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 46161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port,OMX_PTR appData, 46261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes); 46361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 46461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE use_input_buffer(OMX_HANDLETYPE hComp, 46561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 46661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 46761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 46861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes, 46961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 *buffer); 47061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 47161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE use_output_buffer(OMX_HANDLETYPE hComp, 47261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE **bufferHdr, 47361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port, 47461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR appData, 47561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 bytes, 47661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 *buffer); 47761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 47861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool execute_omx_flush(OMX_U32); 47961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool execute_output_flush(void); 48061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool execute_input_flush(void); 4816eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 48261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool execute_flush_all(void); 4836eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 48461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE empty_buffer_done(OMX_HANDLETYPE hComp, 48561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE * buffer); 48661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 48761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE fill_buffer_done(OMX_HANDLETYPE hComp, 48861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE * buffer); 48961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE empty_this_buffer_proxy(OMX_HANDLETYPE hComp, 49061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer); 49161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE empty_this_buffer_opaque(OMX_HANDLETYPE hComp, 49261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer); 49361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE push_input_buffer(OMX_HANDLETYPE hComp); 49461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE convert_queue_buffer(OMX_HANDLETYPE hComp, 4958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan struct pmem &Input_pmem_info,unsigned long &index); 49661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE queue_meta_buffer(OMX_HANDLETYPE hComp, 49761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct pmem &Input_pmem_info); 49856dd7e53ba5657987bd527fa996a7942da01ef63Praveen Chavan OMX_ERRORTYPE push_empty_eos_buffer(OMX_HANDLETYPE hComp, 49956dd7e53ba5657987bd527fa996a7942da01ef63Praveen Chavan OMX_BUFFERHEADERTYPE *buffer); 50061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE fill_this_buffer_proxy(OMX_HANDLETYPE hComp, 50161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *buffer); 50261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool release_done(); 50361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 50461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool release_output_done(); 50561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool release_input_done(); 50661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 50761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE send_command_proxy(OMX_HANDLETYPE hComp, 50861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMMANDTYPE cmd, 50961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 param1, 51061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR cmdData); 5118767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bool post_event( unsigned long p1, 5128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long p2, 5138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan unsigned long id 51461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ); 51561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE get_supported_profile_level(OMX_VIDEO_PARAM_PROFILELEVELTYPE *profileLevelType); 51661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan inline void omx_report_error () { 51761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_pCallbacks.EventHandler && !m_error_propogated) { 51861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_error_propogated = true; 51961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_pCallbacks.EventHandler(&m_cmp,m_app_data, 52061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_EventError,OMX_ErrorHardware,0,NULL); 52161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 52261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 52361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 52461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan inline void omx_report_unsupported_setting () { 52561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_pCallbacks.EventHandler && !m_error_propogated) { 52661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_error_propogated = true; 52761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_pCallbacks.EventHandler(&m_cmp,m_app_data, 52861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_EventError,OMX_ErrorUnsupportedSetting,0,NULL); 52961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 53061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 53161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 53261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void complete_pending_buffer_done_cbs(); 53361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 5348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef USE_ION 5358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan int alloc_map_ion_memory(int size, 5368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan struct ion_allocation_data *alloc_data, 5378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan struct ion_fd_data *fd_data,int flag); 5388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan void free_ion_memory(struct venc_ion *buf_ion_info); 5398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 5408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 54161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //************************************************************* 54261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //*******************MEMBER VARIABLES ************************* 54361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //************************************************************* 54461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 54561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pthread_mutex_t m_lock; 54661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan sem_t m_cmd_lock; 54761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool m_error_propogated; 54861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 54961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //sem to handle the minimum procesing of commands 55061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 55161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 55261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // compression format 55361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //OMX_VIDEO_CODINGTYPE eCompressionFormat; 55461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // OMX State 55561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_STATETYPE m_state; 55661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Application data 55761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PTR m_app_data; 55861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BOOL m_use_input_pmem; 55961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BOOL m_use_output_pmem; 56061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Application callbacks 56161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CALLBACKTYPE m_pCallbacks; 56261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PORT_PARAM_TYPE m_sPortParam; 56361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_PROFILELEVELTYPE m_sParamProfileLevel; 56461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_PORTFORMATTYPE m_sInPortFormat; 56561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_PORTFORMATTYPE m_sOutPortFormat; 56661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_PORTDEFINITIONTYPE m_sInPortDef; 56761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_PORTDEFINITIONTYPE m_sOutPortDef; 56861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_MPEG4TYPE m_sParamMPEG4; 56961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_H263TYPE m_sParamH263; 57061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_AVCTYPE m_sParamAVC; 5717beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_VIDEO_PARAM_VP8TYPE m_sParamVP8; 57261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PORT_PARAM_TYPE m_sPortParam_img; 57361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PORT_PARAM_TYPE m_sPortParam_audio; 57461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_CONFIG_BITRATETYPE m_sConfigBitrate; 57561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_FRAMERATETYPE m_sConfigFramerate; 57661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_BITRATETYPE m_sParamBitrate; 57761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PRIORITYMGMTTYPE m_sPriorityMgmt; 57861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_BUFFERSUPPLIERTYPE m_sInBufSupplier; 57961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_BUFFERSUPPLIERTYPE m_sOutBufSupplier; 58061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_ROTATIONTYPE m_sConfigFrameRotation; 58161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_INTRAREFRESHVOPTYPE m_sConfigIntraRefreshVOP; 58261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_QUANTIZATIONTYPE m_sSessionQuantization; 58361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_QCOM_VIDEO_PARAM_QPRANGETYPE m_sSessionQPRange; 58461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_AVCSLICEFMO m_sAVCSliceFMO; 58561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_INTRAPERIODTYPE m_sIntraperiod; 58661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE m_sErrorCorrection; 58761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_INTRAREFRESHTYPE m_sIntraRefresh; 58861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_PARAM_LTRMODE_TYPE m_sParamLTRMode; 58961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_PARAM_LTRCOUNT_TYPE m_sParamLTRCount; 59061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE m_sConfigLTRPeriod; 59161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_CONFIG_LTRUSE_TYPE m_sConfigLTRUse; 59261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_CONFIG_AVCINTRAPERIOD m_sConfigAVCIDRPeriod; 5938767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_VIDEO_CONFIG_DEINTERLACE m_sConfigDeinterlace; 5948767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_VIDEO_VP8REFERENCEFRAMETYPE m_sConfigVp8ReferenceFrame; 5958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan QOMX_VIDEO_HIERARCHICALLAYERS m_sHierLayers; 5968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan QOMX_EXTNINDEX_VIDEO_INITIALQP m_sParamInitqp; 59761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 m_sExtraData; 59861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 m_input_msg_id; 59961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 60061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // fill this buffer queue 60161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue m_ftb_q; 60261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Command Q for rest of the events 60361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue m_cmd_q; 60461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue m_etb_q; 60561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Input memory pointer 60661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *m_inp_mem_ptr; 60761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Output memory pointer 60861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE *m_out_mem_ptr; 60961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue m_opq_meta_q; 61061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_cmd_queue m_opq_pmem_q; 61161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE meta_buffer_hdr[MAX_NUM_INPUT_BUFFERS]; 61261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 61361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool input_flush_progress; 61461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool output_flush_progress; 61561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool input_use_buffer; 61661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool output_use_buffer; 61761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int pending_input_buffers; 61861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int pending_output_buffers; 61961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 62061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int m_out_bm_count; 62161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int m_inp_bm_count; 62261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int m_flags; 62361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int m_etb_count; 62461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int m_fbd_count; 625e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifdef _ANDROID_ 62661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Heap pointer to frame buffers 62761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan sp<MemoryHeapBase> m_heap_ptr; 628e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif //_ANDROID_ 62961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // to know whether Event Port Settings change has been triggered or not. 63061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool m_event_port_settings_sent; 63161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U8 m_cRole[OMX_MAX_STRINGNAME_SIZE]; 63261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan extra_data_handler extra_data_handle; 633826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 634e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly}; 635e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly 636e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif // __OMX_VIDEO_BASE_H__ 637