David Fort 32e64c1e98 rdpecam: fix camera sample grabbing
Before this patch we had a behavior where there was a credit of 8 samples that
could be sent to the server with no corresponding sample request. So in the right
conditions, we were having situations where the server was receiving samples that
it has not requested, and so it was dropping them. The visible effect was small
artifacts in the camera stream when i-frames where dropped, and more serious ones
when the dropped content was containing key frames.

This issue has also been reported when xfreerdp connects on g-r-d as #11990.

This patch reworks the frame grabbing workflow: when the frame grabbing thread calls
the sample callback we check if a sample is already pending, waiting to be sent to the
server. If that's the case and the camera's input format supports frame dropping we just
refresh the pending frame with the new one. If the input format can't drop frames (like
with h264 and mjpg) we wait until the current pending frame is sent.
So now frames can be sent either when we receive a sample request from the server,
or when the sample callback is invoked.
2025-12-04 23:14:54 +01:00
2025-11-17 08:29:01 +01:00
2025-07-10 09:10:33 +02:00
2012-11-01 13:50:49 -04:00
2025-11-11 08:48:22 +01:00
2025-11-12 09:57:26 +01:00
2011-06-30 15:12:51 -04:00
2025-04-01 08:56:55 +02:00

FreeRDP: A Remote Desktop Protocol Implementation

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

Code Quality Status

abi-checker clang-tidy-review CodeQL mingw-builder macos-builder [arm,ppc,ricsv] architecture builds [freebsd] architecture builds coverity

Resources

Project website: https://www.freerdp.com/

Issue tracker: https://github.com/FreeRDP/FreeRDP/issues

Sources: https://github.com/FreeRDP/FreeRDP/

Downloads: https://pub.freerdp.com/releases/

Wiki: https://github.com/FreeRDP/FreeRDP/wiki

API documentation: https://pub.freerdp.com/api/

Security policy: https://github.com/FreeRDP/FreeRDP/security/policy

FAQ: https://github.com/FreeRDP/FreeRDP/wiki/FAQ

Contact

Microsoft Open Specifications

Information regarding the Microsoft Open Specifications can be found at: https://www.microsoft.com/openspecifications/

A list of reference documentation is maintained here: https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

Compilation

Instructions on how to get started compiling FreeRDP can be found on the wiki: https://github.com/FreeRDP/FreeRDP/wiki/Compilation

Description
No description provided
Readme Apache-2.0 79 MiB
Languages
C 87.5%
C++ 3.5%
CMake 3.2%
Objective-C 2.6%
Java 1.8%
Other 1.3%