Commit Graph

3119 Commits

Author SHA1 Message Date
akallabeth
9e32181a54 [channels,rdpdr] FILE_DIRECTORY_INFORMATION::FileName as WCHAR 2025-12-12 19:26:52 +01:00
akallabeth
b160ea80e8 [mingw] fix type incompatibilities
The integer types with MINGW do not always match. Ensure the correct
32bit interger base type is used when passing pointers
2025-12-12 19:09:30 +01:00
akallabeth
1351d437fd [channels,rdpecam] allow MJPEG frame skip and direct passthrough
* direct passthrough of MJPEG announced
* allow frame drops for MJPEG
* drop samples if encoding fails
* add verbose/debug logging of delayed and dropped frames
2025-12-10 16:57:39 +01:00
eduar-hte
d3fdbbe8cf Send sample only if there's one to be sent.
- This issue was introduced in FreeRDP/FreeRDP@32e64c1e98
- If a sample request is received from the server before the camera
  provides one, an assertion is triggered because an invalid sample is
  attempted to be sent as a response, as the default initialization of
  `stream->pendingSample` sets its `length` to its `capacity`.
2025-12-10 14:54:11 +00:00
akallabeth
795fe479b8 [channels,drdynvc] propagate error in dynamic channel 2025-12-09 10:36:47 +01:00
akallabeth
6bac078120 [channels,rdpecam] fix implicit widening of multiplication result 2025-12-05 09:00:58 +01:00
akallabeth
c118d3df18 [channels,rpdecam] log dropped samples 2025-12-05 08:20:25 +01:00
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
David Fort
65bb6c59fc rdpear: handle basic NTLM commands and fix server-side
This patch adds the handling of basic NTLM commands. Because there's some mysterious
4 zero bytes after pickle header in Kerberos packets, not present in NTLM commands, the
patch also had to rework a bit the packet parsing / forging.

The patch also addresses a server-side bug when parsing supplemental creds, if the client
was sending an empty list, we were considering this as an error.

And finally we also implement the parsing of MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL.
This breaks the public API, anyway this was basically unused (as not parsed before) and
the previous API was wrong as what we receive is MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL
not MSV1_0_SUPPLEMENTAL_CREDENTIAL, so I guess the API breakage is ok.
2025-12-04 11:31:09 +01:00
akallabeth
b971720115 Merge pull request #12029 from akallabeth/rdpecam-log
[channels,rdpecam] improve log messages
2025-12-01 09:49:03 +01:00
akallabeth
d80d9bf2ce [channels,rdpecam] improve log messages 2025-12-01 09:15:17 +01:00
David Fort
15659a2590 drdynvc: implement compressed packet
The DRDYNVC compression is the zgfx compression, this patch adds the support for DYNVC_DATA_COMPRESSED
and DYNVC_DATA_FIRST_COMPRESSED packets.
2025-12-01 09:09:03 +01:00
Martin Fleisz
236959c440 [channels,drive] Small performance improvements in drive channel
This commit fixes following performance issues in the drive channel:
- `GetFileAttributes` functions where using `FindFirstFile` to query
  attributes. The same can be achieved with `stat` and reusing the
existing stat <-> file info conversion code.
- `drive_file_query_information` was calling `CreateFile` on directories
  which will always fail with the given parameters.
2025-11-20 14:26:19 +01:00
Armin Novak
05b222ba19 [channels,audin] fix pulse memory leak 2025-11-19 11:12:01 +01:00
Kim Youngseok
45e8705fd7 fix: send touch down and last update event 2025-10-24 14:45:39 +09:00
Loïc Yhuel
87fe0d0d8e [channel,server] fix more unguarded use of functions
This allows to set any -DCHANNEL_xxx_SERVER=OFF.
2025-10-21 14:27:02 +02:00
Armin Novak
39ab79486a [channels,audin] fix a leak in pulse backend 2025-10-15 09:09:18 +02:00
akallabeth
14f065617c [timer] fix too short interval
with migrating to freerdp_timer_add the timer values should have been
adjusted to be in ns instead of µs
2025-10-10 17:40:29 +02:00
Armin Novak
6eaf8ca683 [channels,rdpecam] fix a memory leak 2025-09-30 16:44:49 +02:00
akallabeth
74648eb3a9 [c,standard] use C99 inline 2025-09-26 11:29:26 +02:00
akallabeth
85b864c799 Merge pull request #11848 from akallabeth/proxy-module-pc
[proxy,modules] generate pkg-config files for modules
2025-09-11 09:14:30 +02:00
akallabeth
25b5b38d32 [CMake,client] add pkg-config dependencies 2025-09-11 07:17:52 +02:00
David Fort
ae2e951af6 rdpecam: add some new callbacks to the HAL
This patch adds Activate and Deactivate callbacks to the HAL, matching the messages
exchanged on the channel. This is to prepare the support of a windows HAL using the
microsoft media fundation framework.
2025-09-10 16:13:59 +02:00
akallabeth
50a64d543f [channels,drive] tolerate drive_file_set_disposition_information
the length field did change a lot during the eveolution of the protocol.
Be lenient on values that might occur as long as they satisfy the
basic requirements.
2025-09-01 21:12:02 +02:00
akallabeth
11dff480ba [channels,geometry] improve receive checks 2025-08-31 13:09:16 +02:00
Quentin Thébault
aaa9c69717 audin_oss: do not reset mic volume on capture start 2025-08-28 23:44:43 +09:00
akallabeth
7a3030b556 [channels,rdpear] explicitly abort if Heimdal detected
The RDPEAR channel is currently only tested against MIT kerberos. It
does not even compile with Heimdal, so bail out early during configure.
2025-08-26 15:13:01 +02:00
akallabeth
6add74bbac [channels,drdynvc] log channel close events 2025-08-21 13:13:39 +02:00
Armin Novak
4707b465cd [warnings] eliminate unused 2025-08-20 11:54:28 +02:00
Armin Novak
bddf6c5692 [channels,printer] fix missing const casts 2025-08-18 14:31:38 +02:00
Armin Novak
c7c7874bf0 [channels,cliprdr] improve casts 2025-08-18 14:11:50 +02:00
Armin Novak
b8fe92caeb [cmake,channels] unset client/server options
If a channel is deactivated, delete the client and server options (e.g.
reset them to default) to avoid having something like
CHANNEL_NAME=OFF AND CHANNEL_NAME_CLIENT=ON
2025-08-18 11:17:03 +02:00
akallabeth
65f18983ed [warnings] Fix format string errors
* Fix casts of format string arguments (%p requires void*)
* Fix format string to match type of arguments
2025-08-13 15:09:48 +02:00
akallabeth
c3e507a82e [winpr,wlog] Replace WLog_PrintMessage calls
Prefer WLog_PrintTextMessage to have proper format string checks in
place.
2025-08-13 15:08:01 +02:00
akallabeth
12d0e491f6 [cmake] add installWithRPATH
this new CMake function installs a target to a destination and adds the
correct relative RPATH to some desired locations
2025-07-17 13:59:51 +02:00
Armin Novak
efd89c0354 [channels,drdynvc] IWTSVirtualChannelCallback log trace 2025-06-25 09:36:54 +02:00
akallabeth
82578e8d71 [channels,printer] fix missing include 2025-06-05 13:19:35 +02:00
Armin Novak
07e39ede20 [winpr,file] Add winpr_CreateFile wrapper
Allows creation of a file HANDLE from a utf-8 name
2025-06-05 11:58:47 +02:00
Armin Novak
abbb998dca [channels,drive] unify drive redirection handling 2025-06-05 11:58:47 +02:00
akallabeth
da05b25f3b [WaitForXXObject] use infinite timeout where possible 2025-06-03 17:07:31 +02:00
akallabeth
cf35364efa [channels,drive] fix file rename length checks 2025-06-02 20:22:50 +02:00
akallabeth
0a854001f7 [channels,drive] encapsulate drive information processing 2025-06-02 17:31:01 +02:00
akallabeth
ad9e3df18f [channels,drive] fix error checks and log messages 2025-05-27 16:27:43 +02:00
akallabeth
34ab0b893d [warnings] fix clang-tidy warnings 2025-05-23 15:29:31 +02:00
akallabeth
03f20da4e6 [channels,drive] fix drive register 2025-05-22 19:40:13 +02:00
akallabeth
3dee8895ec [rdpdr,hotplug] fix passing of device::Id back to caller 2025-05-22 11:17:21 +02:00
Armin Novak
24ea6414bc [warnings] fix various compile warnings 2025-05-21 11:05:10 +02:00
akallabeth
9da4f9da6e Merge pull request #11601 from ljaeh0121/fix/drive_process_irp_set_information
[channel,drive]  Fix failure when renaming non-empty directories
2025-05-20 14:58:57 +02:00
ljh0121
0d1b044436 fix: [channel,drive] Fix failure when renaming non-empty directories 2025-05-20 16:56:02 +09:00
akallabeth
2a020b8a5f [channels,video] fix NULL dereference 2025-05-19 08:17:43 +02:00