kurtie Posted October 12, 2015 Posted October 12, 2015 (edited) Hi there, I am working on a program that can be used to export DCS indicators (MFCDs, etc) to a remote computer. Now, you create viewports for all indicators in a screen in the computer that is executing DCS world (like in here: http://forums.eagle.ru/showthread.php?t=70716) Then you can run Helios on top of those viewports on the local machine. That's nice, but what if you want to view all of that in a separate machine (something like a tablet or a laptop)? You can run Helios on a remote machine, and it works, but MFCDs stays on the local machine and cannot be seen on a tablet right now. You can use something like TeamViewer or any other remote desktop utility to overcome that and transmit the desktop remotely. That works but I don't like it because you have to export the whole screen, with all Helios stuff and the DCS viewports, and that is a lot of work to do in real time (and don't forget that the machine has to run at the same time DCS World, which is a very demanding software) and performance is poor. So, what I did is a little Java application that captures only the indicated portion of screen, does a basic compression, and sends it over a network. It has a minimal impact on CPU. This way you can run DCS World on your computer, export indicators as viewports, run Helios on a separate Windows device (I am running it on a Surface Pro 3) and with this little app the MFCDs are transmitter over the network to this second device. I don't know if I was able to explain myself. It is designed to run on a local network, and preferrably on Ethernet but can also work on Wireless, but a lower framerates. I know that Java is not the best choice, but I am a Java programmer and it was the fastest way to do it for me. It can be improved (a lot) by adding a real video streaming, but that is beyond my skills right now. It already works and I've been using it successfully. I plan to polish it and release it as open source under LPGL or similar, but only if there is people interested in something like that. So, I take the trouble to finish and polish it to be more usable? What you say? Regards, Kurt.- Edited October 12, 2015 by kurtie Minor corrections
BravoYankee4 Posted October 12, 2015 Posted October 12, 2015 I'm open minded to everything that would make my cockpit building more convenient, so yes - please share some more details about this. Unfortunately this forum seems to be very much A-10C biased, since every now and then when there is a new utility the first thing is always the MFCD's... I would love to have a convenient way (like UltraMFCD) to put the MIG-21 radar (and other instruments) on a second monitor or computer.
Hollywood_315 Posted October 12, 2015 Posted October 12, 2015 This is a really interesting idea - I would definitely love to see it working. Guess the trick will be how to maintain a minimal CPU load whilst still doing a sufficiently high frame rate export / video stream over LAN. Thumbs up, do go ahead! There is no spoon. VAICOM PRO plugin for DCS World www.vaicompro.com
kurtie Posted October 12, 2015 Author Posted October 12, 2015 I'm open minded to everything that would make my cockpit building more convenient, so yes - please share some more details about this. Unfortunately this forum seems to be very much A-10C biased, since every now and then when there is a new utility the first thing is always the MFCD's... I would love to have a convenient way (like UltraMFCD) to put the MIG-21 radar (and other instruments) on a second monitor or computer. MFCD's was an example. This utility is very generic, it simply copies a part of the screen and transmits it to a remote point, and then draws it somewhere. It will work with any indicator you are able to export as a viewport on DCS World, so it is up to you what you want to export. Searching on these forums I found this: http://forums.eagle.ru/showpost.php?p=2278817&postcount=3, so yes, MIG-21 radar can be exported as a viewport. Regards, Kurt.-
kurtie Posted October 12, 2015 Author Posted October 12, 2015 This is a really interesting idea - I would definitely love to see it working. Guess the trick will be how to maintain a minimal CPU load whilst still doing a sufficiently high frame rate export / video stream over LAN. Thumbs up, do go ahead! I am a professional programmer, but I don't know much about video compression. What I do know is some kind of "delta compresssion": current frame is compared agains previous frame, and the difference is what is compressed and sent over the network. Comression algorithm is just a Gzip... it is fast, but sucks for images. This scheme works amazingly well with screens that do not change much from frame to frame (MFCDs, radars, or any text display)... but not so well with camera views. I will try to upload some kind of alpha this week. It is a very simple utility.... but some people may find it useful in their setups (I do). I will release it under a GPL license (free and open source) and I will put source code on GitHub, so if someone if reading this and knows better about video compression... you will be welcome. Regards, Kurt.-
kurtie Posted October 14, 2015 Author Posted October 14, 2015 Viewport Export v0.5.0 Hi there, Here we go. First release of the software is attached in this post. It is released under GPL license, and that means that it is free, open source, and it is meant to be that way forever. Requisites: - This is not one of those softwares that it is installed through a wizard. In order to use this, you have to be used to mess with files, wires, and setups of different softwares and hardwares. - It is a Java software. You will need the Java Runtime Environment, if you don't have already installed. You can get it here: http://www.java.com/en/download/ - You know how to create viewports of DCSW indicators. There are other threads that explain it in detail, like this: http://forums.eagle.ru/showthread.php?t=70716 What this software do Well... it captures part of the desktop, and export it through network. It is designed with the purpose in mind of exporting things like MFCds, radars, and other things that can only be rendered on one of the screens of the computer that is running DCS world. There are other tools for exporting the desktop remotely, for instance TeamViewer, and it is a very good software. But it is designed for other uses: it is designed to use very low bandwidth at the expense of high CPU and quality. This software is designed to be used in a LAN, where you can have easily a lot of bandwidth available, but it is designed to be very light on CPU, so that DCS World can have more resources to render more frames per second... it is also designed to have low latency and it is lossless, everything is exported with 100% fidelity. It works very well with Helios. How you can run it First download the ZIP and uncompress it somewhere. If you Java RE is correctly installed, you can execute the JAR by double clicking. If you like command line, then "java -jar ViewportExport.jar" would do the trick. You will have to execute two instances of Viewport Export. One is the emitter, that will be executed on the computer that runs DCS World. I suppose that you previously have your indicators rendered on a second monitor (Note: it can be done with just one monitor. Pressing Win + P on Windows 8 and 10, and clicking extend will create a virtual screen at the right of your main screen). The other one is the receiver, and has to be run on the computer / laptop / tablet where you want to render those DCS World indicators. You also probably will run Helios there. Once the application is opened, and after accepting the GPL license, you will see two buttons 'Launch emitter' and 'Launch receiver'. They explain themselves. You will also see a textfield where there is a path to a viewportexport.properties file. You can specify any path that you wish, but I recommed to create the file in the same directory that ViewportExport.jar resides. Now you will need to edit this files. Emitter properties This is an example viewportexport.properties for the emitter: port=12321 fps=10 viewport.source=800,0,1024,512 compression=LZ4 port: default value 12321. The TCP port where the emitter will listen to the receiver. fps: Frames per second viewport.source: This is the desktop rectangle (x, y, width and height) that will captured and transmitted through the network. compression: Default LZ4. Accepted values are LZ4 and GZIP. This is the compression algorithm to be used. LZ4 is very fast, but GZIP compresses a bit more. Receiver properties This is an example viewportexport.properties for the receiver: emitter=192.168.0.2 port=12321 background=405060 areas=MFCDl, MFCDr MFCDl.source=0,0,512,512 MFCDl.target=40,40,640,640 MFCDr.source=512,0,512,512 MFCDr.target=840,40,400,400 emitter: IP y nostname of the emitter computer port: It has to be the same as used in the emitter. background: RGB color for background (000000 for black, FFFFFF for white, etc) areas: this is a comma-separated list of area names. In the example there are two, MFCDl and MFCDr but you can have many, or only one. For each area you will define two properties, the source and target. Both of them are rectangles (x,y,width,height). The source is relative to the captured rectangle not to the origin of the desktop and the target is where you want that to be shown on the receiver screen. A tutorial Well, it's an easy application, but hard to use (emitters, receivers, ports, viewports). So I have prepared an easy sample. In the ZIP there is a sample viewportexport.properties with these contents: emitter= localhost port=12321 fps=10 background=405060 viewport.source=0,0,800,400 areas=left_big, right_small left_big.source=0,0,400,400 left_big.target=0,500,640,640 right_small.source=400,0,400,400 right_small.target=640,500,200,200 Now execute thar JAR once. Click on the "Launch emitter" and then on "Launch receiver" buttons. If everything goes well a window will open covering the desktop. Now open another window and move it over this top left part of this window, and you will see parts of your desktop reproduced on this window. Not useful but would illustrate how this works. Ok... let me know if you have questions or any kind of feedback. Regards, Kurt.-ViewportExport.zip
Hollywood_315 Posted October 15, 2015 Posted October 15, 2015 Thanks - will definitely check this out. I'm on Win7 so guess the virtual monitor trick will not work for me then. There is no spoon. VAICOM PRO plugin for DCS World www.vaicompro.com
kurtie Posted October 15, 2015 Author Posted October 15, 2015 Thanks - will definitely check this out. I'm on Win7 so guess the virtual monitor trick will not work for me then. Well... In Win 8+ Microsoft made it more convenient, but it was already possible in previous Windows, and I remember to had used that trick before in Windows 7: http://superuser.com/questions/62051/is-there-a-way-to-fake-a-dual-second-monitor Regards, Kurt.-
MONK Marco Posted March 14, 2019 Posted March 14, 2019 Hi, does anyone know if this still works? regards
Recommended Posts