X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1f3788c5e1a47fa9b0412902acba38c86b53bb63..4e8cae716ad3fdf29a7b2a45e5eec0a530f93277:/lib/dvb/decoder.cpp diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 1bec997d..76d0f504 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -137,6 +137,22 @@ void eDVBAudio::unfreeze() eDebug("video: AUDIO_CONTINUE: %m"); } +void eDVBAudio::setChannel(int channel) +{ + int val = AUDIO_STEREO; + switch (channel) + { + case aMonoLeft: val = AUDIO_MONO_LEFT; break; + case aMonoRight: val = AUDIO_MONO_RIGHT; break; + default: + break; + } + if (::ioctl(m_fd, AUDIO_CHANNEL_SELECT, val) < 0) + eDebug("video: AUDIO_CHANNEL_SELECT: %m"); + else + eDebug("AUDIO_CHANNEL_SELECT ok"); +} + int eDVBAudio::getPTS(pts_t &now) { return ::ioctl(m_fd, AUDIO_GET_PTS, &now); @@ -552,6 +568,15 @@ RESULT eTSMPEGDecoder::setAudioPID(int apid, int type) return 0; } +RESULT eTSMPEGDecoder::setAudioChannel(int channel) +{ + if (m_audio) + m_audio->setChannel(channel); + else + eDebug("eTSMPEGDecoder::setAudioChannel but no audio decoder exist"); + return 0; +} + RESULT eTSMPEGDecoder::setSyncPCR(int pcrpid) { if (m_pcrpid != pcrpid)