示例#1
0
        /// <summary>
        /// Check our EQ settings and MP states to determine if it is appropriate to show our EQ.
        /// </summary>
        /// <param name="EQSETTINGS"></param>
        /// <returns>True if it is appropriate to show our EQ, false otherwise.</returns>    public static bool GetEQ(ref EQControl EQSETTINGS)
        public static bool GetEQ(ref EQControl EQSETTINGS)
        {
            SystemStatus MPStatus = new SystemStatus();

            GetSystemStatus(ref MPStatus);
            bool extensiveLogging = Settings.Instance.ExtensiveLogging;
            bool flag2            = (EQSETTINGS.UseStereoEq | EQSETTINGS.UseVUmeter) | EQSETTINGS.UseVUmeter2;

            if (!MPStatus.UserIsIdle || g_Player.Player == null || !g_Player.IsMusic || !BassMusicPlayer.IsDefaultMusicPlayer)
            {
                return(false);
            }

            if (!EQSETTINGS.UseEqDisplay)
            {
                return(false);
            }
            if (EQSETTINGS._AudioUseASIO)
            {
                return(false);
            }
            try
            {
                if (g_Player.Paused)
                {
                    return(false);
                }

                if (Bass == null)
                {
                    Bass = BassMusicPlayer.Player;
                }

                if (EQSETTINGS.DelayEQ & (g_Player.CurrentPosition < EQSETTINGS._DelayEQTime))
                {
                    EQSETTINGS._EQDisplayTitle = false;
                    EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                    return(false);
                }
                if (EQSETTINGS.EQTitleDisplay)
                {
                    if (g_Player.CurrentPosition < EQSETTINGS._EQTitleDisplayTime)
                    {
                        EQSETTINGS._EQDisplayTitle = false;
                    }
                    if (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) > (EQSETTINGS._EQTitleDisplayTime * 10000))
                    {
                        EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                        EQSETTINGS._EQDisplayTitle = !EQSETTINGS._EQDisplayTitle;
                    }
                    if (EQSETTINGS._EQDisplayTitle &
                        (((DateTime.Now.Ticks / 1000) - EQSETTINGS._LastEQTitle) < (EQSETTINGS._EQTitleShowTime * 10000)))
                    {
                        return(false);
                    }
                }
            }
            catch
            {
                EQSETTINGS._EQDisplayTitle = false;
                EQSETTINGS._LastEQTitle    = (DateTime.Now.Ticks / 1000);
                return(false);
            }
            int handle = -1;

            try
            {
                handle = g_Player.Player.CurrentAudioStream;
            }
            catch (Exception exception)
            {
                Log.Debug("MiniDisplay.GetEQ(): Caugth exception obtaining audio stream: {0}", new object[] { exception });
                return(false);
            }
            if ((handle != 0) & (handle != -1))
            {
                int num2;
                if (extensiveLogging)
                {
                    Log.Info("MiniDisplay.GetEQ(): attempting to retrieve equalizer data from audio stream {0}",
                             new object[] { handle });
                }
                try
                {
                    int num3;
                    if (flag2)
                    {
                        num3 = -2147483630;
                    }
                    else
                    {
                        num3 = -2147483646;
                    }

                    if (Bass.BASS_WASAPI_IsStarted())
                    {
                        num2 = Bass.GetDataFFT(EQSETTINGS.EqFftData, num3);
                    }
                    else
                    {
                        num2 = Bass.GetChannelData(handle, EQSETTINGS.EqFftData, num3);
                    }
                }
                catch (Exception exception)
                {
                    if (extensiveLogging)
                    {
                        Log.Info("MiniDisplay.GetEQ(): CAUGHT Exception - audio stream {0} disappeared - {1}", new object[] { handle }, exception.Message);
                    }
                    return(false);
                }
                if (num2 > 0)
                {
                    return(true);
                }
                if (extensiveLogging)
                {
                    Log.Info("MiniDisplay.GetEQ(): unable to retreive equalizer data");
                }
                return(false);
            }
            if (extensiveLogging)
            {
                Log.Info("MiniDisplay.GetEQ(): Audio Stream not available");
            }
            return(false);
        }