}
break;
case WFD_SINK_MANAGER_CMD_LINK_V_DECODEBIN:
- wfd_sink_debug("try to link video decodebin. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) {
- wfd_sink_debug("Audio only mode skip link video decodebin.");
- break;
- }
+ wfd_sink_debug("try to link video decodebin.");
if (MM_ERROR_NONE != __mm_wfd_sink_link_video_decodebin(wfd_sink)) {
wfd_sink_error("failed to link video decodebin.....");
goto EXIT;
}
break;
case WFD_SINK_MANAGER_CMD_PREPARE_V_PIPELINE:
- wfd_sink_debug("try to prepare video pipeline. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) {
- wfd_sink_debug("Audio only mode skip prepare video pipeline.");
- break;
- }
+ wfd_sink_debug("try to prepare video pipeline.");
if (MM_ERROR_NONE != __mm_wfd_sink_prepare_video_pipeline(wfd_sink, NULL)) {
wfd_sink_error("failed to prepare video pipeline.....");
goto EXIT;
}
break;
case WFD_SINK_MANAGER_CMD_UNPREPARE_V_PIPELINE:
- wfd_sink_debug("try to unprepare video pipeline. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) {
- wfd_sink_debug("Audio only mode skip unprepare video pipeline.");
- break;
- }
+ wfd_sink_debug("try to unprepare video pipeline.");
if (MM_ERROR_NONE != __mm_wfd_sink_unprepare_video_pipeline(wfd_sink)) {
wfd_sink_error("failed to unprepare video pipeline.....");
goto EXIT;
goto fail_to_create;
}
- wfd_sink_info("Current session mode : %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & (WFD_SESSION_MODE_MIXED | WFD_SESSION_MODE_VIDEO_ONLY)) {
- /* create video decodebin */
- result = __mm_wfd_sink_create_video_decodebin(wfd_sink);
- if (result < MM_ERROR_NONE) {
- wfd_sink_error("failed to create video decodebin %d", result);
- goto fail_to_create;
- }
+ /* create video decodebin */
+ result = __mm_wfd_sink_create_video_decodebin(wfd_sink);
+ if (result < MM_ERROR_NONE) {
+ wfd_sink_error("failed to create video decodebin %d", result);
+ goto fail_to_create;
+ }
- /* create video sinkbin */
- result = __mm_wfd_sink_create_video_sinkbin(wfd_sink);
- if (result < MM_ERROR_NONE) {
- wfd_sink_error("failed to create video sinkbin %d", result);
- goto fail_to_create;
- }
+ /* create video sinkbin */
+ result = __mm_wfd_sink_create_video_sinkbin(wfd_sink);
+ if (result < MM_ERROR_NONE) {
+ wfd_sink_error("failed to create video sinkbin %d", result);
+ goto fail_to_create;
}
/* create audio decodebin */
wfd_sink->pipeline,
MM_ERROR_WFD_NOT_INITIALIZED);
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE) {
+ wfd_sink_debug("Skip unprepare video pipeline for none audio codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
PRINT_WFD_REF_COUNT(wfd_sink);
wfd_sink_error("No-error:unprepare video sink bin");
if (wfd_sink->pipeline->v_sinkbin && wfd_sink->pipeline->v_sinkbin[WFD_SINK_V_S_BIN].gst) {
wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst,
MM_ERROR_WFD_NOT_INITIALIZED);
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE) {
+ wfd_sink_debug("Skip prepare video pipeline for none audio codec");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* check video decodebin is linked */
if (!wfd_sink->video_decodebin_is_linked) {
/* check video decodebin is created */
goto ERROR;
}
- wfd_sink_debug("Mux pad added, session mode = %d, name[0] = %c", wfd_sink->ini.sink_session_mode, name[0]);
+ wfd_sink_debug("Mux pad added, video_codec=%d, audio_codec=%d, name[0] = %c",
+ wfd_sink->stream_info.video_stream_info.codec,
+ wfd_sink->stream_info.audio_stream_info.codec,
+ name[0]);
- //In case of 'audio-only-mirroring', we don't add video pad
- if ((wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) && name[0] == 'v') {
- wfd_sink_error("Skip video pad add in audio only mode");
+ //In case of none vieo codec, we don't add video pad
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE && name[0] == 'v') {
+ wfd_sink_error("Skip video pad add for none video codec");
// Do nothing
goto done;
}
MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_A_VALVE].gst, "src");
MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_A_VALVE].gst, "sink");
- if (wfd_sink->ini.sink_session_mode & (WFD_SESSION_MODE_MIXED | WFD_SESSION_MODE_VIDEO_ONLY)) {
- /* create valve for video */
- MMWFDSINK_CREATE_ELEMENT(mainbin, WFD_SINK_M_V_VALVE, "valve", "video_valve", FALSE);
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_V_VALVE].gst, "src");
- MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_V_VALVE].gst, "sink");
- }
+ /* create valve for video */
+ MMWFDSINK_CREATE_ELEMENT(mainbin, WFD_SINK_M_V_VALVE, "valve", "video_valve", FALSE);
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_V_VALVE].gst, "src");
+ MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_V_VALVE].gst, "sink");
/* adding created elements to pipeline */
if (!__mm_wfd_sink_gst_element_add_bucket_to_bin(GST_BIN_CAST(mainbin[WFD_SINK_M_PIPE].gst), element_bucket, FALSE)) {
}
if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE) {
- wfd_sink_error("Skip create audio sink bin for non audio codec. %d", wfd_sink->stream_info.audio_stream_info.codec);
+ wfd_sink_error("Skip create audio sink bin for non audio codec.");
wfd_sink_debug_fleave();
return MM_ERROR_NONE;
}
return MM_ERROR_NONE;
}
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE) {
+ wfd_sink_debug("Skip link video decodebin for none video codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* take video decodebin */
v_decodebin = wfd_sink->pipeline->v_decodebin;
return MM_ERROR_NONE;
}
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE) {
+ wfd_sink_debug("Skip create video decodebin for none video codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* check video decodebin could be linked now */
switch (wfd_sink->stream_info.video_stream_info.codec) {
case MM_WFD_SINK_VIDEO_CODEC_H264:
return MM_ERROR_NONE;
}
+ if (wfd_sink->stream_info.video_stream_info.codec == MM_WFD_SINK_VIDEO_CODEC_NONE) {
+ wfd_sink_error("Skip create video sink bin for non video codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* alloc handles */
v_sinkbin = (MMWFDSinkGstElement *)g_malloc0(sizeof(MMWFDSinkGstElement) * WFD_SINK_V_S_NUM);
if (!v_sinkbin) {