[mediacodec] disable mm-resource-manager when tv profile 78/216178/4
authorHyuntae Kim <ht1211.kim@samsung.com>
Tue, 22 Oct 2019 04:26:46 +0000 (13:26 +0900)
committerHyuntae Kim <ht1211.kim@samsung.com>
Wed, 23 Oct 2019 10:54:07 +0000 (19:54 +0900)
Change-Id: Iec9caf6101ff01c2247f2caf4bfe6289e5453bd3

CMakeLists.txt [changed mode: 0755->0644]
include/media_codec_private.h
packaging/capi-media-codec.spec [changed mode: 0755->0644]
src/media_codec.c

old mode 100755 (executable)
new mode 100644 (file)
index 217ee07..b073bc8
@@ -10,8 +10,11 @@ SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
 
-SET(dependents "dlog glib-2.0 mm-common libtbm capi-media-tool iniparser gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-app-1.0 capi-system-info mm-resource-manager gstreamer-allocators-1.0" )
-SET(pc_dependents "capi-base-common capi-media-tool gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-app-1.0 mm-resource-manager gstreamer-allocators-1.0" )
+SET(dependents "dlog glib-2.0 mm-common libtbm capi-media-tool iniparser gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-app-1.0 capi-system-info gstreamer-allocators-1.0" )
+SET(pc_dependents "capi-base-common capi-media-tool gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-app-1.0 gstreamer-allocators-1.0" )
+IF(TIZEN_FEATURE_MM_RESOURCE_MANAGER)
+SET(dependents "${dependents} mm-resource-manager")
+ENDIF(TIZEN_FEATURE_MM_RESOURCE_MANAGER)
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(${fw_name} REQUIRED ${dependents})
@@ -28,6 +31,9 @@ ENDIF("${ARCH}" STREQUAL "arm")
 
 ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
 ADD_DEFINITIONS("-DTIZEN_DEBUG")
+IF(TIZEN_FEATURE_MM_RESOURCE_MANAGER)
+ADD_DEFINITIONS("-DUSE_MM_RESOURCE_MANAGER")
+ENDIF(TIZEN_FEATURE_MM_RESOURCE_MANAGER)
 
 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIB_INSTALL_DIR}")
 
index 0057fa0..bc196ec 100644 (file)
@@ -24,7 +24,9 @@
 #include <media_codec.h>
 
 #include <mm_types.h>
+#ifdef USE_MM_RESOURCE_MANAGER
 #include <mm_resource_manager.h>
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -101,7 +103,9 @@ typedef struct _mediacodec_s {
        int state;
        bool is_omx;
        char *m_mime;
+#ifdef USE_MM_RESOURCE_MANAGER
        mm_resource_manager_res_h codec_resource;
+#endif
 
        mediacodec_input_buffer_used_cb empty_buffer_cb;
        void* empty_buffer_cb_userdata;
old mode 100755 (executable)
new mode 100644 (file)
index cc14806..311c106
@@ -4,7 +4,7 @@
 
 Name:       capi-media-codec
 Summary:    A Media Codec library in Tizen Native API
-Version:    0.6.3
+Version:    0.6.4
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
@@ -21,7 +21,9 @@ BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
 BuildRequires:  pkgconfig(gstreamer-app-1.0)
 BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires:  pkgconfig(iniparser)
+%if "%{tizen_profile_name}" != "tv"
 BuildRequires:  pkgconfig(mm-resource-manager)
+%endif
 #BuildRequires:  pkgconfig(capi-media-camera)
 #BuildRequires:  pkgconfig(capi-mediademuxer)
 #BuildRequires:  pkgconfig(capi-mediamuxer)
@@ -63,8 +65,12 @@ export LDFLAGS+=" -lgcov"
 %endif
 
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-%cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
-
+%cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} \
+%if "%{tizen_profile_name}" == "tv"
+  -DTIZEN_FEATURE_MM_RESOURCE_MANAGER=NO
+%else
+  -DTIZEN_FEATURE_MM_RESOURCE_MANAGER=YES
+%endif
 
 make %{?jobs:-j%jobs}
 
index b76269a..88e12d8 100644 (file)
 
 #define MC_PREALLOCATED_HANDLE_ARRAY_SIZE 16
 
+#ifdef USE_MM_RESOURCE_MANAGER
 static mm_resource_manager_h resource_manager;
 static GPtrArray *mediacodec_handles;
 static GMutex mediacodec_handles_lock;
+#endif
 
 static gboolean  __mediacodec_empty_buffer_cb(media_packet_h pkt, void *user_data);
 static gboolean __mediacodec_fill_buffer_cb(media_packet_h pkt, void *user_data);
@@ -36,10 +38,12 @@ static gboolean __mediacodec_error_cb(mediacodec_error_e error, void *user_data)
 static gboolean __mediacodec_eos_cb(void *user_data);
 static gboolean __mediacodec_supported_codec_cb(mediacodec_codec_type_e codec_type, void *user_data);
 static gboolean __mediacodec_buffer_status_cb(mediacodec_status_e status, void *user_data);
+#ifdef USE_MM_RESOURCE_MANAGER
 static void __mediacodec_init_lib() __attribute__((constructor));
 static void __mediacodec_deinit_lib() __attribute__((destructor));
 static int __mediacodec_resource_release_cb(mm_resource_manager_h rm,
                mm_resource_manager_res_h resource_h, void *user_data);
+#endif
 
 /*
  * Internal Implementation
@@ -131,8 +135,10 @@ int mediacodec_create(mediacodec_h *mediacodec)
 
        LOGD("mediacodec_create..");
 
+#ifdef USE_MM_RESOURCE_MANAGER
        if (resource_manager == NULL)
                return MEDIACODEC_ERROR_INTERNAL;
+#endif
 
        handle = (mediacodec_s *)malloc(sizeof(mediacodec_s));
        if (handle != NULL) {
@@ -164,9 +170,11 @@ int mediacodec_create(mediacodec_h *mediacodec)
        mc_set_buffer_status_cb(handle->mc_handle, (mediacodec_buffer_status_cb)__mediacodec_buffer_status_cb, handle);
        mc_set_supported_codec_cb(handle->mc_handle, (mediacodec_supported_codec_cb)__mediacodec_supported_codec_cb, handle);
 
+#ifdef USE_MM_RESOURCE_MANAGER
        g_mutex_lock(&mediacodec_handles_lock);
        g_ptr_array_insert(mediacodec_handles, -1, *mediacodec);
        g_mutex_unlock(&mediacodec_handles_lock);
+#endif
 
        return MEDIACODEC_ERROR_NONE;
 
@@ -183,9 +191,11 @@ int mediacodec_destroy(mediacodec_h mediacodec)
                LOGD("MEDIACODEC_ERROR_INVALID_OPERATION(0x%08x)", MEDIACODEC_ERROR_INVALID_OPERATION);
                return MEDIACODEC_ERROR_INVALID_OPERATION;
        } else {
+#ifdef USE_MM_RESOURCE_MANAGER
                g_mutex_lock(&mediacodec_handles_lock);
                g_ptr_array_remove_fast(mediacodec_handles, mediacodec);
                g_mutex_unlock(&mediacodec_handles_lock);
+#endif
 
                handle->state = MEDIACODEC_STATE_NONE;
                free(handle);
@@ -294,11 +304,14 @@ int mediacodec_prepare(mediacodec_h mediacodec)
 {
        MEDIACODEC_INSTANCE_CHECK(mediacodec);
        mediacodec_s *handle = (mediacodec_s *)mediacodec;
+#ifdef USE_MM_RESOURCE_MANAGER
        mc_handle_t *mc_handle = (mc_handle_t *) handle->mc_handle;
        int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE;
        mm_resource_manager_res_h resource;
+#endif
        MEDIACODEC_STATE_CHECK(handle, MEDIACODEC_STATE_IDLE);
 
+#ifdef USE_MM_RESOURCE_MANAGER
        if (mc_handle->is_hw && mc_handle->is_video) {
 
                if (handle->codec_resource) {
@@ -345,6 +358,7 @@ int mediacodec_prepare(mediacodec_h mediacodec)
 
                handle->codec_resource = resource;
        }
+#endif
 
        int ret = mc_prepare(handle->mc_handle);
 
@@ -360,13 +374,16 @@ int mediacodec_unprepare(mediacodec_h mediacodec)
 {
        MEDIACODEC_INSTANCE_CHECK(mediacodec);
        mediacodec_s *handle = (mediacodec_s *)mediacodec;
+#ifdef USE_MM_RESOURCE_MANAGER
        int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE;
+#endif
 
        int ret = mc_unprepare(handle->mc_handle);
 
        if (ret != MEDIACODEC_ERROR_NONE) {
                return __convert_error_code(ret, (char *)__FUNCTION__);
        } else {
+#ifdef USE_MM_RESOURCE_MANAGER
                if (handle->codec_resource != NULL) {
                        mm_resource_manager_mark_for_release(resource_manager,
                                        handle->codec_resource);
@@ -384,6 +401,7 @@ int mediacodec_unprepare(mediacodec_h mediacodec)
                } else {
                        LOGD("No codec resource to release. Probably resource release cb called\n");
                }
+#endif
 
                handle->state = MEDIACODEC_STATE_IDLE;
                return MEDIACODEC_ERROR_NONE;
@@ -689,6 +707,7 @@ static gboolean __mediacodec_buffer_status_cb(mediacodec_status_e status, void *
 }
 
 
+#ifdef USE_MM_RESOURCE_MANAGER
 static int __mediacodec_resource_release_cb(mm_resource_manager_h rm,
                mm_resource_manager_res_h resource_h, void *user_data)
 {
@@ -734,3 +753,4 @@ static void __mediacodec_deinit_lib()
                mm_resource_manager_destroy(resource_manager);
        g_ptr_array_unref(mediacodec_handles);
 }
+#endif