diff options
Diffstat (limited to 'mm-video-v4l2/vidc/venc/inc/omx_video_base.h')
-rw-r--r--[-rwxr-xr-x] | mm-video-v4l2/vidc/venc/inc/omx_video_base.h | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/mm-video-v4l2/vidc/venc/inc/omx_video_base.h b/mm-video-v4l2/vidc/venc/inc/omx_video_base.h index 3c482e8..5db0613 100755..100644 --- a/mm-video-v4l2/vidc/venc/inc/omx_video_base.h +++ b/mm-video-v4l2/vidc/venc/inc/omx_video_base.h @@ -1,5 +1,5 @@ /*-------------------------------------------------------------------------- -Copyright (c) 2010-2014, The Linux Foundation. All rights reserved. +Copyright (c) 2010-2016, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -125,10 +125,10 @@ static const char* MEM_DEVICE = "/dev/pmem_smipool"; (unsigned)((OMX_BUFFERHEADERTYPE *)bufHdr)->nTimeStamp) // BitMask Management logic -#define BITS_PER_BYTE 32 -#define BITMASK_SIZE(mIndex) (((mIndex) + BITS_PER_BYTE - 1)/BITS_PER_BYTE) -#define BITMASK_OFFSET(mIndex) ((mIndex)/BITS_PER_BYTE) -#define BITMASK_FLAG(mIndex) (1 << ((mIndex) % BITS_PER_BYTE)) +#define BITS_PER_INDEX 64 +#define BITMASK_SIZE(mIndex) (((mIndex) + BITS_PER_INDEX - 1)/BITS_PER_INDEX) +#define BITMASK_OFFSET(mIndex) ((mIndex)/BITS_PER_INDEX) +#define BITMASK_FLAG(mIndex) ((uint64_t)1 << ((mIndex) % BITS_PER_INDEX)) #define BITMASK_CLEAR(mArray,mIndex) (mArray)[BITMASK_OFFSET(mIndex)] \ &= ~(BITMASK_FLAG(mIndex)) #define BITMASK_SET(mArray,mIndex) (mArray)[BITMASK_OFFSET(mIndex)] \ @@ -141,9 +141,10 @@ static const char* MEM_DEVICE = "/dev/pmem_smipool"; & BITMASK_FLAG(mIndex)) #define BITMASK_ABSENT(mArray,mIndex) (((mArray)[BITMASK_OFFSET(mIndex)] \ & BITMASK_FLAG(mIndex)) == 0x0) -#ifdef _ANDROID_ICS_ -#define MAX_NUM_INPUT_BUFFERS 32 -#endif + +#define MAX_NUM_INPUT_BUFFERS 64 +#define MAX_NUM_OUTPUT_BUFFERS 64 + void* message_thread(void *); // OMX video class @@ -155,13 +156,11 @@ class omx_video: public qc_omx_component bool c2d_opened; encoder_media_buffer_type meta_buffers[MAX_NUM_INPUT_BUFFERS]; OMX_BUFFERHEADERTYPE *opaque_buffer_hdr[MAX_NUM_INPUT_BUFFERS]; - bool mUseProxyColorFormat; - //RGB or non-native input, and we have pre-allocated conversion buffers - bool mUsesColorConversion; bool get_syntaxhdr_enable; OMX_BUFFERHEADERTYPE *psource_frame; OMX_BUFFERHEADERTYPE *pdest_frame; bool secure_session; + bool hier_b_enabled; //intermediate conversion buffer queued to encoder in case of invalid EOS input OMX_BUFFERHEADERTYPE *mEmptyEosBuffer; @@ -190,6 +189,11 @@ class omx_video: public qc_omx_component omx_c2d_conv c2d_conv; #endif public: + + bool mUseProxyColorFormat; + //RGB or non-native input, and we have pre-allocated conversion buffers + bool mUsesColorConversion; + omx_video(); // constructor virtual ~omx_video(); // destructor @@ -221,7 +225,7 @@ class omx_video: public qc_omx_component virtual bool dev_empty_buf(void *, void *,unsigned,unsigned) = 0; virtual bool dev_fill_buf(void *buffer, void *,unsigned,unsigned) = 0; virtual bool dev_get_buf_req(OMX_U32 *,OMX_U32 *,OMX_U32 *,OMX_U32) = 0; - virtual bool dev_get_seq_hdr(void *, unsigned, OMX_U32 *) = 0; + virtual bool dev_get_seq_hdr(void *, unsigned, unsigned *) = 0; virtual bool dev_loaded_start(void) = 0; virtual bool dev_loaded_stop(void) = 0; virtual bool dev_loaded_start_done(void) = 0; @@ -522,11 +526,22 @@ class omx_video: public qc_omx_component inline void omx_report_error () { if (m_pCallbacks.EventHandler && !m_error_propogated) { m_error_propogated = true; + DEBUG_PRINT_ERROR("ERROR: send OMX_ErrorHardware to Client"); m_pCallbacks.EventHandler(&m_cmp,m_app_data, OMX_EventError,OMX_ErrorHardware,0,NULL); } } + inline void omx_report_hw_overload () + { + if (m_pCallbacks.EventHandler && !m_error_propogated) { + m_error_propogated = true; + DEBUG_PRINT_ERROR("ERROR: send OMX_ErrorInsufficientResources to Client"); + m_pCallbacks.EventHandler(&m_cmp, m_app_data, + OMX_EventError, OMX_ErrorInsufficientResources, 0, NULL); + } + } + inline void omx_report_unsupported_setting () { if (m_pCallbacks.EventHandler && !m_error_propogated) { m_error_propogated = true; @@ -575,6 +590,7 @@ class omx_video: public qc_omx_component OMX_VIDEO_PARAM_H263TYPE m_sParamH263; OMX_VIDEO_PARAM_AVCTYPE m_sParamAVC; OMX_VIDEO_PARAM_VP8TYPE m_sParamVP8; + OMX_VIDEO_PARAM_HEVCTYPE m_sParamHEVC; OMX_PORT_PARAM_TYPE m_sPortParam_img; OMX_PORT_PARAM_TYPE m_sPortParam_audio; OMX_VIDEO_CONFIG_BITRATETYPE m_sConfigBitrate; @@ -623,11 +639,11 @@ class omx_video: public qc_omx_component int pending_input_buffers; int pending_output_buffers; - unsigned int m_out_bm_count; - unsigned int m_inp_bm_count; - unsigned int m_flags; - unsigned int m_etb_count; - unsigned int m_fbd_count; + uint64_t m_out_bm_count; + uint64_t m_inp_bm_count; + uint64_t m_flags; + uint64_t m_etb_count; + uint64_t m_fbd_count; #ifdef _ANDROID_ // Heap pointer to frame buffers sp<MemoryHeapBase> m_heap_ptr; @@ -636,6 +652,7 @@ class omx_video: public qc_omx_component bool m_event_port_settings_sent; OMX_U8 m_cRole[OMX_MAX_STRINGNAME_SIZE]; extra_data_handler extra_data_handle; + bool hw_overload; }; |