1 /*############################################################################ 2 # Copyright (C) 2005 Intel Corporation 3 # 4 # SPDX-License-Identifier: MIT 5 ############################################################################*/ 6 7 #ifdef LIBVA_ANDROID_SUPPORT 8 #ifdef ANDROID 9 10 #include "vaapi_utils_android.h" 11 CreateLibVA(int)12CLibVA* CreateLibVA(int) { 13 return new AndroidLibVA; 14 } 15 16 /*------------------------------------------------------------------------------*/ 17 18 typedef unsigned int vaapiAndroidDisplay; 19 20 #define VAAPI_ANDROID_DEFAULT_DISPLAY 0x18c34078 21 AndroidLibVA(void)22AndroidLibVA::AndroidLibVA(void) : CLibVA(MFX_LIBVA_AUTO), m_display(NULL) { 23 VAStatus va_res = VA_STATUS_SUCCESS; 24 mfxStatus sts = MFX_ERR_NONE; 25 int major_version = 0, minor_version = 0; 26 vaapiAndroidDisplay* display = NULL; 27 28 m_display = display = (vaapiAndroidDisplay*)malloc(sizeof(vaapiAndroidDisplay)); 29 if (NULL == m_display) 30 sts = MFX_ERR_NOT_INITIALIZED; 31 else 32 *display = VAAPI_ANDROID_DEFAULT_DISPLAY; 33 34 if (MFX_ERR_NONE == sts) { 35 m_va_dpy = vaGetDisplay(m_display); 36 if (!m_va_dpy) { 37 free(m_display); 38 sts = MFX_ERR_NULL_PTR; 39 } 40 } 41 if (MFX_ERR_NONE == sts) { 42 va_res = vaInitialize(m_va_dpy, &major_version, &minor_version); 43 sts = va_to_mfx_status(va_res); 44 if (MFX_ERR_NONE != sts) { 45 free(display); 46 m_display = NULL; 47 } 48 } 49 if (MFX_ERR_NONE != sts) 50 throw std::bad_alloc(); 51 } 52 ~AndroidLibVA(void)53AndroidLibVA::~AndroidLibVA(void) { 54 if (m_va_dpy) { 55 vaTerminate(m_va_dpy); 56 } 57 if (m_display) { 58 free(m_display); 59 } 60 } 61 62 #endif // #ifdef ANDROID 63 #endif // #ifdef LIBVA_ANDROID_SUPPORT 64