Ticket #1598: audiopassthru.patch
File audiopassthru.patch, 24.9 KB (added by , 19 years ago) |
---|
-
mythplugins/mythmusic/mythmusic/playbackbox.cpp
1815 1815 adevice = gContext->GetSetting("MusicAudioDevice"); 1816 1816 1817 1817 // TODO: Error checking that device is opened correctly! 1818 output = AudioOutput::OpenAudio(adevice, 16, 2, 44100,1818 output = AudioOutput::OpenAudio(adevice, "default", 16, 2, 44100, 1819 1819 AUDIOOUTPUT_MUSIC, true, 1820 1820 false /* AC3/DTS pass through */); 1821 1821 output->setBufferSize(outputBufferSize * 1024); -
mythplugins/mythphone/mythphone/audiodrv.cpp
835 835 cerr << "Cannot have matching spk and mic devices in this mode, should have chosen OSS mode\n"; 836 836 else 837 837 { 838 mythOutput = AudioOutput::OpenAudio(spkDevice, 16, 1, 8000,838 mythOutput = AudioOutput::OpenAudio(spkDevice, "default", 16, 1, 8000, 839 839 AUDIOOUTPUT_TELEPHONY, true, 840 840 false /* AC3/DTS pass through */); 841 841 if (mythOutput) -
mythplugins/mythphone/mythphone/tone.cpp
305 305 return; 306 306 307 307 #else 308 mythOutput = AudioOutput::OpenAudio(devName, 16, 1, 8000,308 mythOutput = AudioOutput::OpenAudio(devName, "default", 16, 1, 8000, 309 309 AUDIOOUTPUT_TELEPHONY, true, 310 310 false /* AC3/DTS pass through */); 311 311 if (mythOutput) -
mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
188 188 osd(NULL), timedisplay(NULL), 189 189 dialogname(""), dialogtype(0), 190 190 // Audio stuff 191 audioOutput(NULL), audiodevice("/dev/dsp"), 191 audioOutput(NULL), 192 audiodevice("/dev/dsp"), audio_passthrudevice("default"), 192 193 audio_channels(2), audio_bits(-1), 193 194 audio_samplerate(44100), audio_stretchfactor(1.0f), 194 195 // Picture-in-Picture … … 623 624 if (!audioOutput && !using_null_videoout) 624 625 { 625 626 bool setVolume = gContext->GetNumSetting("MythControlsVolume", 1); 626 audioOutput = AudioOutput::OpenAudio(audiodevice, audio_bits, 627 audio_channels, audio_samplerate, 627 audioOutput = AudioOutput::OpenAudio(audiodevice, audio_passthrudevice, 628 audio_bits, audio_channels, 629 audio_samplerate, 628 630 AUDIOOUTPUT_VIDEO, 629 631 setVolume, audio_passthru); 630 632 if (!audioOutput) -
mythtv/libs/libmythtv/NuppelVideoPlayer.h
122 122 void SetNoAudio(void) { no_audio_out = true; } 123 123 void SetNullVideo(void) { using_null_videoout = true; } 124 124 void SetAudioDevice(QString device) { audiodevice = device; } 125 void SetAudioPassThruDevice(QString device) { audio_passthrudevice = device; } 125 126 void SetFileName(QString lfilename) { filename = lfilename; } 126 127 void SetExactSeeks(bool exact) { exactseeks = exact; } 127 128 void SetAutoCommercialSkip(int autoskip); … … 652 653 // Audio stuff 653 654 AudioOutput *audioOutput; 654 655 QString audiodevice; 656 QString audio_passthrudevice; 655 657 int audio_channels; 656 658 int audio_bits; 657 659 int audio_samplerate; -
mythtv/libs/libmythtv/tv_play.cpp
1286 1286 nvp->SetRecorder(recorder); 1287 1287 nvp->SetAudioSampleRate(gContext->GetNumSetting("AudioSampleRate", 44100)); 1288 1288 nvp->SetAudioDevice(gContext->GetSetting("AudioOutputDevice")); 1289 nvp->SetAudioPassThruDevice(gContext->GetSetting("PassThruOutputDevice")); 1289 1290 nvp->SetLength(playbackLen); 1290 1291 nvp->SetExactSeeks(gContext->GetNumSetting("ExactSeeking", 0)); 1291 1292 nvp->SetAutoCommercialSkip(autoCommercialSkip); … … 1358 1359 pipnvp->SetRecorder(piprecorder); 1359 1360 pipnvp->SetAudioSampleRate(gContext->GetNumSetting("AudioSampleRate", 44100)); 1360 1361 pipnvp->SetAudioDevice(gContext->GetSetting("AudioOutputDevice")); 1362 pipnvp->SetAudioPassThruDevice(gContext->GetSetting("PassThruOutputDevice")); 1361 1363 pipnvp->SetExactSeeks(gContext->GetNumSetting("ExactSeeking", 0)); 1362 1364 pipnvp->SetLiveTVChain(piptvchain); 1363 1365 -
mythtv/libs/libmyth/audiooutputjack.h
12 12 class AudioOutputJACK : public AudioOutputBase 13 13 { 14 14 public: 15 AudioOutputJACK(QString audiodevice, int laudio_bits, 15 AudioOutputJACK(QString audiodevice, QString passthrudevice, 16 int laudio_bits, 16 17 int laudio_channels, int laudio_samplerate, 17 18 AudioOutputSource source, 18 19 bool set_initial_vol, bool laudio_passthru); -
mythtv/libs/libmyth/audiooutputbase.h
23 23 class AudioOutputBase : public AudioOutput 24 24 { 25 25 public: 26 AudioOutputBase(QString audiodevice, int laudio_bits, 26 AudioOutputBase(QString audiodevice, QString passthrudevice, 27 int laudio_bits, 27 28 int laudio_channels, int laudio_samplerate, 28 29 AudioOutputSource source, 29 30 bool set_initial_vol, bool laudio_passthru); … … 110 111 int fragment_size; 111 112 long soundcard_buffer_size; 112 113 QString audiodevice; 114 QString passthrudevice; 113 115 114 116 bool audio_passthru; 115 117 -
mythtv/libs/libmyth/audiooutputalsa.cpp
10 10 #include "audiooutputalsa.h" 11 11 12 12 13 AudioOutputALSA::AudioOutputALSA(QString audiodevice, int laudio_bits, 13 AudioOutputALSA::AudioOutputALSA(QString audiodevice, QString passthrudevice, 14 int laudio_bits, 14 15 int laudio_channels, int laudio_samplerate, 15 16 AudioOutputSource source, 16 17 bool set_initial_vol, bool laudio_passthru) 17 : AudioOutputBase(audiodevice, laudio_bits,18 : AudioOutputBase(audiodevice, passthrudevice, laudio_bits, 18 19 laudio_channels, laudio_samplerate, source, 19 20 set_initial_vol, laudio_passthru) 20 21 { … … 45 46 pcm_handle = NULL; 46 47 numbadioctls = 0; 47 48 48 QString real_device = audiodevice; 49 if (audio_passthru) 50 real_device.append(":{ AES0 0x02 }"); 51 49 QString real_device = audio_passthru ? passthrudevice : audiodevice; 50 51 VERBOSE(VB_GENERAL, QString("Opening ALSA audio device '%1'.") 52 .arg(real_device)); 53 52 54 err = snd_pcm_open(&pcm_handle, real_device, 53 SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);55 SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); 54 56 55 57 if (err < 0) 56 58 { -
mythtv/libs/libmyth/audiooutputca.cpp
37 37 AudioBufferList *ioData); 38 38 39 39 40 AudioOutputCA::AudioOutputCA(QString audiodevice, int laudio_bits, 40 AudioOutputCA::AudioOutputCA(QString audiodevice, QString passthrudevice, 41 int laudio_bits, 41 42 int laudio_channels, int laudio_samplerate, 42 43 AudioOutputSource source, 43 44 bool set_initial_vol, bool laudio_passthru) 44 : AudioOutputBase(audiodevice, laudio_bits,45 : AudioOutputBase(audiodevice, passthrudevice, laudio_bits, 45 46 laudio_channels, laudio_samplerate, source, 46 47 set_initial_vol, laudio_passthru) 47 48 { -
mythtv/libs/libmyth/audiooutputjack.cpp
21 21 #include "bio2jack.h" 22 22 } 23 23 24 AudioOutputJACK::AudioOutputJACK(QString audiodevice, int laudio_bits, 24 AudioOutputJACK::AudioOutputJACK(QString audiodevice, QString passthrudevice, 25 int laudio_bits, 25 26 int laudio_channels, int laudio_samplerate, 26 27 AudioOutputSource source, 27 28 bool set_initial_vol, bool laudio_passthru) 28 : AudioOutputBase(audiodevice, laudio_bits,29 : AudioOutputBase(audiodevice, passthrudevice, laudio_bits, 29 30 laudio_channels, laudio_samplerate, source, 30 31 set_initial_vol, laudio_passthru) 31 32 { … … 54 55 unsigned long jack_port_flags=JackPortIsPhysical; 55 56 unsigned int jack_port_name_count=0; 56 57 const char *jack_port_name=NULL; 57 58 59 VERBOSE(VB_GENERAL, QString("Opening JACK audio device '%1'.") 60 .arg(audiodevice)); 61 58 62 if (!audiodevice.isEmpty()) { 59 63 jack_port_flags = 0; 60 64 jack_port_name_count = 1; -
mythtv/libs/libmyth/audiooutputoss.h
13 13 class AudioOutputOSS : public AudioOutputBase 14 14 { 15 15 public: 16 AudioOutputOSS(QString audiodevice, int laudio_bits, 16 AudioOutputOSS(QString audiodevice, QString passthrudevice, 17 int laudio_bits, 17 18 int laudio_channels, int laudio_samplerate, 18 19 AudioOutputSource source, bool set_initial_vol, 19 20 bool laudio_passthru); -
mythtv/libs/libmyth/audiooutputbase.cpp
13 13 #include <unistd.h> 14 14 15 15 16 AudioOutputBase::AudioOutputBase(QString audiodevice, int,17 int, int, 16 AudioOutputBase::AudioOutputBase(QString audiodevice, QString passthrudevice, 17 int, int, int, 18 18 AudioOutputSource source, 19 19 bool set_initial_vol, 20 20 bool /*laudio_passthru*/) … … 23 23 pthread_mutex_init(&avsync_lock, NULL); 24 24 pthread_cond_init(&audio_bufsig, NULL); 25 25 this->audiodevice = audiodevice; 26 this->passthrudevice = passthrudevice; 26 27 27 28 output_audio = 0; 28 29 audio_bits = -1; … … 141 142 142 143 numlowbuffer = 0; 143 144 144 VERBOSE(VB_GENERAL, QString("Opening audio device '%1'.")145 .arg(audiodevice));146 147 145 // Actually do the device specific open call 148 146 if (!OpenDevice()) 149 147 { -
mythtv/libs/libmyth/audiooutput.cpp
32 32 #include "audiooutputjack.h" 33 33 #endif 34 34 35 AudioOutput *AudioOutput::OpenAudio(QString audiodevice, int audio_bits, 35 AudioOutput *AudioOutput::OpenAudio(QString audiodevice, QString passthrudevice, 36 int audio_bits, 36 37 int audio_channels, int audio_samplerate, 37 38 AudioOutputSource source, 38 39 bool set_initial_vol, bool audio_passthru) 39 40 { 41 if (passthrudevice=="" || passthrudevice.lower()=="default") 42 { 43 passthrudevice = audiodevice; 44 } 45 40 46 if (audiodevice.startsWith("ALSA:")) 41 47 { 42 48 #ifdef USE_ALSA 43 return new AudioOutputALSA(audiodevice.remove(0, 5), audio_bits, 49 return new AudioOutputALSA(audiodevice.remove(0, 5), 50 passthrudevice.remove(0, 5), audio_bits, 44 51 audio_channels, audio_samplerate, source, 45 52 set_initial_vol, audio_passthru); 46 53 #else … … 51 58 } 52 59 else if (audiodevice.startsWith("NULL")) 53 60 { 54 return new AudioOutputNULL(audiodevice, audio_bits,61 return new AudioOutputNULL(audiodevice, passthrudevice, audio_bits, 55 62 audio_channels, audio_samplerate, source, 56 63 set_initial_vol, audio_passthru); 57 64 } 58 65 else if (audiodevice.startsWith("ARTS:")) 59 66 { 60 67 #ifdef USE_ARTS 61 return new AudioOutputARTS(audiodevice.remove(0, 5), audio_bits, 68 return new AudioOutputARTS(audiodevice.remove(0, 5), 69 passthrudevice.remove(0, 5), audio_bits, 62 70 audio_channels, audio_samplerate, source, 63 71 set_initial_vol, audio_passthru); 64 72 #else … … 70 78 else if (audiodevice.startsWith("JACK:")) 71 79 { 72 80 #ifdef USE_JACK 73 return new AudioOutputJACK(audiodevice.remove(0, 5), audio_bits, 81 return new AudioOutputJACK(audiodevice.remove(0, 5), 82 passthrudevice.remove(0, 5), audio_bits, 74 83 audio_channels, audio_samplerate, source, 75 84 set_initial_vol, audio_passthru); 76 85 #else … … 81 90 } 82 91 #if defined(USING_DIRECTX) 83 92 else 84 return new AudioOutputDX(audiodevice, audio_bits,93 return new AudioOutputDX(audiodevice, passthrudevice, audio_bits, 85 94 audio_channels, audio_samplerate, source, 86 95 set_initial_vol, audio_passthru); 87 96 #elif defined(USING_OSS) 88 97 else 89 return new AudioOutputOSS(audiodevice, audio_bits,98 return new AudioOutputOSS(audiodevice, passthrudevice, audio_bits, 90 99 audio_channels, audio_samplerate, source, 91 100 set_initial_vol, audio_passthru); 92 101 #elif defined(CONFIG_DARWIN) 93 102 else 94 return new AudioOutputCA(audiodevice, audio_bits,103 return new AudioOutputCA(audiodevice, passthrudevice, audio_bits, 95 104 audio_channels, audio_samplerate, source, 96 105 set_initial_vol, audio_passthru); 97 106 #endif -
mythtv/libs/libmyth/audiooutputca.h
17 17 class AudioOutputCA : public AudioOutputBase 18 18 { 19 19 public: 20 AudioOutputCA(QString audiodevice, int laudio_bits, 20 AudioOutputCA(QString audiodevice, QString passthrudevice, 21 int laudio_bits, 21 22 int laudio_channels, int laudio_samplerate, 22 23 AudioOutputSource source, 23 24 bool set_initial_vol, bool laudio_passthru); -
mythtv/libs/libmyth/audiooutputoss.cpp
25 25 #include "audiooutputoss.h" 26 26 #include "util.h" 27 27 28 AudioOutputOSS::AudioOutputOSS(QString audiodevice, int laudio_bits, 28 AudioOutputOSS::AudioOutputOSS(QString audiodevice, QString passthrudevice, 29 int laudio_bits, 29 30 int laudio_channels, int laudio_samplerate, 30 31 AudioOutputSource source, bool set_initial_vol, 31 32 bool laudio_passthru) 32 : AudioOutputBase(audiodevice, laudio_bits,33 : AudioOutputBase(audiodevice, passthrudevice, laudio_bits, 33 34 laudio_channels, laudio_samplerate, source, 34 35 set_initial_vol, laudio_passthru) 35 36 { -
mythtv/libs/libmyth/audiooutputarts.cpp
7 7 #include "mythcontext.h" 8 8 #include "audiooutputarts.h" 9 9 10 AudioOutputARTS::AudioOutputARTS(QString audiodevice, int audio_bits, 10 AudioOutputARTS::AudioOutputARTS(QString audiodevice, QString passthrudevice, 11 int audio_bits, 11 12 int audio_channels, int audio_samplerate, 12 13 AudioOutputSource source, 13 14 bool set_initial_vol, bool audio_passthru) 14 : AudioOutputBase(audiodevice, audio_bits, audio_channels,15 : AudioOutputBase(audiodevice, passthrudevice, audio_bits, audio_channels, 15 16 audio_samplerate, source, set_initial_vol, 16 17 audio_passthru) 17 18 { -
mythtv/libs/libmyth/audiooutputdx.cpp
96 96 97 97 98 98 AudioOutputDX::AudioOutputDX( 99 QString laudiodevice, int laudio_bits,99 QString laudiodevice, QString lpassthrudevice, int laudio_bits, 100 100 int laudio_channels, int laudio_samplerate, 101 101 AudioOutputSource lsource, bool lset_initial_vol, bool laudio_passthru) 102 : AudioOutputBase(laudiodevice, laudio_bits,102 : AudioOutputBase(laudiodevice, lpassthrudevice, laudio_bits, 103 103 laudio_channels, laudio_samplerate, 104 104 lsource, lset_initial_vol, laudio_passthru), 105 105 dsound_dll(NULL), -
mythtv/libs/libmyth/audiooutputnull.h
24 24 class AudioOutputNULL : public AudioOutputBase 25 25 { 26 26 public: 27 AudioOutputNULL(QString audiodevice, int laudio_bits, 28 int laudio_channels, int laudio_samplerate, 29 AudioOutputSource source, 27 AudioOutputNULL(QString audiodevice, QString passthrudevice, 28 int laudio_bits, 29 int laudio_channels, int laudio_samplerate, 30 AudioOutputSource source, 30 31 bool set_initial_vol, bool laudio_passthru); 31 32 virtual ~AudioOutputNULL(); 32 33 -
mythtv/libs/libmyth/audiooutput.h
18 18 { 19 19 public: 20 20 // opens one of the concrete subclasses 21 static AudioOutput *OpenAudio(QString audiodevice, int audio_bits, 21 static AudioOutput *OpenAudio(QString audiodevice, QString passthrudevice, 22 int audio_bits, 22 23 int audio_channels, int audio_samplerate, 23 24 AudioOutputSource source, 24 25 bool set_initial_vol, bool audio_passthru); -
mythtv/libs/libmyth/audiooutputnull.cpp
16 16 #include "mythcontext.h" 17 17 #include "audiooutputnull.h" 18 18 19 AudioOutputNULL::AudioOutputNULL(QString audiodevice, int laudio_bits, 19 AudioOutputNULL::AudioOutputNULL(QString audiodevice, QString passthrudevice, 20 int laudio_bits, 20 21 int laudio_channels, int laudio_samplerate, 21 22 AudioOutputSource source, bool set_initial_vol, 22 23 bool laudio_passthru) 23 : AudioOutputBase(audiodevice, laudio_bits, laudio_channels,24 laudio_ samplerate, source, set_initial_vol,25 laudio_passthru)24 : AudioOutputBase(audiodevice, passthrudevice, laudio_bits, 25 laudio_channels, laudio_samplerate, source, 26 set_initial_vol, laudio_passthru) 26 27 { 27 28 locked_audio_channels = laudio_channels; 28 29 locked_audio_bits = laudio_bits; … … 38 39 39 40 bool AudioOutputNULL::OpenDevice() 40 41 { 42 VERBOSE(VB_GENERAL, "Opening NULL audio device."); 43 41 44 fragment_size = NULLAUDIO_OUTPUT_BUFFER_SIZE / 2; 42 45 soundcard_buffer_size = NULLAUDIO_OUTPUT_BUFFER_SIZE; 43 46 -
mythtv/libs/libmyth/audiooutputarts.h
14 14 class AudioOutputARTS : public AudioOutputBase 15 15 { 16 16 public: 17 AudioOutputARTS(QString audiodevice, int audio_bits,17 AudioOutputARTS(QString audiodevice, QString passthrudevice, int audio_bits, 18 18 int audio_channels, int audio_samplerate, 19 19 AudioOutputSource source, 20 20 bool set_initial_vol, bool laudio_passthru); -
mythtv/libs/libmyth/audiooutputdx.h
17 17 class AudioOutputDX : public AudioOutputBase 18 18 { 19 19 public: 20 AudioOutputDX(QString audiodevice, int audio_bits, 20 AudioOutputDX(QString audiodevice, QString passthrudevice, 21 int audio_bits, 21 22 int audio_channels, int audio_samplerate, 22 23 AudioOutputSource source, 23 24 bool set_initial_vol, bool laudio_passthru); -
mythtv/libs/libmyth/audiooutputalsa.h
16 16 class AudioOutputALSA : public AudioOutputBase 17 17 { 18 18 public: 19 AudioOutputALSA(QString audiodevice, int laudio_bits, 19 AudioOutputALSA(QString audiodevice, QString passthrudevice, 20 int laudio_bits, 20 21 int laudio_channels, int laudio_samplerate, 21 22 AudioOutputSource source, 22 23 bool set_initial_vol, bool laudio_passthru); -
mythtv/programs/mythfrontend/globalsettings.cpp
43 43 return gc; 44 44 } 45 45 46 static HostComboBox *PassThroughOutputDevice() 47 { 48 HostComboBox *gc = new HostComboBox("PassThruOutputDevice", true); 49 50 gc->setLabel(QObject::tr("Passthrough output device")); 51 gc->addSelection(QObject::tr("Default"), "Default"); 52 gc->addSelection("ALSA:iec958:{ AES0 0x02 }", "ALSA:iec958:{ AES0 0x02 }"); 53 54 gc->setHelpText(QObject::tr("Audio output device to use for AC3 and " 55 "DTS passthrough. Default is the same as Audio output " 56 "device. This value is currently only used with ALSA " 57 "sound output.")); 58 return gc; 59 } 60 46 61 static HostCheckBox *MythControlsVolume() 47 62 { 48 63 HostCheckBox *gc = new HostCheckBox("MythControlsVolume"); … … 2275 2290 setUseLabel(false); 2276 2291 2277 2292 addChild(AudioOutputDevice()); 2293 addChild(PassThroughOutputDevice()); 2278 2294 addChild(AC3PassThrough()); 2279 2295 #ifdef CONFIG_DTS 2280 2296 addChild(DTSPassThrough());