typedef struct _ini_item_rendering_sink_s {
const char *a_sink_element;
const char *v_sink_element;
+ const char *evas_native_surface_tbm_format;
GStrv a_hw_decoder_elements;
GStrv v_hw_decoder_elements;
bool v_overlay_resource_required;
Name: capi-media-webrtc
Summary: A WebRTC library in Tizen Native API
-Version: 0.3.149
+Version: 0.3.150
Release: 0
Group: Multimedia/API
License: Apache-2.0
#define INI_ITEM_VIDEO_SINK_ELEMENT "video sink element"
#define INI_ITEM_AUDIO_HW_DECODER_ELEMENTS "audio hw decoder elements"
#define INI_ITEM_VIDEO_HW_DECODER_ELEMENTS "video hw decoder elements"
+#define INI_ITEM_EVAS_NATIVE_SURFACE_TBM_FORMAT "evas native surface tbm format"
/* items for resource acquisition */
#define INI_ITEM_RESOURCE_CAMERA "camera"
__dump_item(INI_ITEM_VIDEO_SINK_ELEMENT, INI_ITEM_TYPE_STRING, (void *)ini->rendering_sink.v_sink_element);
__dump_item(INI_ITEM_AUDIO_HW_DECODER_ELEMENTS, INI_ITEM_TYPE_STRINGS, ini->rendering_sink.a_hw_decoder_elements);
__dump_item(INI_ITEM_VIDEO_HW_DECODER_ELEMENTS, INI_ITEM_TYPE_STRINGS, ini->rendering_sink.v_hw_decoder_elements);
+ __dump_item(INI_ITEM_EVAS_NATIVE_SURFACE_TBM_FORMAT, INI_ITEM_TYPE_STRING, (void *)ini->rendering_sink.evas_native_surface_tbm_format);
LOG_INFO("[%s]", INI_CATEGORY_RESOURCE_ACQUISITION);
__dump_item(INI_ITEM_RESOURCE_CAMERA, INI_ITEM_TYPE_BOOL, &ini->resource_acquisition.camera);
ini->rendering_sink.v_sink_element = __ini_get_string(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_VIDEO_SINK_ELEMENT, DEFAULT_VIDEO_SINK_ELEMENT);
__ini_read_list(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_AUDIO_HW_DECODER_ELEMENTS, &ini->rendering_sink.a_hw_decoder_elements, NULL);
__ini_read_list(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_VIDEO_HW_DECODER_ELEMENTS, &ini->rendering_sink.v_hw_decoder_elements, NULL);
+ ini->rendering_sink.evas_native_surface_tbm_format = __ini_get_string(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_EVAS_NATIVE_SURFACE_TBM_FORMAT, DEFAULT_VIDEO_RAW_FORMAT);
ini->resource_acquisition.camera = __ini_get_boolean(ini->dict, INI_CATEGORY_RESOURCE_ACQUISITION,
INI_ITEM_RESOURCE_CAMERA, DEFAULT_RESOURCE_CAMERA_REQUIRED);
{
webrtc_gst_slot_s *sink;
GstElement *videoconvert = NULL;
+ GstElement *capsfilter;
GstElement *videosink;
GstElement *link_to;
const char *videosink_factory_name;
return ret;
}
#endif
- if (!(videoconvert = _create_element(DEFAULT_ELEMENT_VIDEOCONVERT, NULL)))
- goto exit;
- PREPEND_ELEMENT(element_list, videoconvert);
- link_to = videoconvert;
-
if (sink->display->type == WEBRTC_DISPLAY_TYPE_OVERLAY ||
sink->display->type == WEBRTC_DISPLAY_TYPE_ECORE_WL) {
gst_video_overlay_set_wl_window_wl_surface_id(GST_VIDEO_OVERLAY(videosink), sink->display->overlay_surface_id);
NULL);
} else if (sink->display->type == WEBRTC_DISPLAY_TYPE_EVAS) {
+ GstCaps *caps;
g_object_set(G_OBJECT(videosink),
"sync", TRUE,
"qos", TRUE,
"signal-handoffs", TRUE,
NULL);
_connect_and_append_signal(&sink->signals, (GObject *)videosink, "handoff", G_CALLBACK(_video_stream_decoded_cb), sink->display);
+
+ if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, NULL)))
+ goto exit;
+ PREPEND_ELEMENT(element_list, capsfilter);
+
+ caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
+ "format", G_TYPE_STRING, webrtc->ini.rendering_sink.evas_native_surface_tbm_format,
+ NULL);
+ g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+ gst_caps_unref(caps);
}
+
+ if (!(videoconvert = _create_element(DEFAULT_ELEMENT_VIDEOCONVERT, NULL)))
+ goto exit;
+ PREPEND_ELEMENT(element_list, videoconvert);
+ link_to = videoconvert;
}
if (!_add_elements_to_bin(sink->bin, element_list)) {
const char *videosink_factory_name;
GstElement *videosink;
GstElement *videoconvert;
+ GstElement *capsfilter;
GList *element_list = NULL;
RET_VAL_IF(source == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
return WEBRTC_ERROR_INVALID_OPERATION;
APPEND_ELEMENT(element_list, videoconvert);
+ if (source->display->type == WEBRTC_DISPLAY_TYPE_EVAS) {
+ GstCaps *caps;
+ if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, NULL)))
+ goto exit;
+ APPEND_ELEMENT(element_list, capsfilter);
+
+ caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
+ "format", G_TYPE_STRING, webrtc->ini.rendering_sink.evas_native_surface_tbm_format,
+ NULL);
+ g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+ gst_caps_unref(caps);
+ }
+
if (!(videosink = _create_element(videosink_factory_name, NULL)))
goto exit;
APPEND_ELEMENT(element_list, videosink);