omx_video_encoder.cpp revision 417bd6d3d293ef616a5a33741cfd6ac8c50f685f
147e37c4428509524ee576920a98381f3e4872493Nick Pelly/*-------------------------------------------------------------------------- 2e4010605f233a213cf0d972397bb33c34c364227Patrick TjinCopyright (c) 2010-2015, The Linux Foundation. All rights reserved. 347e37c4428509524ee576920a98381f3e4872493Nick Pelly 447e37c4428509524ee576920a98381f3e4872493Nick PellyRedistribution and use in source and binary forms, with or without 547e37c4428509524ee576920a98381f3e4872493Nick Pellymodification, are permitted provided that the following conditions are met: 647e37c4428509524ee576920a98381f3e4872493Nick Pelly * Redistributions of source code must retain the above copyright 747e37c4428509524ee576920a98381f3e4872493Nick Pelly notice, this list of conditions and the following disclaimer. 847e37c4428509524ee576920a98381f3e4872493Nick Pelly * Redistributions in binary form must reproduce the above copyright 947e37c4428509524ee576920a98381f3e4872493Nick Pelly notice, this list of conditions and the following disclaimer in the 1047e37c4428509524ee576920a98381f3e4872493Nick Pelly documentation and/or other materials provided with the distribution. 116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal * Neither the name of The Linux Foundation nor 1247e37c4428509524ee576920a98381f3e4872493Nick Pelly the names of its contributors may be used to endorse or promote 1347e37c4428509524ee576920a98381f3e4872493Nick Pelly products derived from this software without specific prior written 1447e37c4428509524ee576920a98381f3e4872493Nick Pelly permission. 1547e37c4428509524ee576920a98381f3e4872493Nick Pelly 1647e37c4428509524ee576920a98381f3e4872493Nick PellyTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1747e37c4428509524ee576920a98381f3e4872493Nick PellyAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1847e37c4428509524ee576920a98381f3e4872493Nick PellyIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1947e37c4428509524ee576920a98381f3e4872493Nick PellyNON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2047e37c4428509524ee576920a98381f3e4872493Nick PellyCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2147e37c4428509524ee576920a98381f3e4872493Nick PellyEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2247e37c4428509524ee576920a98381f3e4872493Nick PellyPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 2347e37c4428509524ee576920a98381f3e4872493Nick PellyOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2447e37c4428509524ee576920a98381f3e4872493Nick PellyWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2547e37c4428509524ee576920a98381f3e4872493Nick PellyOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 2647e37c4428509524ee576920a98381f3e4872493Nick PellyADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2747e37c4428509524ee576920a98381f3e4872493Nick Pelly--------------------------------------------------------------------------*/ 2847e37c4428509524ee576920a98381f3e4872493Nick Pelly#include "omx_video_encoder.h" 2947e37c4428509524ee576920a98381f3e4872493Nick Pelly#include <string.h> 3047e37c4428509524ee576920a98381f3e4872493Nick Pelly#include <stdio.h> 31e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#include <fcntl.h> 32e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#include <dlfcn.h> 33826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 34826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <media/hardware/HardwareAPI.h> 35826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 36826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ 37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <cutils/properties.h> 38826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifndef _ANDROID_ 40826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <glib.h> 41826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define strlcpy g_strlcpy 42826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 4347e37c4428509524ee576920a98381f3e4872493Nick Pelly/*---------------------------------------------------------------------------- 4461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Preprocessor Definitions and Constants 4561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * -------------------------------------------------------------------------*/ 4647e37c4428509524ee576920a98381f3e4872493Nick Pelly 4747e37c4428509524ee576920a98381f3e4872493Nick Pelly#define OMX_SPEC_VERSION 0x00000101 4847e37c4428509524ee576920a98381f3e4872493Nick Pelly#define OMX_INIT_STRUCT(_s_, _name_) \ 4961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memset((_s_), 0x0, sizeof(_name_)); \ 5061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan(_s_)->nSize = sizeof(_name_); \ 5161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan(_s_)->nVersion.nVersion = OMX_SPEC_VERSION 5247e37c4428509524ee576920a98381f3e4872493Nick Pelly 5347e37c4428509524ee576920a98381f3e4872493Nick Pellyextern int m_pipe; 548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstatic int bframes; 558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstatic int entropy; 56f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavanstatic int perfmode; 5747e37c4428509524ee576920a98381f3e4872493Nick Pelly// factory function executed by the core to create instances 5847e37c4428509524ee576920a98381f3e4872493Nick Pellyvoid *get_omx_component_factory_fn(void) 5947e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 6061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return(new omx_venc); 6147e37c4428509524ee576920a98381f3e4872493Nick Pelly} 6247e37c4428509524ee576920a98381f3e4872493Nick Pelly 63e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinomx_venc::perf_control::perf_control() 64e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 65e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lib = NULL; 66e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_acquire = NULL; 67e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_release = NULL; 68e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_handle = 0; 69e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 70e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 71e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinomx_venc::perf_control::~perf_control() 72e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 73e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_handle != 0 && m_perf_lock_release) { 74e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_release(m_perf_handle); 75e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 76e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_lib) { 77e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin dlclose(m_perf_lib); 78e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 79e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 80e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 81e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinvoid omx_venc::perf_control::send_hint_to_mpctl(bool state) 82e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 83e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (load_lib() == false) { 84e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return; 85e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 86e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /* 0x4601 maps to video encode callback in 87e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * perflock, 46 is the enum number, 01 is 88e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * the state being sent when perflock 89e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * acquire succeeds 90e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin */ 91e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin int arg = 0x4601; 92e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 93e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_lock_acquire && state == true) { 94e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_handle = m_perf_lock_acquire(0, 0, &arg, sizeof(arg) / sizeof(int)); 95e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_INFO("Video encode perflock acquired,handle=%d",m_perf_handle); 96e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else if (m_perf_lock_release && state == false) { 97e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_release(m_perf_handle); 98e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_INFO("Video encode perflock released"); 99e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 100e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 101e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 102e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinbool omx_venc::perf_control::load_lib() 103e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 104e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin char perf_lib_path[PROPERTY_VALUE_MAX] = {0}; 105e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_lib) 106e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return true; 107e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 108e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if ((property_get("ro.vendor.extension_library", perf_lib_path, NULL) <= 0)) { 109e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("vendor library not set in ro.vendor.extension_library"); 110e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin goto handle_err; 111e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 112e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if ((m_perf_lib = dlopen(perf_lib_path, RTLD_NOW)) == NULL) { 113e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Failed to open %s : %s",perf_lib_path, dlerror()); 114e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin goto handle_err; 115e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else { 116e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_acquire = (perf_lock_acquire_t)dlsym(m_perf_lib, "perf_lock_acq"); 117e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_lock_acquire == NULL) { 118e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Failed to load symbol: perf_lock_acq"); 119e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin goto handle_err; 120e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 121e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_lock_release = (perf_lock_release_t)dlsym(m_perf_lib, "perf_lock_rel"); 122e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (m_perf_lock_release == NULL) { 123e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Failed to load symbol: perf_lock_rel"); 124e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin goto handle_err; 125e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 126e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 127e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return true; 128e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 129e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinhandle_err: 130e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if(m_perf_lib != NULL) { 131e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin dlclose(m_perf_lib); 132e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 133e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return false; 134e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 135e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 13647e37c4428509524ee576920a98381f3e4872493Nick Pelly//constructor 13747e37c4428509524ee576920a98381f3e4872493Nick Pelly 13847e37c4428509524ee576920a98381f3e4872493Nick Pellyomx_venc::omx_venc() 13947e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 140826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 14161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan meta_mode_enable = false; 14261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memset(meta_buffer_hdr,0,sizeof(meta_buffer_hdr)); 14361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memset(meta_buffers,0,sizeof(meta_buffers)); 14461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memset(opaque_buffer_hdr,0,sizeof(opaque_buffer_hdr)); 14561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mUseProxyColorFormat = false; 14661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan get_syntaxhdr_enable = false; 147826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 1488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bframes = entropy = 0; 1498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan char property_value[PROPERTY_VALUE_MAX] = {0}; 1508767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_get("vidc.debug.level", property_value, "1"); 1518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan debug_level = atoi(property_value); 1528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_value[0] = '\0'; 1538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_get("vidc.debug.bframes", property_value, "0"); 1548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bframes = atoi(property_value); 1558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_value[0] = '\0'; 1568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_get("vidc.debug.entropy", property_value, "1"); 1578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan entropy = !!atoi(property_value); 1588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan property_value[0] = '\0'; 159f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan property_get("vidc.debug.perf.mode", property_value, "0"); 160f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan perfmode = atoi(property_value); 161f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan property_value[0] = '\0'; 162c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni handle = NULL; 163e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_control.send_hint_to_mpctl(true); 16447e37c4428509524ee576920a98381f3e4872493Nick Pelly} 16547e37c4428509524ee576920a98381f3e4872493Nick Pelly 16647e37c4428509524ee576920a98381f3e4872493Nick Pellyomx_venc::~omx_venc() 16747e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 16861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan get_syntaxhdr_enable = false; 169e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_perf_control.send_hint_to_mpctl(false); 17061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //nothing to do 17147e37c4428509524ee576920a98381f3e4872493Nick Pelly} 17247e37c4428509524ee576920a98381f3e4872493Nick Pelly 17347e37c4428509524ee576920a98381f3e4872493Nick Pelly/* ====================================================================== 17461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan FUNCTION 17561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_venc::ComponentInit 17647e37c4428509524ee576920a98381f3e4872493Nick Pelly 17761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DESCRIPTION 17861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan Initialize the component. 17947e37c4428509524ee576920a98381f3e4872493Nick Pelly 18061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan PARAMETERS 18161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ctxt -- Context information related to the self. 18261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan id -- Event identifier. This could be any of the following: 18361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 1. Command completion event 18461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 2. Buffer done callback event 18561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 3. Frame done callback event 18647e37c4428509524ee576920a98381f3e4872493Nick Pelly 18761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan RETURN VALUE 18861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan None. 18947e37c4428509524ee576920a98381f3e4872493Nick Pelly 19061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ========================================================================== */ 19147e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_ERRORTYPE omx_venc::component_init(OMX_STRING role) 19247e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 19347e37c4428509524ee576920a98381f3e4872493Nick Pelly 19461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE eRet = OMX_ErrorNone; 19561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 19661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int fds[2]; 19761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan int r; 19861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 19961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_CODINGTYPE codec_type; 20061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 2018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("omx_venc(): Inside component_init()"); 20261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Copy the role information which provides the decoder m_nkind 20361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char *)m_nkind,role,OMX_MAX_STRINGNAME_SIZE); 2048767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan secure_session = false; 20561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 20661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((char *)m_nkind,"OMX.qcom.video.encoder.mpeg4",\ 20761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 20861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char *)m_cRole, "video_encoder.mpeg4",\ 20961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE); 21061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan codec_type = OMX_VIDEO_CodingMPEG4; 21161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.h263",\ 21261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 21361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char *)m_cRole, "video_encoder.h263",OMX_MAX_STRINGNAME_SIZE); 21461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan codec_type = OMX_VIDEO_CodingH263; 21561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc",\ 21661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 21761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char *)m_cRole, "video_encoder.avc",OMX_MAX_STRINGNAME_SIZE); 21861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan codec_type = OMX_VIDEO_CodingAVC; 2198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if(!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc.secure",\ 2208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 2218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan strlcpy((char *)m_cRole, "video_encoder.avc",OMX_MAX_STRINGNAME_SIZE); 2228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan codec_type = OMX_VIDEO_CodingAVC; 2238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan secure_session = true; 22461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 2256eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 22661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.vp8", \ 22761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 22861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char *)m_cRole, "video_encoder.vp8",OMX_MAX_STRINGNAME_SIZE); 2295aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan codec_type = OMX_VIDEO_CodingVP8; 23061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 2316eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 232f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.hevc", \ 233f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 234f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE); 235f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan codec_type = OMX_VIDEO_CodingHEVC; 236f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.hevc.secure", \ 237f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 238f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan strlcpy((char *)m_cRole, "video_encoder.hevc", OMX_MAX_STRINGNAME_SIZE); 239f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan codec_type = OMX_VIDEO_CodingHEVC; 240f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan secure_session = true; 241f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else { 2428767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unknown Component"); 24361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInvalidComponentName; 24461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 24547e37c4428509524ee576920a98381f3e4872493Nick Pelly 24661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (eRet != OMX_ErrorNone) { 24761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return eRet; 24861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 2496eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef ENABLE_GET_SYNTAX_HDR 25061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan get_syntaxhdr_enable = true; 25161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("Get syntax header enabled"); 2526eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 25347e37c4428509524ee576920a98381f3e4872493Nick Pelly 25461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan handle = new venc_dev(this); 25561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 25661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle == NULL) { 2578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: handle is NULL"); 25861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorInsufficientResources; 25947e37c4428509524ee576920a98381f3e4872493Nick Pelly } 26061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 26161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_open(codec_type) != true) { 2628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: venc_open failed"); 263c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni eRet = OMX_ErrorInsufficientResources; 264c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni goto init_error; 26561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 26661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 26761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //Intialise the OMX layer variables 26861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memset(&m_pCallbacks,0,sizeof(OMX_CALLBACKTYPE)); 26961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 27061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sPortParam, OMX_PORT_PARAM_TYPE); 27161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam.nPorts = 0x2; 27261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam.nStartPortNumber = (OMX_U32) PORT_INDEX_IN; 27361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 27461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sPortParam_audio, OMX_PORT_PARAM_TYPE); 27561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam_audio.nPorts = 0; 27661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam_audio.nStartPortNumber = 0; 27761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 27861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sPortParam_img, OMX_PORT_PARAM_TYPE); 27961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam_img.nPorts = 0; 28061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPortParam_img.nStartPortNumber = 0; 28161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 28261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamBitrate, OMX_VIDEO_PARAM_BITRATETYPE); 28361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 28461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.eControlRate = OMX_Video_ControlRateVariableSkipFrames; 28561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.nTargetBitrate = 64000; 28661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 28761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sConfigBitrate, OMX_VIDEO_CONFIG_BITRATETYPE); 28861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigBitrate.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 28961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigBitrate.nEncodeBitrate = 64000; 29061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 29161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sConfigFramerate, OMX_CONFIG_FRAMERATETYPE); 29261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFramerate.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 29361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFramerate.xEncodeFramerate = 30 << 16; 29461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 29561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sConfigIntraRefreshVOP, OMX_CONFIG_INTRAREFRESHVOPTYPE); 29661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigIntraRefreshVOP.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 29761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigIntraRefreshVOP.IntraRefreshVOP = OMX_FALSE; 29861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 29961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sConfigFrameRotation, OMX_CONFIG_ROTATIONTYPE); 300f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sConfigFrameRotation.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 30161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFrameRotation.nRotation = 0; 30261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 30361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sSessionQuantization, OMX_VIDEO_PARAM_QUANTIZATIONTYPE); 30461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 30561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nQpI = 9; 30661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nQpP = 6; 30761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nQpB = 2; 30861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 30961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sSessionQPRange, OMX_QCOM_VIDEO_PARAM_QPRANGETYPE); 31061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 31161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.minQP = 2; 31261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (codec_type == OMX_VIDEO_CodingAVC) 31361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.maxQP = 51; 31447e37c4428509524ee576920a98381f3e4872493Nick Pelly else 31561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.maxQP = 31; 31661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 31761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sAVCSliceFMO, OMX_VIDEO_PARAM_AVCSLICEFMO); 31861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sAVCSliceFMO.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 31961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sAVCSliceFMO.eSliceMode = OMX_VIDEO_SLICEMODE_AVCDefault; 32061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sAVCSliceFMO.nNumSliceGroups = 0; 32161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sAVCSliceFMO.nSliceGroupMapType = 0; 32261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamProfileLevel, OMX_VIDEO_PARAM_PROFILELEVELTYPE); 32361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 32461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 32561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sIntraperiod, QOMX_VIDEO_INTRAPERIODTYPE); 32661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 32761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPFrames = (m_sConfigFramerate.xEncodeFramerate * 2) - 1; 32861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 32961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sErrorCorrection, OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE); 33061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 33161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.bEnableDataPartitioning = OMX_FALSE; 33261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.bEnableHEC = OMX_FALSE; 33361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.bEnableResync = OMX_FALSE; 33461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.bEnableRVLC = OMX_FALSE; 33561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sErrorCorrection.nResynchMarkerSpacing = 0; 33661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 33761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sIntraRefresh, OMX_VIDEO_PARAM_INTRAREFRESHTYPE); 33861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraRefresh.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 33961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraRefresh.eRefreshMode = OMX_VIDEO_IntraRefreshMax; 34061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 34161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (codec_type == OMX_VIDEO_CodingMPEG4) { 34261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eProfile = (OMX_U32) OMX_VIDEO_MPEG4ProfileSimple; 34361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eLevel = (OMX_U32) OMX_VIDEO_MPEG4Level0; 34461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingH263) { 34561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eProfile = (OMX_U32) OMX_VIDEO_H263ProfileBaseline; 34661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eLevel = (OMX_U32) OMX_VIDEO_H263Level10; 34761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingAVC) { 34861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eProfile = (OMX_U32) OMX_VIDEO_AVCProfileBaseline; 34961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eLevel = (OMX_U32) OMX_VIDEO_AVCLevel1; 3505aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingVP8) { 3517beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamProfileLevel.eProfile = (OMX_U32) OMX_VIDEO_VP8ProfileMain; 3527beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamProfileLevel.eLevel = (OMX_U32) OMX_VIDEO_VP8Level_Version0; 353f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else if (codec_type == OMX_VIDEO_CodingHEVC) { 354f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamProfileLevel.eProfile = (OMX_U32) OMX_VIDEO_HEVCProfileMain; 355f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamProfileLevel.eLevel = (OMX_U32) OMX_VIDEO_HEVCMainTierLevel1; 35647e37c4428509524ee576920a98381f3e4872493Nick Pelly } 35747e37c4428509524ee576920a98381f3e4872493Nick Pelly 35861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Initialize the video parameters for input port 35961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sInPortDef, OMX_PARAM_PORTDEFINITIONTYPE); 36061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.nPortIndex= (OMX_U32) PORT_INDEX_IN; 36161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.bEnabled = OMX_TRUE; 36261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.bPopulated = OMX_FALSE; 36361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.eDomain = OMX_PortDomainVideo; 36461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.eDir = OMX_DirInput; 3658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sInPortDef.format.video.cMIMEType = (char *)"YUV420"; 36661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nFrameWidth = OMX_CORE_QCIF_WIDTH; 36761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nFrameHeight = OMX_CORE_QCIF_HEIGHT; 36861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nStride = OMX_CORE_QCIF_WIDTH; 36961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nSliceHeight = OMX_CORE_QCIF_HEIGHT; 37061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nBitrate = 64000; 37161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.xFramerate = 15 << 16; 3720b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan m_sInPortDef.format.video.eColorFormat = (OMX_COLOR_FORMATTYPE) 373e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin QOMX_DEFAULT_COLOR_FMT; 37461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused; 37561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 37661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (dev_get_buf_req(&m_sInPortDef.nBufferCountMin, 37761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sInPortDef.nBufferCountActual, 37861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sInPortDef.nBufferSize, 37961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.nPortIndex) != true) { 38061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUndefined; 381c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni goto init_error; 38247e37c4428509524ee576920a98381f3e4872493Nick Pelly } 38361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 38461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Initialize the video parameters for output port 38561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sOutPortDef, OMX_PARAM_PORTDEFINITIONTYPE); 38661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 38761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.bEnabled = OMX_TRUE; 38861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.bPopulated = OMX_FALSE; 38961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.eDomain = OMX_PortDomainVideo; 39061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.eDir = OMX_DirOutput; 39161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.nFrameWidth = OMX_CORE_QCIF_WIDTH; 39261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.nFrameHeight = OMX_CORE_QCIF_HEIGHT; 39361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.nBitrate = 64000; 39461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.xFramerate = 15 << 16; 39561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.eColorFormat = OMX_COLOR_FormatUnused; 39661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (codec_type == OMX_VIDEO_CodingMPEG4) { 39761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingMPEG4; 39861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingH263) { 39961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingH263; 4007beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } else if (codec_type == OMX_VIDEO_CodingAVC) { 40161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC; 4025aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingVP8) { 4035aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan m_sOutPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingVP8; 404f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else if (codec_type == OMX_VIDEO_CodingHEVC) { 405f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sOutPortDef.format.video.eCompressionFormat = OMX_VIDEO_CodingHEVC; 40661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 4077beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano 40861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (dev_get_buf_req(&m_sOutPortDef.nBufferCountMin, 40961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferCountActual, 41061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferSize, 41161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nPortIndex) != true) { 41261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUndefined; 41361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 41461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 41561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Initialize the video color format for input port 41661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sInPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE); 41761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortFormat.nPortIndex = (OMX_U32) PORT_INDEX_IN; 41861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortFormat.nIndex = 0; 4190b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan m_sInPortFormat.eColorFormat = (OMX_COLOR_FORMATTYPE) 420e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin QOMX_DEFAULT_COLOR_FMT; 42161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortFormat.eCompressionFormat = OMX_VIDEO_CodingUnused; 42261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 42361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 42461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Initialize the compression format for output port 42561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sOutPortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE); 42661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 42761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.nIndex = 0; 42861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.eColorFormat = OMX_COLOR_FormatUnused; 42961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (codec_type == OMX_VIDEO_CodingMPEG4) { 43061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.eCompressionFormat = OMX_VIDEO_CodingMPEG4; 43161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingH263) { 43261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.eCompressionFormat = OMX_VIDEO_CodingH263; 4337beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } else if (codec_type == OMX_VIDEO_CodingAVC) { 43461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.eCompressionFormat = OMX_VIDEO_CodingAVC; 4355aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan } else if (codec_type == OMX_VIDEO_CodingVP8) { 4365aa03230fef7a43a61e1ac5f19a2c5a71e5d6df7Praveen Chavan m_sOutPortFormat.eCompressionFormat = OMX_VIDEO_CodingVP8; 437f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else if (codec_type == OMX_VIDEO_CodingHEVC) { 438f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sOutPortFormat.eCompressionFormat = OMX_VIDEO_CodingHEVC; 43961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 44061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // mandatory Indices for kronos test suite 44261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sPriorityMgmt, OMX_PRIORITYMGMTTYPE); 44361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sInBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE); 44561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInBufSupplier.nPortIndex = (OMX_U32) PORT_INDEX_IN; 44661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 44761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sOutBufSupplier, OMX_PARAM_BUFFERSUPPLIERTYPE); 44861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutBufSupplier.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 44961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 4508767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_INIT_STRUCT(&m_sParamInitqp, QOMX_EXTNINDEX_VIDEO_INITIALQP); 4518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamInitqp.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 45261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 45361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // mp4 specific init 45461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamMPEG4, OMX_VIDEO_PARAM_MPEG4TYPE); 45561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 45661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eProfile = OMX_VIDEO_MPEG4ProfileSimple; 45761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eLevel = OMX_VIDEO_MPEG4Level0; 45861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nSliceHeaderSpacing = 0; 45961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.bSVH = OMX_FALSE; 46061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.bGov = OMX_FALSE; 46161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nPFrames = (m_sOutPortFormat.xFramerate * 2 - 1); // 2 second intra period for default outport fps 46261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.bACPred = OMX_TRUE; 46361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nTimeIncRes = 30; // delta = 2 @ 15 fps 46461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nAllowedPictureTypes = 2; // pframe and iframe 46561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nHeaderExtension = 1; // number of video packet headers per vop 46661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.bReversibleVLC = OMX_FALSE; 46761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 46861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // h263 specific init 46961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamH263, OMX_VIDEO_PARAM_H263TYPE); 47061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 47161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nPFrames = (m_sOutPortFormat.xFramerate * 2 - 1); // 2 second intra period for default outport fps 47261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nBFrames = 0; 47361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eProfile = OMX_VIDEO_H263ProfileBaseline; 47461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eLevel = OMX_VIDEO_H263Level10; 47561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.bPLUSPTYPEAllowed = OMX_FALSE; 47661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nAllowedPictureTypes = 2; 47761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.bForceRoundingTypeToZero = OMX_TRUE; 47861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nPictureHeaderRepetition = 0; 47961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nGOBHeaderInterval = 1; 48061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 48161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // h264 specific init 48261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamAVC, OMX_VIDEO_PARAM_AVCTYPE); 48361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 48461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nSliceHeaderSpacing = 0; 48561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nPFrames = (m_sOutPortFormat.xFramerate * 2 - 1); // 2 second intra period for default outport fps 48661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nBFrames = 0; 48761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bUseHadamard = OMX_FALSE; 48861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nRefIdx10ActiveMinus1 = 1; 48961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nRefIdx11ActiveMinus1 = 0; 49061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bEnableUEP = OMX_FALSE; 49161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bEnableFMO = OMX_FALSE; 49261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bEnableASO = OMX_FALSE; 49361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bEnableRS = OMX_FALSE; 49461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eProfile = OMX_VIDEO_AVCProfileBaseline; 49561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLevel = OMX_VIDEO_AVCLevel1; 49661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nAllowedPictureTypes = 2; 49761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bFrameMBsOnly = OMX_FALSE; 49861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bMBAFF = OMX_FALSE; 49961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bEntropyCodingCABAC = OMX_FALSE; 50061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bWeightedPPrediction = OMX_FALSE; 50161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nWeightedBipredicitonMode = 0; 50261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bconstIpred = OMX_FALSE; 50361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bDirect8x8Inference = OMX_FALSE; 50461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.bDirectSpatialTemporal = OMX_FALSE; 50561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nCabacInitIdc = 0; 50661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLoopFilterMode = OMX_VIDEO_AVCLoopFilterEnable; 50761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 5087beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano // VP8 specific init 5097beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_INIT_STRUCT(&m_sParamVP8, OMX_VIDEO_PARAM_VP8TYPE); 5107beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 5117beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eProfile = OMX_VIDEO_VP8ProfileMain; 5127beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eLevel = OMX_VIDEO_VP8Level_Version0; 5137beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.nDCTPartitions = 0; 5147beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.bErrorResilientMode = OMX_FALSE; 5157beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano 516f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan // HEVC specific init 517f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_INIT_STRUCT(&m_sParamHEVC, OMX_VIDEO_PARAM_HEVCTYPE); 518f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 519f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eProfile = OMX_VIDEO_HEVCProfileMain; 520f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eLevel = OMX_VIDEO_HEVCMainTierLevel1; 521f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 52261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_INIT_STRUCT(&m_sParamLTRMode, QOMX_VIDEO_PARAM_LTRMODE_TYPE); 52361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamLTRMode.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 52461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamLTRMode.eLTRMode = QOMX_VIDEO_LTRMode_Disable; 52561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 526f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_INIT_STRUCT(&m_sParamLTRCount, QOMX_VIDEO_PARAM_LTRCOUNT_TYPE); 527f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamLTRCount.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 528f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamLTRCount.nCount = 0; 529f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 5308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_INIT_STRUCT(&m_sConfigDeinterlace, OMX_VIDEO_CONFIG_DEINTERLACE); 5318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sConfigDeinterlace.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 5328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sConfigDeinterlace.nEnable = OMX_FALSE; 5338767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 5348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_INIT_STRUCT(&m_sHierLayers, QOMX_VIDEO_HIERARCHICALLAYERS); 5358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sHierLayers.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 5368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sHierLayers.nNumLayers = 0; 5378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sHierLayers.eHierarchicalCodingType = QOMX_HIERARCHICALCODING_P; 5388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 539e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_INIT_STRUCT(&m_sMBIStatistics, OMX_QOMX_VIDEO_MBI_STATISTICS); 540e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sMBIStatistics.nPortIndex = (OMX_U32) PORT_INDEX_OUT; 541e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sMBIStatistics.eMBIStatisticsType = QOMX_MBI_STATISTICS_MODE_DEFAULT; 542e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 54361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_state = OMX_StateLoaded; 54461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sExtraData = 0; 54561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 54661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (eRet == OMX_ErrorNone) { 54761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pipe(fds)) { 5488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: pipe creation failed"); 54961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInsufficientResources; 55061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 55161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (fds[0] == 0 || fds[1] == 0) { 55261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pipe(fds)) { 5538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: pipe creation failed"); 55461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInsufficientResources; 55561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 55661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 55761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (eRet == OMX_ErrorNone) { 55861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_pipe_in = fds[0]; 55961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_pipe_out = fds[1]; 56061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 56161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 56261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan msg_thread_created = true; 56361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan r = pthread_create(&msg_thread_id,0, message_thread, this); 56461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (r < 0) { 56561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInsufficientResources; 56661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan msg_thread_created = false; 56761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 56861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan async_thread_created = true; 56961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan r = pthread_create(&async_thread_id,0, venc_dev::async_venc_message_thread, this); 57061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (r < 0) { 57161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInsufficientResources; 57261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan async_thread_created = false; 57361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else 57461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan dev_set_message_thread_id(async_thread_id); 57561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 57647e37c4428509524ee576920a98381f3e4872493Nick Pelly } 57747e37c4428509524ee576920a98381f3e4872493Nick Pelly 578f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (perfmode) { 579f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan QOMX_EXTNINDEX_VIDEO_PERFMODE pParam; 580f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan pParam.nPerfMode = perfmode; 581f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_LOW("Perfmode = 0x%x", pParam.nPerfMode); 582f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (!handle->venc_set_config(&pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigVideoVencPerfMode)) 583f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("Failed setting PerfMode to %d", pParam.nPerfMode); 584f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 585f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 5868767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_INFO("Component_init : %s : return = 0x%x", m_nkind, eRet); 58761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return eRet; 588c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarniinit_error: 589c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni handle->venc_close(); 590c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni delete handle; 591c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni handle = NULL; 592c63a274a815a5d76f8815f48b3be767d3eb8a414Ashray Kulkarni return eRet; 59347e37c4428509524ee576920a98381f3e4872493Nick Pelly} 59447e37c4428509524ee576920a98381f3e4872493Nick Pelly 59547e37c4428509524ee576920a98381f3e4872493Nick Pelly 59647e37c4428509524ee576920a98381f3e4872493Nick Pelly/* ====================================================================== 59761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan FUNCTION 59861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_venc::Setparameter 59947e37c4428509524ee576920a98381f3e4872493Nick Pelly 60061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DESCRIPTION 60161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX Set Parameter method implementation. 60247e37c4428509524ee576920a98381f3e4872493Nick Pelly 60361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan PARAMETERS 60461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan <TBD>. 60547e37c4428509524ee576920a98381f3e4872493Nick Pelly 60661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan RETURN VALUE 60761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX Error None if successful. 60847e37c4428509524ee576920a98381f3e4872493Nick Pelly 60961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ========================================================================== */ 61047e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_ERRORTYPE omx_venc::set_parameter(OMX_IN OMX_HANDLETYPE hComp, 61161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IN OMX_INDEXTYPE paramIndex, 61261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IN OMX_PTR paramData) 61347e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 6148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void)hComp; 61561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_ERRORTYPE eRet = OMX_ErrorNone; 61647e37c4428509524ee576920a98381f3e4872493Nick Pelly 61761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 61861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_state == OMX_StateInvalid) { 6198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Set Param in Invalid State"); 62061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorInvalidState; 62161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 62261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (paramData == NULL) { 6238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Get Param in Invalid paramData"); 62461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadParameter; 62561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 62661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 62761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*set_parameter can be called in loaded state 62861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan or disabled port */ 62961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_state == OMX_StateLoaded 63061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan || m_sInPortDef.bEnabled == OMX_FALSE 63161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan || m_sOutPortDef.bEnabled == OMX_FALSE) { 63261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("Set Parameter called in valid state"); 63361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 6348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Set Parameter called in Invalid State"); 63561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorIncorrectStateOperation; 63661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 63761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 6388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan switch ((int)paramIndex) { 63961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamPortDefinition: 64061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 64116ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_PORTDEFINITIONTYPE); 64261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_PORTDEFINITIONTYPE *portDefn; 64361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan portDefn = (OMX_PARAM_PORTDEFINITIONTYPE *) paramData; 6448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPortDefinition H= %d, W = %d", 64561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (int)portDefn->format.video.nFrameHeight, 64661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (int)portDefn->format.video.nFrameWidth); 64761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 64861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (PORT_INDEX_IN == portDefn->nPortIndex) { 64961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!dev_is_video_session_supported(portDefn->format.video.nFrameWidth, 65061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan portDefn->format.video.nFrameHeight)) { 6518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("video session not supported"); 65261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_report_unsupported_setting(); 65361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 65461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 6558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("i/p actual cnt requested = %u", (unsigned int)portDefn->nBufferCountActual); 6568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("i/p min cnt requested = %u", (unsigned int)portDefn->nBufferCountMin); 6578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("i/p buffersize requested = %u", (unsigned int)portDefn->nBufferSize); 658417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (portDefn->nBufferCountActual > MAX_NUM_INPUT_BUFFERS) { 659417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan DEBUG_PRINT_ERROR("ERROR: (In_PORT) actual count (%u) exceeds max(%u)", 660417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan (unsigned int)portDefn->nBufferCountActual, (unsigned int)MAX_NUM_INPUT_BUFFERS); 661417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan return OMX_ErrorUnsupportedSetting; 662417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 66361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (portDefn->nBufferCountMin > portDefn->nBufferCountActual) { 6648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: (In_PORT) Min buffers (%u) > actual count (%u)", 6658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)portDefn->nBufferCountMin, (unsigned int)portDefn->nBufferCountActual); 66661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 66761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 66861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData,OMX_IndexParamPortDefinition) != true) { 6698767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: venc_set_param input failed"); 6703b53b32d6a823b7a36d4abe626c0c2f726e286ecPraveen Chavan return handle->hw_overload ? OMX_ErrorInsufficientResources : 6713b53b32d6a823b7a36d4abe626c0c2f726e286ecPraveen Chavan OMX_ErrorUnsupportedSetting; 67261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 67361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 6748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("i/p previous actual cnt = %u", (unsigned int)m_sInPortDef.nBufferCountActual); 6758767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("i/p previous min cnt = %u", (unsigned int)m_sInPortDef.nBufferCountMin); 67661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sInPortDef, portDefn,sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 677826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 678826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 6790b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan if (portDefn->format.video.eColorFormat == 6800b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FormatAndroidOpaque) { 6810b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan m_sInPortDef.format.video.eColorFormat = (OMX_COLOR_FORMATTYPE) 682e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin QOMX_DEFAULT_COLOR_FMT; 68361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!mUseProxyColorFormat) { 68461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!c2d_conv.init()) { 6858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("C2D init failed"); 68661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 68761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 6888767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("C2D init is successful"); 68961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 69061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mUseProxyColorFormat = true; 69161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_input_msg_id = OMX_COMPONENT_GENERATE_ETB_OPQ; 69261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else 69361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mUseProxyColorFormat = false; 694826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 69561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*Query Input Buffer Requirements*/ 69661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan dev_get_buf_req (&m_sInPortDef.nBufferCountMin, 69761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sInPortDef.nBufferCountActual, 69861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sInPortDef.nBufferSize, 69961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.nPortIndex); 70061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 70161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*Query ouput Buffer Requirements*/ 70261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan dev_get_buf_req (&m_sOutPortDef.nBufferCountMin, 70361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferCountActual, 70461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferSize, 70561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nPortIndex); 70661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.nBufferCountActual = portDefn->nBufferCountActual; 70761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (PORT_INDEX_OUT == portDefn->nPortIndex) { 7088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p actual cnt requested = %u", (unsigned int)portDefn->nBufferCountActual); 7098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p min cnt requested = %u", (unsigned int)portDefn->nBufferCountMin); 7108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p buffersize requested = %u", (unsigned int)portDefn->nBufferSize); 711417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan 712417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (portDefn->nBufferCountActual > MAX_NUM_OUTPUT_BUFFERS) { 713417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan DEBUG_PRINT_ERROR("ERROR: (Out_PORT) actual count (%u) exceeds max(%u)", 714417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan (unsigned int)portDefn->nBufferCountActual, (unsigned int)MAX_NUM_OUTPUT_BUFFERS); 715417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan return OMX_ErrorUnsupportedSetting; 716417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 71761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (portDefn->nBufferCountMin > portDefn->nBufferCountActual) { 7188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: (Out_PORT) Min buffers (%u) > actual count (%u)", 7198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)portDefn->nBufferCountMin, (unsigned int)portDefn->nBufferCountActual); 72061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 72161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 72261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData,OMX_IndexParamPortDefinition) != true) { 7238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: venc_set_param output failed"); 72461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 72561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 726e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy(&m_sOutPortDef,portDefn,sizeof(struct OMX_PARAM_PORTDEFINITIONTYPE)); 7276eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 72861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*Query ouput Buffer Requirements*/ 72961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan dev_get_buf_req(&m_sOutPortDef.nBufferCountMin, 73061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferCountActual, 73161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferSize, 73261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nPortIndex); 7336eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 73461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan update_profile_level(); //framerate , bitrate 73561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 7368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p previous actual cnt = %u", (unsigned int)m_sOutPortDef.nBufferCountActual); 7378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p previous min cnt = %u", (unsigned int)m_sOutPortDef.nBufferCountMin); 73861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nBufferCountActual = portDefn->nBufferCountActual; 73961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 74061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Set_parameter: Bad Port idx %d", 74161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (int)portDefn->nPortIndex); 74261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorBadPortIndex; 74361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 74461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFramerate.xEncodeFramerate = portDefn->format.video.xFramerate; 74561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigBitrate.nEncodeBitrate = portDefn->format.video.nBitrate; 74661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.nTargetBitrate = portDefn->format.video.nBitrate; 74761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 74861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 74947e37c4428509524ee576920a98381f3e4872493Nick Pelly 75061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoPortFormat: 75161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 75216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PORTFORMATTYPE); 75361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_PORTFORMATTYPE *portFmt = 75461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_VIDEO_PARAM_PORTFORMATTYPE *)paramData; 7558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoPortFormat %d", 75661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan portFmt->eColorFormat); 75761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //set the driver with the corresponding values 75861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (PORT_INDEX_IN == portFmt->nPortIndex) { 75961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData,OMX_IndexParamVideoPortFormat) != true) { 76061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 76161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 76261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 7638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoPortFormat %d", 76461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan portFmt->eColorFormat); 76561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan update_profile_level(); //framerate 76647e37c4428509524ee576920a98381f3e4872493Nick Pelly 767826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 76861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (portFmt->eColorFormat == 76961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FormatAndroidOpaque) { 7700b6fd256ee76a3fbbfcd4a33c63be88b1db78798Praveen Chavan m_sInPortFormat.eColorFormat = (OMX_COLOR_FORMATTYPE) 771e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin QOMX_DEFAULT_COLOR_FMT; 77261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!mUseProxyColorFormat) { 77361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!c2d_conv.init()) { 7748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("C2D init failed"); 77561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 77661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 7778767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("C2D init is successful"); 77861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 77961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mUseProxyColorFormat = true; 78061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_input_msg_id = OMX_COMPONENT_GENERATE_ETB_OPQ; 78161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else 782826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 78361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 78461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortFormat.eColorFormat = portFmt->eColorFormat; 7859262c4fed09839e7e6afc21d6406a9e261c1dba6Praveen Chavan m_sInPortDef.format.video.eColorFormat = portFmt->eColorFormat; 78661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_input_msg_id = OMX_COMPONENT_GENERATE_ETB; 78761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mUseProxyColorFormat = false; 78861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 78961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortFormat.xFramerate = portFmt->xFramerate; 79061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 79161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //TODO if no use case for O/P port,delet m_sOutPortFormat 79261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 79361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 79461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoInit: 79561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { //TODO, do we need this index set param 79616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE); 79761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PORT_PARAM_TYPE* pParam = (OMX_PORT_PARAM_TYPE*)(paramData); 7988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("Set OMX_IndexParamVideoInit called"); 79961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 80061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 80147e37c4428509524ee576920a98381f3e4872493Nick Pelly 80261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoBitrate: 80361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 80416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_BITRATETYPE); 80561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_BITRATETYPE* pParam = (OMX_VIDEO_PARAM_BITRATETYPE*)paramData; 80661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoBitrate"); 80761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData,OMX_IndexParamVideoBitrate) != true) { 80861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 80961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 81061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.nTargetBitrate = pParam->nTargetBitrate; 81161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.eControlRate = pParam->eControlRate; 81261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan update_profile_level(); //bitrate 81361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigBitrate.nEncodeBitrate = pParam->nTargetBitrate; 81461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.format.video.nBitrate = pParam->nTargetBitrate; 81561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.nBitrate = pParam->nTargetBitrate; 8168767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("bitrate = %u", (unsigned int)m_sOutPortDef.format.video.nBitrate); 81761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 81861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 81961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoMpeg4: 82061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 82116ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_MPEG4TYPE); 82261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_MPEG4TYPE* pParam = (OMX_VIDEO_PARAM_MPEG4TYPE*)paramData; 82361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_MPEG4TYPE mp4_param; 82461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&mp4_param, pParam, sizeof(struct OMX_VIDEO_PARAM_MPEG4TYPE)); 82561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoMpeg4"); 82661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->eProfile == OMX_VIDEO_MPEG4ProfileAdvancedSimple) { 8278767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _MSM8974_ 8288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->nBFrames || bframes) 829e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mp4_param.nBFrames = 1; 830e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin else 831e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mp4_param.nBFrames = 0; 8328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("MPEG4: %u BFrames are being set", (unsigned int)mp4_param.nBFrames); 8338767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 83461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 83561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nBFrames) { 8368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Warning: B frames not supported"); 83761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan mp4_param.nBFrames = 0; 83861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 83961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 84061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(&mp4_param,OMX_IndexParamVideoMpeg4) != true) { 84161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 84261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 84361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sParamMPEG4,pParam, sizeof(struct OMX_VIDEO_PARAM_MPEG4TYPE)); 84461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPFrames = m_sParamMPEG4.nPFrames; 8458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->nBFrames || bframes) 8468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sIntraperiod.nBFrames = m_sParamMPEG4.nBFrames = mp4_param.nBFrames; 8478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan else 848e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sIntraperiod.nBFrames = m_sParamMPEG4.nBFrames; 84961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 85061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 85161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoH263: 85261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 85361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_H263TYPE* pParam = (OMX_VIDEO_PARAM_H263TYPE*)paramData; 85461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoH263"); 85561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData,OMX_IndexParamVideoH263) != true) { 85661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 85761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 85861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sParamH263,pParam, sizeof(struct OMX_VIDEO_PARAM_H263TYPE)); 85961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPFrames = m_sParamH263.nPFrames; 86061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nBFrames = m_sParamH263.nBFrames; 86161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 86261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 86361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoAvc: 86461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 86516ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_AVCTYPE); 86661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_AVCTYPE* pParam = (OMX_VIDEO_PARAM_AVCTYPE*)paramData; 86761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_AVCTYPE avc_param; 86861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&avc_param, pParam, sizeof( struct OMX_VIDEO_PARAM_AVCTYPE)); 86961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoAvc"); 87061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 871e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin avc_param.nBFrames = 0; 87261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ((pParam->eProfile == OMX_VIDEO_AVCProfileHigh)|| 87361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (pParam->eProfile == OMX_VIDEO_AVCProfileMain)) { 874e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 87561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nBFrames) { 876e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin avc_param.nBFrames = pParam->nBFrames; 877e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_LOW("B frames set using Client setparam to %d", 878e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin avc_param.nBFrames); 87961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 880e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 881e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (bframes ) { 882e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin avc_param.nBFrames = bframes; 883e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_LOW("B frames set using setprop to %d", 884e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin avc_param.nBFrames); 8858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 8868767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 887e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_HIGH("AVC: BFrames: %u", (unsigned int)avc_param.nBFrames); 8888767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan avc_param.bEntropyCodingCABAC = (OMX_BOOL)(avc_param.bEntropyCodingCABAC && entropy); 8898767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan avc_param.nCabacInitIdc = entropy ? avc_param.nCabacInitIdc : 0; 89061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 89161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nBFrames) { 8928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Warning: B frames not supported"); 89361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 89461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 895e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 89661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(&avc_param,OMX_IndexParamVideoAvc) != true) { 89761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 89861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 89961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sParamAVC,pParam, sizeof(struct OMX_VIDEO_PARAM_AVCTYPE)); 90061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPFrames = m_sParamAVC.nPFrames; 9018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->nBFrames || bframes) 9028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sIntraperiod.nBFrames = m_sParamAVC.nBFrames = avc_param.nBFrames; 9038767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan else 904e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sIntraperiod.nBFrames = m_sParamAVC.nBFrames; 90561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 90661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 9077beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano case (OMX_INDEXTYPE)OMX_IndexParamVideoVp8: 9087beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano { 90916ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_VP8TYPE); 9107beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_VIDEO_PARAM_VP8TYPE* pParam = (OMX_VIDEO_PARAM_VP8TYPE*)paramData; 9117beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_VIDEO_PARAM_VP8TYPE vp8_param; 9127beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoVp8"); 9137beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano if (pParam->nDCTPartitions != m_sParamVP8.nDCTPartitions || 9147beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano pParam->bErrorResilientMode != m_sParamVP8.bErrorResilientMode) { 9157beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano DEBUG_PRINT_ERROR("VP8 doesn't support nDCTPartitions or bErrorResilientMode"); 9167beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } 9177beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano memcpy(&vp8_param, pParam, sizeof( struct OMX_VIDEO_PARAM_VP8TYPE)); 9187beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano if (handle->venc_set_param(&vp8_param, (OMX_INDEXTYPE)OMX_IndexParamVideoVp8) != true) { 9197beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano return OMX_ErrorUnsupportedSetting; 9207beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } 9217beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano memcpy(&m_sParamVP8,pParam, sizeof(struct OMX_VIDEO_PARAM_VP8TYPE)); 9227beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano break; 9237beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } 924f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan case (OMX_INDEXTYPE)OMX_IndexParamVideoHevc: 925f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan { 92616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_HEVCTYPE); 927f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_VIDEO_PARAM_HEVCTYPE* pParam = (OMX_VIDEO_PARAM_HEVCTYPE*)paramData; 928f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_VIDEO_PARAM_HEVCTYPE hevc_param; 929f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoHevc"); 930f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan memcpy(&hevc_param, pParam, sizeof( struct OMX_VIDEO_PARAM_HEVCTYPE)); 931f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (handle->venc_set_param(&hevc_param, (OMX_INDEXTYPE)OMX_IndexParamVideoHevc) != true) { 932f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("Failed : set_parameter: OMX_IndexParamVideoHevc"); 933f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan return OMX_ErrorUnsupportedSetting; 934f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 935f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan memcpy(&m_sParamHEVC, pParam, sizeof(struct OMX_VIDEO_PARAM_HEVCTYPE)); 936f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan break; 937f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 93861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoProfileLevelCurrent: 93961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 94016ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE); 94161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_PROFILELEVELTYPE* pParam = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)paramData; 94261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoProfileLevelCurrent"); 94361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(pParam,OMX_IndexParamVideoProfileLevelCurrent) != true) { 9448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: OMX_IndexParamVideoProfileLevelCurrent failed for Profile: %u " 9458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "Level :%u", (unsigned int)pParam->eProfile, (unsigned int)pParam->eLevel); 94661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 94761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 94861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eProfile = pParam->eProfile; 94961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eLevel = pParam->eLevel; 95061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 95161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.mpeg4",\ 95261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 95361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eProfile = (OMX_VIDEO_MPEG4PROFILETYPE)m_sParamProfileLevel.eProfile; 95461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eLevel = (OMX_VIDEO_MPEG4LEVELTYPE)m_sParamProfileLevel.eLevel; 9558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("MPEG4 profile = %d, level = %d", m_sParamMPEG4.eProfile, 95661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eLevel); 95761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.h263",\ 95861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 95961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eProfile = (OMX_VIDEO_H263PROFILETYPE)m_sParamProfileLevel.eProfile; 96061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eLevel = (OMX_VIDEO_H263LEVELTYPE)m_sParamProfileLevel.eLevel; 9618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("H263 profile = %d, level = %d", m_sParamH263.eProfile, 96261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eLevel); 96361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc",\ 96461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 96561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eProfile = (OMX_VIDEO_AVCPROFILETYPE)m_sParamProfileLevel.eProfile; 96661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLevel = (OMX_VIDEO_AVCLEVELTYPE)m_sParamProfileLevel.eLevel; 9678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("AVC profile = %d, level = %d", m_sParamAVC.eProfile, 9688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eLevel); 9698767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc.secure",\ 9708767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 9718767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eProfile = (OMX_VIDEO_AVCPROFILETYPE)m_sParamProfileLevel.eProfile; 9728767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eLevel = (OMX_VIDEO_AVCLEVELTYPE)m_sParamProfileLevel.eLevel; 97361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("\n AVC profile = %d, level = %d", m_sParamAVC.eProfile, 97461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLevel); 97561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 9767beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.vp8",\ 9777beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_MAX_STRINGNAME_SIZE)) { 9787beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eProfile = (OMX_VIDEO_VP8PROFILETYPE)m_sParamProfileLevel.eProfile; 9797beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eLevel = (OMX_VIDEO_VP8LEVELTYPE)m_sParamProfileLevel.eLevel; 9808767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("VP8 profile = %d, level = %d", m_sParamVP8.eProfile, 9817beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eLevel); 9827beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } 983f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.hevc",\ 984f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 985f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eProfile = (OMX_VIDEO_HEVCPROFILETYPE)m_sParamProfileLevel.eProfile; 986f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eLevel = (OMX_VIDEO_HEVCLEVELTYPE)m_sParamProfileLevel.eLevel; 987f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_LOW("HEVC profile = %d, level = %d", m_sParamHEVC.eProfile, 988f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eLevel); 989f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 990f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 99161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 99261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 99361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamStandardComponentRole: 99461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 99516ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_COMPONENTROLETYPE); 99661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_COMPONENTROLETYPE *comp_role; 99761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan comp_role = (OMX_PARAM_COMPONENTROLETYPE *) paramData; 9988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamStandardComponentRole %s", 99961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan comp_role->cRole); 100061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 100161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ((m_state == OMX_StateLoaded)&& 100261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan !BITMASK_PRESENT(&m_flags,OMX_COMPONENT_IDLE_PENDING)) { 100361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("Set Parameter called in valid state"); 100461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 10058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Set Parameter called in Invalid State"); 100661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorIncorrectStateOperation; 100761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 100861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 100961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.avc",OMX_MAX_STRINGNAME_SIZE)) { 101061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((char*)comp_role->cRole,"video_encoder.avc",OMX_MAX_STRINGNAME_SIZE)) { 101161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char*)m_cRole,"video_encoder.avc",OMX_MAX_STRINGNAME_SIZE); 101261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 10138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s", comp_role->cRole); 10148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan eRet =OMX_ErrorUnsupportedSetting; 10158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 10168767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.avc.secure",OMX_MAX_STRINGNAME_SIZE)) { 10178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!strncmp((char*)comp_role->cRole,"video_encoder.avc",OMX_MAX_STRINGNAME_SIZE)) { 10188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan strlcpy((char*)m_cRole,"video_encoder.avc",OMX_MAX_STRINGNAME_SIZE); 10198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else { 102061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s\n", comp_role->cRole); 102161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet =OMX_ErrorUnsupportedSetting; 102261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 102361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.mpeg4",OMX_MAX_STRINGNAME_SIZE)) { 102461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((const char*)comp_role->cRole,"video_encoder.mpeg4",OMX_MAX_STRINGNAME_SIZE)) { 102561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char*)m_cRole,"video_encoder.mpeg4",OMX_MAX_STRINGNAME_SIZE); 102661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 10278767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s", comp_role->cRole); 102861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUnsupportedSetting; 102961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 103061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.h263",OMX_MAX_STRINGNAME_SIZE)) { 103161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((const char*)comp_role->cRole,"video_encoder.h263",OMX_MAX_STRINGNAME_SIZE)) { 103261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char*)m_cRole,"video_encoder.h263",OMX_MAX_STRINGNAME_SIZE); 103361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 10348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s", comp_role->cRole); 103561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet =OMX_ErrorUnsupportedSetting; 103661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 103761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 10386eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 103961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.vp8",OMX_MAX_STRINGNAME_SIZE)) { 104061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((const char*)comp_role->cRole,"video_encoder.vp8",OMX_MAX_STRINGNAME_SIZE)) { 104161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan strlcpy((char*)m_cRole,"video_encoder.vp8",OMX_MAX_STRINGNAME_SIZE); 104261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 10438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s", comp_role->cRole); 104461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet =OMX_ErrorUnsupportedSetting; 104561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 104661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 10476eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 1048f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan else if (!strncmp((char*)m_nkind, "OMX.qcom.video.encoder.hevc",OMX_MAX_STRINGNAME_SIZE)) { 1049f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (!strncmp((const char*)comp_role->cRole,"video_encoder.hevc",OMX_MAX_STRINGNAME_SIZE)) { 1050f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan strlcpy((char*)m_cRole,"video_encoder.hevc",OMX_MAX_STRINGNAME_SIZE); 1051f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } else { 1052f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown Index %s", comp_role->cRole); 1053f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan eRet = OMX_ErrorUnsupportedSetting; 1054f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1055f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1056f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 105761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else { 10588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown param %s", m_nkind); 105961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorInvalidComponentName; 106061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 106161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 106261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 106347e37c4428509524ee576920a98381f3e4872493Nick Pelly 106461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamPriorityMgmt: 106561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 106616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PRIORITYMGMTTYPE); 106761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPriorityMgmt"); 106861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_state != OMX_StateLoaded) { 10698767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Set Parameter called in Invalid State"); 107061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorIncorrectStateOperation; 107161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 107261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PRIORITYMGMTTYPE *priorityMgmtype = (OMX_PRIORITYMGMTTYPE*) paramData; 10738767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPriorityMgmt %u", 10748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)priorityMgmtype->nGroupID); 107561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 10768767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: priorityMgmtype %u", 10778767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)priorityMgmtype->nGroupPriority); 107861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 107961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPriorityMgmt.nGroupID = priorityMgmtype->nGroupID; 108061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sPriorityMgmt.nGroupPriority = priorityMgmtype->nGroupPriority; 108161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 108261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 108361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 108447e37c4428509524ee576920a98381f3e4872493Nick Pelly 108561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamCompBufferSupplier: 108661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 108716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_BUFFERSUPPLIERTYPE); 108861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamCompBufferSupplier"); 108961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplierType = (OMX_PARAM_BUFFERSUPPLIERTYPE*) paramData; 10908767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamCompBufferSupplier %d", 109161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bufferSupplierType->eBufferSupplier); 109261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (bufferSupplierType->nPortIndex == 0 || bufferSupplierType->nPortIndex ==1) 109361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInBufSupplier.eBufferSupplier = bufferSupplierType->eBufferSupplier; 109447e37c4428509524ee576920a98381f3e4872493Nick Pelly 109561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else 109647e37c4428509524ee576920a98381f3e4872493Nick Pelly 109761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorBadPortIndex; 109847e37c4428509524ee576920a98381f3e4872493Nick Pelly 109961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 110047e37c4428509524ee576920a98381f3e4872493Nick Pelly 110161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 110261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoQuantization: 110361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 110416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_QUANTIZATIONTYPE); 11058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoQuantization"); 110661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_QUANTIZATIONTYPE *session_qp = (OMX_VIDEO_PARAM_QUANTIZATIONTYPE*) paramData; 110761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (session_qp->nPortIndex == PORT_INDEX_OUT) { 110861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData, OMX_IndexParamVideoQuantization) != true) { 110961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 111061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 111161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nQpI = session_qp->nQpI; 111261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQuantization.nQpP = session_qp->nQpP; 11138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sSessionQuantization.nQpB = session_qp->nQpB; 111461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 11158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port Index for Session QP setting"); 111661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorBadPortIndex; 111761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 111861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 111961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 112047e37c4428509524ee576920a98381f3e4872493Nick Pelly 112161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexParamVideoQPRange: 112261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 112316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_QPRANGETYPE); 11248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexParamVideoQPRange"); 112561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_QCOM_VIDEO_PARAM_QPRANGETYPE *qp_range = (OMX_QCOM_VIDEO_PARAM_QPRANGETYPE*) paramData; 112661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (qp_range->nPortIndex == PORT_INDEX_OUT) { 112761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(paramData, 112861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexParamVideoQPRange) != true) { 112961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 113061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 113161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.minQP= qp_range->minQP; 113261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sSessionQPRange.maxQP= qp_range->maxQP; 113361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 11348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port Index for QP range setting"); 113561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorBadPortIndex; 113661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 113761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 113861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 11396eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 114061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexPortDefn: 114161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 114216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_PARAM_PORTDEFINITIONTYPE); 114361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_QCOM_PARAM_PORTDEFINITIONTYPE* pParam = 114461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_QCOM_PARAM_PORTDEFINITIONTYPE*)paramData; 114561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexPortDefn"); 114661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == (OMX_U32)PORT_INDEX_IN) { 114761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nMemRegion > OMX_QCOM_MemRegionInvalid && 114861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nMemRegion < OMX_QCOM_MemRegionMax) { 114961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_use_input_pmem = OMX_TRUE; 115061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 115161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_use_input_pmem = OMX_FALSE; 115261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 115361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (pParam->nPortIndex == (OMX_U32)PORT_INDEX_OUT) { 115461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nMemRegion > OMX_QCOM_MemRegionInvalid && 115561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nMemRegion < OMX_QCOM_MemRegionMax) { 115661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_use_output_pmem = OMX_TRUE; 115761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 115861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_use_output_pmem = OMX_FALSE; 115961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 116061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 116161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: SetParameter called on unsupported Port Index for QcomPortDefn"); 116261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 116361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 116461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 116561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1166826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 116761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoErrorCorrection: 116861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 116916ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE); 11708767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("OMX_IndexParamVideoErrorCorrection"); 117161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE* pParam = 117261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE*)paramData; 117361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData, OMX_IndexParamVideoErrorCorrection)) { 11748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Request for setting Error Resilience failed"); 117561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 117661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 117761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sErrorCorrection,pParam, sizeof(m_sErrorCorrection)); 117861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 117961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 118061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoIntraRefresh: 118161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 118216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_INTRAREFRESHTYPE); 11838767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_param:OMX_IndexParamVideoIntraRefresh"); 118461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_PARAM_INTRAREFRESHTYPE* pParam = 118561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_VIDEO_PARAM_INTRAREFRESHTYPE*)paramData; 118661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData,OMX_IndexParamVideoIntraRefresh)) { 11878767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Request for setting intra refresh failed"); 118861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 118961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 119061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sIntraRefresh, pParam, sizeof(m_sIntraRefresh)); 119161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 119261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1193826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 11948e9fdc3254721b488ebdb9e9e62fb2d99eac392dVineeta Srivastava case OMX_QcomIndexParamVideoMetaBufferMode: 1195826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev { 119616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, StoreMetaDataInBuffersParams); 119761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan StoreMetaDataInBuffersParams *pParam = 119861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (StoreMetaDataInBuffersParams*)paramData; 11998e9fdc3254721b488ebdb9e9e62fb2d99eac392dVineeta Srivastava DEBUG_PRINT_HIGH("set_parameter:OMX_QcomIndexParamVideoMetaBufferMode: " 12008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "port_index = %u, meta_mode = %d", (unsigned int)pParam->nPortIndex, pParam->bStoreMetaData); 120161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_IN) { 120261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->bStoreMetaData != meta_mode_enable) { 120361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_meta_mode(pParam->bStoreMetaData)) { 12048767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: set Metabuffer mode %d fail", 120561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->bStoreMetaData); 120661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 120761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 120861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan meta_mode_enable = pParam->bStoreMetaData; 120961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (meta_mode_enable) { 121061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sInPortDef.nBufferCountActual = m_sInPortDef.nBufferCountMin; 121161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_param(&m_sInPortDef,OMX_IndexParamPortDefinition) != true) { 12128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: venc_set_param input failed"); 121361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 121461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 121561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 121661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*TODO: reset encoder driver Meta mode*/ 121761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan dev_get_buf_req (&m_sOutPortDef.nBufferCountMin, 121861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferCountActual, 121961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan &m_sOutPortDef.nBufferSize, 122061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.nPortIndex); 122161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 122261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 12238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if (pParam->nPortIndex == PORT_INDEX_OUT && secure_session) { 12248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->bStoreMetaData != meta_mode_enable) { 12258767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_meta_mode(pParam->bStoreMetaData)) { 12268767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("\nERROR: set Metabuffer mode %d fail", 12278767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan pParam->bStoreMetaData); 12288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 12298767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 12308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan meta_mode_enable = pParam->bStoreMetaData; 12318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 123261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 123361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: metamode is " 123461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan "valid for input port only"); 123561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 123661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1237826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev } 123861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 1239826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 12406eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#if !defined(MAX_RES_720P) || defined(_MSM8974_) 124161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexParamIndexExtraDataType: 124261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 124316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXEXTRADATATYPE); 124461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("set_parameter: OMX_QcomIndexParamIndexExtraDataType"); 124561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_INDEXEXTRADATATYPE *pParam = (QOMX_INDEXEXTRADATATYPE *)paramData; 12468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan bool enable = false; 12478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_U32 mask = 0; 12488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 124961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nIndex == (OMX_INDEXTYPE)OMX_ExtraDataVideoEncoderSliceInfo) { 125061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 1251e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mask = VENC_EXTRADATA_SLICEINFO; 12528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 125361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("SliceInfo extradata %s", 125461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((pParam->bEnabled == OMX_TRUE) ? "enabled" : "disabled")); 1255e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else { 12568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: Slice information is " 12578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "valid for output port only"); 12588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 12598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 1260e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 12618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if (pParam->nIndex == (OMX_INDEXTYPE)OMX_ExtraDataVideoEncoderMBInfo) { 12628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 1263e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mask = VENC_EXTRADATA_MBINFO; 12648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 12658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("MBInfo extradata %s", 12668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ((pParam->bEnabled == OMX_TRUE) ? "enabled" : "disabled")); 12678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else { 12688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: MB information is " 12698767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "valid for output port only"); 12708767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 12718767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 127261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1273e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else if (pParam->nIndex == (OMX_INDEXTYPE)OMX_ExtraDataFrameDimension) { 1274e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (pParam->nPortIndex == PORT_INDEX_IN) { 1275e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mask = VENC_EXTRADATA_FRAMEDIMENSION; 1276e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_HIGH("Frame dimension extradata %s", 1277e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin ((pParam->bEnabled == OMX_TRUE) ? "enabled" : "disabled")); 1278e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else { 1279e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("set_parameter: Frame Dimension is " 1280e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin "valid for input port only"); 1281e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin eRet = OMX_ErrorUnsupportedIndex; 1282e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1283e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1284e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else if (pParam->nIndex == (OMX_INDEXTYPE)OMX_QTIIndexParamVQZipSEIExtraData) { 1285e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (pParam->nPortIndex == PORT_INDEX_IN) { 1286e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin mask = VENC_EXTRADATA_VQZIP; 1287e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_HIGH("VQZIP extradata %s", 1288e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin ((pParam->bEnabled == OMX_TRUE) ? "enabled" : "disabled")); 1289e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else { 1290e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("set_parameter: VQZIP is " 1291e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin "valid for input port only"); 1292e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin eRet = OMX_ErrorUnsupportedIndex; 1293e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1294e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 129561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1296e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 12976eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifndef _MSM8974_ 129861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else if (pParam->nIndex == (OMX_INDEXTYPE)OMX_ExtraDataVideoLTRInfo) { 129961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 130061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->bEnabled == OMX_TRUE) 13018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan mask = VEN_EXTRADATA_LTRINFO; 13028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 130361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("LTRInfo extradata %s", 130461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((pParam->bEnabled == OMX_TRUE) ? "enabled" : "disabled")); 130561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 130661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: LTR information is " 130761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan "valid for output port only"); 130861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 13098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 131061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 131161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 13126eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 131361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else { 131461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("set_parameter: unsupported extrdata index (%x)", 131561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nIndex); 131661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 13178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 13188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 13198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 13208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 13218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->bEnabled == OMX_TRUE) 13228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sExtraData |= mask; 13238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan else 13248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sExtraData &= ~mask; 13258767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 13268767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan enable = !!(m_sExtraData & mask); 13278767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (handle->venc_set_param(&enable, 13288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE)pParam->nIndex) != true) { 13298767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting Extradata (%x) failed", pParam->nIndex); 13308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 1331e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1332e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 1333e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (pParam->nPortIndex == PORT_INDEX_IN) { 1334e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sInPortDef.nPortIndex = PORT_INDEX_IN; 1335e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin dev_get_buf_req(&m_sInPortDef.nBufferCountMin, 1336e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin &m_sInPortDef.nBufferCountActual, 1337e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin &m_sInPortDef.nBufferSize, 1338e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sInPortDef.nPortIndex); 1339e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_HIGH("updated in_buf_req: buffer cnt=%u, " 1340e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin "count min=%u, buffer size=%u", 1341e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (unsigned int)m_sOutPortDef.nBufferCountActual, 1342e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (unsigned int)m_sOutPortDef.nBufferCountMin, 1343e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (unsigned int)m_sOutPortDef.nBufferSize); 1344e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 13458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else { 13468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sOutPortDef.nPortIndex = PORT_INDEX_OUT; 13478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan dev_get_buf_req(&m_sOutPortDef.nBufferCountMin, 13488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan &m_sOutPortDef.nBufferCountActual, 13498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan &m_sOutPortDef.nBufferSize, 13508767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sOutPortDef.nPortIndex); 13518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("updated out_buf_req: buffer cnt=%u, " 13528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "count min=%u, buffer size=%u", 13538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)m_sOutPortDef.nBufferCountActual, 13548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)m_sOutPortDef.nBufferCountMin, 13558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)m_sOutPortDef.nBufferSize); 135661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 135761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 135861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 135961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case QOMX_IndexParamVideoLTRMode: 136061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 136116ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_PARAM_LTRMODE_TYPE); 136261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_PARAM_LTRMODE_TYPE* pParam = 136361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (QOMX_VIDEO_PARAM_LTRMODE_TYPE*)paramData; 136461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData, (OMX_INDEXTYPE)QOMX_IndexParamVideoLTRMode)) { 13658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting LTR mode failed"); 136661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 136761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 136861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sParamLTRMode, pParam, sizeof(m_sParamLTRMode)); 136961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 137061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 137161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case QOMX_IndexParamVideoLTRCount: 137261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 137316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_PARAM_LTRCOUNT_TYPE); 137461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_PARAM_LTRCOUNT_TYPE* pParam = 137561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (QOMX_VIDEO_PARAM_LTRCOUNT_TYPE*)paramData; 137661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData, (OMX_INDEXTYPE)QOMX_IndexParamVideoLTRCount)) { 13778767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting LTR count failed"); 137861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 137961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 138061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sParamLTRCount, pParam, sizeof(m_sParamLTRCount)); 138161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 138261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1383826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 138461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexParamVideoMaxAllowedBitrateCheck: 138561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 138616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE); 138761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_EXTNINDEX_PARAMTYPE* pParam = 138861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (QOMX_EXTNINDEX_PARAMTYPE*)paramData; 138961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 139061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan handle->m_max_allowed_bitrate_check = 139161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((pParam->bEnable == OMX_TRUE) ? true : false); 139261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("set_parameter: max allowed bitrate check %s", 139361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((pParam->bEnable == OMX_TRUE) ? "enabled" : "disabled")); 139461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 139561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: OMX_QcomIndexParamVideoMaxAllowedBitrateCheck " 13968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan " called on wrong port(%u)", (unsigned int)pParam->nPortIndex); 139761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 139861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 139961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 140061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1401826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef MAX_RES_1080P 140261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexEnableSliceDeliveryMode: 140361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 140416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE); 140561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_EXTNINDEX_PARAMTYPE* pParam = 140661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (QOMX_EXTNINDEX_PARAMTYPE*)paramData; 140761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 140861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData, 140961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexEnableSliceDeliveryMode)) { 141061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Request for setting slice delivery mode failed"); 141161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 141261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 141361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 141461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: OMX_QcomIndexEnableSliceDeliveryMode " 14158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "called on wrong port(%u)", (unsigned int)pParam->nPortIndex); 141661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 141761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 141861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 141961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1420826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 142161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexEnableH263PlusPType: 142261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 142316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE); 142461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_EXTNINDEX_PARAMTYPE* pParam = 142561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (QOMX_EXTNINDEX_PARAMTYPE*)paramData; 142661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("OMX_QcomIndexEnableH263PlusPType"); 142761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 142861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_param(paramData, 142961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexEnableH263PlusPType)) { 143061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Request for setting PlusPType failed"); 143161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 143261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 143361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 143461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: OMX_QcomIndexEnableH263PlusPType " 14358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "called on wrong port(%u)", (unsigned int)pParam->nPortIndex); 14368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorBadPortIndex; 14378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 14388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 14398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 14408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamSequenceHeaderWithIDR: 14418767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 144216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, PrependSPSPPSToIDRFramesParams); 14438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if(!handle->venc_set_param(paramData, 14448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexParamSequenceHeaderWithIDR)) { 14458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("%s: %s", 14468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "OMX_QComIndexParamSequenceHeaderWithIDR:", 14478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "request for inband sps/pps failed."); 14488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 14498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 1450e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy((void *) &m_sPrependSPSPPS, ¶mData, sizeof(m_sPrependSPSPPS)); 14518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 14528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 14538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamH264AUDelimiter: 14548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 145516ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_CONFIG_H264_AUD); 14568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if(!handle->venc_set_param(paramData, 14578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexParamH264AUDelimiter)) { 14588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("%s: %s", 14598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "OMX_QComIndexParamh264AUDelimiter:", 14608767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan "request for AU Delimiters failed."); 14618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 14628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 14638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 14648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 1465e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexParamMBIStatisticsMode: 1466e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 146716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QOMX_VIDEO_MBI_STATISTICS); 1468e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if(!handle->venc_set_param(paramData, 1469e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE)OMX_QcomIndexParamMBIStatisticsMode)) { 1470e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("%s: %s", 1471e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin "OMX_QcomIndexParamMBIStatisticsMode:", 1472e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin "MBI Statistics mode setting failed."); 1473e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1474e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1475e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1476e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 14778767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexHierarchicalStructure: 14788767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 147916ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_HIERARCHICALLAYERS); 14808767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan QOMX_VIDEO_HIERARCHICALLAYERS* pParam = 14818767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (QOMX_VIDEO_HIERARCHICALLAYERS*)paramData; 14828767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("OMX_QcomIndexHierarchicalStructure"); 14838767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 14848767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_param(paramData, 14858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexHierarchicalStructure)) { 14868767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Request for setting PlusPType failed"); 14878767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 14888767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 1489f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if((pParam->eHierarchicalCodingType == QOMX_HIERARCHICALCODING_B) && pParam->nNumLayers) 1490f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan hier_b_enabled = true; 14918767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sHierLayers.nNumLayers = pParam->nNumLayers; 14928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sHierLayers.eHierarchicalCodingType = pParam->eHierarchicalCodingType; 14938767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else { 14948767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: OMX_QcomIndexHierarchicalStructure called on wrong port(%u)", 14958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)pParam->nPortIndex); 149661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 149761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 149861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 14998767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 15008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamPerfLevel: 15028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 150316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PERF_LEVEL); 15048767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_param(paramData, 15058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE) OMX_QcomIndexParamPerfLevel)) { 15068767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting performance level"); 15078767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 15088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 15108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15118767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamH264VUITimingInfo: 15128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 151316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO); 15148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_param(paramData, 15158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE) OMX_QcomIndexParamH264VUITimingInfo)) { 15168767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting VUI timing info"); 15178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 15188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 15208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamPeakBitrate: 15228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 152316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE); 15248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_param(paramData, 15258767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE) OMX_QcomIndexParamPeakBitrate)) { 15268767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting peak bitrate"); 15278767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 15288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15298767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 15308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case QOMX_IndexParamVideoInitialQp: 15328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 153316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_INITIALQP); 15348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if(!handle->venc_set_param(paramData, 15358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE)QOMX_IndexParamVideoInitialQp)) { 15368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Request to Enable initial QP failed"); 15378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 15388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan memcpy(&m_sParamInitqp, paramData, sizeof(m_sParamInitqp)); 15408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 15418767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15428767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_QcomIndexParamSetMVSearchrange: 15438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 15448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_param(paramData, 15458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (OMX_INDEXTYPE) OMX_QcomIndexParamSetMVSearchrange)) { 15468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting Searchrange"); 15478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 15488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 15498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 155061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 1551f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan case OMX_QcomIndexParamVideoHybridHierpMode: 1552f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan { 155316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE); 1554f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if(!handle->venc_set_param(paramData, 1555f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan (OMX_INDEXTYPE)OMX_QcomIndexParamVideoHybridHierpMode)) { 1556f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("Request to Enable Hybrid Hier-P failed"); 1557f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan return OMX_ErrorUnsupportedSetting; 1558f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1559f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan break; 1560f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1561e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexParamBatchSize: 1562e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 156316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_U32TYPE); 1564e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if(!handle->venc_set_param(paramData, 1565e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE)OMX_QcomIndexParamBatchSize)) { 1566e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Attempting to set batch size failed"); 1567e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1568e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1569e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1570e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1571e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexConfigH264EntropyCodingCabac: 1572e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 157316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_H264ENTROPYCODINGTYPE); 1574e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if(!handle->venc_set_param(paramData, 1575e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE)OMX_QcomIndexConfigH264EntropyCodingCabac)) { 1576e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Attempting to set Entropy failed"); 1577e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1578e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1579e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1580e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1581e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QTIIndexParamVQZIPSEIType: 1582e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 158316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE); 1584e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_param(paramData, 1585e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE) OMX_QTIIndexParamVQZIPSEIType)) { 1586e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting VQZIP SEI type"); 1587e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1588e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1589e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin m_sExtraData |= VENC_EXTRADATA_VQZIP; 1590e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1591e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1592e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexParamVencAspectRatio: 1593e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 159416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_VENC_SAR); 1595e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_param(paramData, 1596e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE)OMX_QcomIndexParamVencAspectRatio)) { 1597e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexParamVencAspectRatio failed"); 1598e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1599e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1600e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy(&m_sSar, paramData, sizeof(m_sSar)); 1601e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1602e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1603e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QTIIndexParamVideoEnableRoiInfo: 1604e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 1605e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_param(paramData, 1606e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_INDEXTYPE)OMX_QTIIndexParamVideoEnableRoiInfo)) { 1607e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting OMX_QTIIndexParamVideoEnableRoiInfo failed"); 1608e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1609e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1610e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1611e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 161261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexParamVideoSliceFMO: 161361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan default: 161461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 16158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setparameter: unknown param %d", paramIndex); 161661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan eRet = OMX_ErrorUnsupportedIndex; 161761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 161861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 161947e37c4428509524ee576920a98381f3e4872493Nick Pelly } 162061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return eRet; 162147e37c4428509524ee576920a98381f3e4872493Nick Pelly} 162247e37c4428509524ee576920a98381f3e4872493Nick Pelly 1623826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::update_profile_level() 1624826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 162561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 eProfile, eLevel; 1626826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 162761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_get_profile_level(&eProfile,&eLevel)) { 16288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Failed to update the profile_level"); 162961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return false; 163061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 163161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 163261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eProfile = (OMX_VIDEO_MPEG4PROFILETYPE)eProfile; 163361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamProfileLevel.eLevel = (OMX_VIDEO_MPEG4LEVELTYPE)eLevel; 163461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 163561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.mpeg4",\ 163661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 163761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eProfile = (OMX_VIDEO_MPEG4PROFILETYPE)eProfile; 163861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eLevel = (OMX_VIDEO_MPEG4LEVELTYPE)eLevel; 16398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("MPEG4 profile = %d, level = %d", m_sParamMPEG4.eProfile, 164061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.eLevel); 164161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.h263",\ 164261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 164361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eProfile = (OMX_VIDEO_H263PROFILETYPE)eProfile; 164461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eLevel = (OMX_VIDEO_H263LEVELTYPE)eLevel; 16458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("H263 profile = %d, level = %d", m_sParamH263.eProfile, 164661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.eLevel); 164761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc",\ 164861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 164961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eProfile = (OMX_VIDEO_AVCPROFILETYPE)eProfile; 165061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLevel = (OMX_VIDEO_AVCLEVELTYPE)eLevel; 16518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("AVC profile = %d, level = %d", m_sParamAVC.eProfile, 16528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eLevel); 16538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.avc.secure",\ 16548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 16558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eProfile = (OMX_VIDEO_AVCPROFILETYPE)eProfile; 16568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan m_sParamAVC.eLevel = (OMX_VIDEO_AVCLEVELTYPE)eLevel; 165761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("\n AVC profile = %d, level = %d", m_sParamAVC.eProfile, 165861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.eLevel); 165961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 16607beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.vp8",\ 16617beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano OMX_MAX_STRINGNAME_SIZE)) { 16627beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eProfile = (OMX_VIDEO_VP8PROFILETYPE)eProfile; 16637beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eLevel = (OMX_VIDEO_VP8LEVELTYPE)eLevel; 16648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("VP8 profile = %d, level = %d", m_sParamVP8.eProfile, 16657beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano m_sParamVP8.eLevel); 16667beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano } 1667f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan else if (!strncmp((char *)m_nkind, "OMX.qcom.video.encoder.hevc",\ 1668f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_MAX_STRINGNAME_SIZE)) { 1669f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eProfile = (OMX_VIDEO_HEVCPROFILETYPE)eProfile; 1670f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eLevel = (OMX_VIDEO_HEVCLEVELTYPE)eLevel; 1671f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_LOW("HEVC profile = %d, level = %d", m_sParamHEVC.eProfile, 1672f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sParamHEVC.eLevel); 1673f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1674f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan 167561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return true; 1676826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 167747e37c4428509524ee576920a98381f3e4872493Nick Pelly/* ====================================================================== 167861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan FUNCTION 167961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_video::SetConfig 168047e37c4428509524ee576920a98381f3e4872493Nick Pelly 168161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DESCRIPTION 168261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX Set Config method implementation 168347e37c4428509524ee576920a98381f3e4872493Nick Pelly 168461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan PARAMETERS 168561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan <TBD>. 168647e37c4428509524ee576920a98381f3e4872493Nick Pelly 168761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan RETURN VALUE 168861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX Error None if successful. 168961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ========================================================================== */ 169047e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_ERRORTYPE omx_venc::set_config(OMX_IN OMX_HANDLETYPE hComp, 169161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IN OMX_INDEXTYPE configIndex, 169261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IN OMX_PTR configData) 169347e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 16948767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void)hComp; 169561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (configData == NULL) { 169661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: param is null"); 169761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadParameter; 169847e37c4428509524ee576920a98381f3e4872493Nick Pelly } 169947e37c4428509524ee576920a98381f3e4872493Nick Pelly 170061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_state == OMX_StateInvalid) { 170161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: config called in Invalid state"); 170261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorIncorrectStateOperation; 1703826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev } 1704826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 170561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // params will be validated prior to venc_init 17068767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan switch ((int)configIndex) { 170761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexConfigVideoBitrate: 170861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 170916ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_BITRATETYPE); 171061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_CONFIG_BITRATETYPE* pParam = 171161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan reinterpret_cast<OMX_VIDEO_CONFIG_BITRATETYPE*>(configData); 17128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("set_config(): OMX_IndexConfigVideoBitrate (%u)", (unsigned int)pParam->nEncodeBitrate); 171361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 171461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 171561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_config(configData, OMX_IndexConfigVideoBitrate) != true) { 171661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_IndexConfigVideoBitrate failed"); 171761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 171861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 171961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 172061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigBitrate.nEncodeBitrate = pParam->nEncodeBitrate; 172161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamBitrate.nTargetBitrate = pParam->nEncodeBitrate; 172261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.nBitrate = pParam->nEncodeBitrate; 172361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 17248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port index: %u", (unsigned int)pParam->nPortIndex); 172561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 172661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 172761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 172861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 172961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexConfigVideoFramerate: 173061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 173116ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_FRAMERATETYPE); 173261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_FRAMERATETYPE* pParam = 173361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan reinterpret_cast<OMX_CONFIG_FRAMERATETYPE*>(configData); 17348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("set_config(): OMX_IndexConfigVideoFramerate (0x%x)", (unsigned int)pParam->xEncodeFramerate); 173561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 173661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 173761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_config(configData, OMX_IndexConfigVideoFramerate) != true) { 173861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_IndexConfigVideoFramerate failed"); 173961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 174061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 174161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 174261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFramerate.xEncodeFramerate = pParam->xEncodeFramerate; 174361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortDef.format.video.xFramerate = pParam->xEncodeFramerate; 174461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sOutPortFormat.xFramerate = pParam->xEncodeFramerate; 174561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 17468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port index: %u", (unsigned int)pParam->nPortIndex); 174761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 174861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 174961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 175061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 175161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 175261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case QOMX_IndexConfigVideoIntraperiod: 175361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 175416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_INTRAPERIODTYPE); 175561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_INTRAPERIODTYPE* pParam = 175661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan reinterpret_cast<QOMX_VIDEO_INTRAPERIODTYPE*>(configData); 175747e37c4428509524ee576920a98381f3e4872493Nick Pelly 175861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("set_config(): QOMX_IndexConfigVideoIntraperiod"); 175961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 176061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#ifdef MAX_RES_720P 176161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nBFrames > 0) { 17628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("B frames not supported"); 176361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 176461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 176561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif 17668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("Old: P/B frames = %u/%u, New: P/B frames = %u/%u", 17678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)m_sIntraperiod.nPFrames, (unsigned int)m_sIntraperiod.nBFrames, 17688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (unsigned int)pParam->nPFrames, (unsigned int)pParam->nBFrames); 176961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sIntraperiod.nBFrames != pParam->nBFrames) { 1770f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if(hier_b_enabled && m_state == OMX_StateLoaded) { 1771f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_INFO("B-frames setting is supported if HierB is enabled"); 1772f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 1773f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan else { 1774e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_HIGH("Dynamically changing B-frames not supported"); 1775e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1776e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1777f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 177861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_config(configData, (OMX_INDEXTYPE) QOMX_IndexConfigVideoIntraperiod) != true) { 177961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting QOMX_IndexConfigVideoIntraperiod failed"); 178061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 178161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 178261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nPFrames = pParam->nPFrames; 178361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nBFrames = pParam->nBFrames; 178461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sIntraperiod.nIDRPeriod = pParam->nIDRPeriod; 178561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 178661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sOutPortFormat.eCompressionFormat == OMX_VIDEO_CodingMPEG4) { 178761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nPFrames = pParam->nPFrames; 178861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sParamMPEG4.eProfile != OMX_VIDEO_MPEG4ProfileSimple) 178961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nBFrames = pParam->nBFrames; 179061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else 179161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamMPEG4.nBFrames = 0; 179261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else if (m_sOutPortFormat.eCompressionFormat == OMX_VIDEO_CodingH263) { 179361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamH263.nPFrames = pParam->nPFrames; 179461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 179561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nPFrames = pParam->nPFrames; 17968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if ((m_sParamAVC.eProfile != OMX_VIDEO_AVCProfileBaseline) && 17978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (m_sParamAVC.eProfile != (OMX_VIDEO_AVCPROFILETYPE) QOMX_VIDEO_AVCProfileConstrainedBaseline)) 179861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nBFrames = pParam->nBFrames; 179961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan else 180061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sParamAVC.nBFrames = 0; 180161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 180261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 18038767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: (QOMX_IndexConfigVideoIntraperiod) Unsupported port index: %u", (unsigned int)pParam->nPortIndex); 180461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 180561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 180661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 180761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 180861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 180947e37c4428509524ee576920a98381f3e4872493Nick Pelly 181061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexConfigVideoIntraVOPRefresh: 181161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 181216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_INTRAREFRESHVOPTYPE); 181361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_INTRAREFRESHVOPTYPE* pParam = 181461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan reinterpret_cast<OMX_CONFIG_INTRAREFRESHVOPTYPE*>(configData); 181561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 181661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("set_config(): OMX_IndexConfigVideoIntraVOPRefresh"); 181761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (pParam->nPortIndex == PORT_INDEX_OUT) { 181861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_config(configData, 181961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IndexConfigVideoIntraVOPRefresh) != true) { 182061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_IndexConfigVideoIntraVOPRefresh failed"); 182161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 182261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 182361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 182461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigIntraRefreshVOP.IntraRefreshVOP = pParam->IntraRefreshVOP; 182561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 18268767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port index: %u", (unsigned int)pParam->nPortIndex); 182761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 182861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 182961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 183061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 183161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 183261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexConfigCommonRotate: 183361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 183416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_ROTATIONTYPE); 183561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_CONFIG_ROTATIONTYPE *pParam = 183661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan reinterpret_cast<OMX_CONFIG_ROTATIONTYPE*>(configData); 183761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_S32 nRotation; 183861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 1839f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (pParam->nPortIndex != PORT_INDEX_OUT) { 18408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Unsupported port index: %u", (unsigned int)pParam->nPortIndex); 184161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorBadPortIndex; 184261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 184361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ( pParam->nRotation == 0 || 184461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nRotation == 90 || 184561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nRotation == 180 || 184661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan pParam->nRotation == 270 ) { 18478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("set_config: Rotation Angle %u", (unsigned int)pParam->nRotation); 184861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 18498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: un supported Rotation %u", (unsigned int)pParam->nRotation); 185061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 185161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 185261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan nRotation = pParam->nRotation - m_sConfigFrameRotation.nRotation; 185361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (nRotation < 0) 185461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan nRotation = -nRotation; 185561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (nRotation == 90 || nRotation == 270) { 18568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("set_config: updating device Dims"); 185761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (handle->venc_set_config(configData, 185861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_IndexConfigCommonRotate) != true) { 185961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Set OMX_IndexConfigCommonRotate failed"); 186061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 186161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 186261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 nFrameWidth; 1863f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan OMX_U32 nFrameHeight; 186461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 18658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("set_config: updating port Dims"); 186661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 1867f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan nFrameWidth = m_sOutPortDef.format.video.nFrameWidth; 1868f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan nFrameHeight = m_sOutPortDef.format.video.nFrameHeight; 1869f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sOutPortDef.format.video.nFrameWidth = nFrameHeight; 1870f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan m_sOutPortDef.format.video.nFrameHeight = nFrameWidth; 187161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFrameRotation.nRotation = pParam->nRotation; 187261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 187361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 187461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sConfigFrameRotation.nRotation = pParam->nRotation; 187561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 187661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 187761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 187861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_QcomIndexConfigVideoFramePackingArrangement: 187961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 188061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_HIGH("set_config(): OMX_QcomIndexConfigVideoFramePackingArrangement"); 188161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sOutPortFormat.eCompressionFormat == OMX_VIDEO_CodingAVC) { 188216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_FRAME_PACK_ARRANGEMENT); 188361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_QCOM_FRAME_PACK_ARRANGEMENT *configFmt = 188461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (OMX_QCOM_FRAME_PACK_ARRANGEMENT *) configData; 188561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan extra_data_handle.set_frame_pack_data(configFmt); 188661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 188761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: FramePackingData not supported for non AVC compression"); 188861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 188961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 189061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 189161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case QOMX_IndexConfigVideoLTRPeriod: 189261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 189316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE); 189461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE*)configData; 189561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRPeriod)) { 18968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting LTR period failed"); 189761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 189861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 189961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sConfigLTRPeriod, pParam, sizeof(m_sConfigLTRPeriod)); 190061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 190161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 19028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 19038767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_IndexConfigVideoVp8ReferenceFrame: 19048767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 190516ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_VP8REFERENCEFRAMETYPE); 19068767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_VIDEO_VP8REFERENCEFRAMETYPE* pParam = (OMX_VIDEO_VP8REFERENCEFRAMETYPE*) configData; 19078767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE) OMX_IndexConfigVideoVp8ReferenceFrame)) { 19088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting VP8 reference frame"); 19098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 19108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 19118767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan memcpy(&m_sConfigVp8ReferenceFrame, pParam, sizeof(m_sConfigVp8ReferenceFrame)); 19128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 19138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 19148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 1915e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case QOMX_IndexConfigVideoLTRUse: 191661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 191716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRUSE_TYPE); 191861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_CONFIG_LTRUSE_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRUSE_TYPE*)configData; 1919f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRUse)) { 19208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting LTR use failed"); 192161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 192261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 192361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sConfigLTRUse, pParam, sizeof(m_sConfigLTRUse)); 192461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 192561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 192661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case QOMX_IndexConfigVideoLTRMark: 192761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 192816ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRMARK_TYPE); 192961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan QOMX_VIDEO_CONFIG_LTRMARK_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRMARK_TYPE*)configData; 1930f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRMark)) { 1931f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting LTR mark failed"); 1932e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1933f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 193461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 193561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 193661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case OMX_IndexConfigVideoAVCIntraPeriod: 193761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan { 193816ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_AVCINTRAPERIOD); 193961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_VIDEO_CONFIG_AVCINTRAPERIOD *pParam = (OMX_VIDEO_CONFIG_AVCINTRAPERIOD*) configData; 194061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("set_config: OMX_IndexConfigVideoAVCIntraPeriod"); 194161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_IndexConfigVideoAVCIntraPeriod)) { 194261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_IndexConfigVideoAVCIntraPeriod failed"); 194361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorUnsupportedSetting; 194461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 194561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(&m_sConfigAVCIDRPeriod, pParam, sizeof(m_sConfigAVCIDRPeriod)); 194661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 194761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 19488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan case OMX_IndexConfigCommonDeinterlace: 19498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan { 195016ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_DEINTERLACE); 19518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan OMX_VIDEO_CONFIG_DEINTERLACE *pParam = (OMX_VIDEO_CONFIG_DEINTERLACE*) configData; 19528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("set_config: OMX_IndexConfigCommonDeinterlace"); 19538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_IndexConfigCommonDeinterlace)) { 19548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_IndexConfigCommonDeinterlace failed"); 19558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_ErrorUnsupportedSetting; 19568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 19578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan memcpy(&m_sConfigDeinterlace, pParam, sizeof(m_sConfigDeinterlace)); 19588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan break; 19598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 1960f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan case OMX_QcomIndexConfigVideoVencPerfMode: 1961f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan { 196216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_EXTNINDEX_VIDEO_PERFMODE); 1963f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan QOMX_EXTNINDEX_VIDEO_PERFMODE* pParam = (QOMX_EXTNINDEX_VIDEO_PERFMODE*)configData; 1964f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigVideoVencPerfMode)) { 1965f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexConfigVideoVencPerfMode failed"); 1966f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan return OMX_ErrorUnsupportedSetting; 1967eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan } 1968eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan break; 1969eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan } 1970e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexConfigMaxHierPLayers: 1971e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 197216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, QOMX_EXTNINDEX_VIDEO_MAX_HIER_P_LAYERS); 1973e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin QOMX_EXTNINDEX_VIDEO_MAX_HIER_P_LAYERS* pParam = 1974e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (QOMX_EXTNINDEX_VIDEO_MAX_HIER_P_LAYERS*)configData; 1975e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigMaxHierPLayers)) { 1976e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexConfigMaxHierPLayers failed"); 1977e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1978e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1979e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy(&m_sMaxHPlayers, pParam, sizeof(m_sMaxHPlayers)); 1980e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1981e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1982e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexConfigBaseLayerId: 1983e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 198416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID); 1985e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID* pParam = 1986e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID*) configData; 1987e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigBaseLayerId)) { 1988e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexConfigBaseLayerId failed"); 1989e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 1990e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1991e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy(&m_sBaseLayerID, pParam, sizeof(m_sBaseLayerID)); 1992e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 1993e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 1994e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QcomIndexConfigQp: 1995e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 199616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_SKYPE_VIDEO_CONFIG_QP); 1997e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SKYPE_VIDEO_CONFIG_QP* pParam = 1998e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin (OMX_SKYPE_VIDEO_CONFIG_QP*) configData; 1999e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigQp)) { 2000e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexConfigQp failed"); 2001e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 2002e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 2003e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin memcpy(&m_sConfigQP, pParam, sizeof(m_sConfigQP)); 2004e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 2005e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 2006eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan case OMX_IndexConfigPriority: 2007eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan { 200816ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_PARAM_U32TYPE); 2009eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)OMX_IndexConfigPriority)) { 2010eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan DEBUG_PRINT_ERROR("Failed to set OMX_IndexConfigPriority"); 2011eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan return OMX_ErrorUnsupportedSetting; 2012dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan } 2013dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan break; 2014dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan } 2015dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan case OMX_IndexConfigOperatingRate: 2016dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan { 201716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_PARAM_U32TYPE); 2018dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)OMX_IndexConfigOperatingRate)) { 2019dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan DEBUG_PRINT_ERROR("Failed to set OMX_IndexConfigOperatingRate"); 2020dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan return handle->hw_overload ? OMX_ErrorInsufficientResources : 2021dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan OMX_ErrorUnsupportedSetting; 2022f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 2023f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan break; 2024f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan } 2025e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin case OMX_QTIIndexConfigVideoRoiInfo: 2026e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin { 202716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan VALIDATE_OMX_PARAM_DATA(configData, OMX_QTI_VIDEO_CONFIG_ROIINFO); 2028e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)OMX_QTIIndexConfigVideoRoiInfo)) { 2029e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Failed to set OMX_QTIIndexConfigVideoRoiInfo"); 2030e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return OMX_ErrorUnsupportedSetting; 2031e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 2032e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin break; 2033e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 203461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan default: 203561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("ERROR: unsupported index %d", (int) configIndex); 203661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 20376eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal } 203847e37c4428509524ee576920a98381f3e4872493Nick Pelly 203961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorNone; 204047e37c4428509524ee576920a98381f3e4872493Nick Pelly} 204147e37c4428509524ee576920a98381f3e4872493Nick Pelly 204247e37c4428509524ee576920a98381f3e4872493Nick Pelly/* ====================================================================== 204361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan FUNCTION 204461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_venc::ComponentDeInit 204547e37c4428509524ee576920a98381f3e4872493Nick Pelly 204661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DESCRIPTION 204761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan Destroys the component and release memory allocated to the heap. 204847e37c4428509524ee576920a98381f3e4872493Nick Pelly 204961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan PARAMETERS 205061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan <TBD>. 205147e37c4428509524ee576920a98381f3e4872493Nick Pelly 205261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan RETURN VALUE 205361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX Error None if everything successful. 205447e37c4428509524ee576920a98381f3e4872493Nick Pelly 205561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ========================================================================== */ 205647e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_ERRORTYPE omx_venc::component_deinit(OMX_IN OMX_HANDLETYPE hComp) 205747e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 20588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void) hComp; 205961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 i = 0; 20608767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("omx_venc(): Inside component_deinit()"); 206161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (OMX_StateLoaded != m_state) { 20628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("WARNING:Rxd DeInit,OMX not in LOADED state %d",\ 206361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_state); 206461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 206561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_out_mem_ptr) { 20668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("Freeing the Output Memory"); 206761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan for (i=0; i< m_sOutPortDef.nBufferCountActual; i++ ) { 2068417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (BITMASK_PRESENT(&m_out_bm_count, i)) { 2069417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan BITMASK_CLEAR(&m_out_bm_count, i); 2070417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan free_output_buffer (&m_out_mem_ptr[i]); 2071417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 2072417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan 2073417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (release_output_done()) { 2074417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan break; 2075417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 207661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 207761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan free(m_out_mem_ptr); 207861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_out_mem_ptr = NULL; 207947e37c4428509524ee576920a98381f3e4872493Nick Pelly } 208047e37c4428509524ee576920a98381f3e4872493Nick Pelly 208161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*Check if the input buffers have to be cleaned up*/ 208261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_inp_mem_ptr 2083826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_ 208461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan && !meta_mode_enable 2085826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 208661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ) { 20878767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("Freeing the Input Memory"); 208861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan for (i=0; i<m_sInPortDef.nBufferCountActual; i++ ) { 2089417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (BITMASK_PRESENT(&m_inp_bm_count, i)) { 2090417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan BITMASK_CLEAR(&m_inp_bm_count, i); 2091417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan free_input_buffer (&m_inp_mem_ptr[i]); 2092417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 2093417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan 2094417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan if (release_input_done()) { 2095417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan break; 2096417bd6d3d293ef616a5a33741cfd6ac8c50f685fPraveen Chavan } 209761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 209847e37c4428509524ee576920a98381f3e4872493Nick Pelly 209947e37c4428509524ee576920a98381f3e4872493Nick Pelly 210061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan free(m_inp_mem_ptr); 210161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_inp_mem_ptr = NULL; 210261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 210347e37c4428509524ee576920a98381f3e4872493Nick Pelly 210461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Reset counters in mesg queues 210561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_ftb_q.m_size=0; 210661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_cmd_q.m_size=0; 210761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_etb_q.m_size=0; 210861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_ftb_q.m_read = m_ftb_q.m_write =0; 210961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_cmd_q.m_read = m_cmd_q.m_write =0; 211061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_etb_q.m_read = m_etb_q.m_write =0; 211147e37c4428509524ee576920a98381f3e4872493Nick Pelly 211247e37c4428509524ee576920a98381f3e4872493Nick Pelly#ifdef _ANDROID_ 211361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan // Clear the strong reference 21148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("Calling m_heap_ptr.clear()"); 211561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_heap_ptr.clear(); 211647e37c4428509524ee576920a98381f3e4872493Nick Pelly#endif // _ANDROID_ 21178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("Calling venc_close()"); 21182162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan if (handle) { 21192162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan handle->venc_close(); 21202162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan DEBUG_PRINT_HIGH("Deleting HANDLE[%p]", handle); 21212162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan delete (handle); 21222162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan handle = NULL; 21232162c701ddabeec0df8b4f36746e73d8a722f340Praveen Chavan } 21248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_INFO("Component Deinit"); 212561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return OMX_ErrorNone; 212647e37c4428509524ee576920a98381f3e4872493Nick Pelly} 212747e37c4428509524ee576920a98381f3e4872493Nick Pelly 212847e37c4428509524ee576920a98381f3e4872493Nick Pelly 212947e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_U32 omx_venc::dev_stop( void) 213047e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 213161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_stop(); 213247e37c4428509524ee576920a98381f3e4872493Nick Pelly} 213347e37c4428509524ee576920a98381f3e4872493Nick Pelly 213447e37c4428509524ee576920a98381f3e4872493Nick Pelly 213547e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_U32 omx_venc::dev_pause(void) 213647e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 213761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_pause(); 213847e37c4428509524ee576920a98381f3e4872493Nick Pelly} 213947e37c4428509524ee576920a98381f3e4872493Nick Pelly 214047e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_U32 omx_venc::dev_start(void) 214147e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 214261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_start(); 214347e37c4428509524ee576920a98381f3e4872493Nick Pelly} 214447e37c4428509524ee576920a98381f3e4872493Nick Pelly 214547e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_U32 omx_venc::dev_flush(unsigned port) 214647e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 214761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_flush(port); 214847e37c4428509524ee576920a98381f3e4872493Nick Pelly} 214947e37c4428509524ee576920a98381f3e4872493Nick PellyOMX_U32 omx_venc::dev_resume(void) 215047e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 215161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_resume(); 215247e37c4428509524ee576920a98381f3e4872493Nick Pelly} 215347e37c4428509524ee576920a98381f3e4872493Nick Pelly 2154826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_U32 omx_venc::dev_start_done(void) 215547e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 215661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_start_done(); 2157826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2158826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 21596eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalOMX_U32 omx_venc::dev_set_message_thread_id(pthread_t tid) 2160826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 216161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_set_message_thread_id(tid); 2162826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2163826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 2164826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_use_buf(void *buf_addr,unsigned port,unsigned index) 2165826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 216661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_use_buf(buf_addr,port,index); 216747e37c4428509524ee576920a98381f3e4872493Nick Pelly} 216847e37c4428509524ee576920a98381f3e4872493Nick Pelly 216947e37c4428509524ee576920a98381f3e4872493Nick Pellybool omx_venc::dev_free_buf(void *buf_addr,unsigned port) 217047e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 217161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_free_buf(buf_addr,port); 217247e37c4428509524ee576920a98381f3e4872493Nick Pelly} 217347e37c4428509524ee576920a98381f3e4872493Nick Pelly 2174826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_empty_buf(void *buffer, void *pmem_data_buf,unsigned index,unsigned fd) 217547e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 2176f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan bool bret = false; 2177f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan bret = handle->venc_empty_buf(buffer, pmem_data_buf,index,fd); 2178f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan hw_overload = handle->hw_overload; 2179f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan return bret; 218047e37c4428509524ee576920a98381f3e4872493Nick Pelly} 218147e37c4428509524ee576920a98381f3e4872493Nick Pelly 2182826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_fill_buf(void *buffer, void *pmem_data_buf,unsigned index,unsigned fd) 218347e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 218461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_fill_buf(buffer, pmem_data_buf,index,fd); 218547e37c4428509524ee576920a98381f3e4872493Nick Pelly} 218647e37c4428509524ee576920a98381f3e4872493Nick Pelly 2187f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavanbool omx_venc::dev_get_seq_hdr(void *buffer, unsigned size, unsigned *hdrlen) 2188826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 218961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_get_seq_hdr(buffer, size, hdrlen); 2190826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2191826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 21926eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalbool omx_venc::dev_get_capability_ltrcount(OMX_U32 *min, OMX_U32 *max, OMX_U32 *step_size) 21936eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal{ 21946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 21958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void) min; 21968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void) max; 21978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan (void) step_size; 219861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("Get Capability LTR Count is not supported"); 219961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return false; 22006eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#else 220161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_get_capability_ltrcount(min, max, step_size); 22026eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 22036eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} 22046eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 22058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanbool omx_venc::dev_get_performance_level(OMX_U32 *perflevel) 22068767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 22078767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _MSM8974_ 22088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_get_performance_level(perflevel); 22098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#else 22108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Get performance level is not supported"); 22118767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return false; 22128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 22138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 22148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 22158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanbool omx_venc::dev_get_vui_timing_info(OMX_U32 *enabled) 22168767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 22178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _MSM8974_ 22188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_get_vui_timing_info(enabled); 22198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#else 22208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Get vui timing information is not supported"); 22218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return false; 22228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 22238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 22248767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 2225e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinbool omx_venc::dev_get_vqzip_sei_info(OMX_U32 *enabled) 2226e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 2227e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return handle->venc_get_vqzip_sei_info(enabled); 2228e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 2229e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 22308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanbool omx_venc::dev_get_peak_bitrate(OMX_U32 *peakbitrate) 22318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 22328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _MSM8974_ 22338767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_get_peak_bitrate(peakbitrate); 22348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#else 22358767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Get peak bitrate is not supported"); 22368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return false; 22378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 22388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 22398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 2240e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinbool omx_venc::dev_get_batch_size(OMX_U32 *size) 2241e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 2242e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#ifdef _MSM8974_ 2243e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return handle->venc_get_batch_size(size); 2244e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#else 2245e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin DEBUG_PRINT_ERROR("Get batch size is not supported"); 2246e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return false; 2247e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#endif 2248e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 2249e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 2250826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_loaded_start() 2251826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 225261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_loaded_start(); 2253826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2254826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 2255826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_loaded_stop() 2256826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 225761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_loaded_stop(); 2258826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2259826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 2260826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_loaded_start_done() 2261826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 226261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_loaded_start_done(); 2263826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 2264826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 2265826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevbool omx_venc::dev_loaded_stop_done() 2266826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 226761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_loaded_stop_done(); 2268826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 226947e37c4428509524ee576920a98381f3e4872493Nick Pelly 227047e37c4428509524ee576920a98381f3e4872493Nick Pellybool omx_venc::dev_get_buf_req(OMX_U32 *min_buff_count, 227161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 *actual_buff_count, 227261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 *buff_size, 227361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port) 227447e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 227561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_get_buf_req(min_buff_count, 227661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan actual_buff_count, 227761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan buff_size, 227861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan port); 227947e37c4428509524ee576920a98381f3e4872493Nick Pelly 228047e37c4428509524ee576920a98381f3e4872493Nick Pelly} 228147e37c4428509524ee576920a98381f3e4872493Nick Pelly 228247e37c4428509524ee576920a98381f3e4872493Nick Pellybool omx_venc::dev_set_buf_req(OMX_U32 *min_buff_count, 228361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 *actual_buff_count, 228461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 *buff_size, 228561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_U32 port) 228647e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 228761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_set_buf_req(min_buff_count, 228861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan actual_buff_count, 228961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan buff_size, 229061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan port); 229147e37c4428509524ee576920a98381f3e4872493Nick Pelly 229247e37c4428509524ee576920a98381f3e4872493Nick Pelly} 229347e37c4428509524ee576920a98381f3e4872493Nick Pelly 22946eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalbool omx_venc::dev_is_video_session_supported(OMX_U32 width, OMX_U32 height) 22956eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal{ 22966eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifdef _MSM8974_ 229761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_is_video_session_supported(width,height); 22986eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#else 229961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_LOW("Check against video capability not supported"); 230061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return true; 23016eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 23026eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} 23036eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 2304e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinint omx_venc::dev_handle_output_extradata(void *buffer) 2305e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 2306e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return handle->handle_output_extradata(buffer); 2307e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 2308e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 2309e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinint omx_venc::dev_handle_input_extradata(void *buffer, int fd) 2310e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 2311e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin return handle->handle_input_extradata(buffer, fd); 2312e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} 2313e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 2314e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinvoid omx_venc::dev_set_extradata_cookie(void *cookie) 23156eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal{ 2316e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin handle->mInputExtradata.setCookieForConfig(cookie); 231761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan} 231861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 231961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanint omx_venc::dev_set_format(int color) 232061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan{ 232161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return handle->venc_set_format(color); 23226eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal} 23236eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal 232447e37c4428509524ee576920a98381f3e4872493Nick Pellyint omx_venc::async_message_process (void *context, void* message) 232547e37c4428509524ee576920a98381f3e4872493Nick Pelly{ 232661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_video* omx = NULL; 232761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct venc_msg *m_sVenc_msg = NULL; 232861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_BUFFERHEADERTYPE* omxhdr = NULL; 232961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan struct venc_buffer *temp_buff = NULL; 233061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 233161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (context == NULL || message == NULL) { 23328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: omx_venc::async_message_process invalid i/p params"); 233361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return -1; 233447e37c4428509524ee576920a98381f3e4872493Nick Pelly } 233561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg = (struct venc_msg *)message; 233647e37c4428509524ee576920a98381f3e4872493Nick Pelly 233761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx = reinterpret_cast<omx_video*>(context); 233861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 233961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sVenc_msg->statuscode != VEN_S_SUCCESS) { 23408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("ERROR: async_msg_process() - Error statuscode = %lu", 234161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->statuscode); 2342f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan if(m_sVenc_msg->msgcode == VEN_MSG_HW_OVERLOAD) { 2343e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin omx->post_event (0, m_sVenc_msg->statuscode,\ 2344e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_COMPONENT_GENERATE_HARDWARE_OVERLOAD); 2345e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } else { 2346e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin omx->post_event (0, m_sVenc_msg->statuscode,\ 2347e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_COMPONENT_GENERATE_HARDWARE_ERROR); 2348e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin } 234947e37c4428509524ee576920a98381f3e4872493Nick Pelly } 235061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 23518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("omx_venc::async_message_process- msgcode = %lu", 235261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->msgcode); 235361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan switch (m_sVenc_msg->msgcode) { 235461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_START: 23558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 235661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_START_DONE); 235761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 235861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_STOP: 23598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 236061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_STOP_DONE); 236161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 236261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_RESUME: 23638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 236461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_RESUME_DONE); 236561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 236661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_PAUSE: 23678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 236861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_PAUSE_DONE); 236961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 237061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_FLUSH_INPUT_DONE: 237161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 23728767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 237361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT_INPUT_FLUSH); 237461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 237561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_FLUSH_OUPUT_DONE: 23768767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event (0,m_sVenc_msg->statuscode,\ 237761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EVENT_OUTPUT_FLUSH); 237861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 237961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_INPUT_BUFFER_DONE: 238061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr = (OMX_BUFFERHEADERTYPE* )\ 238161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->buf.clientdata; 238261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 238361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (omxhdr == NULL || 238461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (((OMX_U32)(omxhdr - omx->m_inp_mem_ptr) > omx->m_sInPortDef.nBufferCountActual) && 238561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((OMX_U32)(omxhdr - omx->meta_buffer_hdr) > omx->m_sInPortDef.nBufferCountActual))) { 238661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr = NULL; 238761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->statuscode = VEN_S_EFAIL; 238861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 238961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 239061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#ifdef _ANDROID_ICS_ 239161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx->omx_release_meta_buffer(omxhdr); 239261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif 23938767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event ((unsigned long)omxhdr,m_sVenc_msg->statuscode, 239461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_EBD); 239561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 239661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_OUTPUT_BUFFER_DONE: 239761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr = (OMX_BUFFERHEADERTYPE*)m_sVenc_msg->buf.clientdata; 239861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 239961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if ( (omxhdr != NULL) && 240061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ((OMX_U32)(omxhdr - omx->m_out_mem_ptr) < omx->m_sOutPortDef.nBufferCountActual)) { 240161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (m_sVenc_msg->buf.len <= omxhdr->nAllocLen) { 240261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr->nFilledLen = m_sVenc_msg->buf.len; 240361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr->nOffset = m_sVenc_msg->buf.offset; 240461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr->nTimeStamp = m_sVenc_msg->buf.timestamp; 24058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("o/p TS = %u", (unsigned int)m_sVenc_msg->buf.timestamp); 240661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr->nFlags = m_sVenc_msg->buf.flags; 240761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 240861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan /*Use buffer case*/ 240961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (omx->output_use_buffer && !omx->m_use_output_pmem) { 24108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_LOW("memcpy() for o/p Heap UseBuffer"); 241161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan memcpy(omxhdr->pBuffer, 241261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan (m_sVenc_msg->buf.ptrbuffer), 241361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->buf.len); 241461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 241561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 241661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr->nFilledLen = 0; 241761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 241861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 241961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } else { 242061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omxhdr = NULL; 242161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan m_sVenc_msg->statuscode = VEN_S_EFAIL; 242261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 24238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan omx->post_event ((unsigned long)omxhdr,m_sVenc_msg->statuscode, 242461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_FBD); 242561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 242661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_NEED_OUTPUT_BUFFER: 242761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan //TBD what action needs to be done here?? 242861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 24296eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#ifndef _MSM8974_ 243061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan case VEN_MSG_LTRUSE_FAILED: 243161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan DEBUG_PRINT_ERROR("LTRUSE Failed!"); 243261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx->post_event (NULL,m_sVenc_msg->statuscode, 243361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_COMPONENT_GENERATE_LTRUSE_FAILED); 243461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 24356eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#endif 243661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan default: 24378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_HIGH("Unknown msg received : %lu", m_sVenc_msg->msgcode); 243861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan break; 243961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 244061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return 0; 244147e37c4428509524ee576920a98381f3e4872493Nick Pelly} 2442c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan 2443c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavanbool omx_venc::dev_color_align(OMX_BUFFERHEADERTYPE *buffer, 2444c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan OMX_U32 width, OMX_U32 height) 2445c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan{ 24468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if(secure_session) { 24478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan DEBUG_PRINT_ERROR("Cannot align colors in secure session."); 24488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return OMX_FALSE; 24498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan } 2450c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan return handle->venc_color_align(buffer, width,height); 2451c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan} 24528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 24538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanbool omx_venc::is_secure_session() 24548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 24558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return secure_session; 24568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 24578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 24588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanbool omx_venc::dev_get_output_log_flag() 24598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 24608767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_get_output_log_flag(); 24618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 24628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 24638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanint omx_venc::dev_output_log_buffers(const char *buffer, int bufferlen) 24648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 24658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_output_log_buffers(buffer, bufferlen); 24668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 24678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan 24688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanint omx_venc::dev_extradata_log_buffers(char *buffer) 24698767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan{ 24708767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan return handle->venc_extradata_log_buffers(buffer); 24718767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan} 2472