From 6bb1c1838d2b75da4ab38b59863ad10b462faec9 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Thu, 18 Aug 2011 15:54:00 -0400 Subject: [PATCH] opus_packet_parse() now returns the payload offset rather than the pointer --- src/opus.h | 2 +- src/opus_decoder.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/opus.h b/src/opus.h index 9bdb2f3f3..4ffe4446f 100644 --- a/src/opus.h +++ b/src/opus.h @@ -219,7 +219,7 @@ OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st); OPUS_EXPORT int opus_packet_parse(const unsigned char *data, int len, unsigned char *out_toc, const unsigned char *frames[48], - short size[48], const unsigned char **payload); + short size[48], int *payload_offset); OPUS_EXPORT int opus_packet_get_bandwidth(const unsigned char *data); OPUS_EXPORT int opus_packet_get_samples_per_frame(const unsigned char *data, int Fs); diff --git a/src/opus_decoder.c b/src/opus_decoder.c index e7d686183..7138854d8 100644 --- a/src/opus_decoder.c +++ b/src/opus_decoder.c @@ -446,12 +446,13 @@ static int parse_size(const unsigned char *data, int len, short *size) int opus_packet_parse(const unsigned char *data, int len, unsigned char *out_toc, const unsigned char *frames[48], - short size[48], const unsigned char **payload) + short size[48], int *payload_offset) { int i, bytes; int count; unsigned char ch, toc; int framesize; + const unsigned char *data0 = data; if (size==NULL) return OPUS_BAD_ARG; @@ -556,8 +557,8 @@ int opus_packet_parse(const unsigned char *data, int len, if (out_toc) *out_toc = toc; - if (payload) - *payload = data; + if (payload_offset) + *payload_offset = data-data0; return count; } @@ -571,7 +572,7 @@ int opus_decode_float(OpusDecoder *st, const unsigned char *data, #endif { int i, nb_samples; - int count; + int count, offset; unsigned char toc; /* 48 x 2.5 ms = 120 ms */ short size[48]; @@ -584,10 +585,11 @@ int opus_decode_float(OpusDecoder *st, const unsigned char *data, st->frame_size = opus_packet_get_samples_per_frame(data, st->Fs); st->stream_channels = opus_packet_get_nb_channels(data); - count = opus_packet_parse(data, len, &toc, NULL, size, &data); + count = opus_packet_parse(data, len, &toc, NULL, size, &offset); if (count < 0) return count; + data += offset; if (count*st->frame_size > frame_size) return OPUS_BAD_ARG; nb_samples=0; -- GitLab