I have:
Calling between Android and Android (Signal version 4.6.1) is prone to frequent audio degradation, heard from both sides.
Calling between Android and Iphone (using all the below referenced Androids and Iphones) is prone to frequent audio degradation, only heard from Iphone side.
Calling between Iphone and Iphone is always ok, both sides (tested on Iphone SE, Iphone 6s, Iphone 7p, all with Signal 2.12.2).
See also #6708. This one is almost a duplicate... the fact is that the audio degrading happens always,
its only more prominent when there is audio level above thresold on both sides.
Actual result: frequent audio degradation in both Android sides in Android <-> Android call,
frequent audio degradation heard only in Iphone sides in Android <-> Iphone call
Expected result: call audio quality should not degrade
Device 1: BlackBerry KEYone
Android version: 7.1.1
Signal version: 4.6.1
Device 2: Sony Xperia X Compact
Android version: 7.0
Signal version: 4.6.1
Here are the logs of a call from Sony X Compact to BlackBerry KEYone,
with frequent audio degradation, both sides.
Sony X Compact:
https://gist.github.com/fe9f35e303d50902d44df910a665b487
BlackBerry KEYone:
https://gist.github.com/44861948bc656b51e5ee1fa6e0cbde8a
We probably can't support the BB device, but did this start happening recently on your other Android device or has it always been like that?
Hi, this BB device [KEYone] has Android Nougat 7.1.1 as OS, its not an Android runtime only, like BB10 devices.
Anyway the call degrading is here also if, e.g., as I wrote in "bug description", there is a call
between the Sony X Compact and an Iphone: in this case (exactly as with the BB, and other Android phones too I have), the degrading is heard only from the Iphone side.
I'd describe the degrading as audio level variation, and some kind of phase distortion,
but its really audible, not subtle.
Today I tried also other Android phones, and the problem is there, too.
If useful I can create other debug logs.
I dont remember exactly when its started, I'd say some weeks, but I nailed the malfunction only some days ago, maybe because the people I was talking to all have Iphones, and likely they was afraid to notify me of the bad audio quality, until 2 days ago.
I, because I was calling from Android side, was always hearing them perfectly.
I think we may have to revert 3fd5e58bd5f259c8993c53ed2639b59382095a37
Ah, the timing is coherent with my finds...
So, back to blacklisting Nexus 5 etc, it seems more fair :)
FWIW, I have also experienced this issue on my Pixel XL, with two Pixel XLs trying to have audio and video chat and other combos:
Audio degrades/becomes choppy almost immediately on my phone. Unfortunately it has made Signal audio/video chat unusable鈥攚hich is too bad, as the initial move to Opus/videochat had worked amazingly well on earlier versions.
Haven't generated debug logs before but I'd be happy to if it would help diagnose.
@moxie0 didn't you say it is recommended to disable OpenSL ES by Default by webrtc?
I do alot of test's with Signal and my devices and did not have this problem. But maybe it is all up to the devices. Nexus 6P (CopperheadOS), Samsung S6, Nexus 5, Ipod Touch.
That's what the reference webrtc app does and was recommended by a webrtc engineer, but the Android audio subsystem is incredibly fickle from device to device, and webrtc isn't really built with Android in mind. Not using OpenSL ES seems to be causing problems.
Before reverting that change, though, I've just published 4.7.0 to the beta channel. It includes an update to webrtc M59, so in the interest of only changing one thing at a time, it'd be great if people who can reproduce this like @bl-kl2 or @acityinohio could check and see if it's still an issue in the 4.7.0 beta. Thanks!
Ok great, I'll try beta 4.7.0 and then will report results here.
Tried 4.7.0.
No, the issue is still here.
To be more accurate, making an example:
Let's assume we have Iphone calling Android or vice versa.
Android always hears perfectly the audio from Iphone, also with high level ambient noise on Android side.
On the Iphone side, if the audio level of ambient noise there is above a thresold, then the quality of the audio Signal call heard there degrades immediately.
Moreover, also without ambient noise, or better, very low ambient noise, the call quality heard on Android side is clearly better than on Iphone side.
In Android <-> Android case, the "degrading when ambient noise is above thresold" happens equally on both sides.
Of course, speaking in the mic is a case of "ambient noise above thresold".
So... is maybe the issue echo-cancellation related?
Just tried Signal 4.6.1 also on 2 random picked android phones I have here, Alcatel Pixi 5010D [Marshmallow 6.0] and Hisense D2-F [Lollipop 5.1].
Same issue as with the phones above (KEYone with beta Signal 4.7.0 and X Compact with Signal 4.6.1).
So, to resume:
all these Android phones exhibit the same, above referenced, behaviours,
when calling each other and when calling an Iphone SE, 6s, 7p, with Signal 2.12.2, iOS 10.3.2
BlackBerry KEYone [Nougat 7.1.1] - Signal 4.6.1 and beta 4.7.0
Sony Xperia X Compact [Nougat 7.0] - Signal 4.6.1
Alcatel Pixi 5010D [Marshmallow 6.0] - Signal 4.6.1
Hisense D2-F [Lollipop 5.1] - Signal 4.6.1
@bl-kl2 Thanks, can you try this APK? It leaves OpenSL ES disabled, but no longer disables hardware AEC: https://mega.nz/#!F4d1zShS!Olio7vYkwky2rDlDnNOuIuV_2hvEGCQtbqUT0w8Xx7M
Hi, just tried this Signal-aec-test.apk on the device with Signal beta 4.7.0,
and now its working perfectly!
No more audio degradation / silence at all, also when speaking loud in the mic.
Done 4 calls, 4-5 minutes each one.
Now I'm curious to try it also with the other devices on 4.6.1.
Ok, tried the AEC-hardware-enabled apk also with the other phones, here are the results:
BlackBerry KEYone [Nougat 7.1.1] - Signal beta 4.7.0 -> OK
Sony Xperia X Compact [Nougat 7.0] - Signal beta 4.7.0 -> OK
Alcatel Pixi 5010D [Marshmallow 6.0] - Signal 4.7.0 -> NOT OK
Hisense D2-F [Lollipop 5.1] - Signal 4.7.0 -> NOT OK
All the "OK" and "NOT OK" mean tried calling both Android and Iphone, see above.
That makes sense, I think, since the non working phones are cheap ones, and so presumably the hardware echo-cancellation is not working well or absent... but I dont know for sure.
BTW, since I was there, all the phones listed dont suffer by #6356, except for the KEYone, which rings for just 1/4 second, then continues on earpiece.
Thanks @bl-kl2 could you also try the same devices with this APK? https://mega.nz/#!4gU31BoR!HiShNYAkJL4R_c_Jsp63_sd3a5BD545byHgb7lKcrRY
It has hardware AEC off, but OpenSL ES on. Thanks for doing all this testing!
Sorry for the delay @moxie0 @bl-kl2. I just tested the latest APK you added @moxie0 and the sound came through without degradation! Sideloaded the APK onto the two Pixel XLs for which I have access, and tried both audio and video calls, and the quality was stellar. Unfortunately don't have access to the Nexus 5x and iPhone 6 (they're both external parties).
Ok, I'm trying now Signal-test-opensles.apk on all the devices...
@acityinohio, did you try both the AEC-enabled and OpenSLES-enabled apks?
Tried extensively (both Android <-> Android and Android <-> Iphone cases) Signal-test-opensles.apk [hardware AEC _off_, OpenSL ES _on_]:
on all the 4 devices, the audio degradation / silence issue is present.
I'd say that its maybe a bit less pronounced, in K1 and X Compact, vs "stock" Signal 4.6.1, but there is a huge difference, in call quality,
between this apk and the previous [hardware AEC _on_, OpenSL ES _off_].
With hardware AEC _on_ and OpenSL ES _off_ I should add that the K1 needs 2-3 seconds, at the start of the call, to function 100% properly, while the X Compact is 100% ok from the start,
but its tolerable.
The SOCs are Qualcomm Snapdragon 625 for the K1, and Qualcomm Snapdragon 650 for the X Compact.
I know its already being discussed in #6241...
I'd vote too for an advanced option (only if developer mode is active? or, instead, a warning...) to enable hardware AEC.
The difference between hardware AEC yes/no in audio quality on these 2 phones, I must add, apart from the total degradation /silence when noise is above thresold, is really noticeable.
P.S. just read @deano2390 comment on #6241 about hardware AEC and webrtc...
so it seems possible that the 2 devices above [Alcatel and Hisense], on which the hardware AEC enabling apk didnt work, _do_ have hardware AEC, but maybe webRTC is messing things?
Anyway, the audio quality improving on the 2 other devices is huge.
Tried again back and forth with and without it, the difference is "almost unusable" vs "hi-res call".
@acityinohio Thanks it would be great if you could also test the first APK (https://mega.nz/#!F4d1zShS!Olio7vYkwky2rDlDnNOuIuV_2hvEGCQtbqUT0w8Xx7M) since it seems like that might be the direction we're headed in.
Ah sure thing @moxie0! Just installed the first APK on the two Pixel XLs and the audio quality is also much improved...both versions seemed to work for me, but maybe it's something particular to Pixels (as it sounds like @bl-kl2 was facing issues with the second APK while it was still a big improvement relative to 4.6.0 for me).
Tried today the 2 APKs also with a Samsung A3 2017 [Marshmallow 6.0.1]:
AEC _on_ and OpenSL ES _off_ -> OK
AEC _off_ and OpenSL ES _on_ -> NOTOK
1st APK makes calls from android to iPhone okay when inside, but still no match for an iPhone to iPhone connection. Any ambient noise kills quality when using both of those apk's in outside conditions.
@Nubzori On which phones?
I've noticed that hardware AEC enabling APK doesnt work on all devices (see above),
but for the above working devices its more than ok also with ambient noise, except for some initial seconds on BB K1.
Moreover, I've also noticed that, in some cases, having the phone near to face (thus activating the proximity sensor) seems to trigger the hardware AEC in a better way.
The 2nd APK on the other side is not working.
@bl-kl2 I'm using Pixel XL, it was a little windy outside and I tried both .apk's on the fly and we were unable to interpret each other, only after I came inside the 1st .apk started to work decently.
Thanks @acityinohio just to confirm, you didn't notice any echo (on call without a headset)?
That's correct @moxie0; didn't notice any echo, and quality of the call was superb.
This should all be codified in the 4.7.1 beta.
Most helpful comment
That's what the reference webrtc app does and was recommended by a webrtc engineer, but the Android audio subsystem is incredibly fickle from device to device, and webrtc isn't really built with Android in mind. Not using OpenSL ES seems to be causing problems.
Before reverting that change, though, I've just published 4.7.0 to the beta channel. It includes an update to webrtc M59, so in the interest of only changing one thing at a time, it'd be great if people who can reproduce this like @bl-kl2 or @acityinohio could check and see if it's still an issue in the 4.7.0 beta. Thanks!