161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan/*-------------------------------------------------------------------------- 216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen ChavanCopyright (c) 2013 - 2016, The Linux Foundation. All rights reserved. 361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanRedistribution and use in source and binary forms, with or without 561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanmodification, are permitted provided that the following conditions are met: 661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Redistributions of source code must retain the above copyright 761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan notice, this list of conditions and the following disclaimer. 861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Redistributions in binary form must reproduce the above copyright 961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan notice, this list of conditions and the following disclaimer in the 1061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan documentation and/or other materials provided with the distribution. 1161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Neither the name of The Linux Foundation nor 1261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan the names of its contributors may be used to endorse or promote 1361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan products derived from this software without specific prior written 1461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan permission. 1561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 1661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1761a2c6a19dbd06a317a419623020e02056661876Praveen ChavanAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1861a2c6a19dbd06a317a419623020e02056661876Praveen ChavanIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1961a2c6a19dbd06a317a419623020e02056661876Praveen ChavanNON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2061a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2161a2c6a19dbd06a317a419623020e02056661876Praveen ChavanEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 2361a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2561a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 2661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan--------------------------------------------------------------------------*/ 2861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 298767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifndef __VIDC_DEBUG_H__ 308767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define __VIDC_DEBUG_H__ 3161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _ANDROID_ 338767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#include <cstdio> 3497e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan#include <pthread.h> 3561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 368767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanenum { 378767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan PRIO_ERROR=0x1, 388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan PRIO_INFO=0x1, 398767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan PRIO_HIGH=0x2, 408767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan PRIO_LOW=0x4 418767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan}; 4261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanextern int debug_level; 4461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#undef DEBUG_PRINT_ERROR 468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_ERROR(fmt, args...) \ 478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (debug_level & PRIO_ERROR) \ 488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ALOGE(fmt,##args) 498767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#undef DEBUG_PRINT_INFO 508767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_INFO(fmt, args...) \ 518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (debug_level & PRIO_INFO) \ 528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ALOGI(fmt,##args) 538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#undef DEBUG_PRINT_LOW 548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_LOW(fmt, args...) \ 558767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (debug_level & PRIO_LOW) \ 568767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ALOGD(fmt,##args) 578767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#undef DEBUG_PRINT_HIGH 588767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_HIGH(fmt, args...) \ 598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan if (debug_level & PRIO_HIGH) \ 608767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan ALOGD(fmt,##args) 618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#else 628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_ERROR printf 638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_INFO printf 648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_LOW printf 658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define DEBUG_PRINT_HIGH printf 668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 6761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 6816ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan#define VALIDATE_OMX_PARAM_DATA(ptr, paramType) \ 6916ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan { \ 7016ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan if (ptr == NULL) { return OMX_ErrorBadParameter; } \ 7116ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan paramType *p = reinterpret_cast<paramType *>(ptr); \ 7216ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan if (p->nSize < sizeof(paramType)) { \ 7316ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan ALOGE("Insufficient object size(%u) v/s expected(%zu) for type %s",\ 7416ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan (unsigned int)p->nSize, sizeof(paramType), #paramType); \ 7516ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan return OMX_ErrorBadParameter; \ 7616ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan } \ 7716ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan } \ 7816ee85d1d456a4b694fd32baa5f52341e638b5d8Praveen Chavan 7997e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavanclass auto_lock { 8097e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan public: 8197e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan auto_lock(pthread_mutex_t &lock) 8297e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan : mLock(lock) { 8397e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan pthread_mutex_lock(&mLock); 8497e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan } 8597e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan ~auto_lock() { 8697e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan pthread_mutex_unlock(&mLock); 8797e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan } 8897e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan private: 8997e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan pthread_mutex_t &mLock; 9097e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan}; 9197e3ddfad60bf0417cbbc93dda97d2b887589fc0Praveen Chavan 928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif 93