{ 0, NULL, NULL, NULL, 0 }
};
-typedef struct {
- const char *appsrc_name;
- const char *queue_name;
- const char *payloader_name;
- const char *capsfilter_name;
- const char *fakesink_name;
-} av_mapping_table_s;
-
-static av_mapping_table_s _av_tbl[AV_IDX_MAX] = {
- {
- ELEMENT_NAME_AUDIO_APPSRC,
- ELEMENT_NAME_AUDIO_QUEUE,
- ELEMENT_NAME_AUDIO_PAYLOADER,
- ELEMENT_NAME_AUDIO_CAPSFILTER,
- ELEMENT_NAME_AUDIO_FAKESINK,
- },
- {
- ELEMENT_NAME_VIDEO_APPSRC,
- ELEMENT_NAME_VIDEO_QUEUE,
- ELEMENT_NAME_VIDEO_PAYLOADER,
- ELEMENT_NAME_VIDEO_CAPSFILTER,
- ELEMENT_NAME_VIDEO_FAKESINK,
- }
-};
-
static int __link_source_with_webrtcbin(webrtc_gst_slot_s *source, GstElement *webrtcbin);
static GstPadProbeReturn __camerasrc_probe_cb(GstPad *pad, GstPadProbeInfo *info, gpointer u_data);
ret = _add_no_target_ghostpad_to_slot(source, true, &src_pad);
RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to _add_no_target_ghostpad_to_slot()");
- if (!(appsrc = _create_element(DEFAULT_ELEMENT_APPSRC, _av_tbl[av_idx].appsrc_name)))
+ if (!(appsrc = _create_element(DEFAULT_ELEMENT_APPSRC, _get_element_name(av_idx, ELEMENT_APPSRC))))
return WEBRTC_ERROR_INVALID_OPERATION;
APPEND_ELEMENT(element_list, appsrc);
"format", GST_FORMAT_TIME,
NULL);
- if (!(queue = _create_element(DEFAULT_ELEMENT_QUEUE, _av_tbl[av_idx].queue_name)))
+ if (!(queue = _create_element(DEFAULT_ELEMENT_QUEUE, _get_element_name(av_idx, ELEMENT_QUEUE))))
goto exit;
APPEND_ELEMENT(element_list, queue);
- if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, _av_tbl[av_idx].capsfilter_name)))
+ if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, _get_element_name(av_idx, ELEMENT_CAPSFILTER))))
goto exit;
APPEND_ELEMENT(element_list, capsfilter);
bin = GST_BIN(source->filesrc_pipeline);
- if ((queue = gst_bin_get_by_name(bin, _av_tbl[av_idx].queue_name)))
+ if ((queue = gst_bin_get_by_name(bin, _get_element_name(av_idx, ELEMENT_QUEUE))))
APPEND_ELEMENT(element_list, queue);
else
LOG_ERROR("queue is NULL");
- if ((payloader = gst_bin_get_by_name(bin, _av_tbl[av_idx].payloader_name)))
+ if ((payloader = gst_bin_get_by_name(bin, _get_element_name(av_idx, ELEMENT_PAYLOADER))))
APPEND_ELEMENT(element_list, payloader);
else
LOG_ERROR("payloader is NULL");
- if ((capsfilter = gst_bin_get_by_name(bin, _av_tbl[av_idx].capsfilter_name)))
+ if ((capsfilter = gst_bin_get_by_name(bin, _get_element_name(av_idx, ELEMENT_CAPSFILTER))))
APPEND_ELEMENT(element_list, capsfilter);
else
LOG_ERROR("capsfilter is NULL");
- if ((fakesink = gst_bin_get_by_name(bin, _av_tbl[av_idx].fakesink_name)))
+ if ((fakesink = gst_bin_get_by_name(bin, _get_element_name(av_idx, ELEMENT_FAKESINK))))
APPEND_ELEMENT(element_list, fakesink);
else
LOG_ERROR("fakesink is NULL");
webrtc_gst_slot_s *source = data;
GstFlowReturn gst_ret = GST_FLOW_OK;
- g_signal_emit_by_name(gst_bin_get_by_name(source->bin, _av_tbl[AV_IDX_AUDIO].appsrc_name), "push-buffer", buffer, &gst_ret, NULL);
+ g_signal_emit_by_name(gst_bin_get_by_name(source->bin, _get_element_name(AV_IDX_AUDIO, ELEMENT_APPSRC)), "push-buffer", buffer, &gst_ret, NULL);
if (gst_ret != GST_FLOW_OK)
LOG_ERROR("failed to 'push-buffer', gst_ret[0x%x]", gst_ret);
}
webrtc_gst_slot_s *source = data;
GstFlowReturn gst_ret = GST_FLOW_OK;
- g_signal_emit_by_name(gst_bin_get_by_name(source->bin, _av_tbl[AV_IDX_VIDEO].appsrc_name), "push-buffer", buffer, &gst_ret, NULL);
+ g_signal_emit_by_name(gst_bin_get_by_name(source->bin, _get_element_name(AV_IDX_VIDEO, ELEMENT_APPSRC)), "push-buffer", buffer, &gst_ret, NULL);
if (gst_ret != GST_FLOW_OK)
LOG_ERROR("failed to 'push-buffer', gst_ret[0x%x]", gst_ret);
}
av_idx = GET_AV_IDX(_is_audio_media_type(media_type));
g_free(media_type);
- appsrc = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].appsrc_name);
+ appsrc = gst_bin_get_by_name(source->bin, _get_element_name(av_idx, ELEMENT_APPSRC));
RET_VAL_IF(appsrc == NULL, GST_PAD_PROBE_OK, "There is no appsrc for [%s]", (av_idx == AV_IDX_AUDIO) ? "audio" : "video");
caps = gst_pad_get_current_caps(pad);
payloader);
RET_VAL_IF(payloader == NULL, NULL, "payloader is NULL");
- gst_element_set_name(payloader, _av_tbl[GET_AV_IDX(is_audio)].payloader_name);
+ gst_element_set_name(payloader, _get_element_name(GET_AV_IDX(is_audio), ELEMENT_PAYLOADER));
return payloader;
}
RET_VAL_IF(source == NULL, NULL, "source is NULL");
- if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, _av_tbl[GET_AV_IDX(is_audio)].capsfilter_name)))
+ if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, _get_element_name(GET_AV_IDX(is_audio), ELEMENT_CAPSFILTER))))
return NULL;
if(__set_payload_type(source->webrtc, source, GET_AV_IDX(is_audio), NULL) != WEBRTC_ERROR_NONE) {
RET_VAL_IF(source == NULL, NULL, "source is NULL");
- if (!(fakesink = _create_element(DEFAULT_ELEMENT_FAKESINK, _av_tbl[GET_AV_IDX(is_audio)].fakesink_name)))
+ if (!(fakesink = _create_element(DEFAULT_ELEMENT_FAKESINK, _get_element_name(GET_AV_IDX(is_audio), ELEMENT_FAKESINK))))
return NULL;
sink_pad = gst_element_get_static_pad(fakesink, "sink");
bin = GST_BIN(source->filesrc_pipeline);
- if (!(queue = _create_element(DEFAULT_ELEMENT_QUEUE, _av_tbl[GET_AV_IDX(is_audio)].queue_name)))
+ if (!(queue = _create_element(DEFAULT_ELEMENT_QUEUE, _get_element_name(GET_AV_IDX(is_audio), ELEMENT_QUEUE))))
return WEBRTC_ERROR_INVALID_OPERATION;
APPEND_ELEMENT(element_list, queue);
RET_VAL_IF(pad == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "pad is NULL");
RET_VAL_IF(source == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
- queue = gst_bin_get_by_name(GST_BIN(source->filesrc_pipeline), _av_tbl[GET_AV_IDX(is_audio)].queue_name);
+ queue = gst_bin_get_by_name(GST_BIN(source->filesrc_pipeline), _get_element_name(GET_AV_IDX(is_audio), ELEMENT_QUEUE));
if (!queue) {
- LOG_ERROR("failed to get element [%s]", _av_tbl[GET_AV_IDX(is_audio)].queue_name);
+ LOG_ERROR("failed to get element [%s]", _get_element_name(GET_AV_IDX(is_audio), ELEMENT_QUEUE));
return WEBRTC_ERROR_INVALID_OPERATION;
}
return;
}
- queue = gst_bin_get_by_name(GST_BIN(source->filesrc_pipeline), _av_tbl[GET_AV_IDX(is_audio)].queue_name);
+ queue = gst_bin_get_by_name(GST_BIN(source->filesrc_pipeline), _get_element_name(GET_AV_IDX(is_audio), ELEMENT_QUEUE));
RET_IF(queue == NULL, "queue is NULL");
ret = __link_decodebin_with_queue(pad, source, is_audio);
__remove_rest_of_elements_for_filesrc_pipeline(source, (av_idx == AV_IDX_AUDIO));
- if ((appsrc = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].appsrc_name)))
+ if ((appsrc = gst_bin_get_by_name(source->bin, _get_element_name(av_idx, ELEMENT_APPSRC))))
APPEND_ELEMENT(element_list, appsrc);
else
LOG_ERROR("appsrc is NULL");
- if ((queue = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].queue_name)))
+ if ((queue = gst_bin_get_by_name(source->bin, _get_element_name(av_idx, ELEMENT_QUEUE))))
APPEND_ELEMENT(element_list, queue);
else
LOG_ERROR("queue is NULL");
- if ((capsfilter = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].capsfilter_name)))
+ if ((capsfilter = gst_bin_get_by_name(source->bin, _get_element_name(av_idx, ELEMENT_CAPSFILTER))))
APPEND_ELEMENT(element_list, capsfilter);
else
LOG_ERROR("capsfilter is NULL");