home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
Language specific support
Deutsches MediaPortal Forum
Plugins & Skins für das MediaPortal
Plugins & Erweiterungen
[Neues Plugin] Atmolight plugin
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="gemx" data-source="post: 681124" data-attributes="member: 26324"><p>Die Quellen liegen ganz normal in dem MP-Tools SVN Repository.</p><p></p><p><a href="https://mp-plugins.svn.sourceforge.net/svnroot/mp-plugins/trunk/plugins/Atmolight" target="_blank">https://mp-plugins.svn.sourceforge.net/svnroot/mp-plugins/trunk/plugins/Atmolight</a></p><p></p><p>Die COM-Anbindung unter C# ist eigentlich super einfach - Dank Visual Studio.</p><p></p><p>Man fügt einfach eine Referenz zu dem Projekt hinzu, wählt den Karteireiter "COM..." und dort den "Atmowin..." Eintrag und schon generiert VST automatisch eine entsprechende Interop dll, die man dann ganz einfach benutzen kann.</p><p></p><p>Das wirkliche spannende zum Initialisieren befindet sich in der Methode "ConnectToAtmoWin"</p><p>[CODE]</p><p> private bool ConnectToAtmoWinA()</p><p> {</p><p> try</p><p> {</p><p> atmoCtrl = (IAtmoRemoteControl2)Marshal.GetActiveObject("AtmoRemoteControl.1");</p><p> }</p><p> catch (Exception ex)</p><p> {</p><p> Log.Error("atmolight: exception= {0}",ex.Message);</p><p> atmoCtrl = null;</p><p> return false;</p><p> }</p><p> ComEffectMode oldEffect;</p><p> atmoCtrl.setEffect(ComEffectMode.cemLivePicture, out oldEffect);</p><p> atmoLiveViewCtrl = (IAtmoLiveViewControl)Marshal.GetActiveObject("AtmoRemoteControl.1");</p><p> atmoLiveViewCtrl.setLiveViewSource(ComLiveViewSource.lvsExternal);</p><p> atmoCtrl.getLiveViewRes(out captureWidth, out captureHeight);</p><p> DisableLEDs();</p><p> Log.Info("atmolight: successfully connected to AtmoWinA.exe :)");</p><p> Log.Info("atmolight: live view capture resolution is {0}x{1}. Screenshot will be resized to this dimensions.", captureWidth, captureHeight);</p><p></p><p> return true;</p><p> }</p><p>[/CODE]</p><p></p><p>Wichtig ist, das Atmowin gestartet sein muss, sonst funktioniert es nicht.</p><p></p><p>Der Patch wird es leider nie in des SVN von MP schaffen, da dieser direkt jeden Frame abgreift, bevor er gerendert wird.</p><p>Die Zeit, die ein Plugin allerdings in diesem Callback verbringt, muss extrem kurz sein, sonst kommt es zu tearing, ruckeln usw.</p><p></p><p>Das Team wollte sich hier einfach nicht noch eine Baustelle diesbezüglich aufmachen.</p><p></p><p>Auch das Plugin kann minimale Verzögerungen verursachen.</p><p>Allerdings mache ich es so, dass ich die Texture noch im GPU Speicher mittels der GPU runterskaliere auf die Größe, die von Atmowin ausgewertet wird.</p><p>Würde man jedesmal das ganze Bild in voller Auflösung aus dem GPU Speicher holen und dann bearbeiten würde es bei HD ziemlich sicher zu sichtbaren Rucklern kommen.</p></blockquote><p></p>
[QUOTE="gemx, post: 681124, member: 26324"] Die Quellen liegen ganz normal in dem MP-Tools SVN Repository. [url]https://mp-plugins.svn.sourceforge.net/svnroot/mp-plugins/trunk/plugins/Atmolight[/url] Die COM-Anbindung unter C# ist eigentlich super einfach - Dank Visual Studio. Man fügt einfach eine Referenz zu dem Projekt hinzu, wählt den Karteireiter "COM..." und dort den "Atmowin..." Eintrag und schon generiert VST automatisch eine entsprechende Interop dll, die man dann ganz einfach benutzen kann. Das wirkliche spannende zum Initialisieren befindet sich in der Methode "ConnectToAtmoWin" [CODE] private bool ConnectToAtmoWinA() { try { atmoCtrl = (IAtmoRemoteControl2)Marshal.GetActiveObject("AtmoRemoteControl.1"); } catch (Exception ex) { Log.Error("atmolight: exception= {0}",ex.Message); atmoCtrl = null; return false; } ComEffectMode oldEffect; atmoCtrl.setEffect(ComEffectMode.cemLivePicture, out oldEffect); atmoLiveViewCtrl = (IAtmoLiveViewControl)Marshal.GetActiveObject("AtmoRemoteControl.1"); atmoLiveViewCtrl.setLiveViewSource(ComLiveViewSource.lvsExternal); atmoCtrl.getLiveViewRes(out captureWidth, out captureHeight); DisableLEDs(); Log.Info("atmolight: successfully connected to AtmoWinA.exe :)"); Log.Info("atmolight: live view capture resolution is {0}x{1}. Screenshot will be resized to this dimensions.", captureWidth, captureHeight); return true; } [/CODE] Wichtig ist, das Atmowin gestartet sein muss, sonst funktioniert es nicht. Der Patch wird es leider nie in des SVN von MP schaffen, da dieser direkt jeden Frame abgreift, bevor er gerendert wird. Die Zeit, die ein Plugin allerdings in diesem Callback verbringt, muss extrem kurz sein, sonst kommt es zu tearing, ruckeln usw. Das Team wollte sich hier einfach nicht noch eine Baustelle diesbezüglich aufmachen. Auch das Plugin kann minimale Verzögerungen verursachen. Allerdings mache ich es so, dass ich die Texture noch im GPU Speicher mittels der GPU runterskaliere auf die Größe, die von Atmowin ausgewertet wird. Würde man jedesmal das ganze Bild in voller Auflösung aus dem GPU Speicher holen und dann bearbeiten würde es bei HD ziemlich sicher zu sichtbaren Rucklern kommen. [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
Language specific support
Deutsches MediaPortal Forum
Plugins & Skins für das MediaPortal
Plugins & Erweiterungen
[Neues Plugin] Atmolight plugin
Contact us
RSS
Top
Bottom