private void ShowVolumeLevel() { this.volLevel = 0; if (this.MPStatus.MediaPlayer_Playing || MiniDisplayHelper.IsCaptureCardViewing()) { try { if (!this.MPStatus.IsMuted) { this.volLevel = this.MPStatus.SystemVolumeLevel / 0x2000; } } catch (Exception exception) { if (this.DoDebug) { Log.Info("MD8800.ShowVolumeLevel(): Audio Mixer NOT available! exception: {0}", new object[] { exception }); } } } if (this.LastVolLevel != this.volLevel) { if (this.DoDebug) { Log.Info("MD8800.ShowVolumeLevel(): Sending volume = {0} to VFD.", new object[] { this.volLevel.ToString() }); } this.MD.SetVolume(this.volLevel); } this.LastVolLevel = this.volLevel; }
//From IDisplay public override void Update() { CheckDisplay(); MiniDisplayHelper.GetSystemStatus(ref iDisplay.MPStatus); //Only try to disable/re-enable our display when our user is idle if (iDisplay.MPStatus.UserIsIdle) { //Check if our display needs to be disabled when MP is idle if (Initialized && iDisplay.MPStatus.MP_Is_Idle && iDisplay.iSettings.DisableWhenIdle //Check if our disable when idle delay has passed && IsElapsed((iInitToggleTime > iDisplay.MPStatus.TimeIdleStateChanged ? iInitToggleTime : iDisplay.MPStatus.TimeIdleStateChanged), iDisplay.iSettings.DisableWhenIdleDelayInSeconds)) { //Blank our display before uninit to workaround switch back to iMON Manager not blanking screen if screen off while running MP (VFD) iDisplay.SetLine(0, ""); iDisplay.SetLine(1, ""); iDisplay.Update(); // DoUninit(); } //Check if it's time to re-enable our display while we are still idle else if (!Initialized && iDisplay.MPStatus.MP_Is_Idle && iDisplay.iSettings.ReenableWhenIdleAfter && IsElapsed(iInitToggleTime, iDisplay.iSettings.ReenableWhenIdleAfterDelayInSeconds)) { DoInit(); } //Check if our display needs to be disabled when MP is playing else if (Initialized && iDisplay.MPStatus.MediaPlayer_Playing && iDisplay.iSettings.DisableWhenPlaying //Check if our disable when playing delay has passed && IsElapsed((iInitToggleTime > iDisplay.MPStatus.TimePlayingStateChanged ? iInitToggleTime : iDisplay.MPStatus.TimePlayingStateChanged), iDisplay.iSettings.DisableWhenPlayingDelayInSeconds)) { //Blank our display before uninit to workaround switch back to iMON Manager not blanking screen if screen off while running MP (VFD) iDisplay.SetLine(0, ""); iDisplay.SetLine(1, ""); iDisplay.Update(); // DoUninit(); } //Check if it's time to re-enable our display while we are still playing else if (!Initialized && iDisplay.MPStatus.MediaPlayer_Playing && iDisplay.iSettings.ReenableWhenPlayingAfter && IsElapsed(iInitToggleTime, iDisplay.iSettings.ReenableWhenPlayingAfterDelayInSeconds)) { DoInit(); } } //Reinitialize our display if our user is not idle anymore else if (!Initialized) { DoInit(); } if (Initialized) { //We must already have a display when updating iDisplay.Update(); } }
private void UpdateMPStatus() { this.MPStatus_old = this.MPStatus; MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); if (this.MPStatus.Equals(this.MPStatus_old)) { this._StatusChanged = false; } else { this._StatusChanged = true; } }
private void GetEQ() { lock (DWriteMutex) { this.EQSettings._EqDataAvailable = MiniDisplayHelper.GetEQ(ref this.EQSettings); if (this.EQSettings._EqDataAvailable) { this._displayThread.Priority = ThreadPriority.AboveNormal; } else { this._displayThread.Priority = ThreadPriority.BelowNormal; } } }
public override void Setup(string _port, int _lines, int _cols, int _delay, int _linesG, int _colsG, int _delayG, bool _backLight, int _backLightLevel, bool _contrast, int _contrastLevel, bool _blankOnExit) { this.DoDebug = Assembly.GetEntryAssembly().FullName.Contains("Configuration") | Settings.Instance.ExtensiveLogging; Log.Info("{0}", new object[] { this.Description }); Log.Info("MD8800.Setup(): called"); MiniDisplayHelper.InitDisplayControl(ref this.DisplaySettings); this._BlankDisplayOnExit = _blankOnExit; this._UseBackLight = _backLight; this._UseBackLightLevel = _backLightLevel; this._UseContrast = _contrast; this._UseContrastLevel = _contrastLevel; this.LoadAdvancedSettings(); this._Trows = _lines; if (this._Trows != 2) { Log.Info("MD8800.Setup() - Invalid Text Lines value"); this._Trows = 2; } this._Tcols = _cols; if (this._Tcols != 0x10) { Log.Info("MD8800.Setup() - Invalid Text Columns value"); this._Tcols = 0x10; } this._IsOpen = false; this._UsePort = _port; try { this._IsOpen = this.MD.OpenDisplay(this._UsePort, this._UseBackLight, this._UseBackLightLevel, this._UseContrast, this._UseContrastLevel); } catch (Exception exception) { Log.Info("MD8800.Setup() - CAUGHT EXCEPTION opening display port!: {0}", new object[] { exception }); } if (this._IsOpen) { this._IsDisabled = false; this._IsOpen = false; this.MD.CloseDisplay(this._BlankDisplayOnExit); } else { this._IsDisabled = true; } Log.Info("MD8800.Setup(): completed"); }
public override void Update() { //Check if we need to show EQ this is also taking into account our various settings. iSettings.iEq._EqDataAvailable = MiniDisplayHelper.GetEQ(ref iSettings.iEq); if (iSettings.iEq._EqDataAvailable) { //SetAndRollEqData(); UpdateEq(); } else if (NeedTextUpdate) { //Not show EQ then display our lines SoundGraphDisplay.IDW_SetVfdText(TextTopLine, TextBottomLine); NeedTextUpdate = false; } }
public override bool OnMessage(GUIMessage message) { switch (message.Message) { case GUIMessage.MessageType.GUI_MSG_WINDOW_INIT: { base.OnMessage(message); _btnMiniDisplay.Visible = MiniDisplayHelper.IsSetupAvailable(); _btnTV.Visible = Util.Utils.UsingTvServer; return(true); } case GUIMessage.MessageType.GUI_MSG_WINDOW_DEINIT: {} break; } return(base.OnMessage(message)); }
public override void Update() { //Check if we need to show EQ this is also taking into account our various settings. iSettings.iEq._EqDataAvailable = MiniDisplayHelper.GetEQ(ref iSettings.iEq); if (iSettings.iEq._EqDataAvailable) { //SetAndRollEqData(); UpdateEq(); } else if (NeedTextUpdate) { //Not showing EQ then display our lines //Only show the second line for now bool isPlaying = g_Player.Player != null && g_Player.Player.Playing; if (isPlaying && iSettings.PreferFirstLinePlayback) { SoundGraphDisplay.IDW_SetLcdText(TextTopLine); } else if (!isPlaying && iSettings.PreferFirstLineGeneral) { SoundGraphDisplay.IDW_SetLcdText(TextTopLine); } else { SoundGraphDisplay.IDW_SetLcdText(TextBottomLine); } NeedTextUpdate = false; } //Update our icons here, only very N seconds if (SoundGraphDisplay.IsElapsed(LastIconUpdateTime, 2)) { SetMediaTypeIcons(); SetCodecs(); SetMediaProgress(); SetSpeakerConfig(); SetAspectRatio(); SetEtcIcons(); LastIconUpdateTime = DateTime.Now; } }
private void XPL_SendMediaInfo(string msgType) { object obj2 = string.Empty; string strMessage = string.Concat(new object[] { obj2, "duration=", this.MPStatus.Media_Duration.ToString(), '\n' }); string str2 = MiniDisplayHelper.PluginIconsToAudioFormat(this.MPStatus.CurrentIconMask).Replace("ICON_", "").Trim().Replace( " ", ", "); string str3 = MiniDisplayHelper.PluginIconsToVideoFormat(this.MPStatus.CurrentIconMask).Replace("ICON_", "").Trim().Replace( " ", ", "); if (!str2.Equals(string.Empty) && !str3.Equals(string.Empty)) { object obj3 = strMessage; strMessage = string.Concat(new object[] { obj3, "format=", str2, ", ", str3, '\n' }); } else { object obj4 = strMessage; strMessage = string.Concat(new object[] { obj4, "format=", !str2.Equals(string.Empty) ? str2 : str3, '\n' }); } this.Listener.SendMessage(msgType, "*", "media.mpmedia", strMessage); strMessage = string.Empty; }
private void Run() { Log.Info("MCEDisplay: plugin thread starting..."); Label_0010: try { Thread.Sleep(50); this.mediaSession.Process(); if (this.playSwitched) { Thread.Sleep(100); MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); if (this.mediaSession != null) { this.mediaSession.Dispose(); } if (this.MPStatus.Media_IsMusic) { this.mediaSession = new MusicSession(); } else if (this.MPStatus.Media_IsVideo) { this.mediaSession = new VideoSession(); } else if (this.MPStatus.Media_IsRadio) { this.mediaSession = new RadioSession(); } else if (this.MPStatus.Media_IsTVRecording) { this.mediaSession = new RecordedTVSession(); } else if (this.MPStatus.Media_IsTV) { this.mediaSession = new TVSession(); } else { this.mediaSession = new HomeSession(); } this.playSwitched = false; } if (this.mediaSession != null) { this.mediaSession.Process(); } } catch (Exception exception) { if (exception.Message.Contains("Thread was being aborted")) { if (this.mediaSession != null) { this.mediaSession.Dispose(); } Log.Info("MCEDisplay: caught thread stop request... plugin thread stopping..."); return; } Log.Info("MCEDisplay: Caught the following exception: {0}\n{1}", new object[] { exception.Message, exception.StackTrace }); } lock (ThreadMutex) { if (!stopRequested) { goto Label_0010; } Log.Debug("MCEDisplay.Run(): MCEDisplay Thread terminating"); if (this.mediaSession != null) { this.mediaSession.Dispose(); this.mediaSession = null; } stopRequested = false; } }
public override void SetLine(int line, string message, ContentAlignment aAlignment) { if (this._IsDisabled) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): Unable to display text - driver disabled"); } } else { this.UpdateAdvancedSettings(); if (this.DoDebug) { Log.Info("MD8800.SetLine() Called"); } if (this._IsDisplayOff) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): Suppressing display update!"); } } else { if (this.DoDebug) { Log.Info("MD8800.SetLine(): Line {0} - Message = \"{1}\"", new object[] { line, message }); } this.MD.SetLine(line, message); if (this.DoDebug) { Log.Info("MD8800.SetLine(): message sent to display"); } } if (line == (this._Trows - 1)) { MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); } if ((line == (this._Trows - 1)) && this.MPStatus.MP_Is_Idle) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): _BlankDisplayWhenIdle = {0}, _BlankIdleTimeout = {1}", new object[] { this.DisplaySettings.BlankDisplayWhenIdle, this.DisplaySettings._BlankIdleTimeout }); } if (this.DisplaySettings.BlankDisplayWhenIdle) { if (!this._mpIsIdle) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): MP going IDLE"); } this.DisplaySettings._BlankIdleTime = DateTime.Now.Ticks; } if (!this._IsDisplayOff && ((DateTime.Now.Ticks - this.DisplaySettings._BlankIdleTime) > this.DisplaySettings._BlankIdleTimeout)) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): Blanking display due to IDLE state"); } this.DisplayOff(); } } this._mpIsIdle = true; } else { if (this.DisplaySettings.BlankDisplayWhenIdle & this._mpIsIdle) { if (this.DoDebug) { Log.Info("MD8800.SetLine(): MP no longer IDLE - restoring display"); } this.DisplayOn(); } this._mpIsIdle = false; } } }
private void Display_Update() { uint iconBitmap = 0; if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction) { GUIWindowManager.OnNewAction += new OnActionHandler(this.OnExternalAction); } while (true) { lock (this.ThreadMutex) { if (this.DoDebug) { Log.Info("MD8800.Display_Update(): Checking for Thread termination request"); } if (_stopUpdateEqThread) { if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction) { GUIWindowManager.OnNewAction -= new OnActionHandler(this.OnExternalAction); } if (this.DoDebug) { Log.Info("MD8800.Display_Update(): EQ_Update Thread terminating"); } _stopUpdateEqThread = false; return; } MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); iconBitmap = MD8800_Display.ConvertPluginIconsToDisplayIcons(this.MPStatus.CurrentIconMask); if ((!this.MPStatus.MediaPlayer_Active & this.DisplaySettings.BlankDisplayWithVideo) & (this.DisplaySettings.BlankDisplayWhenIdle & !this._mpIsIdle)) { this.DisplayOn(); } uint num2 = iconBitmap; if (this.DoDebug) { Log.Info("iMONLCDg.UpdateIcons(): Checking TV Card status: IsAnyCardRecording = {0}, IsViewing = {1}", new object[] { MiniDisplayHelper.MPStatus.Media_IsRecording.ToString(), MiniDisplayHelper.MPStatus.Media_IsTV.ToString() }); } if (MiniDisplayHelper.MPStatus.Media_IsRecording) { iconBitmap |= 0x100; if (this.DoDebug) { Log.Info("iMONLCDg.UpdateIcons(): Setting RECORDING icon"); } } else if (MiniDisplayHelper.MPStatus.Media_IsTV) { iconBitmap |= 0x20; if (this.DoDebug) { Log.Info("iMONLCDg.UpdateIcons(): Setting TV icon"); } } if (this.DoDebug) { Log.Info( "iMONLCDg.UpdateIcons(): Checking g_player status: IsTV = {0}, IsTVRecording = {1}, Playing = {2}, Paused = {3}, IsTimeshifting = {4}", new object[] { this.MPStatus.Media_IsTV.ToString(), this.MPStatus.Media_IsTVRecording.ToString(), this.MPStatus.MediaPlayer_Playing.ToString(), this.MPStatus.MediaPlayer_Paused.ToString(), this.MPStatus.Media_IsTimeshifting.ToString() }); } if (!this.MPStatus.MediaPlayer_Active) { this.RestoreDisplayFromVideoOrIdle(); lock (this.DWriteMutex) { this._DisplayThread.Priority = ThreadPriority.BelowNormal; } if (this._mpIsIdle) { iconBitmap |= 0x400; if (this.DoDebug) { Log.Info("iMONLCDg.UpdateIcons(): Setting STOP icon"); } } } else if (this.MPStatus.MediaPlayer_Playing) { if ((this.MPStatus.Media_IsVideo | this.MPStatus.Media_IsTV) && this.DisplaySettings.BlankDisplayWithVideo) { this.DisplayOff(); } } else { if (this.MPStatus.Media_IsVideo | this.MPStatus.Media_IsTV) { this.RestoreDisplayFromVideoOrIdle(); } lock (this.DWriteMutex) { this._DisplayThread.Priority = ThreadPriority.BelowNormal; } if (this.DoDebug) { Log.Info("iMONLCDg.UpdateIcons(): Setting PAUSED icon"); } } if (!this.MPStatus.MediaPlayer_Playing & !MiniDisplayHelper.MPStatus.Media_IsTV) { iconBitmap |= 0x400; } if (iconBitmap != num2) { lock (this.DWriteMutex) { this.MD.SetIcons(iconBitmap); } } lock (this.DWriteMutex) { this.ShowVolumeLevel(); } } Thread.Sleep(250); } }
/// <summary> /// /// </summary> protected void UpdateEq() { if (!(iSettings.iEq.UseEqDisplay & iSettings.iEq._EqDataAvailable)) { return; } if (iSettings.iEq.RestrictEQ & ((DateTime.Now.Ticks - iSettings.iEq._LastEQupdate.Ticks) < iSettings.iEq._EqUpdateDelay)) { return; } //if (DoDebug) { //SoundGraphDisplay.LogInfo("\niMONLCDg.DisplayEQ(): Retrieved {0} samples of Equalizer data.", EQSettings.EqFftData.Length / 2); } if (IsLcd()) { //Force stereo mode for LCD iSettings.iEq.UseStereoEq = true; } if ((iSettings.iEq.UseStereoEq || iSettings.iEq.UseVUmeter) || iSettings.iEq.UseVUmeter2) { if (iSettings.iEq.UseStereoEq) { //Stereo mode iSettings.iEq.Render_MaxValue = 100; iSettings.iEq.Render_BANDS = 8; iSettings.iEq.EqArray[0] = 0x63; /* * if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2)) * { * EQSettings.Render_MaxValue = (EQSettings._useEqMode == 2) ? 8 : 0x10; * EQSettings.EqArray[0] = (byte)EQSettings._useEqMode; * } * else if (_DisplayType == DisplayType.ThreeRsystems) * { * EQSettings.Render_MaxValue = 6; * EQSettings.EqArray[0] = 0; * } */ MiniDisplayHelper.ProcessEqData(ref iSettings.iEq); for (int i = 0; i < iSettings.iEq.Render_BANDS; i++) { switch (iSettings.iEq.EqArray[0]) { case 2: { var num2 = (byte)(iSettings.iEq.EqArray[1 + i] & 15); iSettings.iEq.EqArray[1 + i] = (byte)((num2 << 4) | num2); var num3 = (byte)(iSettings.iEq.EqArray[9 + i] & 15); iSettings.iEq.EqArray[9 + i] = (byte)((num3 << 4) | num3); break; } } } for (int j = 15; j > 7; j--) { iSettings.iEq.EqArray[j + 1] = iSettings.iEq.EqArray[j]; } iSettings.iEq.EqArray[8] = 0; iSettings.iEq.EqArray[9] = 0; } else { //UV Meter or UV Meter: unused iSettings.iEq.Render_MaxValue = 80; iSettings.iEq.Render_BANDS = 1; if (iSettings.iEq._useVUindicators) { iSettings.iEq.Render_MaxValue = 0x4b; } MiniDisplayHelper.ProcessEqData(ref iSettings.iEq); } } else { iSettings.iEq.Render_MaxValue = 100; iSettings.iEq.Render_BANDS = 0x10; iSettings.iEq.EqArray[0] = 0x63; //if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2)) if (IsLcd()) { iSettings.iEq.Render_MaxValue = (iSettings.iEq._useEqMode == 2) ? 8 : 0x10; iSettings.iEq.EqArray[0] = (byte)iSettings.iEq._useEqMode; } /* * else if (_DisplayType == DisplayType.ThreeRsystems) * { * EQSettings.Render_MaxValue = 6; * EQSettings.EqArray[0] = 0; * }*/ MiniDisplayHelper.ProcessEqData(ref iSettings.iEq); for (int k = 0; k < iSettings.iEq.Render_BANDS; k++) { switch (iSettings.iEq.EqArray[0]) { case 2: { var num6 = (byte)(iSettings.iEq.EqArray[1 + k] & 15); iSettings.iEq.EqArray[1 + k] = (byte)((num6 << 4) | num6); break; } } } } //if ((_DisplayType == DisplayType.LCD) || (_DisplayType == DisplayType.LCD2)) if (IsLcd()) { if (!iSettings.iEq.UseVUmeter && !iSettings.iEq.UseVUmeter2) { //SetEQ(EQSettings.EqArray); //We take the last 16 entries cause the first one is static for (int i = 1; i < 17; i++) { iEqDataLeft.BandData[i - 1] = iSettings.iEq.EqArray[i]; iEqDataRight.BandData[i - 1] = iSettings.iEq.EqArray[i]; } //Array.Copy(iSettings.iEq.EqArray, 1, iEqDataLeft.BandData, 0, 0x10); //Array.Copy(iSettings.iEq.EqArray, 1, iEqDataRight.BandData, 0, 0x10); SoundGraphDisplay.IDW_SetLcdEqData(iEqDataLeft, iEqDataRight); } else { //DrawVU(EQSettings.EqArray); } } /* * else if (_DisplayType == DisplayType.ThreeRsystems) * { * for (int m = 0; m < 8; m++) * { * EQSettings.EqArray[1 + m] = * (byte)((EQSettings.EqArray[1 + m] << 4) + EQSettings.EqArray[9 + m]); * } * ulong data = 0x0901000000000000L; * ulong num9 = 0x0000000000000002L; * data = data + EQSettings.EqArray[1] << 40; * data = data + EQSettings.EqArray[2] << 0x20; * data = data + EQSettings.EqArray[3] << 0x18; * data = data + EQSettings.EqArray[4] << 0x10; * data = data + EQSettings.EqArray[5] << 8; * num9 = num9 + EQSettings.EqArray[6] << 40; * num9 = num9 + EQSettings.EqArray[7] << 0x20; * num9 = num9 + EQSettings.EqArray[8] << 0x18; * SendData(0x0200020000000000L); * SendData(0x0000000000000002L); * SendData(0x0d0f202020202000L); * SendData(0x2020202020202002L); * SendData(data); * SendData(num9); * } */ else if (IsVfd()) { if (!iSettings.iEq.UseVUmeter && !iSettings.iEq.UseVUmeter2) { //var destinationArray = new int[0x10]; //We take the last 16 entries cause the first one is static //Array.Copy(iSettings.iEq.EqArray, 1, iEqData.BandData, 0, 0x10); for (int i = 1; i < 17; i++) { iEqData.BandData[i - 1] = iSettings.iEq.EqArray[i]; } SoundGraphDisplay.IDW_SetVfdEqData(iEqData); goto Label_0613; } //DrawVU(EQSettings.EqArray); } Label_0613: iSettings.iEq._LastEQupdate = DateTime.Now; if ((DateTime.Now.Ticks - iSettings.iEq._EQ_FPS_time.Ticks) < 0x989680L) { iSettings.iEq._EQ_Framecount++; } else { iSettings.iEq._Max_EQ_FPS = Math.Max(iSettings.iEq._Max_EQ_FPS, iSettings.iEq._EQ_Framecount); iSettings.iEq._EQ_Framecount = 0; iSettings.iEq._EQ_FPS_time = DateTime.Now; } }
public override void Process() { MediaStatusPropertyTag[] tags = new MediaStatusPropertyTag[0]; object[] vals = new object[0]; string property = GUIPropertyManager.GetProperty("#currentplaytime"); int num = base.Duration2Int(property); MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); int num2 = -1; if (this.MPStatus.MediaPlayer_Paused) { num2 = 1; } else if (this.MPStatus.Media_Speed == 1) { num2 = 2; } else if (this.MPStatus.Media_Speed > 1) { num2 = 3; } else if (this.MPStatus.Media_Speed < 0) { num2 = 4; } else if (((this.MPStatus.Media_Speed == 0) || (!this.MPStatus.MediaPlayer_Paused & !this.MPStatus.MediaPlayer_Playing)) || !this.MPStatus.MediaPlayer_Active) { num2 = 5; } if (num2 != this.LastPlayState) { switch (num2) { case 1: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Pause }; vals = new object[] { true }; Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to PAUSED"); base.SetStatus(tags, vals); break; case 2: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Play }; vals = new object[] { true }; Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to PLAY"); base.SetStatus(tags, vals); break; case 3: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.FF1 }; vals = new object[] { true }; Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to FASTFORWARD"); base.SetStatus(tags, vals); break; case 4: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Rewind1 }; vals = new object[] { true }; Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to REWIND"); base.SetStatus(tags, vals); break; default: if (num2 == 4) { tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Stop, MediaStatusPropertyTag.MediaControl }; vals = new object[] { true, false }; Log.Info("MCEDisplay.MusicSession.Process(): Updating PlayState to STOP"); base.SetStatus(tags, vals); } break; } this.LastPlayState = num2; } if (property != this.LastPlayTime) { tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.TrackTime }; vals = new object[] { num }; base.SetStatus(tags, vals); this.LastPlayTime = property; Log.Info("MCEDisplay.MusicSession.Process(): Updating TrackTime to {0} ", new object[] { num }); } }
public override void Process() { MediaStatusPropertyTag tag; MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); switch (GUIWindowManager.ActiveWindow) { case 0: tag = MediaStatusPropertyTag.FS_Home; break; case 1: case 0x1e14: case 0x1e15: case 600: case 0x259: case 0x25a: case 0x25b: case 0x25c: case 0x25d: case 0x25e: tag = MediaStatusPropertyTag.FS_TV; break; case 2: case 0x7d7: tag = MediaStatusPropertyTag.FS_Photos; break; case 5: case 500: case 0x1f5: case 0x1f6: case 0x1f7: case 0x1f8: case 0x1f9: case 0x1fa: case 0x1fb: case 0x7d1: case 0x7d4: tag = MediaStatusPropertyTag.FS_Music; break; case 6: case 0x15: case 0x16: case 0x17: case 0x19: case 0x1c: case 0xbb8: case 0x7d3: tag = MediaStatusPropertyTag.FS_Videos; break; case 30: tag = MediaStatusPropertyTag.FS_Radio; break; case 0x7d5: if (this.MPStatus.Media_IsTV || this.MPStatus.Media_IsTVRecording) { tag = MediaStatusPropertyTag.FS_RecordedShows; } else { tag = MediaStatusPropertyTag.FS_Extensibility; } break; default: tag = MediaStatusPropertyTag.FS_Extensibility; break; } if (tag != this.oldMenu) { Log.Info("MCEDisplay.HomeSession: Updating home status to {0} (window = {1})", new object[] { tag.ToString(), GUIWindowManager.ActiveWindow.ToString() }); MediaStatusPropertyTag[] tags = new MediaStatusPropertyTag[] { this.oldMenu, tag }; object[] vals = new object[] { false, true }; base.SetStatus(tags, vals); this.oldMenu = tag; } }
private void InitializeDriver() { this.DoDebug = Assembly.GetEntryAssembly().FullName.Contains("Configuration") | Settings.Instance.ExtensiveLogging; Log.Info("DebugForm.InitializeDriver(): started."); Log.Info("DebugForm.InitializeDriver(): DebugForm Driver - {0}", new object[] { this.Description }); Log.Info("DebugForm.InitializeDriver(): Called by \"{0}\".", new object[] { Assembly.GetEntryAssembly().FullName }); FileInfo info = new FileInfo(Assembly.GetExecutingAssembly().Location); if (this.DoDebug) { Log.Info("DebugForm.InitializeDriver(): Assembly creation time: {0} ( {1} UTC )", new object[] { info.LastWriteTime, info.LastWriteTimeUtc.ToUniversalTime() }); } MiniDisplayHelper.InitEQ(ref this.EQSettings); MiniDisplayHelper.InitDisplayControl(ref this.DisplaySettings); this.LoadAdvancedSettings(); Log.Info("DebugForm.InitializeDriver(): Advanced options - Force Graphic Text: {0}", new object[] { Settings.Instance.ForceGraphicText }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Equalizer Display: {0}", new object[] { this.EQSettings.UseEqDisplay }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Normal Equalizer Display: {0}", new object[] { this.EQSettings.UseNormalEq }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Stereo Equalizer Display: {0}", new object[] { this.EQSettings.UseStereoEq }); Log.Info("DebugForm.InitializeDriver(): Advanced options - VU Meter Display: {0}", new object[] { this.EQSettings.UseVUmeter }); Log.Info("DebugForm.InitializeDriver(): Advanced options - VU Meter Style 2 Display: {0}", new object[] { this.EQSettings.UseVUmeter2 }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Use VU Channel indicators: {0}", new object[] { this.EQSettings._useVUindicators }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Restrict EQ Update Rate: {0}", new object[] { this.EQSettings.RestrictEQ }); Log.Info( "DebugForm.InitializeDriver(): Advanced options - Restricted EQ Update Rate: {0} updates per second", new object[] { this.EQSettings._EQ_Restrict_FPS }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Delay EQ Startup: {0}", new object[] { this.EQSettings.DelayEQ }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Delay EQ Startup Time: {0} seconds", new object[] { this.EQSettings._DelayEQTime }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Smooth EQ Amplitude Decay: {0}", new object[] { this.EQSettings.SmoothEQ }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Show Track Info with EQ display: {0}", new object[] { this.EQSettings.EQTitleDisplay }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Show Track Info Interval: {0} seconds", new object[] { this.EQSettings._EQTitleDisplayTime }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Show Track Info duration: {0} seconds", new object[] { this.EQSettings._EQTitleShowTime }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Blank display with video: {0}", new object[] { this.DisplaySettings.BlankDisplayWithVideo }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Enable Display on Action: {0}", new object[] { this.DisplaySettings.EnableDisplayAction }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Enable display for: {0} seconds", new object[] { this.DisplaySettings.DisplayActionTime }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Blank display when idle: {0}", new object[] { this.DisplaySettings.BlankDisplayWhenIdle }); Log.Info("DebugForm.InitializeDriver(): Advanced options - blank display after: {0} seconds", new object[] { this.DisplaySettings._BlankIdleTimeout / 0xf4240L }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Shutdown Message - Line 1: {0}", new object[] { this.DisplaySettings._Shutdown1 }); Log.Info("DebugForm.InitializeDriver(): Advanced options - Shutdown Message - Line 2: {0}", new object[] { this.DisplaySettings._Shutdown2 }); Log.Info("DebugForm.InitializeDriver(): Setting - Audio using ASIO: {0}", new object[] { this.EQSettings._AudioUseASIO }); Log.Info("DebugForm.InitializeDriver(): Setting - Audio using Mixer: {0}", new object[] { this.EQSettings._AudioIsMixing }); Log.Info("DebugForm.InitializeDriver(): Extensive logging: {0}", new object[] { this.DoDebug }); Log.Info("DebugForm.InitializeDriver(): completed."); }
private void DisplayUpdate() { if (this.DoDebug) { Log.Info("DebugForm.DisplayUpdate() Starting Display Update Thread"); } if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction) { GUIWindowManager.OnNewAction += new OnActionHandler(this.OnExternalAction); } while (true) { lock (ThreadMutex) { if (_stopDisplayUpdateThread) { if (this.DoDebug) { Log.Info("DebugForm.DisplayUpdate() Display Update Thread terminating"); } if (this.DisplaySettings.BlankDisplayWithVideo & this.DisplaySettings.EnableDisplayAction) { GUIWindowManager.OnNewAction -= new OnActionHandler(this.OnExternalAction); } return; } } MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); this.Check_Idle_State(); if (((!this.MPStatus.MediaPlayer_Active | !this.MPStatus.MediaPlayer_Playing) & this.DisplaySettings.BlankDisplayWithVideo) & (this.DisplaySettings.BlankDisplayWhenIdle & !this._mpIsIdle)) { this.DisplayOn(); } if (this.MPStatus.MediaPlayer_Playing) { if (this.EQSettings.UseEqDisplay) { this.GetEQ(); this.DisplayEQ(); } if (this.DisplaySettings.BlankDisplayWithVideo & (((this.MPStatus.Media_IsDVD || this.MPStatus.Media_IsVideo) || this.MPStatus.Media_IsTV) || this.MPStatus.Media_IsTVRecording)) { if (this.DoDebug) { Log.Info("DebugForm.Display_Update(): Turning off display while playing video"); } this.DisplayOff(); } } else { this.RestoreDisplayFromVideoOrIdle(); lock (DWriteMutex) { this.EQSettings._EqDataAvailable = false; this._displayThread.Priority = ThreadPriority.BelowNormal; } } if (!this.EQSettings._EqDataAvailable || this.MPStatus.MediaPlayer_Paused) { if (this.DoDebug) { Log.Info("DebugForm.DisplayUpdate() Sleeping..."); } Thread.Sleep(250); if (this.DoDebug) { Log.Info("DebugForm.DisplayUpdate() Waking..."); } } } }
private void DisplayEQ() { if (this.EQSettings._EqDataAvailable) { lock (DWriteMutex) { object obj3; RectangleF bounds = this.graphicDisplay.Bounds; if (this.DoDebug) { Log.Info("DebugForm.DisplayEQ(): called"); } this.EQSettings.Render_MaxValue = (this.EQSettings.UseNormalEq | this.EQSettings.UseStereoEq) ? ((int)bounds.Height) : ((int)bounds.Width); this.EQSettings.Render_BANDS = this.EQSettings.UseNormalEq ? 0x10 : (this.EQSettings.UseStereoEq ? 8 : 1); MiniDisplayHelper.ProcessEqData(ref this.EQSettings); Monitor.Enter(obj3 = DWriteMutex); try { this.tGraphics.FillRectangle(Brushes.White, bounds); for (int i = 0; i < this.EQSettings.Render_BANDS; i++) { RectangleF ef2; if (this.DoDebug) { Log.Info("DebugForm.DisplayEQ(): Rendering {0} band {1} = {2}", new object[] { this.EQSettings.UseNormalEq ? "Normal EQ" : (this.EQSettings.UseStereoEq ? "Stereo EQ" : (this.EQSettings.UseVUmeter ? "VU Meter" : "VU Meter 2")), i, this.EQSettings.UseNormalEq ? this.EQSettings.EqArray[1 + i].ToString() : (this.EQSettings.UseStereoEq ? (this.EQSettings.EqArray[1 + i].ToString() + " : " + this.EQSettings.EqArray[9 + i].ToString()) : (this.EQSettings.EqArray[1 + i].ToString() + " : " + this.EQSettings.EqArray[2 + i].ToString())) }); } if (this.EQSettings.UseNormalEq) { ef2 = new RectangleF((bounds.X + (i * (((int)bounds.Width) / this.EQSettings.Render_BANDS))) + 1f, bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[1 + i]), (float)((((int)bounds.Width) / this.EQSettings.Render_BANDS) - 2), (float)this.EQSettings.EqArray[1 + i]); this.tGraphics.FillRectangle(Brushes.Black, ef2); } else { int num2; RectangleF ef3; if (this.EQSettings.UseStereoEq) { int num4 = (((int)bounds.Width) / 2) / this.EQSettings.Render_BANDS; num2 = i * num4; int num3 = (i + this.EQSettings.Render_BANDS) * num4; ef2 = new RectangleF((bounds.X + num2) + 1f, bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[1 + i]), (float)(num4 - 2), (float)this.EQSettings.EqArray[1 + i]); ef3 = new RectangleF((bounds.X + num3) + 1f, bounds.Y + (((int)bounds.Height) - this.EQSettings.EqArray[9 + i]), (float)(num4 - 2), (float)this.EQSettings.EqArray[9 + i]); this.tGraphics.FillRectangle(Brushes.Black, ef2); this.tGraphics.FillRectangle(Brushes.Black, ef3); } else if (this.EQSettings.UseVUmeter | this.EQSettings.UseVUmeter2) { ef2 = new RectangleF(bounds.X + 1f, bounds.Y + 1f, (float)this.EQSettings.EqArray[1 + i], (float)(((int)(bounds.Height / 2f)) - 2)); num2 = this.EQSettings.UseVUmeter ? 0 : (((int)bounds.Width) - this.EQSettings.EqArray[2 + i]); ef3 = new RectangleF((bounds.X + num2) + 1f, (bounds.Y + (bounds.Height / 2f)) + 1f, (float)this.EQSettings.EqArray[2 + i], (float)(((int)(bounds.Height / 2f)) - 2)); this.tGraphics.FillRectangle(Brushes.Black, ef2); this.tGraphics.FillRectangle(Brushes.Black, ef3); } } } this.graphicDisplay.Image = this.tBitmap; } catch (Exception exception) { Log.Info("DebugForm.DisplayEQ(): CAUGHT EXCEPTION {0}", new object[] { exception }); if (exception.Message.Contains("ThreadAbortException")) { } } finally { Monitor.Exit(obj3); } } } }
public Settings() { //Init EqData MiniDisplayHelper.InitEQ(ref iEq); }
public override void Process() { MediaStatusPropertyTag[] tags = null; object[] vals = null; base.SetStatus(tags, vals); MiniDisplayHelper.GetSystemStatus(ref this.MPStatus); int num = -1; if (this.MPStatus.MediaPlayer_Paused) { num = 1; } else if (this.MPStatus.Media_Speed == 1) { num = 2; } else if (this.MPStatus.Media_Speed > 1) { num = 3; } else if (this.MPStatus.Media_Speed < 0) { num = 4; } else if (!this.MPStatus.MediaPlayer_Paused & !this.MPStatus.MediaPlayer_Playing) { num = 4; } if (num != this.LastPlayState) { switch (num) { case 1: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Pause }; vals = new object[] { true }; Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to PAUSED"); base.SetStatus(tags, vals); break; case 2: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Play }; vals = new object[] { true }; Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to PLAY"); base.SetStatus(tags, vals); break; case 3: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.FF1 }; vals = new object[] { true }; Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to FASTFORWARD"); base.SetStatus(tags, vals); break; case 4: tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.Rewind1 }; vals = new object[] { true }; Log.Info("MCEDisplay.VideoSession.Process(): Updating PlayState to REWIND"); base.SetStatus(tags, vals); break; } this.LastPlayState = num; } tags = new MediaStatusPropertyTag[] { MediaStatusPropertyTag.TrackTime }; vals = new object[] { base.GetDuration2Int("#currentplaytime") }; base.SetStatus(tags, vals); }