public static Preference Load() { var xmlRW = new WWXmlRW.XmlRW <Preference>(m_fileName); Preference p = xmlRW.Load(); // postprocess playlist columns order info... if (p.PlayListColumnsOrder.Count == 10) { // OK: older format. no playlist column info. } else if (p.PlayListColumnsOrder.Count == 20) { // OK: load success. delete former 10 items inserted by Reset() p.PlayListColumnsOrderRemoveRange(0, 10); } else { System.Console.WriteLine("E: Preference PlayListColumnOrder item count {0}", p.PlayListColumnsOrder.Count); p.Reset(); } // (読み込んだ値が都合によりサポートされていない場合、このタイミングでロード後に強制的に上書き出来る) // サンプルレートの選択アルゴリズム。廃止された選択肢が選ばれていたらAutoSelectに設定する。 switch (p.BitsPerSampleFixType) { case BitsPerSampleFixType.Variable: case BitsPerSampleFixType.VariableSint16Sint24: case BitsPerSampleFixType.VariableSint16Sint32V24: p.BitsPerSampleFixType = BitsPerSampleFixType.AutoSelect; break; default: break; } // 並列読み込みが有効のときはFLACのMD5計算を行わない。 if (p.ParallelRead) { p.VerifyFlacMD5Sum = false; } // EnableNoiseShaping(古いフラグ)が無効のときはBpsConvNoiseShaping(新しい設定パラメータ)をNoneに設定。 if (!p.EnableNoiseShaping) { p.BpsConvNoiseShaping = NoiseShapingType.None; } // DwmEnableMMCSSは、いつの頃からかエラーが出るようになったので呼び出さないようにする。 p.DwmEnableMmcssCall = false; return(p); }
public static Preference Load() { var xmlRW = new WWXmlRW.XmlRW <Preference>(m_fileName); int nColumnCount = 13; Preference p = xmlRW.Load(); // postprocess playlist columns order info... // at this point, column count must be nColumnCount * 2 if (p.PlayListColumnsOrder.Count == nColumnCount) { // very old format. no playlist column info in preference file. } else if (p.PlayListColumnsOrder.Count == nColumnCount + 10) { // old format. delete latter 10 items inserted by file load. p.PlayListColumnsOrderRemoveRange(nColumnCount, 10); } else if (p.PlayListColumnsOrder.Count == nColumnCount + 11) { // PlayPcmWin 4.0.98 format. delete latter 11 items inserted by file load. p.PlayListColumnsOrderRemoveRange(nColumnCount, 11); } else if (p.PlayListColumnsOrder.Count == nColumnCount + 12) { // PlayPcmWin 5.0.16 format. delete latter 12 items inserted by file load. p.PlayListColumnsOrderRemoveRange(nColumnCount, 12); } else if (p.PlayListColumnsOrder.Count == nColumnCount * 2) { // Latest PlayPcmWin 5.0.32 format. saved data is okay. delete former nColumnCount items inserted by Reset() p.PlayListColumnsOrderRemoveRange(0, nColumnCount); } else { System.Console.WriteLine("E: Preference PlayListColumnOrder item count {0}", p.PlayListColumnsOrder.Count); System.Diagnostics.Debug.Assert(false); p.Reset(); } // (読み込んだ値が都合によりサポートされていない場合、このタイミングでロード後に強制的に上書き出来る) // サンプルレートの選択アルゴリズム。廃止された選択肢が選ばれていたらAutoSelectに設定する。 switch (p.BitsPerSampleFixType) { case BitsPerSampleFixType.Variable: case BitsPerSampleFixType.VariableSint16Sint24: case BitsPerSampleFixType.VariableSint16Sint32V24: p.BitsPerSampleFixType = BitsPerSampleFixType.AutoSelect; break; default: break; } // 再描画抑止は再生時間表示がなくなるのが紛らわしいので廃止。 p.RefrainRedraw = false; // 並列読み込みが有効のときはFLACのMD5計算を行わない。 if (p.ParallelRead) { p.VerifyFlacMD5Sum = false; } // EnableNoiseShaping(古いフラグ)が無効のときはBpsConvNoiseShaping(新しい設定パラメータ)をNoneに設定。 if (!p.EnableNoiseShaping) { p.BpsConvNoiseShaping = NoiseShapingType.None; } // DwmEnableMMCSSは、いつの頃からかエラーが出るようになったので呼び出さないようにする。 p.DwmEnableMmcssCall = false; if (p.TimePeriodHundredNanosec < Preference.TIME_PERIOD_ONE_MILLISEC) { // 0.5msモードは動作不安定なので廃止。 p.TimePeriodHundredNanosec = Preference.TIME_PERIOD_ONE_MILLISEC; } return(p); }