RET_VAL_IF(display->type != WEBRTC_DISPLAY_TYPE_OVERLAY && display->type != WEBRTC_DISPLAY_TYPE_ECORE_WL,
WEBRTC_ERROR_INVALID_OPERATION, "invalid display type(%d)", display->type);
- g_mutex_lock(&display->mutex);
-
if (display->type == WEBRTC_DISPLAY_TYPE_ECORE_WL)
type = MM_DISPLAY_TYPE_OVERLAY_EXT;
- ret = mm_display_interface_set_display_mainloop_sync(display->mm_display, type, display->object, &display->overlay_surface_id);
- RET_VAL_WITH_UNLOCK_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, &display->mutex,
- "failed to mm_display_interface_set_display_mainloop_sync()");
+ ret = mm_display_interface_set_display_mainloop_sync(display->mm_display, type, display->surface, &display->overlay_surface_id);
+ RET_VAL_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_set_display_mainloop_sync()");
LOG_INFO("overlay_surface_id[%d]", display->overlay_surface_id);
- g_mutex_unlock(&display->mutex);
-
return WEBRTC_ERROR_NONE;
}
RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL");
RET_VAL_IF(display->type != WEBRTC_DISPLAY_TYPE_EVAS, WEBRTC_ERROR_INVALID_OPERATION, "invalid display type(%d)", display->type);
- g_mutex_lock(&display->mutex);
-
- ret = mm_display_interface_set_display_mainloop_sync(display->mm_display, MM_DISPLAY_TYPE_EVAS, display->object, NULL);
- RET_VAL_WITH_UNLOCK_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, &display->mutex,
- "failed to mm_display_interface_set_display_mainloop_sync()");
+ ret = mm_display_interface_set_display_mainloop_sync(display->mm_display, MM_DISPLAY_TYPE_EVAS, display->surface, NULL);
+ RET_VAL_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_set_display_mainloop_sync()");
/* FIXE: get mode and rotation value from handle */
ret = mm_display_interface_evas_set_mode(display->mm_display, 0); /* 0: letter box, 1: origin size, 2: full screen */
- RET_VAL_WITH_UNLOCK_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, &display->mutex,
- "failed to mm_display_interface_evas_set_mode()");
+ RET_VAL_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_mode()");
ret = mm_display_interface_evas_set_rotation(display->mm_display, 0); /* 0: not rotate, 1: 90 degree, 2, 180 degree, 3, 270 degree */
- RET_VAL_WITH_UNLOCK_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, &display->mutex,
- "failed to mm_display_interface_evas_set_rotation()");
+ RET_VAL_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_rotation()");
ret = mm_display_interface_evas_set_visible(display->mm_display, true);
- RET_VAL_WITH_UNLOCK_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, &display->mutex,
- "failed to mm_display_interface_evas_set_visible()");
-
- g_mutex_unlock(&display->mutex);
+ RET_VAL_IF(ret != MM_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_visible()");
return WEBRTC_ERROR_NONE;
}
RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL");
+ g_mutex_lock(&display->mutex);
+
switch (display->type) {
case WEBRTC_DISPLAY_TYPE_OVERLAY:
- LOG_DEBUG("it's OVERLAY type");
+ LOG_INFO("it's OVERLAY type");
ret = __set_overlay_display(display);
break;
case WEBRTC_DISPLAY_TYPE_EVAS:
- LOG_DEBUG("it's EVAS type");
+ LOG_INFO("it's EVAS type");
if (display->tbm == NULL)
display->tbm = _alloc_tbm();
break;
case WEBRTC_DISPLAY_TYPE_ECORE_WL:
- LOG_DEBUG("it's ECORE_WL type");
+ LOG_INFO("it's ECORE_WL type");
ret = __set_overlay_display(display);
break;
default:
LOG_ERROR_IF_REACHED("type(%d)", display->type);
- return WEBRTC_ERROR_INVALID_PARAMETER;
+ ret = WEBRTC_ERROR_INVALID_PARAMETER;
+ break;
}
+ g_mutex_unlock(&display->mutex);
+
return ret;
}
return display;
}
+void _set_display_type_and_surface(webrtc_display_s *display, webrtc_display_type_e type, void *surface)
+{
+ RET_IF(display == NULL, "display is NULL");
+ RET_IF(surface == NULL, "surface is NULL");
+
+ g_mutex_lock(&display->mutex);
+
+ display->type = type;
+ display->surface = surface;
+
+ LOG_INFO("display[%p, type:%d, surface:%p]", display, type, surface);
+
+ g_mutex_unlock(&display->mutex);
+}
+
void _release_display(webrtc_display_s *display)
{
RET_IF(display == NULL, "display is NULL");
RET_VAL_IF(ini == NULL, NULL, "ini is NULL");
RET_VAL_IF(display_is_set == NULL, NULL, "display_is_set is NULL");
- if (display->object == NULL) {
+ if (display->surface == NULL) {
*display_is_set = false;
- LOG_INFO("display object is not set, use [%s]", ini->rendering_sink.v_sink_element);
+ LOG_INFO("display surface is not set, use [%s]", ini->rendering_sink.v_sink_element);
return ini->rendering_sink.v_sink_element;
}
break;
}
- LOG_INFO("use [%s] for object[%p], type[%d]", factory_name, display->object, display->type);
+ LOG_INFO("use [%s] for surface[%p], type[%d]", factory_name, display->surface, display->type);
return factory_name;
}
RET_VAL_IF(sink->display == NULL, WEBRTC_ERROR_INVALID_OPERATION, "sink->display is NULL");
}
- LOG_INFO("track_id[%u] type[%d] object[%p]", track_id, type, display);
+ LOG_INFO("track_id[%u]", track_id);
- sink->display->type = type;
- sink->display->object = display;
+ _set_display_type_and_surface(sink->display, type, display);
return _apply_display(sink->display);
}
RET_VAL_IF(link_with == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "link_with is NULL");
RET_VAL_IF(source->webrtc == NULL, WEBRTC_ERROR_INVALID_OPERATION, "webrtc is NULL");
RET_VAL_IF(source->display == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display is NULL");
- RET_VAL_IF(source->display->object == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display->object is NULL");
+ RET_VAL_IF(source->display->surface == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display->surface is NULL");
webrtc = source->webrtc;
RET_VAL_IF(source == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
if (type == MEDIA_TYPE_VIDEO) {
RET_VAL_IF(source->display == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display is NULL");
- RET_VAL_IF(source->display->object == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display->object is NULL");
+ RET_VAL_IF(source->display->surface == NULL, WEBRTC_ERROR_INVALID_OPERATION, "display->surface is NULL");
}
pipeline_name = g_strdup_printf("webrtc-source_%u-%s-render-pipeline", source->id, type == MEDIA_TYPE_AUDIO ? "audio" : "video");
RET_VAL_IF(source->display == NULL, WEBRTC_ERROR_INVALID_OPERATION, "source->display is NULL");
}
- LOG_INFO("source_id[%u] type[%d] display[%p]", source_id, type, display);
+ LOG_INFO("source_id[%u]", source_id);
- source->display->type = type;
- source->display->object = display;
+ _set_display_type_and_surface(source->display, type, display);
ret = _apply_display(source->display);
if (ret != WEBRTC_ERROR_NONE)