Added microphone redirection #727

Merged
merged 2 commits into from Jan 17, 2016

Projects

None yet

3 participants

@akallabeth
Contributor

No description provided.

@antenore
Member

I'm testing it.

@antenore
Member

Armin, it doesn't work, but I don't have a good testing environment, so I don't know if it's my """fault""" or the patch. At the moment I cannot merge it, I'll wait your comments.

BTW, I added you to the authors list 4b4d828 welcome on board :-)

@akallabeth
Contributor

@antenore Thx, glad to be of help :)
I've retested and indeed, there seems to be an issue occurring only sometimes here :/
Maybe the better approach is to get rid of the custom channel loading and initialization altogether and just use freerdp_client_settings_parse_command_line_arguments and freerdp_channels_client_load.

@giox069
Contributor
giox069 commented Jan 17, 2016

@akallabeth: I can't see microphone too, but it seems to be a freerdp problem: I tried

xfreerdp /v:host /u:user /d:domain /sound /microphone

but I have no remote microphone. My suspect is that we are compiling xfreerdp without some important library or cmake flag... any suggestion ?

@akallabeth
Contributor

@giox069 Well, embarrassing, committed the microphone flag inverted ;) deactivate it and it works...
Should be fixed with the latest commit.

As for FreeRDP I use cmake -DWITH_PULSE=ON .

@akallabeth
Contributor

@giox069 As for the server part, check if microphone redirection is enabled there, could be disabled by policy.

@akallabeth
Contributor

@giox069 @antenore Tested with the latest commit, microphone redirection is activated now when checked (and not inverted). Win8.1 server works, could not get it to work with win7 though, but that is not important for remmina, more of a freerdp thing.

@akallabeth akallabeth Fixed rdp_file.c support for microphone.
Fixed inverted microphone settings read.
48b6fbb
@giox069 giox069 merged commit d360ab1 into FreeRDP:next Jan 17, 2016
@giox069
Contributor
giox069 commented Jan 17, 2016

Tested, worked, merged.
Some notes:

  1. In windows 10 you need to enable the policy "Allow audio recording redirection" (I used gpedit.msc). Changes are immediate, you don't need to logoff or reboot to see the microphone.
  2. In windows 7 you need to enable the policy, but sometimes it works, sometimes not.
  3. I have a machine with two microphones, but only the one is remotized, which seems to be a "mix" of all two micrphones. Is it right ?
  4. If a user does not enable remote audio on the remmina profile preferences, the microphone will not work. So @antenore, we should avoid enabling the microphone checkbox when remote audio is not enabled, if possible.
  5. The address saintizer (-DWITH_GCC_SANITIZE_ADDRESS=on in Remmina and -DWITH_SANITIZE_ADDRESS=on in FreeRDP) complains for a lot of memory leaks in FreeRDP library when audio is enabled. And now, with microphone enabled, there is also a "heap-use-after-free" error:
==7083==ERROR: AddressSanitizer: heap-use-after-free on address 0x61100014f1b0 at pc 0x7f16d506c667 bp 0x7f16989423c0 sp 0x7f16989423b0
READ of size 8 at 0x61100014f1b0 thread T46 (threaded-ml)
    #0 0x7f16d506c666 in drdynvc_send /home/giovanni/remmina_devel/FreeRDP/channels/drdynvc/client/drdynvc_main.c:709
    #1 0x7f16d506cddc in drdynvc_write_data /home/giovanni/remmina_devel/FreeRDP/channels/drdynvc/client/drdynvc_main.c:767
    #2 0x7f16d506a013 in dvcman_write_channel /home/giovanni/remmina_devel/FreeRDP/channels/drdynvc/client/drdynvc_main.c:410
    #3 0x7f16d50adeb4 in audin_send_incoming_data_pdu /home/giovanni/remmina_devel/FreeRDP/channels/audin/client/audin_main.c:139
    #4 0x7f16d50afee2 in audin_receive_wave_data /home/giovanni/remmina_devel/FreeRDP/channels/audin/client/audin_main.c:320
    #5 0x7f16d516ee76 in audin_pulse_stream_request_callback /home/giovanni/remmina_devel/FreeRDP/channels/audin/client/pulse/audin_pulse.c:355
    #6 0x7f16d3f4ab85  (/usr/lib/x86_64-linux-gnu/libpulse.so.0+0xeb85)
    #7 0x7f16d37d865e  (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so+0x3c65e)
    #8 0x7f16d37da9c3  (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so+0x3e9c3)
    #9 0x7f16d3f5fe86 in pa_mainloop_dispatch (/usr/lib/x86_64-linux-gnu/libpulse.so.0+0x23e86)
    #10 0x7f16d3f6028b in pa_mainloop_iterate (/usr/lib/x86_64-linux-gnu/libpulse.so.0+0x2428b)
    #11 0x7f16d3f6032f in pa_mainloop_run (/usr/lib/x86_64-linux-gnu/libpulse.so.0+0x2432f)
    #12 0x7f16d3f6e475  (/usr/lib/x86_64-linux-gnu/libpulse.so.0+0x32475)
    #13 0x7f16d37ea4d7  (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-6.0.so+0x4e4d7)
    #14 0x7f16e74846a9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76a9)
    #15 0x7f16e63f7eec in clone (/lib/x86_64-linux-gnu/libc.so.6+0x106eec)

Thank you again @akallabeth

@akallabeth akallabeth deleted the akallabeth:microphone_support branch Jan 17, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment