ref: 275b9fd61b90f961806ba3816b0442662658eb7f
dir: /opus-tools/
--- /dev/null Wed Jan 8 06:24:14 2020
+++ mkfile Sat Feb 1 21:20:19 2020
@@ -0,0 +1,39 @@
+APE=/sys/src/ape
+<$APE/config
+
+TARG=opusdec opusenc opusinfo
+BIN=/$objtype/bin/audio
+
+CFLAGS=$CFLAGS -c \
+ -Iinclude \
+ -I/sys/src/cmd/audio/libogg \
+ -I/sys/include/ape/opus \
+ -D_POSIX_SOURCE \
+ -D__GNU_LIBRARY__ \
+ -D_C99_SNPRINTF_EXTENSION \
+ -DSPX_RESAMPLE_EXPORT= \
+ -DRANDOM_PREFIX=opustools \
+ -DOUTSIDE_SPEEX \
+ -DRESAMPLE_FULL_SINC_TABLE \
+ -DOPUSTOOLS \
+ -DPACKAGE_NAME="opus-tools" \
+ -DPACKAGE_VERSION="fuckoff"
+
+LIB=\
+ /$objtype/lib/ape/libopusfile.a \
+ /$objtype/lib/ape/libopusenc.a \
+ /$objtype/lib/ape/libopus.a \
+
+</sys/src/cmd/mkmany
+
+%.$O: src/%.c
+ $CC $CFLAGS $prereq
+
+%.$O: share/%.c
+ $CC $CFLAGS $prereq
+
+COMMON=opus_header.$O resample.$O getopt.$O getopt1.$O
+
+$O.opusdec: opusdec.$O wav_io.$O wave_out.$O diag_range.$O $COMMON
+$O.opusenc: opusenc.$O audio-in.$O diag_range.$O flac.$O picture.$O $COMMON
+$O.opusinfo: opusinfo.$O info_opus.$O picture.$O $COMMON
--- /mnt/git/object/ae5d6d59e82ef40300a4dece7897499685f87184/tree/src/audio-in.c
+++ src/audio-in.c
@@ -718,7 +718,11 @@
int sampbyte = f->samplesize / 8;
int realsamples = f->totalsamples > 0 && samples > (f->totalsamples - f->samplesread)
? (int)(f->totalsamples - f->samplesread) : samples;
- signed char *buf = alloca(realsamples*sampbyte*f->channels);
+ signed char *buf = malloc(realsamples*sampbyte*f->channels);
+ if(buf == NULL){
+ fprintf(stderr, "allocation failure\n");
+ return 0;
+ }
int i,j;
int *ch_permute = f->channel_permute;
@@ -806,9 +810,11 @@
else {
fprintf(stderr, _("Internal error: attempt to read unsupported "
"bitdepth %d\n"), f->samplesize);
+ free(buf);
return 0;
}
+ free(buf);
return realsamples;
}
@@ -817,9 +823,14 @@
wavfile *f = (wavfile *)in;
int realsamples = f->totalsamples > 0 && samples > (f->totalsamples - f->samplesread)
? (int)(f->totalsamples - f->samplesread) : samples;
- float *buf = alloca(realsamples*4*f->channels); /* de-interleave buffer */
+ float *buf = malloc(realsamples*4*f->channels); /* de-interleave buffer */
int i,j;
+ if(buf == NULL){
+ fprintf(stderr, "allocation failure\n");
+ return 0;
+ }
+
realsamples = (int)fread(buf, 4*f->channels, realsamples, f->f);
f->samplesread += realsamples;
@@ -836,6 +847,7 @@
get_be_float(buf + i*f->channels + f->channel_permute[j]);
}
+ free(buf);
return realsamples;
}
--- /mnt/git/object/ae5d6d59e82ef40300a4dece7897499685f87184/tree/src/opusdec.c
+++ src/opusdec.c
@@ -494,8 +494,12 @@
short *out;
float *buf;
float *output;
- out=alloca(sizeof(short)*MAX_FRAME_SIZE*channels);
- buf=alloca(sizeof(float)*MAX_FRAME_SIZE*channels);
+ out=malloc(sizeof(short)*MAX_FRAME_SIZE*channels);
+ buf=malloc(sizeof(float)*MAX_FRAME_SIZE*channels);
+ if(out == NULL || buf == NULL){
+ fprintf(stderr, "allocation failure\n");
+ return 0;
+ }
maxout=((link_read/48000)*rate + (link_read%48000)*rate/48000) - link_out;
maxout=maxout<0?0:maxout;
do {
@@ -561,6 +565,8 @@
maxout-=ret;
}
} while (frame_size>0 && maxout>0);
+ free(buf);
+ free(out);
return sampout;
}
@@ -848,8 +854,8 @@
}
else
{
- st=op_open_url(inFile,NULL,NULL);
- if (st==NULL)
+ //st=op_open_url(inFile,NULL,NULL);
+ //if (st==NULL)
{
st=op_open_file(inFile,NULL);
}
@@ -1057,7 +1063,8 @@
resampler=NULL;
}
/*We've encountered a new link.*/
- link_read=link_out=0;
+ link_read=0;
+ link_out=0;
head=op_head(st, li);
if (!force_stereo && channels!=head->channel_count)
{