mseimys

Full Screen Desktop Share without blur and quality loss

Discussion created by mseimys on May 11, 2010
Latest reply on Aug 9, 2013 by grvdhawale31

I noticed a lot of people asking about how to enable desktop sharing in full screen and crisp resolution. I did face the same problem and spent a couple days trying to figure it out. The solution is not that easy to achieve, although Dele Olajide as a Red5 plugin developer (aka "Saint" ) should find it easy to implement in a new version of Red5 Plugin.

 

I could not find the true source files of screenviewer.jar inside openfire/plugins/red5/screen, I downloaded the whole Openmeetings source from http://openmeetings.googlecode.com/svn/trunk/singlewebapp. There you can find a directory src/screenviewer, which contains the source files for screenviewer.jar (although they are a bit diffrent, there was a package name change from org.xmlcrm.webstart.* (this one is currently used in red5 plugin) to org.openmeetings.webstart.* (in downloaded source files) some time ago.

 

To remove the 600x600 resulution limitation, you have to change two lines inside the org\xmlcrm\webstart\screen\CaptureScreen.java subroutine
public byte[] bufferImage():

double thumbWidth = 600;
double thumbHeight = 600;

change to:

double thumbWidth = imageScreen.getWidth(); // *ConnectionBean.imgScale;
double thumbHeight = imageScreen.getHeight(); // *ConnectionBean.imgScale;

 

Recompile the whole thing, make screenviewer.jar, sign every jar inside red5/screen directory with the same signature file.

 

I went a bit further and modified the whole Desktop Publisher program: added the image Scale (%) JSpinner object, added this imgScale to the ConnectionBean, so I can dynamically change the scale of transfered image (if my bandwidth is poor).

 

Although my description here is brief, the real work involved is more tough, I could post my modified jar file, but as i don't know the password of screeencast.keystore file - your Java will complain that certificates don't match and won't start. If anyone wants more details - I would be happy to provide them...

 

PS It's also a good idea to modify screen.html to include scrollbars when the transfered image is bigger than your screen, modify its style:

body { overflow: scroll; margin: 0pt; }

Outcomes