diff --git a/src/libosmo-mgcp/mgcp_codec.c b/src/libosmo-mgcp/mgcp_codec.c index 6b8d14a83..38aa0a79f 100644 --- a/src/libosmo-mgcp/mgcp_codec.c +++ b/src/libosmo-mgcp/mgcp_codec.c @@ -378,10 +378,10 @@ static bool codecs_same(struct mgcp_rtp_codec *codec_a, struct mgcp_rtp_codec *c return false; if (strcmp(codec_a->subtype_name, codec_b->subtype_name)) return false; - if (!strcmp(codec_a->subtype_name, "AMR")) { - if (mgcp_codec_amr_is_octet_aligned(codec_a) != mgcp_codec_amr_is_octet_aligned(codec_b)) - return false; - } + + /* Note: AMR allows to set the RTP payload format to octet-aligned or bandwith-efficient (octet-aligned=0) + * via SDP. This difference concerns payload format only, but not the actual codec. It is not a difference + * within the meaning of this function. */ return true; } diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index 9b4933c55..4ed18c280 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -1896,16 +1896,13 @@ static const struct testcase_mgcp_codec_pt_translate test_mgcp_codec_pt_translat .codecs = { { { 111, "AMR/8000", &amr_param_octet_aligned_true, }, - { 112, "AMR/8000", &amr_param_octet_aligned_false, }, }, { { 122, "AMR/8000", &amr_param_octet_aligned_false, }, - { 121, "AMR/8000", &amr_param_octet_aligned_true, }, }, }, .expect = { - { .payload_type_map = {111, 121}, }, - { .payload_type_map = {112, 122} }, + { .payload_type_map = {111, 122}, }, { .end = true }, }, }, @@ -1914,15 +1911,13 @@ static const struct testcase_mgcp_codec_pt_translate test_mgcp_codec_pt_translat .codecs = { { { 111, "AMR/8000", &amr_param_octet_aligned_true, }, - { 112, "AMR/8000", &amr_param_octet_aligned_false, }, }, { { 122, "AMR/8000", &amr_param_octet_aligned_unset, }, }, }, .expect = { - { .payload_type_map = {111, -EINVAL}, }, - { .payload_type_map = {112, 122} }, + { .payload_type_map = {111, 122}, }, { .end = true }, }, }, @@ -1931,15 +1926,13 @@ static const struct testcase_mgcp_codec_pt_translate test_mgcp_codec_pt_translat .codecs = { { { 111, "AMR/8000", &amr_param_octet_aligned_true, }, - { 112, "AMR/8000", &amr_param_octet_aligned_false, }, }, { { 122, "AMR/8000", NULL, }, }, }, .expect = { - { .payload_type_map = {111, -EINVAL}, }, - { .payload_type_map = {112, 122} }, + { .payload_type_map = {111, 122}, }, { .end = true }, }, }, diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok index 94fada35c..5b8d558b6 100644 --- a/tests/mgcp/mgcp_test.ok +++ b/tests/mgcp/mgcp_test.ok @@ -1347,32 +1347,24 @@ Testing mgcp_codec_pt_translate() #5: test AMR with differing octet-aligned settings - add codecs on conn0: 0: 111 AMR/8000 octet-aligned=1 -> rc=0 - 1: 112 AMR/8000 octet-aligned=0 -> rc=0 - add codecs on conn1: 0: 122 AMR/8000 octet-aligned=0 -> rc=0 - 1: 121 AMR/8000 octet-aligned=1 -> rc=0 - - mgcp_codec_pt_translate(conn0, conn1, 111) -> 121 - - mgcp_codec_pt_translate(conn1, conn0, 121) -> 111 - - mgcp_codec_pt_translate(conn0, conn1, 112) -> 122 - - mgcp_codec_pt_translate(conn1, conn0, 122) -> 112 + - mgcp_codec_pt_translate(conn0, conn1, 111) -> 122 + - mgcp_codec_pt_translate(conn1, conn0, 122) -> 111 #6: test AMR with missing octet-aligned settings (defaults to 0) - add codecs on conn0: 0: 111 AMR/8000 octet-aligned=1 -> rc=0 - 1: 112 AMR/8000 octet-aligned=0 -> rc=0 - add codecs on conn1: 0: 122 AMR/8000 octet-aligned=unset -> rc=0 - - mgcp_codec_pt_translate(conn0, conn1, 111) -> -22 - - mgcp_codec_pt_translate(conn0, conn1, 112) -> 122 - - mgcp_codec_pt_translate(conn1, conn0, 122) -> 112 + - mgcp_codec_pt_translate(conn0, conn1, 111) -> 122 + - mgcp_codec_pt_translate(conn1, conn0, 122) -> 111 #7: test AMR with NULL param (defaults to 0) - add codecs on conn0: 0: 111 AMR/8000 octet-aligned=1 -> rc=0 - 1: 112 AMR/8000 octet-aligned=0 -> rc=0 - add codecs on conn1: 0: 122 AMR/8000 -> rc=0 - - mgcp_codec_pt_translate(conn0, conn1, 111) -> -22 - - mgcp_codec_pt_translate(conn0, conn1, 112) -> 122 - - mgcp_codec_pt_translate(conn1, conn0, 122) -> 112 + - mgcp_codec_pt_translate(conn0, conn1, 111) -> 122 + - mgcp_codec_pt_translate(conn1, conn0, 122) -> 111 #8: match FOO/8000/1 and FOO/8000 as identical, single channel is implicit - add codecs on conn0: 0: 0 PCMU/8000/1 -> rc=0