extern "C" {
#endif
+/* NOTE : Wi-Fi Display Sink has no initalizing API for library itself
+ * so we cannot decide when those ini values to be released.
+ * this is the reason of all string items are static array.
+ * make it do with malloc when MMWFDSinkCreate() API created
+ * before that time, we should be careful with size limitation
+ * of each string item.
+ */
enum WFDSinkINIProbeFlags
{
#define WFD_SINK_INI_MAX_STRLEN 256
#define WFD_SINK_INI_MAX_ELEMENT 10
-/* NOTE : MMPlayer has no initalizing API for library itself
- * so we cannot decide when those ini values to be released.
- * this is the reason of all string items are static array.
- * make it do with malloc when MMPlayerInitialize() API created
- * before that time, we should be careful with size limitation
- * of each string item.
- */
typedef struct __mm_wfd_sink_ini {
/* general */
gchar gst_param[5][WFD_SINK_INI_MAX_STRLEN];
- gboolean generate_dot;
- gboolean enable_pad_probe;
gint state_change_timeout;
gboolean set_debug_property;
- gboolean enable_asm;
+ gboolean enable_rm;
gint jitter_buffer_latency;
gint video_sink_max_lateness;
gint sink_ts_offset;
gboolean video_sink_async;
gboolean enable_retransmission;
gboolean enable_reset_basetime;
- gboolean enable_ts_data_dump;
- gboolean enable_wfdsrc_pad_probe;
+
+ /* debug */
+ gboolean generate_dot;
+ gboolean trace_buffers;
+ gboolean trace_buffers_of_wfdsrc;
+ gboolean dump_ts_data;
/* pipeline */
gchar name_of_source[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_audio_resampler[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_audio_volume[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_audio_sink[WFD_SINK_INI_MAX_STRLEN];
-
gchar name_of_video_hdcp[WFD_SINK_INI_MAX_STRLEN];
- gchar name_of_video_parser[WFD_SINK_INI_MAX_STRLEN];
+ gchar name_of_video_h264_parser[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_video_capssetter[WFD_SINK_INI_MAX_STRLEN];
- gchar name_of_video_decoder[WFD_SINK_INI_MAX_STRLEN];
+ gchar name_of_video_h264_decoder[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_video_converter[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_video_filter[WFD_SINK_INI_MAX_STRLEN];
gchar name_of_video_sink[WFD_SINK_INI_MAX_STRLEN];
/*Default sink ini values*/
/* General*/
#define DEFAULT_GST_PARAM ""
-#define DEFAULT_GENERATE_DOT FALSE
-#define DEFAULT_ENABLE_PAD_PROBE FALSE
#define DEFAULT_STATE_CHANGE_TIMEOUT 5 /* sec */
#define DEFAULT_SET_DEBUG_PROPERTY TRUE
-#define DEFAULT_ENABLE_ASM FALSE
#define DEFAULT_JITTER_BUFFER_LATENCY 10 /* msec */
#define DEFAULT_ENABLE_RETRANSMISSION FALSE
#define DEFAULT_ENABLE_RESET_BASETIME TRUE
#define DEFAULT_SINK_TS_OFFSET 150000000 /* nsec */
#define DEFAULT_AUDIO_SINK_ASYNC FALSE
#define DEFAULT_VIDEO_SINK_ASYNC FALSE
-#define DEFAULT_ENABLE_TS_DATA_DUMP FALSE
#define DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE FALSE
/* Pipeline */
#define DEFAULT_NAME_OF_AUDIO_SPLITTER ""
#define DEFAULT_NAME_OF_AUDIO_SINK ""
#define DEFAULT_NAME_OF_VIDEO_HDCP ""
-#define DEFAULT_NAME_OF_VIDEO_PARSER ""
#define DEFAULT_NAME_OF_VIDEO_CAPSSETTER ""
-#define DEFAULT_NAME_OF_VIDEO_DECODER ""
#define DEFAULT_NAME_OF_VIDEO_CONVERTER ""
#define DEFAULT_NAME_OF_VIDEO_FILTER ""
#define DEFAULT_NAME_OF_VIDEO_SINK ""
set debug property = yes\n\
\n\
; for asm function enable = yes, disable = no\n\
-enable asm = no\n\
+enable rm = no\n\
\n\
; 0: default value set by wfdsrc element, other: user define value.\n\
jitter buffer latency=10\n\
\n\
audio sink element = pulsesink\n\
\n\
-video parser element = h264parse\n\
+video h264 parser element = h264parse\n\
\n\
video capssetter element = capssetter\n\
\n\
-video decoder element = avdec_h264;sprddec_h264;omxh264dec\n\
+video h264_decoder element = avdec_h264;sprddec_h264;omxh264dec\n\
\n\
video converter element =\n\
\n\
#include "mm_wfd_sink_dlog.h"
#include "mm_wfd_sink_ini.h"
+/*Default sink ini values*/
+/* General*/
+#define DEFAULT_ENABLE_RM TRUE
+
+/* Debug */
+#define DEFAULT_GENERATE_DOT FALSE
+#define DEFAULT_TRACE_BUFFERS FALSE
+#define DEFAULT_TRACE_BUFFERS_OF_WFDSRC FALSE
+#define DEFAULT_DUMP_TS_DATA FALSE
+
+/* Pipeline */
+#define DEFAULT_NAME_OF_VIDEO_H264_PARSER ""
+#define DEFAULT_NAME_OF_VIDEO_H264_DECODER ""
+
static gboolean loaded = FALSE;
/* global variables here */
MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[2], "general:gstparam3", DEFAULT_GST_PARAM);
MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[3], "general:gstparam4", DEFAULT_GST_PARAM);
MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[4], "general:gstparam5", DEFAULT_GST_PARAM);
- ini->generate_dot = iniparser_getboolean(dict, "general:generate dot", DEFAULT_GENERATE_DOT);
- ini->enable_pad_probe = iniparser_getboolean(dict, "general:enable pad probe", DEFAULT_ENABLE_PAD_PROBE);
ini->state_change_timeout = iniparser_getint(dict, "general:state change timeout", DEFAULT_STATE_CHANGE_TIMEOUT);
ini->set_debug_property = iniparser_getboolean(dict, "general:set debug property", DEFAULT_SET_DEBUG_PROPERTY);
- ini->enable_asm = iniparser_getboolean(dict, "general:enable asm", DEFAULT_ENABLE_ASM);
+ ini->enable_rm = iniparser_getboolean(dict, "general:enable rm", DEFAULT_ENABLE_RM);
ini->jitter_buffer_latency = iniparser_getint(dict, "general:jitter buffer latency", DEFAULT_JITTER_BUFFER_LATENCY);
ini->enable_retransmission = iniparser_getboolean(dict, "general:enable retransmission", DEFAULT_ENABLE_RETRANSMISSION);
ini->enable_reset_basetime = iniparser_getboolean(dict, "general:enable reset basetime", DEFAULT_ENABLE_RESET_BASETIME);
ini->sink_ts_offset = iniparser_getint(dict, "general:sink ts offset", DEFAULT_SINK_TS_OFFSET);
ini->audio_sink_async = iniparser_getboolean(dict, "general:audio sink async", DEFAULT_AUDIO_SINK_ASYNC);
ini->video_sink_async = iniparser_getboolean(dict, "general:video sink async", DEFAULT_VIDEO_SINK_ASYNC);
- ini->enable_ts_data_dump = iniparser_getboolean(dict, "general:enable ts data dump", DEFAULT_ENABLE_TS_DATA_DUMP);
- ini->enable_wfdsrc_pad_probe = iniparser_getboolean(dict, "general:enable wfdsrc pad probe", DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE);
+ /* debug */
+ ini->generate_dot = iniparser_getboolean(dict, "debug:generate dot", DEFAULT_GENERATE_DOT);
+ ini->trace_buffers = iniparser_getboolean(dict, "debug:trace buffers", DEFAULT_TRACE_BUFFERS);
+ ini->trace_buffers_of_wfdsrc = iniparser_getboolean(dict, "debug:trace buffers of wfdsrc", DEFAULT_TRACE_BUFFERS_OF_WFDSRC);
+ ini->dump_ts_data = iniparser_getboolean(dict, "debug:dump ts data", DEFAULT_DUMP_TS_DATA);
/* pipeline */
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_source, "pipeline:wfdsrc element", DEFAULT_NAME_OF_SOURCE);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_volume, "pipeline:audio volume element", DEFAULT_NAME_OF_AUDIO_VOLUME);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_sink, "pipeline:audio sink element", DEFAULT_NAME_OF_AUDIO_SINK);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_hdcp, "pipeline:video hdcp element", DEFAULT_NAME_OF_VIDEO_HDCP);
- MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_parser, "pipeline:video parser element", DEFAULT_NAME_OF_VIDEO_PARSER);
+ MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_h264_parser, "pipeline:video h264 parser element", DEFAULT_NAME_OF_VIDEO_H264_PARSER);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_capssetter, "pipeline:video capssetter element", DEFAULT_NAME_OF_VIDEO_CAPSSETTER);
- MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_decoder, "pipeline:video decoder element", DEFAULT_NAME_OF_VIDEO_DECODER);
+ MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_h264_decoder, "pipeline:video h264 decoder element", DEFAULT_NAME_OF_VIDEO_H264_DECODER);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_converter, "pipeline:video converter element", DEFAULT_NAME_OF_VIDEO_CONVERTER);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_filter, "pipeline:video filter element", DEFAULT_NAME_OF_VIDEO_FILTER);
MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_sink, "pipeline:video sink element", DEFAULT_NAME_OF_VIDEO_SINK);
ini->hdcp_content_protection = iniparser_getint(dict, "hdcp param:hdcp content protection", DEFAULT_HDCP_CONTENT_PROTECTION);
ini->hdcp_port_no = iniparser_getint(dict, "hdcp param:hdcp port no", DEFAULT_HDCP_PORT_NO);
} else { /* if dict is not available just fill the structure with default value */
- wfd_sink_error("failed to load ini. using hardcoded default\n");
+ wfd_sink_error("failed to load ini. using hardcoded default");
/* general */
strncpy(ini->gst_param[0], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->gst_param[2], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->gst_param[3], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->gst_param[4], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
- ini->generate_dot = DEFAULT_GENERATE_DOT;
- ini->enable_pad_probe = DEFAULT_ENABLE_PAD_PROBE;
ini->state_change_timeout = DEFAULT_STATE_CHANGE_TIMEOUT;
ini->set_debug_property = DEFAULT_SET_DEBUG_PROPERTY;
- ini->enable_asm = DEFAULT_ENABLE_ASM;
+ ini->enable_rm = DEFAULT_ENABLE_RM;
ini->jitter_buffer_latency = DEFAULT_JITTER_BUFFER_LATENCY;
ini->enable_retransmission = DEFAULT_ENABLE_RETRANSMISSION;
ini->enable_reset_basetime = DEFAULT_ENABLE_RESET_BASETIME;
ini->video_sink_max_lateness = DEFAULT_VIDEO_SINK_MAX_LATENESS;
ini->sink_ts_offset = DEFAULT_SINK_TS_OFFSET;
- ini->enable_ts_data_dump = DEFAULT_ENABLE_TS_DATA_DUMP;
- ini->enable_wfdsrc_pad_probe = DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE;
+
+ /* debug */
+ ini->generate_dot = DEFAULT_GENERATE_DOT;
+ ini->trace_buffers = DEFAULT_TRACE_BUFFERS;
+ ini->trace_buffers_of_wfdsrc = DEFAULT_TRACE_BUFFERS_OF_WFDSRC;
+ ini->dump_ts_data = DEFAULT_DUMP_TS_DATA;
/* pipeline */
strncpy(ini->name_of_source, DEFAULT_NAME_OF_TSDEMUX, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_audio_volume, DEFAULT_NAME_OF_AUDIO_VOLUME, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_audio_sink, DEFAULT_NAME_OF_AUDIO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_video_hdcp, DEFAULT_NAME_OF_VIDEO_HDCP, WFD_SINK_INI_MAX_STRLEN - 1);
- strncpy(ini->name_of_video_parser, DEFAULT_NAME_OF_VIDEO_PARSER, WFD_SINK_INI_MAX_STRLEN - 1);
+ strncpy(ini->name_of_video_h264_parser, DEFAULT_NAME_OF_VIDEO_H264_PARSER, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_video_capssetter, DEFAULT_NAME_OF_VIDEO_CAPSSETTER, WFD_SINK_INI_MAX_STRLEN - 1);
- strncpy(ini->name_of_video_decoder, DEFAULT_NAME_OF_VIDEO_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
+ strncpy(ini->name_of_video_h264_decoder, DEFAULT_NAME_OF_VIDEO_H264_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_video_converter, DEFAULT_NAME_OF_VIDEO_CONVERTER, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_video_filter, DEFAULT_NAME_OF_VIDEO_FILTER, WFD_SINK_INI_MAX_STRLEN - 1);
strncpy(ini->name_of_video_sink, DEFAULT_NAME_OF_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
/* dump structure */
- wfd_sink_debug("W-Fi Display Sink Initial Settings-----------------------------------\n");
+ wfd_sink_debug("Wi-Fi Display Sink Initial Settings-----------------------------------");
/* general */
- wfd_sink_debug("gst_param1 : %s\n", ini->gst_param[0]);
- wfd_sink_debug("gst_param2 : %s\n", ini->gst_param[1]);
- wfd_sink_debug("gst_param3 : %s\n", ini->gst_param[2]);
- wfd_sink_debug("gst_param4 : %s\n", ini->gst_param[3]);
- wfd_sink_debug("gst_param5 : %s\n", ini->gst_param[4]);
- wfd_sink_debug("generate_dot : %d\n", ini->generate_dot);
+ wfd_sink_debug("gst_param1 : %s", ini->gst_param[0]);
+ wfd_sink_debug("gst_param2 : %s", ini->gst_param[1]);
+ wfd_sink_debug("gst_param3 : %s", ini->gst_param[2]);
+ wfd_sink_debug("gst_param4 : %s", ini->gst_param[3]);
+ wfd_sink_debug("gst_param5 : %s", ini->gst_param[4]);
+ wfd_sink_debug("enable_rm : %d", ini->enable_rm);
+
+ /* debug */
+ wfd_sink_debug("generate_dot : %d", ini->generate_dot);
if (ini->generate_dot == TRUE) {
- wfd_sink_debug("generate_dot is TRUE, dot file will be stored into /tmp/\n");
+ wfd_sink_debug("generate_dot is TRUE, dot file will be stored into /tmp/");
g_setenv("GST_DEBUG_DUMP_DOT_DIR", "/tmp/", FALSE);
}
- wfd_sink_debug("enable_pad_probe : %d\n", ini->enable_pad_probe);
+ wfd_sink_debug("trace_buffers : %d", ini->trace_buffers);
wfd_sink_debug("state_change_timeout(sec) : %d\n", ini->state_change_timeout);
wfd_sink_debug("set_debug_property : %d\n", ini->set_debug_property);
- wfd_sink_debug("enable_asm : %d\n", ini->enable_asm);
wfd_sink_debug("jitter_buffer_latency(msec) : %d\n", ini->jitter_buffer_latency);
wfd_sink_debug("enable_retransmission : %d\n", ini->enable_retransmission);
wfd_sink_debug("enable_reset_basetime : %d\n", ini->enable_reset_basetime);
wfd_sink_debug("sink_ts_offset(nsec) : %d\n", ini->sink_ts_offset);
wfd_sink_debug("audio_sink_async : %d\n", ini->audio_sink_async);
wfd_sink_debug("video_sink_async : %d\n", ini->video_sink_async);
- wfd_sink_debug("enable_ts_data_dump : %d\n", ini->enable_ts_data_dump);
- wfd_sink_debug("enable_wfdsrc_pad_probe : %d\n", ini->enable_wfdsrc_pad_probe);
+ wfd_sink_debug("trace_buffers_of_wfdsrc : %d", ini->trace_buffers_of_wfdsrc);
+ wfd_sink_debug("dump_ts_data : %d", ini->dump_ts_data);
/* pipeline */
- wfd_sink_debug("name_of_source : %s\n", ini->name_of_source);
- wfd_sink_debug("name_of_tsdemux : %s\n", ini->name_of_tsdemux);
- wfd_sink_debug("name_of_audio_hdcp : %s\n", ini->name_of_audio_hdcp);
- wfd_sink_debug("name_of_aac_parser : %s\n", ini->name_of_aac_parser);
- wfd_sink_debug("name_of_aac_decoder : %s\n", ini->name_of_aac_decoder);
- wfd_sink_debug("name_of_ac3_parser : %s\n", ini->name_of_ac3_parser);
- wfd_sink_debug("name_of_ac3_decoder : %s\n", ini->name_of_ac3_decoder);
- wfd_sink_debug("name_of_lpcm_converter : %s\n", ini->name_of_lpcm_converter);
- wfd_sink_debug("name_of_lpcm_filter : %s\n", ini->name_of_lpcm_filter);
- wfd_sink_debug("name_of_audio_resampler : %s\n", ini->name_of_audio_resampler);
- wfd_sink_debug("name_of_audio_volume : %s\n", ini->name_of_audio_volume);
- wfd_sink_debug("name_of_audio_sink : %s\n", ini->name_of_audio_sink);
- wfd_sink_debug("name_of_video_hdcp : %s\n", ini->name_of_video_hdcp);
- wfd_sink_debug("name_of_video_parser : %s\n", ini->name_of_video_parser);
+ wfd_sink_debug("name_of_source : %s", ini->name_of_source);
+ wfd_sink_debug("name_of_tsdemux : %s", ini->name_of_tsdemux);
+ wfd_sink_debug("name_of_audio_hdcp : %s", ini->name_of_audio_hdcp);
+ wfd_sink_debug("name_of_aac_parser : %s", ini->name_of_aac_parser);
+ wfd_sink_debug("name_of_aac_decoder : %s", ini->name_of_aac_decoder);
+ wfd_sink_debug("name_of_ac3_parser : %s", ini->name_of_ac3_parser);
+ wfd_sink_debug("name_of_ac3_decoder : %s", ini->name_of_ac3_decoder);
+ wfd_sink_debug("name_of_lpcm_converter : %s", ini->name_of_lpcm_converter);
+ wfd_sink_debug("name_of_lpcm_filter : %s", ini->name_of_lpcm_filter);
+ wfd_sink_debug("name_of_audio_resampler : %s", ini->name_of_audio_resampler);
+ wfd_sink_debug("name_of_audio_volume : %s", ini->name_of_audio_volume);
+ wfd_sink_debug("name_of_audio_sink : %s", ini->name_of_audio_sink);
+ wfd_sink_debug("name_of_video_hdcp : %s", ini->name_of_video_hdcp);
+ wfd_sink_debug("name_of_video_h264_parser : %s", ini->name_of_video_h264_parser);
wfd_sink_debug("name_of_video_capssetter : %s\n", ini->name_of_video_capssetter);
- wfd_sink_debug("name_of_video_decoder : %s\n", ini->name_of_video_decoder);
- wfd_sink_debug("name_of_video_converter : %s\n", ini->name_of_video_converter);
- wfd_sink_debug("name_of_video_filter : %s\n", ini->name_of_video_filter);
- wfd_sink_debug("name_of_video_sink : %s\n", ini->name_of_video_sink);
- wfd_sink_debug("name_of_video_evas_sink : %s\n", ini->name_of_video_evas_sink);
+ wfd_sink_debug("name_of_video_h264_decoder : %s", ini->name_of_video_h264_decoder);
+ wfd_sink_debug("name_of_video_converter : %s", ini->name_of_video_converter);
+ wfd_sink_debug("name_of_video_filter : %s", ini->name_of_video_filter);
+ wfd_sink_debug("name_of_video_sink : %s", ini->name_of_video_sink);
+ wfd_sink_debug("name_of_video_evas_sink : %s", ini->name_of_video_evas_sink);
/* audio parameter*/
wfd_sink_debug("audio_codec : %x\n", ini->audio_codec);
wfd_sink_debug("hdcp_content_protection : %x\n", ini->hdcp_content_protection);
wfd_sink_debug("hdcp_port_no : %d\n", ini->hdcp_port_no);
- wfd_sink_debug("---------------------------------------------------\n");
+ wfd_sink_debug("---------------------------------------------------");
loaded = TRUE;
klass = G_OBJECT_GET_CLASS(G_OBJECT(wfdsrc));
g_object_set(G_OBJECT(wfdsrc), "debug", wfd_sink->ini.set_debug_property, NULL);
- g_object_set(G_OBJECT(wfdsrc), "enable-pad-probe", wfd_sink->ini.enable_wfdsrc_pad_probe, NULL);
+ g_object_set(G_OBJECT(wfdsrc), "enable-pad-probe", wfd_sink->ini.trace_buffers_of_wfdsrc, NULL);
if (g_object_class_find_property(klass, "udp-buffer-size"))
g_object_set(G_OBJECT(wfdsrc), "udp-buffer-size", 2097152, NULL);
+ if (g_object_class_find_property(klass, "trace-buffers"))
+ g_object_set(G_OBJECT(wfdsrc), "trace-buffers", wfd_sink->ini.trace_buffers, NULL);
if (g_object_class_find_property(klass, "do-request"))
g_object_set(G_OBJECT(wfdsrc), "do-request", wfd_sink->ini.enable_retransmission, NULL);
if (g_object_class_find_property(klass, "latency"))
/* check video codec */
switch (wfd_sink->stream_info.video_stream_info.codec) {
case MM_WFD_SINK_VIDEO_CODEC_H264:
- if (v_decodebin[WFD_SINK_V_D_PARSE].gst)
- element_bucket = g_list_append(element_bucket, &v_decodebin[WFD_SINK_V_D_PARSE]);
+ if (v_decodebin[WFD_SINK_V_D_H264_PARSE].gst)
+ element_bucket = g_list_append(element_bucket, &v_decodebin[WFD_SINK_V_D_H264_PARSE]);
if (v_decodebin[WFD_SINK_V_D_CAPSSETTER].gst) {
GstCaps *caps = NULL;
g_object_set(G_OBJECT(v_decodebin[WFD_SINK_V_D_CAPSSETTER].gst), "caps", caps, NULL);
gst_object_unref(GST_OBJECT(caps));
}
- if (v_decodebin[WFD_SINK_V_D_DEC].gst)
- element_bucket = g_list_append(element_bucket, &v_decodebin[WFD_SINK_V_D_DEC]);
+ if (v_decodebin[WFD_SINK_V_D_H264_DEC].gst)
+ element_bucket = g_list_append(element_bucket, &v_decodebin[WFD_SINK_V_D_H264_DEC]);
break;
default:
if (video_codec & WFD_VIDEO_H264) {
/* create parser */
- MMWFDSINK_CREATE_ELEMENT(v_decodebin, WFD_SINK_V_D_PARSE, wfd_sink->ini.name_of_video_parser, "video_parser", FALSE);
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_PARSE].gst, "sink");
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_PARSE].gst, "src");
+ MMWFDSINK_CREATE_ELEMENT(v_decodebin, WFD_SINK_V_D_H264_PARSE, wfd_sink->ini.name_of_video_h264_parser, "video_h264_parser", FALSE);
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_H264_PARSE].gst, "sink");
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_H264_PARSE].gst, "src");
/* create capssetter */
MMWFDSINK_CREATE_ELEMENT(v_decodebin, WFD_SINK_V_D_CAPSSETTER, wfd_sink->ini.name_of_video_capssetter, "video_capssetter", FALSE);
MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_CAPSSETTER].gst, "src");
/* create dec */
- MMWFDSINK_CREATE_ELEMENT(v_decodebin, WFD_SINK_V_D_DEC, wfd_sink->ini.name_of_video_decoder, "video_dec", FALSE);
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_DEC].gst, "sink");
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_DEC].gst, "src");
- if (v_decodebin[WFD_SINK_V_D_DEC].gst) {
- if (MM_ERROR_NONE != __mm_wfd_sink_prepare_videodec(wfd_sink, v_decodebin[WFD_SINK_V_D_DEC].gst)) {
+ MMWFDSINK_CREATE_ELEMENT(v_decodebin, WFD_SINK_V_D_H264_DEC, wfd_sink->ini.name_of_video_h264_decoder, "video_h264_dec", FALSE);
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_H264_DEC].gst, "sink");
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_decodebin[WFD_SINK_V_D_H264_DEC].gst, "src");
+ if (v_decodebin[WFD_SINK_V_D_H264_DEC].gst) {
+ if (MM_ERROR_NONE != __mm_wfd_sink_prepare_videodec(wfd_sink, v_decodebin[WFD_SINK_V_D_H264_DEC].gst)) {
wfd_sink_error("failed to set video decoder property...");
goto CREATE_ERROR;
}