#define _MM_WFD_SINK_WFD_ENUM_H_
typedef enum {
- WFD_SESSION_MODE_MIXED = 0,
- WFD_SESSION_MODE_VIDEO_ONLY,
- WFD_SESSION_MODE_AUDIO_ONLY
+ WFD_SESSION_MODE_UNKNOWN = 0,
+ WFD_SESSION_MODE_MIXED = (1 << 0),
+ WFD_SESSION_MODE_VIDEO_ONLY = (1 << 1),
+ WFD_SESSION_MODE_AUDIO_ONLY = (1 << 2)
} WFDSinkSessionMOde;
typedef enum {
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) {
+ if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) {
wfd_sink_debug("Audio only mode skip link video decodebin.");
break;
}
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) {
+ if (wfd_sink->ini.sink_session_mode & WFD_SESSION_MODE_AUDIO_ONLY) {
wfd_sink_debug("Audio only mode skip prepare video pipeline.");
break;
}
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) {
+ 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_info("Current session mode : %d", wfd_sink->ini.sink_session_mode);
- if(wfd_sink->ini.sink_session_mode == WFD_SESSION_MODE_MIXED ||
- wfd_sink->ini.sink_session_mode == WFD_SESSION_MODE_VIDEO_ONLY) {
+ 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->pipeline->mainbin &&
wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst);
+ name = gst_pad_get_name(pad);
+ if(name == NULL) {
+ wfd_sink_error("fail to get pad");
+ goto ERROR;
+ }
+
wfd_sink_debug("Mux pad added, session mode = %d, name[0] = %c", wfd_sink->ini.sink_session_mode, name[0]);
- if(wfd_sink->ini.sink_session_mode == WFD_SESSION_MODE_AUDIO_ONLY && name[0] == 'v') {
+ 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");
// Do nothing
goto done;
}
- name = gst_pad_get_name(pad);
-
pipeline = wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst;
/* take srcpad from demuxer added pad */
MMWFDSINK_PAD_PROBE(wfd_sink, NULL, mainbin[WFD_SINK_M_A_VALVE].gst, "sink");
wfd_sink_error("Current session mode : %d", wfd_sink->ini.sink_session_mode);
- if(wfd_sink->ini.sink_session_mode == WFD_SESSION_MODE_MIXED || wfd_sink->ini.sink_session_mode == WFD_SESSION_MODE_VIDEO_ONLY) {
+ 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");