BelledonneCommunications / linphone-sdk

Mirror for linphone-sdk (https://gitlab.linphone.org/BC/public/linphone-sdk.git)
GNU Affero General Public License v3.0
104 stars 80 forks source link

Tick and tick while conference #415

Closed happyfsyy closed 1 month ago

happyfsyy commented 1 month ago

Hello, I have a problem in the process of using Linphone-Android. When I use Linphone to build a three-party conference, I will hear the sound of tick and tick very regularly on the mobile terminal.

I first used the Linphone to dial Yealink's phone, then used the Linphone to dial an external phone number, and finally
added them to the conference.

The conference included three parties: 1.Linphone-Android, no:8301, ip:192.168.6.148 2.Yealink, no:8001, ip:192.168.10.115 3.external mobile phone number: 159xxxxxxxx

When the conference is connected, the external mobile phone will hear a tick tick sound.

My sip server is FreeSwtich, whose ip address is 10.90. To dial the external phone number, I use the gateway connected to Freeswitch, whose ip address is 10.91. I have used Wireshark to capture the whole process, and you can see that this very regular tick, tick sound, is from Linphone-Android.

Here I've uploaded the captured datagrams from the gateway, as well as the sounds the gateway picked up.

The audio image is as follows: image

In addition, this is my Linphone - Android logging: https://www.linphone.org:444//tmp/66a0ac37c45ba_c2aa26a1b847234cecea.gz

This function has tormented me for a long time and greatly affected the user experience. I hope it can be paid attention to, thank you in advance. pcap.tar.gz RecWav11.tar.gz

happyfsyy commented 1 month ago

Hello,@Viish Here is another packet that was also captured on 10.90 using Wireshark.

image

fs.zip

Viish commented 1 month ago

@happyfsyy it's not my area so I won't be the one answering you about this, sorry.

happyfsyy commented 1 month ago

That's OK, @Viish Hope to get your colleague's reply as soon as possible.

happyfsyy commented 1 month ago

Hello, @smorlat @Viish I just found that my problem is very similar to the problem of #329 . I tried your method, the specific code is as follows, but it didn't work.

val config=Factory.instance().createConfigWithFactory(corePreferences.configPath, corePreferences.factoryPath)
config.setString("rtp","use_volumes","0")
corePreferences.config=config

Is there a problem with my code? How should I write?

happyfsyy commented 1 month ago

In addition, I found the problem by capturing the packet through Wireshark, I found that the RTP stream sent by linphone would carry the CSRC, resulting in the size of the entire packet from 220 to 232. I guess that's the problem. How do I deal with it?

smorlat commented 1 month ago

Hi,

The correct code would be something like this:

val config = core.getConfig();
config.setInteger("rtp","use_volumes",0);

where core is your org.linphone.core.Core object. I don't what corePreferences refers to, but probably not a Core object.

Best regards,

smorlat commented 1 month ago

Duplicate of #329 .

happyfsyy commented 1 month ago

Hi,

The correct code would be something like this:

val config = core.getConfig();
config.setInteger("rtp","use_volumes",0);

where core is your org.linphone.core.Core object. I don't what corePreferences refers to, but probably not a Core object.

Best regards,

Hello, @smorlat Sorry, I missed a bit of code. I used this config to create Core.

val config=Factory.instance().createConfigWithFactory(corePreferences.configPath, corePreferences.factoryPath)
config.setString("rtp","use_volumes","0")
corePreferences.config=config
core=Factory.instance().createCoreWithConfig(corePreferences.config,context)
core.start()

And I have also seen it in the file, as shown below: image

However, it still has no effect.

happyfsyy commented 1 month ago

Hi,

The correct code would be something like this:

val config = core.getConfig();
config.setInteger("rtp","use_volumes",0);

where core is your org.linphone.core.Core object. I don't what corePreferences refers to, but probably not a Core object.

Best regards,

I tried it your way, and it didn't work. I think it should be the problem of the CSRC I mentioned above.

smorlat commented 1 month ago

The presence of the CSRC is comes with the RTP volumes.

The property was added in 5.3.19, make sure you use up to date 5.3 version.

commit b5c8bd618d654efcf432cada1f2c6f2d726ae0ec (tag: 5.3.19, fix/enablement-rtp-volumes) Author: Simon Morlat Date: Mon Feb 5 11:35:37 2024 +0100

Add setting to disable RTP volumes, because implementaitons that do not ignore RTP extension headers they do not support.
happyfsyy commented 1 month ago

Hello, @smorlat I upgraded the version and fixed the problem, thank you very, very much. If you have a moment, could you please look at the question #414 again.