OSDN Git Service

#37271 TimeStretch=OFFの時に限り、ミキシング負荷を従来の半分にした。
authoryyagi <yyagi.dtxmania@gmail.com>
Tue, 21 Aug 2018 16:42:28 +0000 (01:42 +0900)
committeryyagi <yyagi.dtxmania@gmail.com>
Tue, 21 Aug 2018 16:42:28 +0000 (01:42 +0900)
従来は読み込むサウンド(xPolyphonicSounds)分だけテンポ変更のストリームを生成し接続していたが、これの負荷が相当大きかった模様。
(再生速度がx1.000の時はテンポ変更ストリームを通さないようにしていたつもりだったが、結局通るだけ通っていて、通した結果が破棄されていた。そのためまるで負荷軽減になっていなかった。)

FDK/コード/03.サウンド/CSound.cs

index 5e14b27..413b9e1 100644 (file)
@@ -1766,7 +1766,10 @@ Debug.WriteLine("更に再生に失敗: " + Path.GetFileName(this.strファイ
 
                        // 個々のストリームの出力をテンポ変更のストリームに入力する。テンポ変更ストリームの出力を、Mixerに出力する。
 
-//                     if ( CSound管理.bIsTimeStretch )      // TimeStretchのON/OFFに関わりなく、テンポ変更のストリームを生成する。後からON/OFF切り替え可能とするため。
+                       _hTempoStream = 0;
+                       if ( CSound管理.bIsTimeStretch )      // TimeStretchのON/OFFに関わりなく、テンポ変更のストリームを生成する。後からON/OFF切り替え可能とするため。
+                                                                                               // ... と思ったが、1サウンド辺り1つのテンポ変更ストリームが存在することになり、
+                                                                                               // ミキシング負荷が非常に高くなるため、結局TimeStretch=ONの時のみ店舗変更ストリームを提供することにした。
                        {
                                this._hTempoStream = BassFx.BASS_FX_TempoCreate( this._hBassStream, BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_FX_FREESOURCE );
                                if ( this._hTempoStream == 0 )