Ticket #7555: 7555-win32_spdif.2.patch
File 7555-win32_spdif.2.patch, 3.4 KB (added by , 14 years ago) |
---|
-
libs/libmyth/audiooutputwin.cpp
138 138 } 139 139 } 140 140 141 vector<int> AudioOutputWin::GetSupportedRates(void) 142 { 143 // We use WAVE_MAPPER to find a compatible device, 144 // so just return a set of standard rates 145 const int srates[] = { 11025, 22050, 44100, 48000 }; 146 vector<int> rates(srates, srates + sizeof(srates) / sizeof(int) ); 147 return rates; 148 } 149 141 150 bool AudioOutputWin::OpenDevice(void) 142 151 { 143 152 CloseDevice(); … … 145 154 SetBlocking(true); 146 155 fragment_size = (AUDIOOUTPUT_TELEPHONY == source) ? 320 : 6144; 147 156 soundcard_buffer_size = kPacketCnt * fragment_size; 157 m_UseSPDIF = audio_passthru || audio_enc; 148 158 149 159 WAVEFORMATEXTENSIBLE wf; 150 160 wf.Format.wFormatTag = -
libs/libmyth/audiooutputwin.h
23 23 virtual void WriteAudio(unsigned char *aubuf, int size); 24 24 virtual int GetSpaceOnSoundcard(void) const; 25 25 virtual int GetBufferedOnSoundcard(void) const; 26 vector<int> GetSupportedRates(void); 26 27 27 28 protected: 28 29 AudioOutputWinPrivate *m_priv; -
libs/libmyth/audiooutputdx.cpp
280 280 } 281 281 } 282 282 283 vector<int> AudioOutputDX::GetSupportedRates(void) 284 { 285 const int srates[] = { 8000, 11025, 16000, 22050, 32000, 44100, 48000 }; 286 vector<int> rates(srates, srates + sizeof(srates) / sizeof(int) ); 287 DSCAPS devcaps; 288 devcaps.dwSize = sizeof(DSCAPS); 289 290 if ((!m_priv->dsobject || !m_priv->dsound_dll) || 291 FAILED(IDirectSound_GetCaps(m_priv->dsobject, &devcaps)) ) 292 { 293 rates.clear(); 294 return rates; 295 } 296 297 VERBOSE(VB_AUDIO, QString(LOC + "GetCaps sample rate min: %1 max: %2") 298 .arg(devcaps.dwMinSecondarySampleRate) 299 .arg(devcaps.dwMaxSecondarySampleRate)); 300 301 vector<int>::iterator it = rates.begin(); 302 while (it != rates.end()) 303 { 304 if(((DWORD)*it < devcaps.dwMinSecondarySampleRate) || 305 ((DWORD)*it > devcaps.dwMaxSecondarySampleRate) ) 306 it = rates.erase(it); 307 else 308 it++; 309 } 310 311 return rates; 312 } 313 283 314 bool AudioOutputDX::OpenDevice(void) 284 315 { 285 316 WAVEFORMATEXTENSIBLE wf; … … 299 330 fragment_size *= 2; 300 331 soundcard_buffer_size = kFramesNum * fragment_size; 301 332 audio_bytes_per_sample = audio_bits / 8 * audio_channels; 333 m_UseSPDIF = audio_passthru || audio_enc; 302 334 if (m_UseSPDIF && (audio_channels != 2)) 303 335 { 304 336 Error("SPDIF passthru requires 2 channel data"); -
libs/libmyth/audiooutputdx.h
23 23 virtual void Pause(bool pause); 24 24 virtual int GetSpaceOnSoundcard(void) const; 25 25 virtual int GetBufferedOnSoundcard(void) const; 26 vector<int> GetSupportedRates(void); 26 27 27 28 protected: 28 29 AudioOutputDXPrivate *m_priv;