switch (cmd) {
case WFD_SINK_MANAGER_CMD_LINK_A_DECODEBIN:
- wfd_sink_debug("try to link audio decodebin. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_VIDEO_ONLY) {
- wfd_sink_debug("Video only mode skip link audio decodebin.");
- break;
- }
+ wfd_sink_debug("try to link audio decodebin.");
if (MM_ERROR_NONE != __mm_wfd_sink_link_audio_decodebin(wfd_sink)) {
wfd_sink_error("failed to link audio decodebin.....");
goto EXIT;
}
break;
case WFD_SINK_MANAGER_CMD_PREPARE_A_PIPELINE:
- wfd_sink_debug("try to prepare audio pipeline. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_VIDEO_ONLY) {
- wfd_sink_debug("Video only mode skip prepare video pipeline.");
- break;
- }
+ wfd_sink_debug("try to prepare audio pipeline.");
if (MM_ERROR_NONE != __mm_wfd_sink_prepare_audio_pipeline(wfd_sink, NULL)) {
wfd_sink_error("failed to prepare audio pipeline.....");
goto EXIT;
}
break;
case WFD_SINK_MANAGER_CMD_UNPREPARE_A_PIPELINE:
- wfd_sink_debug("try to unprepare audio pipeline. session mode = %d", wfd_sink->ini.sink_session_mode);
- if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_VIDEO_ONLY) {
- wfd_sink_debug("Video only mode skip unprepare audio pipeline.");
- break;
- }
+ wfd_sink_debug("try to unprepare audio pipeline.");
if (MM_ERROR_NONE != __mm_wfd_sink_unprepare_audio_pipeline(wfd_sink)) {
wfd_sink_error("failed to unprepare audio 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_AUDIO_ONLY)) {
- /* create audio decodebin */
- result = __mm_wfd_sink_create_audio_decodebin(wfd_sink);
- if (result < MM_ERROR_NONE) {
- wfd_sink_error("fail to create audio decodebin : %d", result);
- goto fail_to_create;
- }
- /* create audio sinkbin */
- result = __mm_wfd_sink_create_audio_sinkbin(wfd_sink);
- if (result < MM_ERROR_NONE) {
- wfd_sink_error("fail to create audio sinkbin : %d", result);
- goto fail_to_create;
- }
+ /* create audio decodebin */
+ result = __mm_wfd_sink_create_audio_decodebin(wfd_sink);
+ if (result < MM_ERROR_NONE) {
+ wfd_sink_error("fail to create audio decodebin : %d", result);
+ goto fail_to_create;
+ }
+
+ /* create audio sinkbin */
+ result = __mm_wfd_sink_create_audio_sinkbin(wfd_sink);
+ if (result < MM_ERROR_NONE) {
+ wfd_sink_error("fail to create audio sinkbin : %d", result);
+ goto fail_to_create;
}
+
/* set pipeline READY state */
result = __mm_wfd_sink_set_pipeline_state(wfd_sink, GST_STATE_READY, TRUE);
if (result < MM_ERROR_NONE) {
wfd_sink->pipeline,
MM_ERROR_WFD_NOT_INITIALIZED);
+ if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE) {
+ wfd_sink_debug("Skip unprepare audio pipeline for none audio codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
wfd_sink_error("No-error:unprepare audio sink bin");
PRINT_WFD_REF_COUNT(wfd_sink);
wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst,
MM_ERROR_WFD_NOT_INITIALIZED);
+ if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE) {
+ wfd_sink_debug("Skip prepare audio pipeline for none audio codec");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* check audio decodebin is linked */
if (!wfd_sink->audio_decodebin_is_linked) {
/* check audio decodebin is created */
goto done;
}
- //In case of 'video-only-mirroring', we don't add audio pad
- if ((wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_VIDEO_ONLY) && name[0] == 'a') {
- wfd_sink_error("Skip audio pad add in video only mode");
+ //In case of none audio codec, we don't add audio pad
+ if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE && name[0] == 'a') {
+ wfd_sink_error("Skip audio pad add for none audio codec");
// Do nothing
goto done;
}
}
}
- if (wfd_sink->ini.sink_session_mode & (WFD_SESSION_MODE_MIXED | WFD_SESSION_MODE_AUDIO_ONLY)) {
- /* create valve for audio */
- MMWFDSINK_CREATE_ELEMENT(mainbin, WFD_SINK_M_A_VALVE, "valve", "audio_valve", FALSE);
- 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");
- }
+ /* create valve for audio */
+ MMWFDSINK_CREATE_ELEMENT(mainbin, WFD_SINK_M_A_VALVE, "valve", "audio_valve", FALSE);
+ 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 */
return MM_ERROR_NONE;
}
+ if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE) {
+ wfd_sink_debug("Skip link audio decodebin for none audio codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* take audio decodebin */
a_decodebin = wfd_sink->pipeline->a_decodebin;
return MM_ERROR_NONE;
}
+ if (wfd_sink->stream_info.audio_stream_info.codec == MM_WFD_SINK_AUDIO_CODEC_NONE) {
+ wfd_sink_debug("Skip create audio decodebin for none audio codec.");
+ wfd_sink_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* check audio decodebin could be linked now */
switch (wfd_sink->stream_info.audio_stream_info.codec) {
case MM_WFD_SINK_AUDIO_CODEC_AAC:
return MM_ERROR_NONE;
}
+ 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_debug_fleave();
+ return MM_ERROR_NONE;
+ }
+
/* alloc handles */
a_sinkbin = (MMWFDSinkGstElement *)g_malloc0(sizeof(MMWFDSinkGstElement) * WFD_SINK_A_S_NUM);
if (!a_sinkbin) {