diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index 112b7b58fba561fa6c8ba0821f3cc43f01205fed..ca95ed400b5cddb67b519470edf418cc567f9a4d 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -762,7 +762,7 @@ int opus_packet_parse(const unsigned char *data, opus_int32 len,
 
 int opus_decode_native(OpusDecoder *st, const unsigned char *data,
       opus_int32 len, opus_val16 *pcm, int frame_size, int decode_fec,
-      int self_delimited, int *packet_offset, int soft_clip)
+      int self_delimited, opus_int32 *packet_offset, int soft_clip)
 {
    int i, nb_samples;
    int count, offset;
diff --git a/src/opus_private.h b/src/opus_private.h
index 76069ed1488b252dec715b1b0eeaab908dcfa963..de6f9182f8df9c19dbb75ff145c2361623edb8ad 100644
--- a/src/opus_private.h
+++ b/src/opus_private.h
@@ -104,7 +104,7 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_
 
 int opus_decode_native(OpusDecoder *st, const unsigned char *data, opus_int32 len,
       opus_val16 *pcm, int frame_size, int decode_fec, int self_delimited,
-      int *packet_offset, int soft_clip);
+      opus_int32 *packet_offset, int soft_clip);
 
 /* Make sure everything's aligned to sizeof(void *) bytes */
 static inline int align(int i)
@@ -115,7 +115,7 @@ static inline int align(int i)
 int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
       int self_delimited, unsigned char *out_toc,
       const unsigned char *frames[48], opus_int16 size[48],
-      int *payload_offset, int *opus_int32);
+      int *payload_offset, opus_int32 *packet_offset);
 
 opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen, int self_delimited);