diff options
Diffstat (limited to 'openbsc/tests')
-rw-r--r-- | openbsc/tests/mgcp/mgcp_transcoding_test.c | 52 | ||||
-rw-r--r-- | openbsc/tests/mgcp/mgcp_transcoding_test.ok | 14 |
2 files changed, 59 insertions, 7 deletions
diff --git a/openbsc/tests/mgcp/mgcp_transcoding_test.c b/openbsc/tests/mgcp/mgcp_transcoding_test.c index 6b3364516..404268a68 100644 --- a/openbsc/tests/mgcp/mgcp_transcoding_test.c +++ b/openbsc/tests/mgcp/mgcp_transcoding_test.c @@ -11,6 +11,7 @@ #include <openbsc/gsm_data.h> #include <openbsc/mgcp.h> #include <openbsc/mgcp_internal.h> +#include <openbsc/rtp.h> #include "bscconfig.h" #ifndef BUILD_MGCP_TRANSCODING @@ -245,6 +246,56 @@ static int transcode_test(const char *srcfmt, const char *dstfmt, return 0; } +static void test_rtp_seq_state(void) +{ + char buf[4096]; + int len; + int cont; + void *ctx; + struct mgcp_endpoint *endp; + struct mgcp_process_rtp_state *state; + struct rtp_hdr *hdr; + uint32_t ts_no; + uint16_t seq_no; + + given_configured_endpoint(160, 0, "pcma", "l16", &ctx, &endp); + state = endp->bts_end.rtp_process_data; + OSMO_ASSERT(!state->is_running); + OSMO_ASSERT(state->next_seq == 0); + OSMO_ASSERT(state->next_time == 0); + + /* initialize packet */ + len = audio_packets_pcma[0].len; + memcpy(buf, audio_packets_pcma[0].data, len); + cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len); + OSMO_ASSERT(cont >= 0); + OSMO_ASSERT(state->is_running); + OSMO_ASSERT(state->next_seq == 2); + OSMO_ASSERT(state->next_time = 240); + + /* verify that the right timestamp was written */ + OSMO_ASSERT(len == audio_packets_pcma[0].len); + hdr = (struct rtp_hdr *) &buf[0]; + + memcpy(&ts_no, &hdr->timestamp, sizeof(ts_no)); + OSMO_ASSERT(htonl(ts_no) == 160); + memcpy(&seq_no, &hdr->sequence, sizeof(seq_no)); + OSMO_ASSERT(htons(seq_no) == 1); + /* Check the right sequence number is written */ + state->next_seq = 1234; + len = audio_packets_pcma[0].len; + memcpy(buf, audio_packets_pcma[0].data, len); + cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len); + OSMO_ASSERT(cont >= 0); + OSMO_ASSERT(len == audio_packets_pcma[0].len); + hdr = (struct rtp_hdr *) &buf[0]; + + memcpy(&seq_no, &hdr->sequence, sizeof(seq_no)); + OSMO_ASSERT(htons(seq_no) == 1234); + + talloc_free(ctx); +} + static int test_repacking(int in_samples, int out_samples, int no_transcode) { char buf[4096] = {0x80, 0}; @@ -388,6 +439,7 @@ int main(int argc, char **argv) test_repacking(160, 240, 1); test_repacking(160, 100, 0); test_repacking(160, 100, 1); + test_rtp_seq_state(); return 0; } diff --git a/openbsc/tests/mgcp/mgcp_transcoding_test.ok b/openbsc/tests/mgcp/mgcp_transcoding_test.ok index 07929a868..e06b0e1bc 100644 --- a/openbsc/tests/mgcp/mgcp_transcoding_test.ok +++ b/openbsc/tests/mgcp/mgcp_transcoding_test.ok @@ -27,14 +27,14 @@ counted: 0 == Transcoding test == converting l16 -> gsm encoded: - 80 0b 00 00 00 00 00 a0 11 22 33 44 d4 7c e3 e9 + 80 0b 00 01 00 00 00 a0 11 22 33 44 d4 7c e3 e9 62 50 39 f0 f8 b4 68 ea 6c 0e 81 1b 56 2a d5 bc 69 9c d1 f0 66 7a ec 49 7a 33 3d 0a de counted: 12 == Transcoding test == converting l16 -> pcma encoded: - 80 0b 00 00 00 00 00 a0 11 22 33 44 d5 a5 a3 a5 + 80 0b 00 01 00 00 00 a0 11 22 33 44 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 @@ -49,7 +49,7 @@ counted: 12 == Transcoding test == converting gsm -> l16 encoded: - 80 03 00 00 00 00 00 a0 11 22 33 44 00 00 54 00 + 80 03 00 01 00 00 00 a0 11 22 33 44 00 00 54 00 59 f0 34 20 c4 c8 b9 f8 e2 18 f1 e8 f2 28 f0 e0 46 08 4f 80 2c a0 a9 c8 80 00 c0 58 3f 80 63 c0 24 b8 fa b8 f6 88 0b a0 c8 70 a8 b0 c8 c0 3b a8 @@ -81,7 +81,7 @@ counted: 0 == Transcoding test == converting gsm -> pcma encoded: - 80 03 00 00 00 00 00 a0 11 22 33 44 d5 a0 a3 bf + 80 03 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6 @@ -96,7 +96,7 @@ counted: 12 == Transcoding test == converting pcma -> l16 encoded: - 80 08 00 00 00 00 00 a0 11 22 33 44 00 08 42 00 + 80 08 00 01 00 00 00 a0 11 22 33 44 00 08 42 00 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 @@ -121,7 +121,7 @@ counted: 12 == Transcoding test == converting pcma -> gsm encoded: - 80 08 00 00 00 00 00 a0 11 22 33 44 d4 b9 f4 5d + 80 08 00 01 00 00 00 a0 11 22 33 44 d4 b9 f4 5d d9 50 5a e1 a0 cd 76 ea 52 0e 87 53 ad d4 ea a2 0a 63 ca e9 60 79 e2 2a 25 d2 c0 f3 39 counted: 12 @@ -161,7 +161,7 @@ Invalid payload type: == Transcoding test == converting gsm -> pcma encoded: - 80 08 00 00 00 00 00 a0 11 22 33 44 d5 a0 a3 bf + 80 08 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6 |