Ticket #1105: mythtv-ac3-spdif-fix.patch
File mythtv-ac3-spdif-fix.patch, 24.5 KB (added by , 18 years ago) |
---|
-
libs/libmythtv/NuppelVideoPlayer.h
106 106 void SetVideoParams(int w, int h, double fps, int keydist, 107 107 float a = 1.33333, FrameScanType scan = kScan_Ignore, 108 108 bool reinit = false); 109 void SetAudioParams(int bits, int channels, int samplerate );109 void SetAudioParams(int bits, int channels, int samplerate, bool passthru); 110 110 void SetEffDsp(int dsprate); 111 111 void SetFileLength(int total, int frames); 112 112 void Zoom(int direction); … … 487 487 int audio_bits; 488 488 int audio_samplerate; 489 489 float audio_stretchfactor; 490 bool audio_passthru; 490 491 491 492 // Picture-in-Picture 492 493 NuppelVideoPlayer *pipplayer; -
libs/libmythtv/nuppeldecoder.cpp
474 474 #endif 475 475 GetNVP()->SetAudioParams(extradata.audio_bits_per_sample, 476 476 extradata.audio_channels, 477 extradata.audio_sample_rate );477 extradata.audio_sample_rate, 0); 478 478 GetNVP()->ReinitAudio(); 479 479 foundit = 1; 480 480 } -
libs/libmythtv/NuppelVideoPlayer.cpp
488 488 audioOutput = AudioOutput::OpenAudio(audiodevice, audio_bits, 489 489 audio_channels, audio_samplerate, 490 490 AUDIOOUTPUT_VIDEO, 491 setVolume );491 setVolume, audio_passthru); 492 492 if (!audioOutput) 493 493 errMsg = QObject::tr("Unable to create AudioOutput."); 494 494 else … … 514 514 515 515 if (audioOutput) 516 516 { 517 audioOutput->Reconfigure(audio_bits, audio_channels, audio_samplerate );517 audioOutput->Reconfigure(audio_bits, audio_channels, audio_samplerate, audio_passthru); 518 518 errMsg = audioOutput->GetError(); 519 519 if (!errMsg.isEmpty()) 520 520 audioOutput->SetStretchFactor(audio_stretchfactor); … … 2527 2527 } 2528 2528 } 2529 2529 2530 void NuppelVideoPlayer::SetAudioParams(int bps, int channels, int samplerate )2530 void NuppelVideoPlayer::SetAudioParams(int bps, int channels, int samplerate, bool passthru) 2531 2531 { 2532 2532 audio_bits = bps; 2533 2533 audio_channels = channels; 2534 2534 audio_samplerate = samplerate; 2535 audio_passthru = passthru; 2535 2536 } 2536 2537 2537 2538 void NuppelVideoPlayer::SetEffDsp(int dsprate) -
libs/libmythtv/avformatdecoder.cpp
1181 1181 // waiting on audio. 1182 1182 if (GetNVP()->HasAudioIn() && audioStreams.empty()) 1183 1183 { 1184 GetNVP()->SetAudioParams(-1, -1, -1 );1184 GetNVP()->SetAudioParams(-1, -1, -1, 0); 1185 1185 GetNVP()->ReinitAudio(); 1186 1186 } 1187 1187 … … 2733 2733 GetNVP()->SetEffDsp(audioOut.sample_rate * 100); 2734 2734 2735 2735 GetNVP()->SetAudioParams(audioOut.bps(), audioOut.channels, 2736 audioOut.sample_rate); 2736 audioOut.sample_rate, 2737 audioIn.do_passthru); 2737 2738 GetNVP()->ReinitAudio(); 2738 2739 2739 2740 return true; -
libs/libmyth/audiooutputjack.h
14 14 public: 15 15 AudioOutputJACK(QString audiodevice, int laudio_bits, 16 16 int laudio_channels, int laudio_samplerate, 17 AudioOutputSource source, bool set_initial_vol); 17 AudioOutputSource source, bool set_initial_vol, 18 bool laudio_passthru); 18 19 virtual ~AudioOutputJACK(); 19 20 20 21 // Volume control -
libs/libmyth/audiooutputbase.h
19 19 public: 20 20 AudioOutputBase(QString audiodevice, int laudio_bits, 21 21 int laudio_channels, int laudio_samplerate, 22 AudioOutputSource source, bool set_initial_vol); 22 AudioOutputSource source, bool set_initial_vol, 23 bool laudio_passthru); 23 24 virtual ~AudioOutputBase(); 24 25 25 26 // reconfigure sound out for new params 26 virtual void Reconfigure(int audio_bits, 27 int audio_ channels, int audio_samplerate);27 virtual void Reconfigure(int audio_bits, int audio_channels, 28 int audio_samplerate, bool audio_passthru); 28 29 29 30 // do AddSamples calls block? 30 31 virtual void SetBlocking(bool blocking); … … 106 107 long soundcard_buffer_size; 107 108 QString audiodevice; 108 109 110 bool audio_passthru; 111 109 112 float audio_stretchfactor; 110 113 AudioOutputSource source; 111 114 -
libs/libmyth/audiooutputalsa.cpp
12 12 13 13 AudioOutputALSA::AudioOutputALSA(QString audiodevice, int laudio_bits, 14 14 int laudio_channels, int laudio_samplerate, 15 AudioOutputSource source, bool set_initial_vol) 15 AudioOutputSource source, bool set_initial_vol, 16 bool laudio_passthru) 16 17 : AudioOutputBase(audiodevice, laudio_bits, 17 laudio_channels, laudio_samplerate, source, set_initial_vol) 18 laudio_channels, laudio_samplerate, source, set_initial_vol, 19 laudio_passthru) 18 20 { 19 21 // our initalisation 20 22 pcm_handle = NULL; … … 22 24 mixer_handle = NULL; 23 25 24 26 // Set everything up 25 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );27 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 26 28 } 27 29 28 30 AudioOutputALSA::~AudioOutputALSA() … … 41 43 42 44 pcm_handle = NULL; 43 45 numbadioctls = 0; 46 47 QString real_device = QString(audiodevice); 48 if (audio_passthru) 49 real_device.append(":{ AES0 0x02 }"); 44 50 45 err = snd_pcm_open(&pcm_handle, audiodevice,51 err = snd_pcm_open(&pcm_handle, real_device, 46 52 SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); 47 53 48 54 if (err < 0) -
libs/libmyth/audiooutputca.cpp
38 38 39 39 AudioOutputCA::AudioOutputCA(QString audiodevice, int laudio_bits, 40 40 int laudio_channels, int laudio_samplerate, 41 AudioOutputSource source, bool set_initial_vol) 41 AudioOutputSource source, bool set_initial_vol, 42 bool laudio_passthru) 42 43 : AudioOutputBase(audiodevice, laudio_bits, 43 44 laudio_channels, laudio_samplerate, 44 source, set_initial_vol )45 source, set_initial_vol, laudio_passthru) 45 46 { 46 47 // Create private data 47 48 coreaudio_data = new CoreAudioData(); 48 49 coreaudio_data->output_unit = NULL; 49 50 50 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );51 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 51 52 } 52 53 53 54 AudioOutputCA::~AudioOutputCA() -
libs/libmyth/audiooutputjack.cpp
23 23 24 24 AudioOutputJACK::AudioOutputJACK(QString audiodevice, int laudio_bits, 25 25 int laudio_channels, int laudio_samplerate, 26 AudioOutputSource source, bool set_initial_vol) 26 AudioOutputSource source, bool set_initial_vol, 27 bool laudio_passthru) 27 28 : AudioOutputBase(audiodevice, laudio_bits, laudio_channels, 28 laudio_samplerate, source, set_initial_vol) 29 laudio_samplerate, source, set_initial_vol, 30 laudio_passthru) 29 31 { 30 32 // Initialise the Jack output layer 31 33 JACK_Init(); … … 34 36 audioid = -1; 35 37 36 38 // Set everything up 37 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );39 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 38 40 } 39 41 40 42 AudioOutputJACK::~AudioOutputJACK() -
libs/libmyth/audiooutputoss.h
15 15 public: 16 16 AudioOutputOSS(QString audiodevice, int laudio_bits, 17 17 int laudio_channels, int laudio_samplerate, 18 AudioOutputSource source, bool set_initial_vol); 18 AudioOutputSource source, bool set_initial_vol, 19 bool laudio_passthru); 19 20 virtual ~AudioOutputOSS(); 20 21 21 22 // Volume control -
libs/libmyth/audiooutputbase.cpp
15 15 16 16 AudioOutputBase::AudioOutputBase(QString audiodevice, int, 17 17 int, int, 18 AudioOutputSource source, bool set_initial_vol) 18 AudioOutputSource source, bool set_initial_vol, 19 bool) 19 20 { 20 21 pthread_mutex_init(&audio_buflock, NULL); 21 22 pthread_mutex_init(&avsync_lock, NULL); … … 41 42 42 43 // You need to call the next line from your concrete class. 43 44 // Virtuals cause problems in the base class constructors 44 // Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );45 // Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 45 46 } 46 47 47 48 AudioOutputBase::~AudioOutputBase() … … 102 103 } 103 104 104 105 void AudioOutputBase::Reconfigure(int laudio_bits, int laudio_channels, 105 int laudio_samplerate )106 int laudio_samplerate, bool laudio_passthru) 106 107 { 107 108 if (laudio_bits == audio_bits && laudio_channels == audio_channels && 108 laudio_samplerate == audio_samplerate && !need_resampler) 109 laudio_samplerate == audio_samplerate && 110 laudio_passthru == audio_passthru && !need_resampler) 109 111 return; 110 112 111 113 KillAudio(); … … 120 122 audio_channels = laudio_channels; 121 123 audio_bits = laudio_bits; 122 124 audio_samplerate = laudio_samplerate; 125 audio_passthru = laudio_passthru; 123 126 if (audio_bits != 8 && audio_bits != 16) 124 127 { 125 128 Error("AudioOutput only supports 8 or 16bit audio."); -
libs/libmyth/audiooutput.cpp
28 28 29 29 AudioOutput *AudioOutput::OpenAudio(QString audiodevice, int audio_bits, 30 30 int audio_channels, int audio_samplerate, 31 AudioOutputSource source, bool set_initial_vol) 31 AudioOutputSource source, bool set_initial_vol, 32 bool audio_passthru) 32 33 { 33 34 if (audiodevice.startsWith("ALSA:")) 34 35 { 35 36 #ifdef USE_ALSA 36 37 return new AudioOutputALSA(audiodevice.remove(0, 5), audio_bits, 37 audio_channels, audio_samplerate, source, set_initial_vol); 38 audio_channels, audio_samplerate, source, 39 set_initial_vol, audio_passthru); 38 40 #else 39 41 VERBOSE(VB_IMPORTANT, "Audio output device is set to an ALSA device " 40 42 "but ALSA support is not compiled in!"); … … 44 46 else if (audiodevice.startsWith("NULL")) 45 47 { 46 48 return new AudioOutputNULL(audiodevice, audio_bits, 47 audio_channels, audio_samplerate, source, set_initial_vol); 49 audio_channels, audio_samplerate, source, 50 set_initial_vol, audio_passthru); 48 51 } 49 52 else if (audiodevice.startsWith("ARTS:")) 50 53 { 51 54 #ifdef USE_ARTS 52 55 return new AudioOutputARTS(audiodevice.remove(0, 5), audio_bits, 53 audio_channels, audio_samplerate, source, set_initial_vol); 56 audio_channels, audio_samplerate, source, 57 set_initial_vol, audio_passthru); 54 58 #else 55 59 VERBOSE(VB_IMPORTANT, "Audio output device is set to an ARTS device " 56 60 "but ARTS support is not compiled in!"); … … 71 75 #if defined(USING_DIRECTX) 72 76 else 73 77 return new AudioOutputDX(audiodevice, audio_bits, 74 audio_channels, audio_samplerate, source, set_initial_vol); 78 audio_channels, audio_samplerate, source, 79 set_initial_vol, audio_passthru); 75 80 #elif defined(USING_OSS) 76 81 else 77 82 return new AudioOutputOSS(audiodevice, audio_bits, 78 audio_channels, audio_samplerate, source, set_initial_vol); 83 audio_channels, audio_samplerate, source, 84 set_initial_vol, audio_passthru); 79 85 #elif defined(CONFIG_DARWIN) 80 86 else 81 87 return new AudioOutputCA(audiodevice, audio_bits, 82 audio_channels, audio_samplerate, source, set_initial_vol); 88 audio_channels, audio_samplerate, source, 89 set_initial_vol, audio_passthru); 83 90 #endif 84 91 85 92 VERBOSE(VB_IMPORTANT, "No useable audio output driver found."); -
libs/libmyth/audiooutputca.h
19 19 public: 20 20 AudioOutputCA(QString audiodevice, int laudio_bits, 21 21 int laudio_channels, int laudio_samplerate, 22 AudioOutputSource source, bool set_initial_vol); 22 AudioOutputSource source, bool set_initial_vol, 23 bool laudio_passthru); 23 24 virtual ~AudioOutputCA(); 24 25 25 26 // callback for delivering audio to output device -
libs/libmyth/audiooutputoss.cpp
27 27 28 28 AudioOutputOSS::AudioOutputOSS(QString audiodevice, int laudio_bits, 29 29 int laudio_channels, int laudio_samplerate, 30 AudioOutputSource source, bool set_initial_vol) 30 AudioOutputSource source, bool set_initial_vol, 31 bool laudio_passthru) 31 32 : AudioOutputBase(audiodevice, laudio_bits, 32 laudio_channels, laudio_samplerate, source, set_initial_vol) 33 laudio_channels, laudio_samplerate, source, set_initial_vol, 34 laudio_passthru) 33 35 { 34 36 // our initalisation 35 37 audiofd = -1; … … 37 39 numbadioctls = 0; 38 40 39 41 // Set everything up 40 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );42 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 41 43 } 42 44 43 45 AudioOutputOSS::~AudioOutputOSS() -
libs/libmyth/audiooutputarts.cpp
9 9 10 10 AudioOutputARTS::AudioOutputARTS(QString audiodevice, int audio_bits, 11 11 int audio_channels, int audio_samplerate, 12 AudioOutputSource source, bool set_initial_vol) 12 AudioOutputSource source, bool set_initial_vol, 13 bool audio_passthru) 13 14 : AudioOutputBase(audiodevice, audio_bits, audio_channels, 14 audio_samplerate, source, set_initial_vol) 15 audio_samplerate, source, set_initial_vol, 16 audio_passthru) 15 17 { 16 18 // our initalisation 17 19 pcm_handle = NULL; 18 20 19 21 // Set everything up 20 Reconfigure(audio_bits, audio_channels, audio_samplerate );22 Reconfigure(audio_bits, audio_channels, audio_samplerate, audio_passthru); 21 23 } 22 24 23 25 AudioOutputARTS::~AudioOutputARTS() -
libs/libmyth/audiooutputdx.cpp
97 97 98 98 AudioOutputDX::AudioOutputDX(QString audiodevice, int audio_bits, 99 99 int audio_channels, int audio_samplerate, 100 AudioOutputSource source, bool set_initial_vol) 100 AudioOutputSource source, bool set_initial_vol, 101 bool audio_passthru) 101 102 { 102 103 this->audiodevice = audiodevice; 103 104 … … 110 111 111 112 InitDirectSound(); 112 113 113 Reconfigure(audio_bits, audio_channels, audio_samplerate );114 Reconfigure(audio_bits, audio_channels, audio_samplerate, audio_passthru); 114 115 } 115 116 116 117 void AudioOutputDX::SetBlocking(bool blocking) … … 118 119 // FIXME: kedl: not sure what else could be required here? 119 120 } 120 121 121 void AudioOutputDX::Reconfigure(int audio_bits, 122 int audio_channels, int audio_samplerate)122 void AudioOutputDX::Reconfigure(int audio_bits, int audio_channels, 123 int audio_samplerate, int audio_passthru) 123 124 { 124 125 if (dsbuffer) 125 126 DestroyDSBuffer(); … … 132 133 effdsp = audio_samplerate; 133 134 this->audio_bits = audio_bits; 134 135 this->audio_channels = audio_channels; 136 this->audio_passthru = audio_passthru; 135 137 } 136 138 137 139 AudioOutputDX::~AudioOutputDX() -
libs/libmyth/audiooutputnull.h
26 26 public: 27 27 AudioOutputNULL(QString audiodevice, int laudio_bits, 28 28 int laudio_channels, int laudio_samplerate, 29 AudioOutputSource source, bool set_initial_vol); 29 AudioOutputSource source, bool set_initial_vol, 30 bool laudio_passthru); 30 31 virtual ~AudioOutputNULL(); 31 32 32 33 virtual void Reset(void); -
libs/libmyth/audiooutput.h
20 20 // opens one of the concrete subclasses 21 21 static AudioOutput *OpenAudio(QString audiodevice, int audio_bits, 22 22 int audio_channels, int audio_samplerate, 23 AudioOutputSource source, bool set_initial_vol); 23 AudioOutputSource source, bool set_initial_vol, 24 bool audio_passthru); 24 25 25 26 AudioOutput() : VolumeBase(), OutputListeners() { lastError = QString::null; }; 26 27 virtual ~AudioOutput() { }; 27 28 28 29 // reconfigure sound out for new params 29 virtual void Reconfigure(int audio_bits, 30 int audio_ channels, int audio_samplerate) = 0;30 virtual void Reconfigure(int audio_bits, int audio_channels, 31 int audio_samplerate, bool audio_passthru) = 0; 31 32 32 33 virtual void SetStretchFactor(float factor); 33 34 -
libs/libmyth/audiooutputnull.cpp
18 18 19 19 AudioOutputNULL::AudioOutputNULL(QString audiodevice, int laudio_bits, 20 20 int laudio_channels, int laudio_samplerate, 21 AudioOutputSource source, bool set_initial_vol) 21 AudioOutputSource source, bool set_initial_vol, 22 bool laudio_passthru) 22 23 : AudioOutputBase(audiodevice, laudio_bits, laudio_channels, 23 laudio_samplerate, source, set_initial_vol) 24 laudio_samplerate, source, set_initial_vol, 25 laudio_passthru) 24 26 { 25 27 locked_audio_channels = laudio_channels; 26 28 locked_audio_bits = laudio_bits; 27 29 locked_audio_samplerate = laudio_samplerate; 28 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate );30 Reconfigure(laudio_bits, laudio_channels, laudio_samplerate, laudio_passthru); 29 31 current_buffer_size = 0; 30 32 } 31 33 -
libs/libmyth/audiooutputarts.h
16 16 public: 17 17 AudioOutputARTS(QString audiodevice, int audio_bits, 18 18 int audio_channels, int audio_samplerate, 19 AudioOutputSource source, bool set_initial_vol); 19 AudioOutputSource source, bool set_initial_vol, 20 bool laudio_passthru); 20 21 virtual ~AudioOutputARTS(); 21 22 22 23 // Volume control -
libs/libmyth/audiooutputdx.h
16 16 public: 17 17 AudioOutputDX(QString audiodevice, int audio_bits, 18 18 int audio_channels, int audio_samplerate, 19 AudioOutputSource source, bool set_initial_vol); 19 AudioOutputSource source, bool set_initial_vol, 20 bool laudio_passthru); 20 21 virtual ~AudioOutputDX(); 21 22 22 23 virtual void Reset(void); -
libs/libmyth/audiooutputalsa.h
18 18 public: 19 19 AudioOutputALSA(QString audiodevice, int laudio_bits, 20 20 int laudio_channels, int laudio_samplerate, 21 AudioOutputSource source, bool set_initial_vol); 21 AudioOutputSource source, bool set_initial_vol, 22 bool laudio_passthru); 22 23 virtual ~AudioOutputALSA(); 23 24 24 25 // Volume control -
programs/mythtranscode/transcode.cpp
34 34 AudioReencodeBuffer(int audio_bits, int audio_channels) 35 35 { 36 36 Reset(); 37 Reconfigure(audio_bits, audio_channels, 0 );37 Reconfigure(audio_bits, audio_channels, 0, 0); 38 38 bufsize = 512000; 39 39 audiobuffer = new unsigned char[bufsize]; 40 40 } … … 45 45 } 46 46 47 47 // reconfigure sound out for new params 48 virtual void Reconfigure(int audio_bits, 49 int audio_channels, int audio_samplerate)48 virtual void Reconfigure(int audio_bits, int audio_channels, 49 int audio_samplerate, bool audio_passthru) 50 50 { 51 51 (void)audio_samplerate; 52 52 bits = audio_bits;