|
|
|
|
@ -72,6 +72,7 @@ static void __sdp_pt_fmt(int num, str codec, int clockrate, str full_codec, str
|
|
|
|
|
#define sdp_pt(num, codec, clockrate) sdp_pt_fmt(num, codec, clockrate, "")
|
|
|
|
|
|
|
|
|
|
static void offer() {
|
|
|
|
|
printf("offer\n");
|
|
|
|
|
codec_rtp_payload_types(media_B, media_A, &rtp_types, &flags);
|
|
|
|
|
codec_handlers_update(media_B, media_A, &flags);
|
|
|
|
|
g_queue_clear(&rtp_types);
|
|
|
|
|
@ -79,6 +80,7 @@ static void offer() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void answer() {
|
|
|
|
|
printf("answer\n");
|
|
|
|
|
codec_rtp_payload_types(media_A, media_B, &rtp_types, &flags);
|
|
|
|
|
codec_handlers_update(media_A, media_B, &flags);
|
|
|
|
|
}
|
|
|
|
|
@ -259,6 +261,46 @@ int main() {
|
|
|
|
|
packet(B, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain with two offered and one answered
|
|
|
|
|
start();
|
|
|
|
|
sdp_pt(0, PCMU, 8000);
|
|
|
|
|
sdp_pt(8, PCMA, 8000);
|
|
|
|
|
offer();
|
|
|
|
|
expect(A, recv, "");
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "");
|
|
|
|
|
sdp_pt(8, PCMA, 8000);
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "8/PCMA/8000");
|
|
|
|
|
expect(A, send, "8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "8/PCMA/8000");
|
|
|
|
|
expect(B, send, "8/PCMA/8000");
|
|
|
|
|
packet(A, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
packet(B, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain with two offered and one answered + asymmetric codecs
|
|
|
|
|
start();
|
|
|
|
|
sdp_pt(0, PCMU, 8000);
|
|
|
|
|
sdp_pt(8, PCMA, 8000);
|
|
|
|
|
offer();
|
|
|
|
|
expect(A, recv, "");
|
|
|
|
|
expect(A, send, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "");
|
|
|
|
|
sdp_pt(8, PCMA, 8000);
|
|
|
|
|
flags.asymmetric_codecs = 1;
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "8/PCMA/8000");
|
|
|
|
|
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(B, 8, PCMA_payload, 8, PCMA_payload);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// plain with two offered and two answered + always-transcode one way
|
|
|
|
|
start();
|
|
|
|
|
flags.always_transcode = 1;
|
|
|
|
|
@ -340,10 +382,31 @@ int main() {
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "0/PCMU/8000");
|
|
|
|
|
expect(A, send, "0/PCMU/8000");
|
|
|
|
|
expect(B, recv, "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);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
// same as above, but allow asymmetric codecs
|
|
|
|
|
start();
|
|
|
|
|
sdp_pt(0, PCMU, 8000);
|
|
|
|
|
transcode(PCMA);
|
|
|
|
|
offer();
|
|
|
|
|
expect(A, recv, "");
|
|
|
|
|
expect(A, send, "0/PCMU/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 8/PCMA/8000");
|
|
|
|
|
expect(B, send, "");
|
|
|
|
|
sdp_pt(8, PCMA, 8000);
|
|
|
|
|
flags.asymmetric_codecs = 1;
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "0/PCMU/8000");
|
|
|
|
|
expect(A, send, "0/PCMU/8000");
|
|
|
|
|
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);
|
|
|
|
|
end();
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
@ -364,7 +427,7 @@ int main() {
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "0/PCMU/8000");
|
|
|
|
|
expect(A, send, "0/PCMU/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000 96/AMR-WB/16000/octet-align=1");
|
|
|
|
|
expect(B, recv, "96/AMR-WB/16000/octet-align=1");
|
|
|
|
|
expect(B, send, "96/AMR-WB/16000/octet-align=1");
|
|
|
|
|
packet_seq(A, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer
|
|
|
|
|
packet_seq_nf(A, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload);
|
|
|
|
|
@ -385,7 +448,7 @@ int main() {
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "96/AMR-WB/16000/octet-align=1");
|
|
|
|
|
expect(A, send, "96/AMR-WB/16000/octet-align=1");
|
|
|
|
|
expect(B, recv, "96/AMR-WB/16000/octet-align=1 0/PCMU/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000");
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer
|
|
|
|
|
packet_seq_nf(B, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload);
|
|
|
|
|
@ -406,7 +469,7 @@ int main() {
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "96/AMR-WB/16000");
|
|
|
|
|
expect(A, send, "96/AMR-WB/16000");
|
|
|
|
|
expect(B, recv, "96/AMR-WB/16000 0/PCMU/8000");
|
|
|
|
|
expect(B, recv, "0/PCMU/8000");
|
|
|
|
|
expect(B, send, "0/PCMU/8000");
|
|
|
|
|
packet_seq(B, 0, PCMU_payload, 0, 0, -1, ""); // nothing due to resampling buffer
|
|
|
|
|
packet_seq_nf(B, 0, PCMU_payload, 160, 1, 96, AMR_WB_payload_noe);
|
|
|
|
|
@ -429,7 +492,7 @@ int main() {
|
|
|
|
|
answer();
|
|
|
|
|
expect(A, recv, "8/PCMA/8000");
|
|
|
|
|
expect(A, send, "8/PCMA/8000");
|
|
|
|
|
expect(B, recv, "8/PCMA/8000 9/G722/8000");
|
|
|
|
|
expect(B, recv, "9/G722/8000");
|
|
|
|
|
expect(B, send, "9/G722/8000");
|
|
|
|
|
packet_seq(A, 8, PCMA_payload, 0, 0, -1, ""); // nothing due to resampling
|
|
|
|
|
packet_seq_nf(A, 8, PCMA_payload, 160, 1, 9, G722_payload);
|
|
|
|
|
|