return g_hash_table_lookup(webrtc->gst.sink_slots, key);
}
+webrtc_gst_slot_s* __find_sink_slot_by_id(webrtc_s *webrtc, unsigned int track_id)
+{
+ webrtc_gst_slot_s *sink;
+ gchar *track_name;
+
+ RET_VAL_IF(webrtc == NULL, NULL, "webrtc is NULL");
+ RET_VAL_IF(track_id == 0, NULL, "track id is 0");
+
+ track_name = g_strdup_printf("track_%u", track_id);
+
+ sink = __find_sink_slot(webrtc, track_name);
+ if (sink == NULL)
+ LOG_ERROR("could not find an item by [%s] in sink slots", track_name);
+
+ g_free(track_name);
+
+ return sink;
+}
+
static const char *__get_videosink_factory_name(webrtc_display_s *display, webrtc_ini_s *ini, bool *display_is_set)
{
const char *factory_name = NULL;
int _set_stream_info_to_sink(webrtc_s *webrtc, unsigned int track_id, sound_stream_info_h stream_info)
{
webrtc_gst_slot_s *sink;
- gchar *track_name;
char *stream_type;
int stream_index;
bool available;
RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0");
RET_VAL_IF(stream_info == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "stream_info is NULL");
- track_name = g_strdup_printf("track_%u", track_id);
-
- sink = __find_sink_slot(webrtc, track_name);
- if (sink == NULL) {
- LOG_ERROR("could not find an item by [%s] in sink slots", track_name);
- g_free(track_name);
- return WEBRTC_ERROR_INVALID_PARAMETER;
- }
- g_free(track_name);
-
+ sink = __find_sink_slot_by_id(webrtc, track_id);
+ RET_VAL_IF(sink == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "sink is NULL");
RET_VAL_IF(sink->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL");
RET_VAL_IF(sink->encoded_frame_cb != NULL, WEBRTC_ERROR_INVALID_OPERATION, "it may be a forwarding sink for encoded frame callback");
RET_VAL_IF((sink->media_types & MEDIA_TYPE_AUDIO) == 0x0, WEBRTC_ERROR_INVALID_OPERATION, "it's not a audio track");
int _set_display_to_sink(webrtc_s *webrtc, unsigned int track_id, unsigned int type, void *display)
{
webrtc_gst_slot_s *sink;
- gchar *track_name;
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0");
RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL");
- track_name = g_strdup_printf("track_%u", track_id);
-
- sink = __find_sink_slot(webrtc, track_name);
- if (sink == NULL) {
- LOG_ERROR("could not find an item by [%s] in sink slots", track_name);
- g_free(track_name);
- return WEBRTC_ERROR_INVALID_PARAMETER;
- }
- g_free(track_name);
-
+ sink = __find_sink_slot_by_id(webrtc, track_id);
+ RET_VAL_IF(sink == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "sink is NULL");
RET_VAL_IF(sink->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL");
RET_VAL_IF(sink->encoded_frame_cb != NULL, WEBRTC_ERROR_INVALID_OPERATION, "it may be a forwarding sink for encoded frame callback");
RET_VAL_IF((sink->media_types & MEDIA_TYPE_VIDEO) == 0x0, WEBRTC_ERROR_INVALID_OPERATION, "it's not a video track");