![]() |
|
[.NET] How does Imminent Monitor provides such high speed for Remote Desktop? - Printable Version +- Hack Forums (https://hackforums.net) +-- Forum: Tech (https://hackforums.net/forumdisplay.php?fid=444) +--- Forum: Coding (https://hackforums.net/forumdisplay.php?fid=151) +---- Forum: Software Development (https://hackforums.net/forumdisplay.php?fid=118) +---- Thread: [.NET] How does Imminent Monitor provides such high speed for Remote Desktop? (/showthread.php?tid=5221902) Pages: Pages
1
2
|
How does Imminent Monitor provides such high speed for Remote Desktop? - jim_377 - Mar 31, 2016 Imminent Monitor has a very high speed for Remote Desktop (30+ FPS). Does anyone knows what approach it uses to achieve such high speed? * - webdev77 - Mar 31, 2016 Instead of looking at just one program, try looking at how live streaming works and the tech behind it. If you google live streaming programs, you will find some relevant results. * - $lick - Mar 31, 2016 Imminent Monitor uses the same method as NanoCore as far as I'm aware, it only sends over the information that has changed and not the entire screen. * - nuk - Apr 1, 2016 Why not just check out the source to Imminent Monitor? Oh... here ya go ;) Imminent Monitor Source: http://pastebin.com/bsfmNp4c Enjoy... let me know how you make out ;) * - Odus - Apr 2, 2016 (Apr 1, 2016 11:39 PM)nuk Wrote: Why not just check out the source to Imminent Monitor? Oh... here ya go ;) I'd hope they've made some kind of improvements to it after 3 years though. 😅 * - .Monarch. - Apr 2, 2016 (Mar 31, 2016 11:55 AM)jim_377 Wrote: Imminent Monitor has a very high speed for Remote Desktop (30+ FPS). I don't own Imminent Monitor but this is what they might be doing. - Custom compression algo for images - Motion Detection (This way they only send the data which changes) this saves lot's of bandwidth. * - Ninja - Apr 2, 2016 (Apr 1, 2016 11:39 PM)nuk Wrote: Why not just check out the source to Imminent Monitor? Oh... here ya go ;) That source code gave me cancer. * - Adderall - Apr 2, 2016 (Apr 2, 2016 08:17 AM).Zeref. Wrote: I don't own Imminent Monitor but this is what they might be doing. Use JPEG compression and write the image to bytes using a stream and send it to the server and let it decompress it to an image. (Apr 2, 2016 08:28 AM)Ninja Wrote: That source code gave me cancer. My computer died of clicking on the source. - Google chrome has stopped working... * - Zilog80 - Apr 2, 2016 (Apr 2, 2016 08:28 AM)Ninja Wrote: That source code gave me cancer. I thought I was the only one who thought so🤣 "On Error Resume Next" gave me cancer+ebola+Aids+Lupus For the @OP, you should take a look for "Desktop Duplication API". This API uses DirectX 11 for very fast imagen stuff, like: IDXGIOutputDuplication::GetFrameDirtyRects "returns dirty regions, which are non-overlapping rectangles that indicate the areas of the desktop image that the operating system updated since you processed the previous desktop image." IDXGIOutputDuplication::GetFrameMoveRects "returns move regions, which are rectangles of pixels in the desktop image that the operating system moved to another location within the same image. Each move region consists of a destination rectangle and a source point. The source point specifies the location from where the operating system copied the region and the destination rectangle specifies to where the operating system moved that region. Move regions are always non-stretched regions so the source is always the same size as the destination." You can use SharpDX in order to use this methods in C# or VB.NET Combining SharpDX with any kind of compression algorthim I made my own "remote screener streamer" (private use, not public) capable to streamings to 1920 x 1080 24bpp @ 0,56 mbps on high spikes (notice mbps are mega bits, not mega Bytes). Performance (static & changing images) ups to 60 FPS in ADSL with 512 Kb upload Channel. (Very low quality ADSL, I know) * - jim_377 - Apr 2, 2016 (Apr 2, 2016 02:35 PM)Zilog80 Wrote: I thought I was the only one who thought so🤣 Unfortunately the Desktop Duplication API only works for Windows 8 and later 😟. * - Zilog80 - Apr 3, 2016 (Apr 2, 2016 07:05 PM)jim_377 Wrote: Unfortunately the Desktop Duplication API only works for Windows 8 and later 😟. Not really with this Windows 7 Update: msdn.microsoft.com/en-us/library/windows/desktop/jj863687(v=vs.85).aspx This Update provides Win7 ti use DXGI 1.2 API. * - ronald51 - Apr 3, 2016 Thanks nuk for the source code. * - jim_377 - Apr 3, 2016 (Apr 3, 2016 03:10 AM)Zilog80 Wrote: Not really with this Windows 7 Update: Great news. Thanks man for pointing that out. Is there any drawbacks to the Desktop Duplication API, I read something about that some windows can choose not be captured by this API: blogs.msdn.microsoft.com/dsui_team/2013/03/25/ways-to-capture-the-screen/ Is this true or I misunderstood what I've read ❓? * - Slavoj Žižek - Apr 3, 2016 it only sends the parts of the screen that have changed, and it uses hardware acceleration for the compression (I think) * - Zilog80 - Apr 3, 2016 (Apr 3, 2016 09:17 AM)jim_377 Wrote: Great news. Thanks man for pointing that out. As you can read on your provided link, there is a drawback related with Fullscreen apps. Fullscreen DirectX (and OpenGL) applications can not be captured without source code control. If the SwapChain hasn’t been created with the right flags, there is (at least without any system-hacking-skills) no way to duplicate the screen. You can find more information about that on the SwapChain Flags MSDN page: msdn.microsoft.com/de-de/library/windows/desktop/bb173076(v=vs.85).aspx As you can see it you will either have to use IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow or IDXGIFactory2::CreateSwapChainForComposition without the DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY to allow other applications to access the SwapChain’s backbuffer. Anyway, even this drawback, Desktop Duplication API (GXDI 1.2) smash classic & old school BitBlt GDI+ capture screen. |