#define DEFAULT_AUDIO_CODEC "opus"
/* items for rendering sink */
+#define INI_ITEM_AUDIO_SINK_ELEMENT "audio sink element"
+#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_VIDEO_OVERLAY_RESOURCE_REQUIRED "video overlay resource required"
+#define DEFAULT_VIDEO_SINK_ELEMENT "tizenwlsink"
+#define DEFAULT_AUDIO_SINK_ELEMENT "pulsesink"
#define DEFAULT_VIDEO_OVERLAY_RESOURCE_REQUIRED false
/* items for vpxenc parameters */
}
LOG_INFO("[%s]", INI_CATEGORY_RENDERING_SINK);
+ __dump_item(INI_ITEM_AUDIO_SINK_ELEMENT, INI_ITEM_TYPE_STRING, (void *)ini->rendering_sink.a_sink_element);
+ __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_VIDEO_OVERLAY_RESOURCE_REQUIRED, INI_ITEM_TYPE_BOOL, &ini->rendering_sink.v_overlay_resource_required);
}
}
+ ini->rendering_sink.a_sink_element = __ini_get_string(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_AUDIO_SINK_ELEMENT, DEFAULT_AUDIO_SINK_ELEMENT);
+ 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);
__ini_read_list(ini->dict, INI_CATEGORY_RENDERING_SINK, INI_ITEM_VIDEO_HW_DECODER_ELEMENTS, &ini->rendering_sink.v_hw_decoder_elements);
ini->rendering_sink.v_overlay_resource_required = __ini_get_boolean(ini->dict, INI_CATEGORY_RENDERING_SINK,
#define DEFAULT_ELEMENT_VIDEOCONVERT "videoconvert"
#define DEFAULT_ELEMENT_AUDIOCONVERT "audioconvert"
#define DEFAULT_ELEMENT_AUDIORESAMPLE "audioresample"
-#define DEFAULT_ELEMENT_VIDEOSINK "tizenwlsink"
-#define DEFAULT_ELEMENT_AUDIOSINK "pulsesink"
#define DEFAULT_ELEMENT_FAKESINK "fakesink"
bool _is_owner_of_track_build_context(webrtc_s *webrtc, unsigned int track_id)
return g_hash_table_lookup(webrtc->gst.sink_slots, key);
}
-static const char *__get_videosink_factory_name(webrtc_display_s *display, const char *default_name, bool *display_is_set)
+static const char *__get_videosink_factory_name(webrtc_display_s *display, webrtc_ini_s *ini, bool *display_is_set)
{
- const char *factory_name = DEFAULT_ELEMENT_VIDEOSINK;
+ const char *factory_name = NULL;
- RET_VAL_IF(display == NULL, default_name, "display is NULL");
- RET_VAL_IF(default_name == NULL, DEFAULT_ELEMENT_VIDEOSINK, "default_name is NULL");
- RET_VAL_IF(display_is_set == NULL, default_name, "display_is_set is NULL");
+ RET_VAL_IF(display == NULL, 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) {
*display_is_set = false;
- LOG_INFO("display object is not set, use [%s]", default_name);
- return default_name;
+ LOG_INFO("display object is not set, use [%s]", ini->rendering_sink.v_sink_element);
+ return ini->rendering_sink.v_sink_element;
}
*display_is_set = true;
if (display->type == WEBRTC_DISPLAY_TYPE_OVERLAY)
- factory_name = DEFAULT_ELEMENT_VIDEOSINK;
+ factory_name = ini->rendering_sink.v_sink_element;
else if (display->type == WEBRTC_DISPLAY_TYPE_EVAS)
factory_name = DEFAULT_ELEMENT_FAKESINK;
else
sink->media_types |= MEDIA_TYPE_VIDEO;
- videosink_factory_name = __get_videosink_factory_name(sink->display, DEFAULT_ELEMENT_VIDEOSINK, &display_is_set);
+ if (!(videosink_factory_name = __get_videosink_factory_name(sink->display, &webrtc->ini, &display_is_set)))
+ return WEBRTC_ERROR_INVALID_OPERATION;
+
if (!(videosink = _create_element(videosink_factory_name, NULL))) {
LOG_ERROR("failed to create videosink[%s]", videosink_factory_name);
return WEBRTC_ERROR_INVALID_OPERATION;
return WEBRTC_ERROR_INVALID_OPERATION;
}
- /* FIXME: get factory name from ini */
- if (!(audiosink = _create_element(DEFAULT_ELEMENT_AUDIOSINK, NULL))) {
+ if (!(audiosink = _create_element(webrtc->ini.rendering_sink.a_sink_element, NULL))) {
LOG_ERROR("failed to create audiosink");
return WEBRTC_ERROR_INVALID_OPERATION;
}