diff --git a/osal/android/os_allocator.c b/osal/android/os_allocator.c index 849e6b68..f96a8d4a 100644 --- a/osal/android/os_allocator.c +++ b/osal/android/os_allocator.c @@ -18,6 +18,7 @@ #include "allocator_std.h" #include "allocator_ion.h" #include "allocator_drm.h" +#include "mpp_runtime.h" MPP_RET os_allocator_get(os_allocator *api, MppBufferType type) { @@ -27,28 +28,26 @@ MPP_RET os_allocator_get(os_allocator *api, MppBufferType type) case MPP_BUFFER_TYPE_NORMAL : case MPP_BUFFER_TYPE_V4L2 : { *api = allocator_std; - } - break; + } break; case MPP_BUFFER_TYPE_ION : { -#ifdef HAVE_DRM - *api = allocator_drm; -#else - *api = allocator_ion; + *api = (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_ION)) ? allocator_ion : +#if HAVE_DRM + (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_DRM)) ? allocator_drm : #endif - } - break; + allocator_std; + } break; case MPP_BUFFER_TYPE_DRM : { -#ifdef HAVE_DRM - *api = allocator_drm; +#if HAVE_DRM + *api = (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_DRM)) ? allocator_drm : #else - *api = allocator_std; + * api = #endif - } - break; + (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_ION)) ? allocator_ion : + allocator_std; + } break; default : { ret = MPP_NOK; - } - break; + } break; } return ret; } diff --git a/osal/linux/os_allocator.c b/osal/linux/os_allocator.c index ad09cc05..9db93a69 100644 --- a/osal/linux/os_allocator.c +++ b/osal/linux/os_allocator.c @@ -16,12 +16,11 @@ #if defined(__gnu_linux__) #include "mpp_log.h" +#include "mpp_runtime.h" #include "allocator_std.h" #include "allocator_ion.h" -#ifdef HAVE_DRM #include "allocator_drm.h" -#endif /* * Linux only support MPP_BUFFER_TYPE_NORMAL so far @@ -36,26 +35,24 @@ MPP_RET os_allocator_get(os_allocator *api, MppBufferType type) *api = allocator_std; } break; case MPP_BUFFER_TYPE_ION : { -#ifdef RKPLATFORM -#ifdef HAVE_DRM - *api = allocator_drm; -#else - *api = allocator_ion; -#endif -#else - *api = allocator_std; + *api = (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_ION)) ? allocator_ion : +#if HAVE_DRM + (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_DRM)) ? allocator_drm : #endif + allocator_std; } break; case MPP_BUFFER_TYPE_V4L2 : { mpp_err("os_allocator_get Linux MPP_BUFFER_TYPE_V4L2 do not implement yet\n"); *api = allocator_std; } break; case MPP_BUFFER_TYPE_DRM : { -#ifdef HAVE_DRM - *api = allocator_drm; +#if HAVE_DRM + *api = (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_DRM)) ? allocator_drm : #else - *api = allocator_std; + * api = #endif + (mpp_rt_allcator_is_valid(MPP_BUFFER_TYPE_ION)) ? allocator_ion : + allocator_std; } break; default : { ret = MPP_NOK;