shithub: opus

Download patch

ref: efeaa8aef8ba3a29fbba04908ce61ebb8e225fd1
parent: 24b7eab4a30bd4fb3769fc532ab0d8af379c255d
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Sat Mar 2 12:36:09 EST 2024

Make weights blob a void*

--- a/dnn/dred_encoder.c
+++ b/dnn/dred_encoder.c
@@ -52,7 +52,7 @@
     memset(enc_state, 0, sizeof(*enc_state));
 }
 
-int dred_encoder_load_model(DREDEnc* enc, const unsigned char *data, int len)
+int dred_encoder_load_model(DREDEnc* enc, const void *data, int len)
 {
     WeightArray *list;
     int ret;
--- a/dnn/dred_encoder.h
+++ b/dnn/dred_encoder.h
@@ -58,7 +58,7 @@
     float resample_mem[RESAMPLING_ORDER + 1];
 } DREDEnc;
 
-int dred_encoder_load_model(DREDEnc* enc, const unsigned char *data, int len);
+int dred_encoder_load_model(DREDEnc* enc, const void *data, int len);
 void dred_encoder_init(DREDEnc* enc, opus_int32 Fs, int channels);
 void dred_encoder_reset(DREDEnc* enc);
 
--- a/dnn/fargan.c
+++ b/dnn/fargan.c
@@ -184,7 +184,7 @@
   celt_assert(ret == 0);
 }
 
-int fargan_load_model(FARGANState *st, const unsigned char *data, int len) {
+int fargan_load_model(FARGANState *st, const void *data, int len) {
   WeightArray *list;
   int ret;
   parse_weights(&list, data, len);
--- a/dnn/fargan.h
+++ b/dnn/fargan.h
@@ -57,7 +57,7 @@
 } FARGANState;
 
 void fargan_init(FARGANState *st);
-int fargan_load_model(FARGANState *st, const unsigned char *data, int len);
+int fargan_load_model(FARGANState *st, const void *data, int len);
 
 void fargan_cont(FARGANState *st, const float *pcm0, const float *features0);
 
--- a/dnn/lossgen.c
+++ b/dnn/lossgen.c
@@ -166,7 +166,7 @@
   (void)ret;
 }
 
-int lossgen_load_model(LossGenState *st, const unsigned char *data, int len) {
+int lossgen_load_model(LossGenState *st, const void *data, int len) {
   WeightArray *list;
   int ret;
   parse_weights(&list, data, len);
--- a/dnn/lossgen.h
+++ b/dnn/lossgen.h
@@ -46,7 +46,7 @@
 
 
 void lossgen_init(LossGenState *st);
-int lossgen_load_model(LossGenState *st, const unsigned char *data, int len);
+int lossgen_load_model(LossGenState *st, const void *data, int len);
 
 int sample_loss(
     LossGenState *st,
--- a/dnn/lpcnet.h
+++ b/dnn/lpcnet.h
@@ -94,7 +94,7 @@
   */
 int lpcnet_encoder_init(LPCNetEncState *st);
 
-int lpcnet_encoder_load_model(LPCNetEncState *st, const unsigned char *data, int len);
+int lpcnet_encoder_load_model(LPCNetEncState *st, const void *data, int len);
 
 /** Allocates and initializes an encoder state.
   *  @returns The newly created state
@@ -177,7 +177,7 @@
 
 void lpcnet_plc_fec_clear(LPCNetPLCState *st);
 
-int lpcnet_load_model(LPCNetState *st, const unsigned char *data, int len);
-int lpcnet_plc_load_model(LPCNetPLCState *st, const unsigned char *data, int len);
+int lpcnet_load_model(LPCNetState *st, const void *data, int len);
+int lpcnet_plc_load_model(LPCNetPLCState *st, const void *data, int len);
 
 #endif
--- a/dnn/lpcnet_demo.c
+++ b/dnn/lpcnet_demo.c
@@ -48,9 +48,9 @@
 /* When available, mmap() is preferable to reading the file, as it leads to
    better resource utilization, especially if multiple processes are using the same
    file (mapping will be shared in cache). */
-unsigned char *load_blob(const char *filename, int *len) {
+void *load_blob(const char *filename, int *len) {
   int fd;
-  unsigned char *data;
+  void *data;
   struct stat st;
   stat(filename, &st);
   *len = st.st_size;
@@ -59,13 +59,13 @@
   close(fd);
   return data;
 }
-void free_blob(unsigned char *blob, int len) {
+void free_blob(void *blob, int len) {
   munmap(blob, len);
 }
 # else
-unsigned char *load_blob(const char *filename, int *len) {
+void *load_blob(const char *filename, int *len) {
   FILE *file;
-  unsigned char *data;
+  void *data;
   file = fopen(filename, "r");
   fseek(file, 0L, SEEK_END);
   *len = ftell(file);
@@ -75,7 +75,7 @@
   *len = fread(data, 1, *len, file);
   return data;
 }
-void free_blob(unsigned char *blob, int len) {
+void free_blob(void *blob, int len) {
   free(blob);
   (void)len;
 }
@@ -104,7 +104,7 @@
     FILE *fin, *fout;
 #ifdef USE_WEIGHTS_FILE
     int len;
-    unsigned char *data;
+    void *data;
     const char *filename = "weights_blob.bin";
 #endif
     arch = opus_select_arch();
--- a/dnn/lpcnet_enc.c
+++ b/dnn/lpcnet_enc.c
@@ -56,7 +56,7 @@
   return 0;
 }
 
-int lpcnet_encoder_load_model(LPCNetEncState *st, const unsigned char *data, int len) {
+int lpcnet_encoder_load_model(LPCNetEncState *st, const void *data, int len) {
   return pitchdnn_load_model(&st->pitchdnn, data, len);
 }
 
--- a/dnn/lpcnet_plc.c
+++ b/dnn/lpcnet_plc.c
@@ -72,7 +72,7 @@
   return ret;
 }
 
-int lpcnet_plc_load_model(LPCNetPLCState *st, const unsigned char *data, int len) {
+int lpcnet_plc_load_model(LPCNetPLCState *st, const void *data, int len) {
   WeightArray *list;
   int ret;
   parse_weights(&list, data, len);
--- a/dnn/nnet.h
+++ b/dnn/nnet.h
@@ -93,7 +93,7 @@
 void compute_gated_activation(const LinearLayer *layer, float *output, const float *input, int activation, int arch);
 
 
-int parse_weights(WeightArray **list, const unsigned char *data, int len);
+int parse_weights(WeightArray **list, const void *data, int len);
 
 
 extern const WeightArray lpcnet_arrays[];
--- a/dnn/osce.c
+++ b/dnn/osce.c
@@ -873,7 +873,7 @@
 }
 #endif
 
-int osce_load_models(OSCEModel *model, const unsigned char *data, int len)
+int osce_load_models(OSCEModel *model, const void *data, int len)
 {
     int ret = 0;
     WeightArray *list;
--- a/dnn/osce.h
+++ b/dnn/osce.h
@@ -77,7 +77,7 @@
 );
 
 
-int osce_load_models(OSCEModel *hModel, const unsigned char *data, int len);
+int osce_load_models(OSCEModel *hModel, const void *data, int len);
 void osce_reset(silk_OSCE_struct *hOSCE, int method);
 
 
--- a/dnn/parse_lpcnet_weights.c
+++ b/dnn/parse_lpcnet_weights.c
@@ -35,7 +35,7 @@
 
 #define SPARSE_BLOCK_SIZE 32
 
-int parse_record(const unsigned char **data, int *len, WeightArray *array) {
+int parse_record(const void **data, int *len, WeightArray *array) {
   WeightHead *h = (WeightHead *)*data;
   if (*len < WEIGHT_BLOCK_SIZE) return -1;
   if (h->block_size < h->size) return -1;
@@ -45,14 +45,14 @@
   array->name = h->name;
   array->type = h->type;
   array->size = h->size;
-  array->data = (*data)+WEIGHT_BLOCK_SIZE;
+  array->data = (void*)((unsigned char*)(*data)+WEIGHT_BLOCK_SIZE);
 
-  *data += h->block_size+WEIGHT_BLOCK_SIZE;
+  *data = (void*)((unsigned char*)*data + h->block_size+WEIGHT_BLOCK_SIZE);
   *len -= h->block_size+WEIGHT_BLOCK_SIZE;
   return array->size;
 }
 
-int parse_weights(WeightArray **list, const unsigned char *data, int len)
+int parse_weights(WeightArray **list, const void *data, int len)
 {
   int nb_arrays=0;
   int capacity=20;
@@ -213,7 +213,7 @@
 int main()
 {
   int fd;
-  unsigned char *data;
+  void *data;
   int len;
   int nb_arrays;
   int i;
--- a/dnn/pitchdnn.c
+++ b/dnn/pitchdnn.c
@@ -68,7 +68,7 @@
   celt_assert(ret == 0);
 }
 
-int pitchdnn_load_model(PitchDNNState *st, const unsigned char *data, int len) {
+int pitchdnn_load_model(PitchDNNState *st, const void *data, int len) {
   WeightArray *list;
   int ret;
   parse_weights(&list, data, len);
--- a/dnn/pitchdnn.h
+++ b/dnn/pitchdnn.h
@@ -22,7 +22,7 @@
 
 
 void pitchdnn_init(PitchDNNState *st);
-int pitchdnn_load_model(PitchDNNState *st, const unsigned char *data, int len);
+int pitchdnn_load_model(PitchDNNState *st, const void *data, int len);
 
 float compute_pitchdnn(
     PitchDNNState *st,
--- a/include/opus_defines.h
+++ b/include/opus_defines.h
@@ -644,7 +644,7 @@
 
 /** Provide external DNN weights from binary object (only when explicitly built without the weights)
   * @hideinitializer */
-#define OPUS_SET_DNN_BLOB(data, len) OPUS_SET_DNN_BLOB_REQUEST, __opus_check_uint8_ptr(data), __opus_check_int(len)
+#define OPUS_SET_DNN_BLOB(data, len) OPUS_SET_DNN_BLOB_REQUEST, (data), __opus_check_int(len)
 
 
 /**@}*/
--- a/src/opus_demo.c
+++ b/src/opus_demo.c
@@ -54,9 +54,9 @@
 /* When available, mmap() is preferable to reading the file, as it leads to
    better resource utilization, especially if multiple processes are using the same
    file (mapping will be shared in cache). */
-unsigned char *load_blob(const char *filename, int *len) {
+void *load_blob(const char *filename, int *len) {
   int fd;
-  unsigned char *data;
+  void *data;
   struct stat st;
   stat(filename, &st);
   *len = st.st_size;
@@ -65,13 +65,13 @@
   close(fd);
   return data;
 }
-void free_blob(unsigned char *blob, int len) {
+void free_blob(void *blob, int len) {
   munmap(blob, len);
 }
 # else
-unsigned char *load_blob(const char *filename, int *len) {
+void *load_blob(const char *filename, int *len) {
   FILE *file;
-  unsigned char *data;
+  void *data;
   file = fopen(filename, "r");
   if (file == NULL)
   {
@@ -85,7 +85,7 @@
   *len = fread(data, 1, *len, file);
   return data;
 }
-void free_blob(unsigned char *blob, int len) {
+void free_blob(void *blob, int len) {
   free(blob);
   (void)len;
 }
@@ -399,7 +399,7 @@
 #endif
 #ifdef USE_WEIGHTS_FILE
     int blob_len;
-    unsigned char *blob_data;
+    void *blob_data;
     const char *filename = "weights_blob.bin";
     blob_data = load_blob(filename, &blob_len);
 #endif
--