Also add a safeguard against filling the remote peer address with an
address from the wrong family
closes#1305
Change-Id: Iac18212b4d526a2f7d49a06ddcd724aa89b06060
(cherry picked from commit 124d89ade0)
This restores backwards compatibility with existing code parsing the
output, e.g. Kamailio to report MOS stats.
Change-Id: Ibafb2a7a3cf118166ffe1cca9a62a06b63252944
(cherry picked from commit c06c51ded4)
If encoder_config errors out for some reason, avpkt may end up
uninitialised. Make sure there is an avpkt when flushing/closing the
encoder. Also make the encoder input more resilient against
half-initialised encoders for the same reason.
closes#1312
Change-Id: I44ebcf6e35f1c383aa5c8202b5d9bbf968b0d5f1
(cherry picked from commit 6e160da497)
This fixes a race condition: Peer sends updated SDP with new address,
but an older RTP packet from the old address is received afterwards.
Thsi triggers learning of this old address is the "correct" endpoint.
Afterwards the peer stops sending RTP until a packet to the new endpoint
is received there, which never happens because the new endpoint has been
discarded in favour of the "learned" old one.
closes#817
Change-Id: I508f465a669f03e35ddcc6e770d5e7859e57569f
(cherry picked from commit 45bd10d323)
Perform reverse SSRC mapping even if output media is not known, and use
the appropriate media side when looking up SSRCs for received RTCP
timestamps.
closes#1298
Change-Id: Ifa5a982163bf7b0510ffc2a92ae25995d1adb888
(cherry picked from commit 93377588ad)
This solves problems when the same SSRC is looped through the same call
multiple times in different mono/dialogues, with different parameters.
Change-Id: I1d033cb1f012574d82b5bcbfffe11eb5f983cfd8
(cherry picked from commit 256b9917ec)
Transcoding should not be decided based on the name of the codec alone,
but primarily on the payload type. First the PT needs to be compared,
then the codec type must be confirmed.
closes#1289
Change-Id: I1a8bffc6d521443aba14d9b4cf1ad4d1e21f1226
(cherry picked from commit f2d7372f5a)
GLib 2.68 deprecates g_memdup() in favour of g_memdup2() as the former
was using a guint second argument which could lead to integer overflows
(gsize should be used instead).
Change-Id: Iaa3e3b1ecaab00d1ac887c915397b15b7204dd11
This makes sure all objects are cleaned up during shutdown even if the
respective timer hasn't run yet.
Change-Id: I197b930f1b6e407819cc5a8c4ebd92fcef21b2cd
Some codec handlers hold references to objects held within the
statistics hash table, therefore we must free the statistics after all
codec handlers have been released.
Change-Id: I3832dbeeaaf21d4a82be2dc2c842718415fd46f7
Recent ffmpeg versions have removed AVPacket from the public ABI,
therefore deprecating av_init_packet on statically allocated objects.
The replacement is av_packet_alloc()/av_packet_free().
Change-Id: I5f93fbd19e43413c3328e143cc9147fbdf12d910
The glib macro for g_atomic_pointer_get() uses typeof() with an
intermediate variable, resulting in a stray compiler warning if the
argument uses `const` as the intermediate variable also ends up being
const. Use an extra non-const intermediate variable to work around this.
closes#1270
Change-Id: I3bf1404240d3b8571aaf40c38b524f578e0fdbd9