codec_builtin.c: G729 audio gets corrupted by Asterisk due to smoother

If Asterisk gets G.729 6-byte VAD frames inbound, then at outbound Asterisk sends this G.729 stream with non-continuous timestamps.
This makes the audio stream not-playable at the receiver side.
Linphone isn't able to play such an audio - lots of disruptions are heard.
Also I had complains of bad audio from users which use other types of phones.

After debugging, I found this is a regression connected with RTP Smoother (main/smoother.c).

Smoother has a special code to handle G.729 VAD frames (search for AST_SMOOTHER_FLAG_G729 in smoother.c).

However, this flag is never set in Asterisk-12 and newer.
Previously it has been set (see Asterisk-11).

ASTERISK-29526 #close

Change-Id: I6f51ecb1a3ecd9c6d59ec5a6811a27446e17065d
remotes/origin/18.6
under 3 years ago committed by George Joseph
parent 016f6a0e14
commit feb1e06ac5

@ -457,6 +457,7 @@ static struct ast_codec g729a = {
.samples_count = g729_samples, .samples_count = g729_samples,
.get_length = g729_length, .get_length = g729_length,
.smooth = 1, .smooth = 1,
.smoother_flags = AST_SMOOTHER_FLAG_G729,
}; };
static unsigned char get_n_bits_at(unsigned char *data, int n, int bit) static unsigned char get_n_bits_at(unsigned char *data, int n, int bit)

Loading…
Cancel
Save