X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=FDK%2F%E3%82%B3%E3%83%BC%E3%83%89%2F03.%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%2FCSoundDeviceWASAPI.cs;h=4ad9cfff19a19a33374a6ecb56b76ef7a11a56f0;hb=a4be0266e883494413ec678d72b4d1601bfa97c7;hp=f273f8399f2e1a4dbbbeb6c92ced78a2e7df07f5;hpb=5fce7105fd085747e4908da443b9ddfd526b8306;p=dtxmania%2Fdtxmania.git diff --git a/FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs b/FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs index f273f839..4ad9cfff 100644 --- a/FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs +++ b/FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs @@ -234,11 +234,15 @@ namespace FDK BASS_WASAPI_DEVICEINFO deviceInfo; for ( int n = 0; ( deviceInfo = BassWasapi.BASS_WASAPI_GetDeviceInfo( n ) ) != null; n++ ) { - // BASS_DEVICEINFOとBASS_WASAPI_DEVICEINFOで、IsDefaultとなっているデバイスが異なる場合がある。 + // #37940 2018.2.15: BASS_DEVICEINFOとBASS_WASAPI_DEVICEINFOで、IsDefaultとなっているデバイスが異なる場合がある。 // (WASAPIでIsDefaultとなっているデバイスが正しくない場合がある) // そのため、BASS_DEVICEでIsDefaultとなっているものを探し、それと同じ名前のWASAPIデバイスを使用する。 + // #39490 2019.8.19: 更に、環境によっては同じ名前のWASAPIデバイスが複数定義されている場合があるため、 + // 実際に利用可能なWASAPIデバイスのみに対象を絞り込む。 + // (具体的には、defperiod, minperiod, mixchans, mixfreqがすべて0のデバイスは使用不可のため + // これらが0でないものを選択する) //if ( deviceInfo.IsDefault ) - if ( deviceInfo.name == strDefaultSoundDeviceName) + if ( deviceInfo.name == strDefaultSoundDeviceName && deviceInfo.mixfreq > 0 ) { nDevNo = n; #region [ 既定の出力デバイスの情報を表示 ] @@ -348,6 +352,10 @@ Trace.TraceInformation("WASAPI Device #{0}: {1}: IsDefault={2}, defPeriod={3}s, else { f更新間隔sec = n希望バッファサイズms / 1000.0f; + if (f更新間隔sec < deviceInfo.minperiod) + { + f更新間隔sec = deviceInfo.minperiod; + } } f希望バッファサイズsec = 0.0f; }