src = NULL; \
} while (0)
+#define GET_CAPS_INFO_FROM_PAD(x_pad, x_caps) \
+do { \
+ x_caps = gst_pad_get_current_caps(x_pad); \
+ if (!(x_caps)) \
+ x_caps = gst_pad_query_caps(x_pad, NULL); \
+} while (0)
+
#define PRINT_CAPS(x_caps, x_prefix) \
do { \
if (!(x_caps)) break; \
Name: capi-media-webrtc
Summary: A WebRTC library in Tizen Native API
-Version: 0.3.193
+Version: 0.3.194
Release: 0
Group: Multimedia/API
License: Apache-2.0
MMPixelFormatType format;
GstVideoInfo vinfo;
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
RET_VAL_IF(caps == NULL, NULL, "caps is NULL");
if (!gst_video_info_from_caps(&vinfo, caps)) {
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
RET_VAL_IF(caps == NULL, NULL, "caps is NULL");
media_type = g_strdup(gst_structure_get_string(gst_caps_get_structure(caps, 0), "media"));
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
RET_VAL_IF(caps == NULL, NULL, "caps is NULL");
mime_type = g_strdup(gst_structure_get_name(gst_caps_get_structure(caps, 0)));
RET_VAL_IF(pad == NULL, -1, "pad is NULL");
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
RET_VAL_IF(caps == NULL, -1, "caps is NULL");
if (!gst_structure_get_int(gst_caps_get_structure(caps, 0), "payload", &pt))
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
RET_VAL_IF(media_format_create(&format) != MEDIA_FORMAT_ERROR_NONE, NULL, "failed to media_format_create()");
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
structure = gst_caps_get_structure(caps, 0);
mime = gst_structure_get_name(structure);
GstCaps *caps;
const GValue *codec_data_value;
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
if ((codec_data_value = gst_structure_get_value(gst_caps_get_structure(caps, 0), "codec_data"))) {
GstBuffer *codec_data;
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
- caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
structure = gst_caps_get_structure(caps, 0);
encoding_name = gst_structure_get_string(structure, "encoding-name");
GstElement *depayloader = NULL;
GstElement *capsfilter = NULL;
GstElement *fakesink = NULL;
+ GstCaps *src_caps;
GstCaps *sink_caps;
webrtc_gst_slot_s *sink;
track_name = g_strdup_printf("track_%u", sink->id);
g_free(bin_name);
- CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_DEPAYLOADER_RTP, gst_pad_get_current_caps(src_pad), NULL, NULL, depayloader);
+ GET_CAPS_INFO_FROM_PAD(src_pad, src_caps);
+ CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_DEPAYLOADER_RTP, src_caps, NULL, NULL, depayloader);
if (!depayloader)
goto error_before_insert;
{
element_info_s elem_info;
GstElement *payloader = NULL;
+ GstCaps *caps;
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_PAYLOADER_RTP,
- gst_pad_get_current_caps(pad),
+ caps,
NULL,
NULL,
payloader);
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);
+ GET_CAPS_INFO_FROM_PAD(pad, caps);
g_object_set(G_OBJECT(appsrc), "caps", caps, NULL);
LOG_INFO("setting caps for [%s appsrc] successfully", (av_idx == AV_IDX_AUDIO) ? "audio" : "video");
}
source->av[av_idx].render.need_decoding = need_decoding;
- source->av[av_idx].render.appsrc_caps = gst_pad_get_current_caps(pad);
+ GET_CAPS_INFO_FROM_PAD(pad, source->av[av_idx].render.appsrc_caps);
_add_probe_to_pad_for_render(source, av_idx, gst_element_get_static_pad(queue, "src"), _source_data_probe_cb);
SAFE_G_LIST_FREE(filesrc_element_list);