Exemple #1
0
        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);
        }