Fixed multiple bugs in the repacketizer
[opus.git] / src / opus.h
index 2d2fdff..9bdb2f3 100644 (file)
@@ -145,6 +145,9 @@ extern "C" {
 #define OPUS_GET_SIGNAL_REQUEST 25
 #define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __check_int_ptr(x)
 
+#define OPUS_GET_LOOKAHEAD_REQUEST 27
+#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __check_int_ptr(x)
+
 typedef struct OpusEncoder OpusEncoder;
 typedef struct OpusDecoder OpusDecoder;
 
@@ -214,6 +217,10 @@ OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...);
 
 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);
+
 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);
 OPUS_EXPORT int opus_packet_get_nb_channels(const unsigned char *data);
@@ -230,6 +237,25 @@ OPUS_EXPORT int opus_encoder_get_final_range(OpusEncoder *st);
 OPUS_EXPORT int opus_decoder_get_final_range(OpusDecoder *st);
 
 
+/* Repacketizer */
+typedef struct OpusRepacketizer OpusRepacketizer;
+
+OPUS_EXPORT int opus_repacketizer_get_size(void);
+
+OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp);
+
+OPUS_EXPORT OpusRepacketizer *opus_repacketizer_create(void);
+
+OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp);
+
+OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, int len);
+
+OPUS_EXPORT int opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, int maxlen);
+
+OPUS_EXPORT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp);
+
+OPUS_EXPORT int opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, int maxlen);
+
 #ifdef __cplusplus
 }
 #endif