Commit Graph

66 Commits

Author SHA1 Message Date
Armin Novak
f89c1857b9 Rewrite of sound and microphone channels
The sound and microphone redirection channels (and in part TSMF)
did not properly decouple encoding/decoding from the backends used
to play/record sound.
Encapsulating encoding/decoding in rewritten freerdp_dsp_* functions
with variable backends, simplifying alsa/oss/pulse/... audio backends.
2018-04-05 13:14:16 +02:00
Armin Novak
2517755d25 Fixed thread function return and parameters. 2018-03-07 14:36:55 +01:00
Armin Novak
0490aeb018 Fixed clang malloc integer overflow warnings. 2017-07-20 09:29:48 +02:00
joy.you
073e856d9a dead lock fixed
As ffmpeg decoder does not have stream->decoder->BufferLevel,So
stream->currentBufferLevel is always equal 1
2017-02-20 16:54:51 +08:00
Ilya Shipitsin
12f5368819 make cppcheck even more happier:
[channels/tsmf/client/gstreamer/tsmf_X11.c:317] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:322]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/gstreamer/tsmf_X11.c:470] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:475]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/gstreamer/tsmf_X11.c:472] -> [channels/tsmf/client/gstreamer/tsmf_X11.c:475]: (warning) Either the condition '!decoder' is redundant or there is possible null pointer dereference: decoder.
[channels/tsmf/client/tsmf_media.c:179] -> [channels/tsmf/client/tsmf_media.c:181]: (warning) Either the condition '!stream' is redundant or there is possible null pointer dereference: stream.
[client/Windows/wf_cliprdr.c:2219] -> [client/Windows/wf_cliprdr.c:2222]: (warning) Either the condition '!formatDataResponse' is redundant or there is possible null pointer dereference: formatDataResponse
[client/Windows/wf_cliprdr.c:2445] -> [client/Windows/wf_cliprdr.c:2448]: (warning) Either the condition '!fileContentsResponse' is redundant or there is possible null pointer dereference: fileContentsResponse.
[client/X11/xf_cliprdr.c:911] -> [client/X11/xf_cliprdr.c:913]: (warning) Either the condition '!clipboard' is redundant or there is possible null pointer dereference: clipboard.
[client/X11/xf_graphics.c:504] -> [client/X11/xf_graphics.c:506]: (warning) Either the condition '!xfc' is redundant or there is possible null pointer dereference: xfc.
[libfreerdp/core/transport.c:861] -> [libfreerdp/core/transport.c:863]: (warning) Either the condition '!transport' is redundant or there is possible null pointer dereference: transport.
[server/shadow/shadow_server.c:777] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:778] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:779] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:781] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:782] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:783] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:784] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:785] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:787] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
[server/shadow/shadow_server.c:789] -> [server/shadow/shadow_server.c:791]: (warning) Either the condition '!server' is redundant or there is possible null pointer dereference: server.
2017-01-26 14:44:19 +05:00
Armin Novak
99420423cf Fixed warnings due to API changes. 2017-01-18 12:39:40 +01:00
Armin Novak
0f3dcc2765 Merge branch 'patch-2' of https://github.com/AMV007/FreeRDP into AMV007-patch-2
Conflicts:
	channels/tsmf/client/tsmf_ifman.c
	channels/tsmf/client/tsmf_media.c
2017-01-17 10:03:05 +01:00
Norbert Federa
f71b6b46e8 fix string format specifiers
- fixed invalid, missing or additional arguments
- removed all type casts from arguments
- added missing (void*) typecasts for %p arguments
- use inttypes defines where appropriate
2016-12-16 13:48:43 +01:00
Norbert Federa
c6e6b44143 countless WLog/printf format specifier fixes 2016-11-25 17:06:25 +01:00
Marc-André Moreau
dee76617d9 channels: remove thread-local storage usage 2016-11-15 11:41:01 -05:00
Armin Novak
5211bc058b Fixed NULL dereferences. 2016-10-19 11:11:36 +02:00
Armin Novak
9f5da483dc Reformatted files touched in last 2 commits. 2016-10-06 13:43:12 +02:00
Armin Novak
88a3b8dd76 Initializing channel context in each thread. 2016-10-06 13:43:12 +02:00
Armin Novak
539be1f9a5 Fixed unsigned underflow. 2016-02-03 11:30:15 +01:00
bjcollins
9b2d5ce849 Fix logic with stream syncing as the sync offset was not always calculated correctly, which could result in video playback freezing.
Fixed formatting of some tsmf debugging timestamps so they are readable/usabe.
2015-09-17 16:20:08 -05:00
bjcollins
d9754703f4 Fixed memory leak in tsmf_send_eos_response() function
Correctly handled tsmf geometry updates with no rects = tsmf window should not be shown
Add more X Display locking to tsmf gstreamer X11 module
2015-09-17 16:20:08 -05:00
bjcollins
ca097e7363 Fix minor issues with the previous tsmf commits. 2015-09-17 16:20:08 -05:00
bjcollins
8d692995d6 tsmf gstreamer fixes
- Update patch based on feedback
- Fix gstreamer 1.0 compatibility/build issue from first patch
2015-09-17 16:20:08 -05:00
bjcollins
e8704544f4 - Use decodebin2 instead of old decodebin - decodebin has issues
- Use autovideosink - xvimagesink does not work with cards with no xv ports available and cant be used if wanted to use the fluendo hardware accelerated playback codec
- Use autoaudiosink - let gstreamer choose best audio playback plugin
- Catch when autosinks add known elements so that we can manipulate properties on them
- Adjust caps of various media types to work better with gstreamer, some codecs are picky about having certain fields available
- Remove unneeded plugins such as "ffmpegcolorspace" and "videoscale" - these do not work correctly with fluendo hardware accelerated playback codec
- Name audio/video gstreamer elements better for easier debugging
- Update gstreamer pipeline and element properties to handle playback better
- Detect when valid timestamps are available for buffer from server and try to account for when they are not valid
- Start time is much more reliable then end time from server for various media formats, so use it when possible to make decisions instead of end time
- Do not rebuild gstreamer pipeline for a seek(very expensive), instead reset gstreamer time to 0 and maintain offset between real time and gstreamer time
- Change buffer filled function back to a buffer level function, so that we can use buffer level to make better choices above gstreamer decoder in tsmf
- Remove ack function from gstreamer, instead rely on ack thread to handle acks
- Rework X11 gstreamer code to handle various videosinks which implement the XOverlayInterface and to keep more detailed information on the sub-window that is used for display
- Add check to see if a decoder is available for telling the server the client various media types
- Add in support for M4S2 and WMA1 media types
- Fix flush message handling, they are for individual streams and not the entire presentation
- Delay eos response to try to allow more time for buffers to be loaded into decoder, as we anticipate acks to server and the server will issue stop as soon as we ack eos.
- Fix issue with geometry info being ignored when resent for new streams within existing presentation
- Fixed volume level initialization issue when a stream is stopped and restarted
- Attempt to sync video/audio streams...because we run two different gstreamer pipelines - they can enter pause/playing states at different times and are thus not synchronized. Attempt
to adjust video buffer timestamps based on difference between audio/video running time to account for this difference. This logic accounts for a huge improvement in audio/video sync(ie. lip sync to words)
2015-09-17 16:20:08 -05:00
Martin Haimberger
52405a3e79 Remove WIN32ERROR type
All return values are UINT now.
2015-08-27 05:38:20 -07:00
Martin Haimberger
65fd259610 misc fixes:
fixed all bugs from the review
checking all WaitFor*Object/s calls
2015-07-30 06:49:21 -07:00
Martin Haimberger
6ab0187d84 Merge remote-tracking branch 'upstream/master' into mh-channel
Conflicts:
	channels/audin/client/oss/audin_oss.c
	channels/drive/client/drive_main.c
	channels/printer/client/printer_cups.c
	channels/printer/client/printer_main.c
	channels/rail/client/rail_main.c
	channels/rdpgfx/client/rdpgfx_main.c
	channels/rdpsnd/client/oss/rdpsnd_oss.c
	channels/remdesk/client/remdesk_main.c
	channels/remdesk/server/remdesk_main.c
	channels/tsmf/client/tsmf_media.c
2015-07-15 01:57:07 -07:00
Martin Haimberger
b8c110d19b introduced channel error reporting system
The rdpContext gets an event which will
get set if an error occoured in a channel.

If a thread or a void callback has to report an
error it will get signaled by this system.
2015-07-15 00:50:35 -07:00
Armin Novak
cf9f975341 Replaced snprintf with sprintf_s 2015-07-03 13:26:15 +02:00
David FORT
ea679b2d8b Hardened TSMF channel
This patch adds some checks for the TSMF channel:

* checks malloc / calloc / strdup / _strdup return value
* checks for available bytew before reading in a stream
2015-07-02 14:32:05 +02:00
Marc-André Moreau
ddf2519f1e Merge pull request #2719 from bmiklautz/pull/2481
OSS, tsmf, usb and BSD fixes and improvements
2015-06-26 08:27:22 -04:00
Norbert Federa
8e70012d65 tsmf: fix invalid check and a potential segfault
This resuscitates tsmf which was accidently broken in commit f8120919
2015-05-28 10:49:38 +02:00
ivan-83
94a7abd2af + tsmf: OSS initial suppot (not work yet)
* tsmf: fix video playback on FreeBSD (proper shared object name)
* tsmf: renamed args: audio->sys, audio-dev->dev
* audin: OSS fix, now it work
* cmdline: add syntax help for /audin, /rdpsnd, /tsmf
* add debug messages
2015-05-27 22:54:13 +03:00
Hardening
f8120919af Add checks for some XXX_New and XXX_Add functions
Based on PR #2616
2015-05-18 11:28:00 +02:00
Maxim
ed89fc7861 coding style update 2015-05-14 16:57:37 +03:00
Norbert Federa
1eff1a345e free can handle NULL perfectly fine 2015-05-11 09:07:39 +02:00
Maxim
be7ff45a52 fixed crash at mediaplayer closing, fixed tsmf event parameters-no video, fixed tsmf no audio. 2015-04-17 12:14:30 +03:00
Maxim
26c054d7a4 fixed - detect realloc failed and return if calloc failed 2015-04-15 17:42:54 +03:00
Maxim
f3a1fe544e fixed-check for calloc return memory 2015-04-15 14:08:51 +03:00
Maxim
87eae4a49b fixed crash at mediaplayer closing, fixed tsmf event parameters-no video
freerdp crashed at media player closing windows 2008R2
no tsmf video output at test video sample about bunny.
all this fixed.
2015-04-15 11:29:27 +03:00
tagunil
45ea141974 tsmf: free frame data after processing 2015-03-26 13:38:09 +03:00
Zhang Zhaolong
b8de622b90 tsmf: fix incorrect usage of realloc.
Signed-off-by: Zhang Zhaolong <zhangzl2013@126.com>
2015-03-11 11:04:36 +08:00
Marc-André Moreau
ee7299ec3f channels/tsmf: remove dependency on deprecated eventing system 2014-11-10 16:33:34 -05:00
Marc-André Moreau
edd4aa797c xfreerdp/tsmf: migrate to callback interface 2014-11-10 16:23:04 -05:00
Marc-André Moreau
129582e67f channels/tsmf: cleanup 2014-11-10 14:02:54 -05:00
Marc-André Moreau
a6bb185760 channels/tsmf: add new callback interface 2014-11-07 18:33:45 -05:00
Armin Novak
be28b068a8 Changed log level. 2014-09-16 09:45:48 +02:00
Armin Novak
b1e9ffb655 Using wlog for channel logging now.
Fixed compiler warnings and broken callback in urbdrc.
2014-09-15 08:48:46 +02:00
Armin Novak
66b8905ac6 Using special log defines for channels now. 2014-08-11 09:12:01 +02:00
Armin Novak
50e5338f76 Added equality check for update rendering area. 2014-05-24 22:58:54 +02:00
Armin Novak
00c205cb84 Fixed busy loop. 2014-05-24 15:55:55 +02:00
Armin Novak
46fed926ae Refactored and simplified stream and presentation layer. 2014-05-23 13:50:52 +02:00
Marc-André Moreau
fb3f5e6bd2 libfreerdp-utils: purge deprecated list utils 2014-04-26 12:31:24 -04:00
Daniel Bungert
c95b5c49a6 Assorted tsmf and gstreamer fixes:
* tsmf audio volume fixes
  * The first audio volume message is received before everything is
    initialized.  Cache this data until we're ready.
  * Handle the cases of gstreamer unitialized/partially ready/
    fully ready.
  * Default to 50% as a fallback if the above fails.
* Improved detection of the primary monitor.
* Fix an unexpected shutdown when the server asks us to resize the media
  overlay to (width=0,height=0).
* Permit multiple presentations - required for repeat of audio files
  and also is seen in some video cases.
* Several leak fixes.
* Fix logging related compile warnings and other usage of PRIu64.
2013-06-19 12:33:46 -04:00
Marc-André Moreau
3417a3aab5 freerdp: merge RDP_EVENT type with wMessage 2013-03-28 21:13:56 -04:00