From: Marc L. on
Dear all

I am working on a video conferencing application. Right now I implementing
desktop sharing on windows platform. Doing so I will need to capture some
part of the desktop (monitor, window, region).

I was trying first with a java desktop capture, but on vista and win7 I had
bad capturing times on big screens. Then I thought I need to move to C++
showing me that the capturing time improvement is not that big - compared to
java.

Finally a member of the Remote Desktop Services (Terminal Services) Team
Blog pointed me to the direction of mirror drivers.

I found a sample inside the window driver toolkit:
http://msdn.microsoft.com/en-us/library/ff568319%28v=VS.85%29.aspx

Are there any other samples? What are the major steps I need to take to take
care of, what are the pitfalls I need to avoid?

Thanks for in advance for sharing your experience!

Regards,
Marc
From: Marc L. on
Well on my test systems on windows xp on a 1600x1080 screen, I have capture
times of about 50ms and faster. On my Win7 machine between 150 to 250ms on a
1920x1080. the difference cannot be explained only with bigger screens.

As a mechanism of desktop sharing I think it is good to slice the window
that is needed to capture into many parts and capture these parts very
quickly. Then compare these parts against the screen capture before and only
send the changes.

But one part of the story why a remote desktop app is not that much
responding as a real monitor is that capturing only happens twice to four a
second. If it is lets say 10 times a second, Changes will be broadcast faster
lowering the delay.

Regards,
Marc
From: Marc L. on
Thanks for the links I will have a look into it.

Regards,
Marc
From: Tim Roberts on
Marc L. <rombooth(a)community.nospam> wrote:
>
>Well on my test systems on windows xp on a 1600x1080 screen, I have capture
>times of about 50ms and faster.

That's hard for me to believe. Where were you copying the image to?

>On my Win7 machine between 150 to 250ms on a 1920x1080. the difference cannot
>be explained only with bigger screens.

No, it could be a different graphics card, or perhaps DWM using up more
bandwidth. The numbers you are seeing there seem much more realistic.

>As a mechanism of desktop sharing I think it is good to slice the window
>that is needed to capture into many parts and capture these parts very
>quickly. Then compare these parts against the screen capture before and only
>send the changes.

Have you looked at the source code for VNC to see how they do it?
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: Marc L. on
Hi Tim,

Right now I am analiying the UVNC mirror driver. Thanks for this link. After
doing this I will look into how UltraVNC is using this driver.

Thanks!
Marc