Commit Graph

308 Commits

Author SHA1 Message Date
Martin Fleisz
3318d1574f Fix possible NULL pointer access crash 2020-02-28 12:53:39 +01:00
Armin Novak
4eb4f58fbb Updated CMake channel detection
* Now both, dynamic and static channel entries can be defined by
  a single channel.
* Added better logging to distinguish between static and dynamic
  channel messages.
2020-02-28 12:53:39 +01:00
Martin Fleisz
da354feed0 Add dynamic channel part for rdpsnd channel 2020-02-28 12:53:39 +01:00
Armin Novak
5e4603d0b7 Fix #5885: Check for division by zero 2020-02-27 13:56:53 +01:00
Vic Lee
25eb6b6cdd rdpsnd: implement buffer overrun detection. 2020-02-14 20:49:18 +08:00
Martin Fleisz
ebe0fc59b5 Merge pull request #5865 from akallabeth/write_cancelled_leak
Fix #5852: handle CHANNEL_EVENT_WRITE_CANCELLED
2020-02-10 12:08:55 +01:00
Vic Lee
847fe0f919 rdpsnd/winmm: fix some memory issues. 2020-02-04 17:56:45 +08:00
Armin Novak
d2aef75004 Fix #5852: handle CHANNEL_EVENT_WRITE_CANCELLED
When channels are cleaned up OpenHandle is most of the time
already 0. Ignore the argument checks for
CHANNEL_EVENT_WRITE_CANCELLED and CHANNEL_EVENT_WRITE_COMPLETE
only check where actually required (CHANNEL_EVENT_DATA_RECEIVED)
2020-01-29 08:52:25 +01:00
Martin Fleisz
706e32982e rdpsnd: Add synchronization to winmm backend 2020-01-17 13:56:30 +01:00
Martin Fleisz
369c696b23 rdpsnd: Fix possible crash and deadlock in winmm backend 2020-01-16 10:23:17 +01:00
Armin Novak
e86849759a Fixed waveOutClose, call waveOutReset first.
Signed-off-by: Armin Novak <armin.novak@thincast.com>
2020-01-08 18:25:08 +01:00
Armin Novak
f720ec5383 RDPSND device API refinements
* Added default format callback for rdpsnd backend to allow
  different default input formats (different samplerates, ...)
* Made WINMM backend in flight packet limitation a compile time
  option
* Fixed missing buffer copy in winmm backend

Signed-off-by: Armin Novak <armin.novak@thincast.com>
2020-01-08 17:14:09 +01:00
Martin Fleisz
05a865281e channels: Fix memory leak and make log messages more precise 2020-01-08 16:49:15 +01:00
Martin Fleisz
a98e153b9d rdpsnd: Do not set output device on Catalina or later (#5747) 2020-01-03 13:31:15 +01:00
Martin Fleisz
d21e0a6d6d Fix audio channel init when no audio devices are present
This PR fixes the handling of using rdpsnd or audin when the system has
no audio device available.
In case of a missing playback device the
Windows backend now correctly reports an error and the fake rdpsnd
backend is loaded.
If audin is enabled and no microphone is present the channel
initialization will report an error but it won't cut the connection (as
it did before).
2019-12-30 12:59:14 +01:00
Armin Novak
6e6dfc3e2a Removed rdpsnd client thread
The thread used to process audio data is not really required
and just produces overhead.
2019-12-05 11:40:56 +01:00
Martin Fleisz
71feb974ac
Merge pull request #5739 from akallabeth/improve_function_hiding
Improve function hiding
2019-12-02 11:31:35 +01:00
Armin Novak
7c243da6e1 Remove symbols exported by accident. 2019-12-02 10:57:31 +01:00
Armin Novak
65ebda20dd Fix #5747: Only open output device in rdpsnd for mac. 2019-11-25 08:27:57 +01:00
Armin Novak
72ca88f49c Reformatted to new style 2019-11-07 10:53:54 +01:00
Armin Novak
75ed12f1f0 Fixed userdata pointer and CHANNEL_EVENT_WRITE_CANCELLED message. 2019-11-06 13:01:43 +01:00
Armin Novak
1bcb799560 Listen to CHANNEL_EVENT_WRITE_CANCELLED and emit if queue is cleared. 2019-11-06 13:01:43 +01:00
Armin Novak
1b78b59926 Fixed #4809: Properly process CHANNEL_EVENT_WRITE_COMPLETE 2019-11-06 13:01:43 +01:00
Armin Novak
0c87eaee4d COMMAND_LINE_ARGUMENT structs contain parser results, use one per instance
Remove the old global structs as the parser modifies them. When using
multiple instances in the same process space this could break parsing.
2019-10-28 13:30:05 +01:00
Armin Novak
3ce1dc1972 Fix some warnings on mac os 2019-09-03 13:47:13 +02:00
Armin Novak
1b9e01509d Refactored winmm backend
Using CALLBACK_FUNCTION again, but protect with semaphore to avoid closing
the device while there are still buffers to be played.
2019-09-03 15:11:18 +02:00
Armin Novak
208fbabfde Only close local audio device if rdpsnd thread closes or output format changes.
Windows 7 and other older systems send one close PDU after another.
This distorts audio during setup and teardown of local sound devices.
2019-09-03 15:11:18 +02:00
Armin Novak
48f35972c8 Fixed limit check for wave confirm pdu timestamp. 2019-09-03 15:11:18 +02:00
Armin Novak
f93d625cde Use GetTickCount64 instead of GetTickCountPrecise. 2019-09-02 15:46:36 +02:00
Armin Novak
12b0b9ea28 Do not use named events, they are global! 2019-09-02 15:28:31 +02:00
Armin Novak
40964301df Use CALLBACK_EVENT for waveOutOpen to play synchronously. 2019-09-02 15:11:54 +02:00
kubistika
265e0848ed rdpsnd: subsystems: Add proxy subsystem 2019-08-29 14:39:17 +02:00
kubistika
faa833f97a rdpsnd: client: add rdpContext getter 2019-08-29 14:39:17 +02:00
Armin Novak
52af56d956 Added rdpsnd latency calculation. 2019-08-22 10:11:26 +02:00
Martin Fleisz
30c0127a29
Merge pull request #5510 from akallabeth/mac_realtime_sound
Mac realtime sound
2019-08-14 12:54:54 +02:00
Armin Novak
18e4245791 Added proper latency estimation for winmm sound backend. 2019-08-13 10:55:12 +02:00
Armin Novak
23069d1fe2 Convert input PCM to float format. 2019-08-12 08:13:43 +02:00
Armin Novak
5ffe2eed4e Mostly working AVAudio backend. 2019-08-02 14:00:32 +02:00
Armin Novak
624d895106 Fixed sign issues 2019-04-05 09:22:35 +02:00
Armin Novak
5612cbd8e6 Fixed dead store warnings 2019-04-05 09:14:35 +02:00
akallabeth
0a8ebcfcac
Merge pull request #5187 from astrand/mingw-part1
Mingw build fixes part1
2019-01-29 10:46:21 +01:00
Vic Lee
e2df67ab34 rdpsnd/winmm: remove an unnecessary blocking event. 2019-01-18 17:51:14 +08:00
Peter Åstrand (astrand)
30cd1ba1ab Use lowercase for includes and libs
Makes build possible on case sensitive systems such as MinGW on Linux.
2019-01-09 09:36:28 +01:00
Norbert Federa
af992f4ce1 channels/client: fix alsa/pulse warning and checks
- pa_stream_writable_size() returns (size_t) -1 on error
- fix missing cast in alsa client sound channel code
2018-10-23 09:45:20 +02:00
Armin Novak
fe7a37dcbd Cleaned up resource cleanup for rdpsnd alsa backend. 2018-10-22 14:53:46 +02:00
Armin Novak
3ed50aaca2 Implemented rdpsnd_pulse_get_volume 2018-10-22 13:17:25 +02:00
Armin Novak
9ff17dc0f4 fixed return value check in rdpsnd_recv_volume_pdu 2018-10-22 12:27:19 +02:00
Armin Novak
fb76f88cac Added missing length check and log message information. 2018-10-22 11:59:42 +02:00
Armin Novak
3d49697d19 Improved debug logging for sound device handling. 2018-10-22 10:27:16 +02:00
Armin Novak
ff7e91fed0 Removed unnecessary pulse context check. 2018-10-22 10:18:17 +02:00