Browse Source

MT#55283 ignore G.729 fmtp

closes #1971

Change-Id: Ide2577b76de1f26844a9c73e169bcad96ee2a90e
rfuchs/1971
Richard Fuchs 5 months ago
parent
commit
799830902e
2 changed files with 13 additions and 23 deletions
  1. +2
    -19
      lib/codeclib.c
  2. +11
    -4
      t/auto-daemon-tests.pl

+ 2
- 19
lib/codeclib.c View File

@ -312,7 +312,6 @@ static const dtx_method_t dtx_method_evs = {
#ifdef HAVE_BCG729
static packetizer_f packetizer_g729; // aggregate some frames into packets
static format_cmp_f format_cmp_g729;
static void bcg729_def_init(struct codec_def_s *);
static const char *bcg729_decoder_init(decoder_t *, const str *);
@ -463,7 +462,7 @@ static struct codec_def_s __codec_defs[] = {
.default_ptime = 20,
.minimum_ptime = 20,
.default_fmtp = "annexb=yes",
.format_cmp = format_cmp_g729,
.format_cmp = format_cmp_ignore,
.packetizer = packetizer_g729,
.bits_per_sample = 1, // 10 ms frame has 80 samples and encodes as (max) 10 bytes = 80 bits
.media_type = MT_AUDIO,
@ -482,7 +481,7 @@ static struct codec_def_s __codec_defs[] = {
.default_ptime = 20,
.minimum_ptime = 20,
.default_fmtp = "annexb=no",
.format_cmp = format_cmp_g729,
.format_cmp = format_cmp_ignore,
.packetizer = packetizer_g729,
.bits_per_sample = 1, // 10 ms frame has 80 samples and encodes as (max) 10 bytes = 80 bits
.media_type = MT_AUDIO,
@ -3632,22 +3631,6 @@ static int packetizer_g729(AVPacket *pkt, GString *buf, str *input_output, encod
input_output->len = output.s - input_output->s;
return buf->len >= 2 ? 1 : 0;
}
static bool g729_is_annex_b(const struct rtp_payload_type *p) {
// defaults based on codec name (G729 vs G729a)
bool annex_b = p->encoding.len && !((p->encoding.s[p->encoding.len - 1] & 0xdf) == 'A');
// override per fmtp
if (str_str(&p->format_parameters, "annexb=no") != -1)
annex_b = false;
else if (str_str(&p->format_parameters, "annexb=yes") != -1)
annex_b = true;
return annex_b;
}
static int format_cmp_g729(const struct rtp_payload_type *a, const struct rtp_payload_type *b) {
bool a_b = g729_is_annex_b(a);
bool b_b = g729_is_annex_b(b);
return a_b == b_b ? 0 : -1;
}
#endif


+ 11
- 4
t/auto-daemon-tests.pl View File

@ -1169,10 +1169,12 @@ v=0
o=- 1737116508926565 1737116508926565 IN IP4 5.6.7.7
s=SIP call
t=0 0
m=audio PORT RTP/AVP 8 0 100
m=audio PORT RTP/AVP 8 0 18 100
c=IN IP4 203.0.113.1
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:100 telephone-event/8000
a=fmtp:100 0-11
a=sendrecv
@ -1230,10 +1232,11 @@ v=0
o=- 1737116508926565 1737116508926565 IN IP4 5.6.7.7
s=SIP call
t=0 0
m=audio PORT RTP/AVP 8 0 100
m=audio PORT RTP/AVP 8 0 18 100
c=IN IP4 203.0.113.1
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729a/8000
a=rtpmap:100 telephone-event/8000
a=fmtp:100 0-11
a=sendrecv
@ -1291,10 +1294,12 @@ v=0
o=- 1737116508926565 1737116508926565 IN IP4 5.6.7.7
s=SIP call
t=0 0
m=audio PORT RTP/AVP 8 0 100
m=audio PORT RTP/AVP 8 0 18 100
c=IN IP4 203.0.113.1
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729a/8000
a=fmtp:18 annexb=no
a=rtpmap:100 telephone-event/8000
a=fmtp:100 0-11
a=sendrecv
@ -1352,10 +1357,12 @@ v=0
o=- 1737116508926565 1737116508926565 IN IP4 5.6.7.7
s=SIP call
t=0 0
m=audio PORT RTP/AVP 8 0 100
m=audio PORT RTP/AVP 8 0 18 100
c=IN IP4 203.0.113.1
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729a/8000
a=fmtp:18 annexb=no
a=rtpmap:100 telephone-event/8000
a=fmtp:100 0-11
a=sendrecv


Loading…
Cancel
Save