aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-02 22:02:15 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-22 14:48:07 +0200
commitc8b29083d27b9070dbc5690d0632db411b706326 (patch)
tree76fe9ac6043cfbcba9f84dc58d92177cfe0e10bb /openbsc
parentbd4109babcc810c680a76a5bb990a4dbb5264a58 (diff)
mgcp: Initialise next_time in case the initial timestamp is not 0.
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/libmgcp/mgcp_transcode.c6
-rw-r--r--openbsc/tests/mgcp/mgcp_transcoding_test.c10
2 files changed, 10 insertions, 6 deletions
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);