|
|
|
|
@ -130,7 +130,7 @@ static void __expect(const char *file, int line, GQueue *dumper, const char *cod
|
|
|
|
|
printf("received: %s\n", s->str);
|
|
|
|
|
abort();
|
|
|
|
|
}
|
|
|
|
|
printf("test ok: %s:%i\n", file, line);
|
|
|
|
|
printf("test ok: %s:%i\n\n", file, line);
|
|
|
|
|
g_string_free(s, TRUE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -200,7 +200,17 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
|
|
|
|
|
memcpy(mp.payload.s, pl.s, pl.len);
|
|
|
|
|
mp.raw.s = packet;
|
|
|
|
|
mp.raw.len = packet_len;
|
|
|
|
|
printf("send RTP SSRC %x seq %u TS %u PT %u\n", (unsigned int) ssrc,
|
|
|
|
|
(unsigned int) rtp_seq, (unsigned int) rtp_ts, (unsigned int) pt_in);
|
|
|
|
|
printf("send packet contents: ");
|
|
|
|
|
for (int i = sizeof(struct rtp_header); i < mp.raw.len; i++) {
|
|
|
|
|
unsigned char cc = mp.raw.s[i];
|
|
|
|
|
printf("\\x%02x", cc);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
|
|
h->func(h, &mp);
|
|
|
|
|
|
|
|
|
|
if (pt_out == -1) {
|
|
|
|
|
if (mp.packets_out.length != 0) {
|
|
|
|
|
printf("test failed: %s:%i\n", file, line);
|
|
|
|
|
@ -222,7 +232,7 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
|
|
|
|
|
printf("received: %i\n", rtp->m_pt);
|
|
|
|
|
abort();
|
|
|
|
|
}
|
|
|
|
|
printf("packet contents: ");
|
|
|
|
|
printf("recv packet contents: ");
|
|
|
|
|
for (int i = sizeof(struct rtp_header); i < cp->s.len; i++) {
|
|
|
|
|
unsigned char cc = cp->s.s[i];
|
|
|
|
|
printf("\\x%02x", cc);
|
|
|
|
|
@ -231,15 +241,14 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
|
|
|
|
|
uint32_t ts = ntohl(rtp->timestamp);
|
|
|
|
|
uint16_t seq = ntohs(rtp->seq_num);
|
|
|
|
|
uint32_t ssrc = ntohl(rtp->ssrc);
|
|
|
|
|
uint32_t ssrc_pt = ssrc ^ (pt_out & 0x7f);
|
|
|
|
|
ssrc_pt ^= (pt_in & 0x7f) << 8; /* XXX this is actually wrong and should be removed. it's a workaround for a bug */
|
|
|
|
|
printf("RTP SSRC %x seq %u TS %u PT %u\n", (unsigned int) ssrc,
|
|
|
|
|
uint32_t ssrc_pt = ssrc;
|
|
|
|
|
printf("recv RTP SSRC %x seq %u TS %u PT %u\n", (unsigned int) ssrc,
|
|
|
|
|
(unsigned int) seq, (unsigned int) ts, (unsigned int) rtp->m_pt);
|
|
|
|
|
if (g_hash_table_contains(rtp_ts_ht, GUINT_TO_POINTER(ssrc_pt))) {
|
|
|
|
|
uint32_t old_ts = GPOINTER_TO_UINT(g_hash_table_lookup(rtp_ts_ht,
|
|
|
|
|
GUINT_TO_POINTER(ssrc_pt)));
|
|
|
|
|
uint32_t diff = ts - old_ts;
|
|
|
|
|
printf("RTP TS diff: %u\n", (unsigned int) diff);
|
|
|
|
|
printf("recv RTP TS diff: %u\n", (unsigned int) diff);
|
|
|
|
|
if (ts_exp != -1)
|
|
|
|
|
assert(ts_exp == diff);
|
|
|
|
|
}
|
|
|
|
|
@ -248,7 +257,8 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
|
|
|
|
|
uint32_t old_seq = GPOINTER_TO_UINT(g_hash_table_lookup(rtp_seq_ht,
|
|
|
|
|
GUINT_TO_POINTER(ssrc_pt)));
|
|
|
|
|
uint16_t diff = seq - old_seq;
|
|
|
|
|
printf("RTP seq diff: %u\n", (unsigned int) diff);
|
|
|
|
|
printf("recv RTP seq diff: %u (exp %u)\n", (unsigned int) diff,
|
|
|
|
|
(unsigned int) seq_diff_exp);
|
|
|
|
|
assert(diff == seq_diff_exp);
|
|
|
|
|
}
|
|
|
|
|
g_hash_table_insert(rtp_seq_ht, GUINT_TO_POINTER(ssrc_pt), GUINT_TO_POINTER(seq));
|
|
|
|
|
@ -259,7 +269,7 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media
|
|
|
|
|
if (fatal && memcmp(pl_exp.s, cp->s.s, pl_exp.len))
|
|
|
|
|
abort();
|
|
|
|
|
}
|
|
|
|
|
printf("test ok: %s:%i\n", file, line);
|
|
|
|
|
printf("test ok: %s:%i\n\n", file, line);
|
|
|
|
|
free(packet);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -340,10 +350,10 @@ int main() {
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(A, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 160, 1, 8, PCMA_payload);
|
|
|
|
|
packet_seq(B, 8, PCMA_payload, 160, 1, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain with two offered and one answered
|
|
|
|
|
@ -381,8 +391,8 @@ int main() {
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(A, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 160, 1, 8, PCMA_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
@ -403,10 +413,10 @@ int main() {
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(A, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 160, 1, 8, PCMA_payload);
|
|
|
|
|
packet_seq(B, 8, PCMA_payload, 160, 1, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain with two offered and two answered + always-transcode both ways
|
|
|
|
|
@ -427,10 +437,10 @@ int main() {
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(A, 8, PCMA_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 160, 1, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 8, PCMA_payload, 160, 1, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// add one codec to transcode
|
|
|
|
|
@ -450,8 +460,8 @@ int main() {
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 8, PCMA_payload, 160, 1, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// add one codec to transcode, don't accept original offered codec
|
|
|
|
|
@ -490,8 +500,8 @@ int main() {
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "8/PCMA/8000");
|
|
|
|
|
packet(A, 0, PCMU_payload, 8, PCMA_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 0, PCMU_payload);
|
|
|
|
|
packet(B, 0, PCMU_payload, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 8, PCMA_payload, 0, 0, 0, PCMU_payload);
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 160, 1, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_AMR_TESTS
|
|
|
|
|
@ -848,10 +858,10 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 206, 8, PCMA_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 206, 8, PCMA_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 207, 8, PCMA_payload);
|
|
|
|
|
// start with marker
|
|
|
|
|
packet_seq_exp(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0", 3); // expected seq is 205+3 for PT 101
|
|
|
|
|
packet_seq(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0");
|
|
|
|
|
dtmf("");
|
|
|
|
|
// continuous event with increasing length
|
|
|
|
|
packet_seq(A, 101, "\x05\x0a\x01\x40", 1001280, 209, 101, "\x05\x0a\x01\x40");
|
|
|
|
|
@ -864,7 +874,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, 101, "\x05\x8a\x02\x80", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 8, PCMA_payload, 5); // expected seq is 207+5 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 212, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// DTMF passthrough w/ transcoding
|
|
|
|
|
@ -901,10 +911,10 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 206, 0, PCMU_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 206, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 207, 0, PCMU_payload);
|
|
|
|
|
// start with marker
|
|
|
|
|
packet_seq_exp(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0", 3); // expected seq is 205+3 for PT 101
|
|
|
|
|
packet_seq(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0");
|
|
|
|
|
dtmf("");
|
|
|
|
|
// continuous event with increasing length
|
|
|
|
|
packet_seq(A, 101, "\x05\x0a\x01\x40", 1001280, 209, 101, "\x05\x0a\x01\x40");
|
|
|
|
|
@ -917,7 +927,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, 101, "\x05\x8a\x02\x80", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 0, PCMU_payload, 5); // expected seq is 207+5 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 212, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain DTMF passthrough w/o transcoding w/ implicit primary payload type
|
|
|
|
|
@ -953,10 +963,10 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1000960, 206, 0, PCMU_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1000960, 206, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1001120, 207, 0, PCMU_payload);
|
|
|
|
|
// start with marker
|
|
|
|
|
packet_seq_exp(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0", 3); // expected seq is 205+3 for PT 101
|
|
|
|
|
packet_seq(A, 101 | 0x80, "\x05\x0a\x00\xa0", 1001280, 208, 101 | 0x80, "\x05\x0a\x00\xa0");
|
|
|
|
|
dtmf("");
|
|
|
|
|
// continuous event with increasing length
|
|
|
|
|
packet_seq(A, 101, "\x05\x0a\x01\x40", 1001280, 209, 101, "\x05\x0a\x01\x40");
|
|
|
|
|
@ -969,7 +979,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, 101, "\x05\x8a\x02\x80", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1000960, 212, 0, PCMU_payload, 5); // expected seq is 207+5 for PT 8
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1000960, 212, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain DTMF passthrough w/o transcoding - blocking
|
|
|
|
|
@ -1005,7 +1015,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 206, 8, PCMA_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 206, 8, PCMA_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 207, 8, PCMA_payload);
|
|
|
|
|
// enable blocking
|
|
|
|
|
call.block_dtmf = 1;
|
|
|
|
|
@ -1023,21 +1033,21 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, -1, "", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 8, PCMA_payload, 5); // expected seq is 207+5 for PT 8
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001120, 213, 8, PCMA_payload, 1);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 8, PCMA_payload, 5); // DTMF packets appear lost
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 213, 8, PCMA_payload);
|
|
|
|
|
// media blocking
|
|
|
|
|
ml_A.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001280, 214, -1, "", 0);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001440, 215, -1, "", 0);
|
|
|
|
|
ml_A.block_media = 0;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001600, 216, 8, PCMA_payload, 3);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001600, 216, 8, PCMA_payload, 3); // media packets appear lost
|
|
|
|
|
call.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001760, 217, -1, "", 0);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001920, 218, -1, "", 0);
|
|
|
|
|
call.block_media = 0;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1002080, 219, 8, PCMA_payload, 3);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1002080, 219, 8, PCMA_payload, 3); // media packets appear lost
|
|
|
|
|
ml_B.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1002240, 220, 8, PCMA_payload, 1);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1002240, 220, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// DTMF passthrough w/ transcoding - blocking
|
|
|
|
|
@ -1074,7 +1084,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 206, 0, PCMU_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1000960, 206, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 207, 0, PCMU_payload);
|
|
|
|
|
// enable blocking
|
|
|
|
|
call.block_dtmf = 1;
|
|
|
|
|
@ -1092,8 +1102,8 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, -1, "", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 0, PCMU_payload, 1); // expected seq is 207+1 for PT 8
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001120, 213, 0, PCMU_payload, 1);
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1000960, 212, 0, PCMU_payload, 5); // DTMF packets appear lost
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 1001120, 213, 0, PCMU_payload);
|
|
|
|
|
// media blocking
|
|
|
|
|
ml_A.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 8, PCMA_payload, 1001280, 214, -1, "", 0);
|
|
|
|
|
@ -1142,7 +1152,7 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x08\x8a\x03\x20", 1000160, 205, 101, "\x08\x8a\x03\x20", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// send some more audio
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1000960, 206, 0, PCMU_payload, 6); // expected seq is 200+6 for PT 8
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1000960, 206, 0, PCMU_payload);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1001120, 207, 0, PCMU_payload);
|
|
|
|
|
// enable blocking
|
|
|
|
|
call.block_dtmf = 1;
|
|
|
|
|
@ -1160,21 +1170,21 @@ int main() {
|
|
|
|
|
packet_seq_exp(A, 101, "\x05\x8a\x02\x80", 1001280, 211, -1, "", 0);
|
|
|
|
|
dtmf("");
|
|
|
|
|
// final audio RTP test
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1000960, 212, 0, PCMU_payload, 5); // expected seq is 207+5 for PT 8
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001120, 213, 0, PCMU_payload, 1);
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1000960, 212, 0, PCMU_payload, 5); // DTMF packets appear lost
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1001120, 213, 0, PCMU_payload);
|
|
|
|
|
// media blocking
|
|
|
|
|
ml_A.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001280, 214, -1, "", 0);
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001440, 215, -1, "", 0);
|
|
|
|
|
ml_A.block_media = 0;
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001600, 216, 0, PCMU_payload, 3);
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001600, 216, 0, PCMU_payload, 3); // media packets appear lost
|
|
|
|
|
call.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001760, 217, -1, "", 0);
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1001920, 218, -1, "", 0);
|
|
|
|
|
call.block_media = 0;
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1002080, 219, 0, PCMU_payload, 3);
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1002080, 219, 0, PCMU_payload, 3); // media packets appear lost
|
|
|
|
|
ml_B.block_media = 1;
|
|
|
|
|
packet_seq_exp(A, 0, PCMU_payload, 1002240, 220, 0, PCMU_payload, 1);
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 1002240, 220, 0, PCMU_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|