From c8b29083d27b9070dbc5690d0632db411b706326 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 2 Jul 2014 22:02:15 +0200 Subject: mgcp: Initialise next_time in case the initial timestamp is not 0. --- openbsc/src/libmgcp/mgcp_transcode.c | 6 ++++-- openbsc/tests/mgcp/mgcp_transcoding_test.c | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'openbsc') diff --git a/openbsc/src/libmgcp/mgcp_transcode.c b/openbsc/src/libmgcp/mgcp_transcode.c index ff20fb891..8e14d7f13 100644 --- a/openbsc/src/libmgcp/mgcp_transcode.c +++ b/openbsc/src/libmgcp/mgcp_transcode.c @@ -428,10 +428,12 @@ int mgcp_transcoding_process_rtp(struct mgcp_endpoint *endp, if (payload_len > 0) { ts_no = ntohl(*(uint32_t*)(data+4)); - if (!state->is_running) + if (!state->is_running) { state->next_seq = ntohs(*(uint16_t*)(data+2)); + state->next_time = ts_no; + state->is_running = 1; + } - state->is_running = 1; if (state->sample_cnt > 0) { int32_t delta = ts_no - state->next_time; diff --git a/openbsc/tests/mgcp/mgcp_transcoding_test.c b/openbsc/tests/mgcp/mgcp_transcoding_test.c index 27d72692d..397469560 100644 --- a/openbsc/tests/mgcp/mgcp_transcoding_test.c +++ b/openbsc/tests/mgcp/mgcp_transcoding_test.c @@ -120,18 +120,18 @@ struct rtp_packets audio_packets_pcma[] = { "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" }, - /* RTP: SeqNo=26527, TS=0 */ + /* RTP: SeqNo=26527, TS=232640 */ {0.020000, 92, - "\x80\x08\x67\x9f\x00\x00\x00\x00\x04\xaa\x67\x9f\xd5\xd5\xd5\xd5" + "\x80\x08\x67\x9f\x00\x03\x8c\xc0\x04\xaa\x67\x9f\xd5\xd5\xd5\xd5" "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" "\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\x55\x55\xd5\xd5\x55\x55" "\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\x55\x55\xd5\xd5" }, - /* RTP: SeqNo=26528, TS=80 */ + /* RTP: SeqNo=26528, TS=232720 */ {0.020000, 92, - "\x80\x08\x67\xa0\x00\x00\x00\x50\x04\xaa\x67\x9f\x55\xd5\xd5\x55" + "\x80\x08\x67\xa0\x00\x03\x8d\x10\x04\xaa\x67\x9f\x55\xd5\xd5\x55" "\xd5\x55\xd5\xd5\xd5\x55\xd5\x55\xd5\xd5\x55\xd5\x55\xd5\x55\xd5" "\x55\x55\xd5\x55\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\x55\xd5\xd5" "\xd5\x55\xd5\xd5\xd5\x55\x54\x55\xd5\xd5\x55\xd5\xd5\xd5\xd5\x55" @@ -352,6 +352,7 @@ static void test_transcode_result(void) memcpy(buf, audio_packets_pcma[1].data, len); res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); OSMO_ASSERT(state->sample_cnt == 80); + OSMO_ASSERT(state->next_time == 232640); OSMO_ASSERT(res < 0); /* Add the second sample and it should be consumable */ @@ -359,6 +360,7 @@ static void test_transcode_result(void) memcpy(buf, audio_packets_pcma[2].data, len); res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); OSMO_ASSERT(state->sample_cnt == 0); + OSMO_ASSERT(state->next_time == 232640 + 80 + 160); OSMO_ASSERT(res == sizeof(struct rtp_hdr)); talloc_free(ctx); -- cgit v1.2.3