#include <gst/gst.h>
+#include <system_info.h>
+
#include <media_streamer_node_resources.h>
#include <media_streamer.h>
#include <media_streamer_priv.h>
return TRUE;
}
+static gboolean __ms_node_resources_is_needed_by_platform(media_streamer_node_s *node)
+{
+ media_streamer_node_type_e type = node->type;
+ int subtype = node->subtype;
+ char *model_name, *platform_processor;
+ gboolean ret = FALSE;
+
+ /* Checking for model_name and processor because some resources
+ are platform dependent */
+ system_info_get_platform_string("http://tizen.org/system/model_name", &model_name);
+ system_info_get_platform_string("http://tizen.org/system/platform.processor", &platform_processor);
+ ms_info("Check for resources for model_name %s, platform.processor %s", model_name, platform_processor);
+
+ switch (type) {
+ case MEDIA_STREAMER_NODE_TYPE_VIDEO_ENCODER:
+ case MEDIA_STREAMER_NODE_TYPE_VIDEO_DECODER:
+ if (!g_strcmp0(model_name, "Emulator") ||
+ !g_strcmp0(platform_processor, "Emulator"))
+ ret = FALSE;
+ break;
+ case MEDIA_STREAMER_NODE_TYPE_SRC:
+ if (MEDIA_STREAMER_NODE_SRC_TYPE_CAMERA == subtype)
+ ret = TRUE;
+ break;
+ case MEDIA_STREAMER_NODE_TYPE_SINK:
+ if (MEDIA_STREAMER_NODE_SINK_TYPE_OVERLAY == subtype)
+ ret = TRUE;
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
static void __ms_node_get_resources_needed(media_streamer_node_s *node,
media_streamer_resource_type_e *resource) {
media_streamer_node_type_e type = node->type;
return MEDIA_STREAMER_ERROR_NONE;
}
+ /* Check if platform requires resource (e.g. Emulator) */
+ if (!__ms_node_resources_is_needed_by_platform(node)) {
+ ms_info("Platform doesn't require resource for %p node type [%d] subtype [%d]",
+ node, node->type, node->subtype);
+ return MEDIA_STREAMER_ERROR_NONE;
+ }
+
/* Initialize resource manager */
ret = _ms_resource_manager_init(&node->resource_manager,
__ms_resource_relese_cb, node);
return MEDIA_STREAMER_ERROR_NONE;
}
+ /* Check if platform requires resource (e.g. Emulator) */
+ if (!__ms_node_resources_is_needed_by_platform(node)) {
+ ms_info("Platform doesn't require resource for %p node type [%d] subtype [%d]",
+ node, node->type, node->subtype);
+ return MEDIA_STREAMER_ERROR_NONE;
+ }
+
/* Deinitialize resource manager */
ret = _ms_resource_manager_deinit(&node->resource_manager);
if (ret != MEDIA_STREAMER_ERROR_NONE) {
return MEDIA_STREAMER_ERROR_NONE;
}
+ /* Check if platform requires resource (e.g. Emulator) */
+ if (!__ms_node_resources_is_needed_by_platform(node)) {
+ ms_info("Platform doesn't require resource for %p node type [%d] subtype [%d]",
+ node, node->type, node->subtype);
+ return MEDIA_STREAMER_ERROR_NONE;
+ }
+
if (MEDIA_STREAMER_ERROR_NONE != __ms_node_resouces_prepare(node, resource)) {
ms_error("Failed to prepare resources for Node [%p]", node);
return MEDIA_STREAMER_ERROR_INVALID_OPERATION;