tremor: update to 91decb5f1b

since upstream(i.e. xiph) doesn't update it since 2018.

locally added NOMINMAX guard as well.
This commit is contained in:
roytam1 2023-08-27 18:05:50 +08:00
commit f1d0742012
14 changed files with 91 additions and 79 deletions

View file

@ -3,5 +3,5 @@ git repository using the update.sh script. The only changes
made were those applied by update.sh and the addition/update of made were those applied by update.sh and the addition/update of
Makefile.in files for the UXP build system. Makefile.in files for the UXP build system.
The upstream release used was https://gitlab.xiph.org/xiph/tremor The upstream release used was https://github.com/sezero/tremor
The git revision used was 7c30a66346199f3f09017a09567c6c8a3a0eedc8. The git revision used was 91decb5f1b11a84a2157a6326d9135b22627024b.

View file

@ -153,9 +153,6 @@ extern void vorbis_info_init(vorbis_info *vi);
extern void vorbis_info_clear(vorbis_info *vi); extern void vorbis_info_clear(vorbis_info *vi);
extern int vorbis_info_blocksize(vorbis_info *vi,int zo); extern int vorbis_info_blocksize(vorbis_info *vi,int zo);
extern void vorbis_comment_init(vorbis_comment *vc); extern void vorbis_comment_init(vorbis_comment *vc);
extern void vorbis_comment_add(vorbis_comment *vc, char *comment);
extern void vorbis_comment_add_tag(vorbis_comment *vc,
char *tag, char *contents);
extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count); extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag);
extern void vorbis_comment_clear(vorbis_comment *vc); extern void vorbis_comment_clear(vorbis_comment *vc);

View file

@ -22,10 +22,10 @@
#ifdef _LOW_ACCURACY_ #ifdef _LOW_ACCURACY_
# define X(n) (((((n)>>22)+1)>>1) - ((((n)>>22)+1)>>9)) # define X(n) (((((n)>>22)+1)>>1) - ((((n)>>22)+1)>>9))
# define LOOKUP_T const unsigned char # define LOOKUP_T unsigned char
#else #else
# define X(n) (n) # define X(n) (n)
# define LOOKUP_T const ogg_int32_t # define LOOKUP_T ogg_int32_t
#endif #endif
#include "asm_arm.h" #include "asm_arm.h"
@ -37,29 +37,22 @@
#ifndef _LOW_ACCURACY_ #ifndef _LOW_ACCURACY_
/* 64 bit multiply */ /* 64 bit multiply */
#if !(defined WIN32 && defined WINCE) #ifdef HAVE_SYS_TYPES_H
#include <sys/types.h> #include <sys/types.h>
#endif #endif
#if BYTE_ORDER==LITTLE_ENDIAN
union magic {
struct {
ogg_int32_t lo;
ogg_int32_t hi;
} halves;
ogg_int64_t whole;
};
#endif
#if BYTE_ORDER==BIG_ENDIAN
union magic { union magic {
struct { struct {
#ifdef WORDS_BIGENDIAN
ogg_int32_t hi; ogg_int32_t hi;
ogg_int32_t lo; ogg_int32_t lo;
} halves; #else /* little endian */
ogg_int64_t whole; ogg_int32_t lo;
}; ogg_int32_t hi;
#endif #endif
} halves;
ogg_int64_t whole;
};
STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
union magic magic; union magic magic;
@ -246,7 +239,3 @@ STIN ogg_int32_t VFLOAT_ADD(ogg_int32_t a,ogg_int32_t ap,
} }
#endif #endif

View file

@ -20,6 +20,11 @@ SOURCES += [
FINAL_LIBRARY = 'gkmedias' FINAL_LIBRARY = 'gkmedias'
DEFINES['HAVE_ALLOCA'] = True
if CONFIG['OS_ARCH'] == 'WINNT':
DEFINES['NOMINMAX'] = True
if CONFIG['OS_ARCH'] == 'AIX': if CONFIG['OS_ARCH'] == 'AIX':
DEFINES['alloca'] = '__alloca' DEFINES['alloca'] = '__alloca'

View file

@ -17,7 +17,10 @@
********************************************************************/ ********************************************************************/
#include <math.h> #ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <ogg/os_types.h> #include <ogg/os_types.h>
#ifndef _V_IFDEFJAIL_H_ #ifndef _V_IFDEFJAIL_H_
@ -25,34 +28,55 @@
# ifdef __GNUC__ # ifdef __GNUC__
# define STIN static __inline__ # define STIN static __inline__
# elif _WIN32 # elif defined(__VBCC__)
# define STIN static inline
# elif defined(_WIN32)
# define STIN static __inline # define STIN static __inline
# elif defined(__WATCOMC__)
# define STIN static __inline
# else
# define STIN static
# endif # endif
#else
# define STIN static
#endif
#ifndef M_PI
# define M_PI (3.1415926536f)
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
# include <malloc.h> # include <malloc.h>
# define rint(x) (floor((x)+0.5f))
# define NO_FLOAT_MATH_LIB
# define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
# define LITTLE_ENDIAN 1
# define BYTE_ORDER LITTLE_ENDIAN
#endif #endif
#ifdef HAVE_ALLOCA_H #if defined HAVE_ALLOCA
# include <alloca.h>
# ifdef _WIN32
# include <malloc.h>
# define VAR_STACK(type, var, size) type *var = ((type*)_alloca(sizeof(type)*(size)))
# else
# ifdef HAVE_ALLOCA_H
# include <alloca.h>
# else
# include <stdlib.h>
# endif
# if defined(__AROS__) && defined(__GNUC__)
/* bypass __alloca_get_stack_limit() call in alloca.h
from old AROS SDKs, directly use __builtin_alloca(). */
# undef alloca
# define alloca __builtin_alloca
# endif
# define VAR_STACK(type, var, size) type *var = ((type*) alloca(sizeof(type)*(size)))
# endif
#elif defined VAR_ARRAYS
# define VAR_STACK(type, var, size) type var[size]
#else
#error "Either VAR_ARRAYS or HAVE_ALLOCA must be defined to select the stack allocation mode"
#endif #endif
#ifdef USE_MEMORY_H #ifdef USE_MEMORY_H
# include <memory.h> # include <memory.h>
#endif #endif
#ifndef NOMINMAX
#ifndef min #ifndef min
# define min(x,y) ((x)>(y)?(y):(x)) # define min(x,y) ((x)>(y)?(y):(x))
#endif #endif
@ -60,5 +84,6 @@
#ifndef max #ifndef max
# define max(x,y) ((x)<(y)?(y):(x)) # define max(x,y) ((x)<(y)?(y):(x))
#endif #endif
#endif
#endif /* _OS_H */ #endif /* _OS_H */

View file

@ -17,7 +17,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <math.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
#include "codebook.h" #include "codebook.h"
@ -168,7 +167,7 @@ STIN long decode_packed_entry_number(codebook *book,
int read=book->dec_maxlength; int read=book->dec_maxlength;
long lo,hi; long lo,hi;
long lok = oggpack_look(b,book->dec_firsttablen); long lok = oggpack_look(b,book->dec_firsttablen);
if (lok >= 0) { if (lok >= 0) {
long entry = book->dec_firsttable[lok]; long entry = book->dec_firsttable[lok];
if(entry&0x80000000UL){ if(entry&0x80000000UL){
@ -245,9 +244,9 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){
long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a, long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){ oggpack_buffer *b,int n,int point){
if(book->used_entries>0){ if(book->used_entries>0){
int step=n/book->dim; const int step=n/book->dim;
long *entry = (long *)alloca(sizeof(*entry)*step); VAR_STACK(long, entry, step);
ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step); VAR_STACK(ogg_int32_t *, t, step);
int i,j,o; int i,j,o;
int shift=point-book->binarypoint; int shift=point-book->binarypoint;
@ -336,7 +335,7 @@ long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
} }
}else{ }else{
int i,j; int i;
for(i=0;i<n;){ for(i=0;i<n;){
a[i++]=0; a[i++]=0;
} }

View file

@ -17,7 +17,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <math.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
#include "codec_internal.h" #include "codec_internal.h"
@ -145,7 +144,7 @@ void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
int i; int i;
int ampoffseti=ampoffset*4096; int ampoffseti=ampoffset*4096;
int ampi=amp; int ampi=amp;
ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp)); VAR_STACK(ogg_int32_t, ilsp, m);
/* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/ /* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/
for(i=0;i<m;i++){ for(i=0;i<m;i++){
#ifndef _LOW_ACCURACY_ #ifndef _LOW_ACCURACY_
@ -436,4 +435,3 @@ vorbis_func_floor floor0_exportbundle={
&floor0_free_look,&floor0_inverse1,&floor0_inverse2 &floor0_free_look,&floor0_inverse1,&floor0_inverse2
}; };

View file

@ -17,7 +17,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <math.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
#include "codec_internal.h" #include "codec_internal.h"

View file

@ -20,7 +20,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <ctype.h>
#include <limits.h> #include <limits.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
@ -37,6 +36,10 @@ static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
} }
} }
STIN int _v_toupper(int c) {
return (c >= 'a' && c <= 'z') ? (c & ~('a' - 'A')) : c;
}
void vorbis_comment_init(vorbis_comment *vc){ void vorbis_comment_init(vorbis_comment *vc){
memset(vc,0,sizeof(*vc)); memset(vc,0,sizeof(*vc));
} }
@ -46,7 +49,7 @@ void vorbis_comment_init(vorbis_comment *vc){
static int tagcompare(const char *s1, const char *s2, int n){ static int tagcompare(const char *s1, const char *s2, int n){
int c=0; int c=0;
while(c < n){ while(c < n){
if(toupper(s1[c]) != toupper(s2[c])) if(_v_toupper(s1[c]) != _v_toupper(s2[c]))
return !0; return !0;
c++; c++;
} }
@ -56,8 +59,8 @@ static int tagcompare(const char *s1, const char *s2, int n){
char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){ char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
long i; long i;
int found = 0; int found = 0;
int taglen = strlen(tag)+1; /* +1 for the = we append */ const int taglen = strlen(tag)+1; /* +1 for the = we append */
char *fulltag = (char *)alloca(taglen+ 1); VAR_STACK(char, fulltag, taglen+1);
strcpy(fulltag, tag); strcpy(fulltag, tag);
strcat(fulltag, "="); strcat(fulltag, "=");
@ -76,8 +79,8 @@ char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
int vorbis_comment_query_count(vorbis_comment *vc, char *tag){ int vorbis_comment_query_count(vorbis_comment *vc, char *tag){
int i,count=0; int i,count=0;
int taglen = strlen(tag)+1; /* +1 for the = we append */ const int taglen = strlen(tag)+1; /* +1 for the = we append */
char *fulltag = (char *)alloca(taglen+1); VAR_STACK(char, fulltag, taglen+1);
strcpy(fulltag,tag); strcpy(fulltag,tag);
strcat(fulltag, "="); strcat(fulltag, "=");
@ -166,9 +169,9 @@ static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
vi->channels=oggpack_read(opb,8); vi->channels=oggpack_read(opb,8);
vi->rate=oggpack_read(opb,32); vi->rate=oggpack_read(opb,32);
vi->bitrate_upper=oggpack_read(opb,32); vi->bitrate_upper=(ogg_int32_t)oggpack_read(opb,32);
vi->bitrate_nominal=oggpack_read(opb,32); vi->bitrate_nominal=(ogg_int32_t)oggpack_read(opb,32);
vi->bitrate_lower=oggpack_read(opb,32); vi->bitrate_lower=(ogg_int32_t)oggpack_read(opb,32);
ci->blocksizes[0]=1<<oggpack_read(opb,4); ci->blocksizes[0]=1<<oggpack_read(opb,4);
ci->blocksizes[1]=1<<oggpack_read(opb,4); ci->blocksizes[1]=1<<oggpack_read(opb,4);

View file

@ -18,7 +18,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <math.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
#include "mdct.h" #include "mdct.h"
@ -129,7 +128,6 @@ static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb)
int i,b; int i,b;
vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)_ogg_calloc(1,sizeof(*info)); vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)_ogg_calloc(1,sizeof(*info));
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
memset(info,0,sizeof(*info));
b=oggpack_read(opb,1); b=oggpack_read(opb,1);
if(b<0)goto err_out; if(b<0)goto err_out;
@ -194,11 +192,11 @@ static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
int i,j; int i,j;
long n=vb->pcmend=ci->blocksizes[vb->W]; long n=vb->pcmend=ci->blocksizes[vb->W];
ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); VAR_STACK(ogg_int32_t *, pcmbundle, vi->channels);
int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels); VAR_STACK(int, zerobundle, vi->channels);
int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels); VAR_STACK(int, nonzero, vi->channels);
void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels); VAR_STACK(void *, floormemo, vi->channels);
/* time domain information decode (note that applying the /* time domain information decode (note that applying the
information would have to happen later; we'll probably add a information would have to happen later; we'll probably add a

View file

@ -147,7 +147,7 @@ STIN void mdct_butterfly_32(DATA_TYPE *x){
/* N/stage point generic N stage butterfly (in place, 2 register) */ /* N/stage point generic N stage butterfly (in place, 2 register) */
STIN void mdct_butterfly_generic(DATA_TYPE *x,int points,int step){ STIN void mdct_butterfly_generic(DATA_TYPE *x,int points,int step){
LOOKUP_T *T = sincos_lookup0; const LOOKUP_T *T = sincos_lookup0;
DATA_TYPE *x1 = x + points - 8; DATA_TYPE *x1 = x + points - 8;
DATA_TYPE *x2 = x + (points>>1) - 8; DATA_TYPE *x2 = x + (points>>1) - 8;
REG_TYPE r0; REG_TYPE r0;
@ -257,8 +257,8 @@ STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift){
int bit = 0; int bit = 0;
DATA_TYPE *w0 = x; DATA_TYPE *w0 = x;
DATA_TYPE *w1 = x = w0+(n>>1); DATA_TYPE *w1 = x = w0+(n>>1);
LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; const LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1;
LOOKUP_T *Ttop = T+1024; const LOOKUP_T *Ttop = T+1024;
DATA_TYPE r2; DATA_TYPE r2;
do{ do{
@ -342,8 +342,8 @@ void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out){
int n4=n>>2; int n4=n>>2;
DATA_TYPE *iX; DATA_TYPE *iX;
DATA_TYPE *oX; DATA_TYPE *oX;
LOOKUP_T *T; const LOOKUP_T *T;
LOOKUP_T *V; const LOOKUP_T *V;
int shift; int shift;
int step; int step;

View file

@ -17,7 +17,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <math.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "ivorbiscodec.h" #include "ivorbiscodec.h"
#include "codec_internal.h" #include "codec_internal.h"
@ -226,7 +225,7 @@ static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
if(n>0){ if(n>0){
int partvals=n/samples_per_partition; int partvals=n/samples_per_partition;
int partwords=(partvals+partitions_per_word-1)/partitions_per_word; int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
int ***partword=(int ***)alloca(ch*sizeof(*partword)); VAR_STACK(int **, partword, ch);
for(j=0;j<ch;j++) for(j=0;j<ch;j++)
partword[j]=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword[j])); partword[j]=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));

View file

@ -16,7 +16,6 @@
********************************************************************/ ********************************************************************/
#include <stdlib.h> #include <stdlib.h>
#include <math.h>
#include <string.h> #include <string.h>
#include <ogg/ogg.h> #include <ogg/ogg.h>
#include "misc.h" #include "misc.h"
@ -330,7 +329,7 @@ static int sort32a(const void *a,const void *b){
/* decode codebook arrangement is more heavily optimized than encode */ /* decode codebook arrangement is more heavily optimized than encode */
int vorbis_book_init_decode(codebook *c,const static_codebook *s){ int vorbis_book_init_decode(codebook *c,const static_codebook *s){
int i,j,n=0,tabn; int i,j,n=0,tabn;
int *sortindex;
memset(c,0,sizeof(*c)); memset(c,0,sizeof(*c));
/* count actually used entries */ /* count actually used entries */
@ -355,7 +354,7 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){
/* perform sort */ /* perform sort */
ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries); ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries);
ogg_uint32_t **codep=(ogg_uint32_t **)alloca(sizeof(*codep)*n); VAR_STACK(ogg_uint32_t *, codep, n);
if(codes==NULL)goto err_out; if(codes==NULL)goto err_out;
@ -366,7 +365,7 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){
qsort(codep,n,sizeof(*codep),sort32a); qsort(codep,n,sizeof(*codep),sort32a);
sortindex=(int *)alloca(n*sizeof(*sortindex)); { VAR_STACK(int, sortindex, n);
c->codelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist)); c->codelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist));
/* the index is a reverse index */ /* the index is a reverse index */
for(i=0;i<n;i++){ for(i=0;i<n;i++){
@ -391,7 +390,7 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){
for(n=0,i=0;i<s->entries;i++) for(n=0,i=0;i<s->entries;i++)
if(s->lengthlist[i]>0) if(s->lengthlist[i]>0)
c->dec_codelengths[sortindex[n++]]=s->lengthlist[i]; c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
}
c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */ c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */
if(c->dec_firsttablen<5)c->dec_firsttablen=5; if(c->dec_firsttablen<5)c->dec_firsttablen=5;
if(c->dec_firsttablen>8)c->dec_firsttablen=8; if(c->dec_firsttablen>8)c->dec_firsttablen=8;
@ -444,4 +443,3 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){
vorbis_book_clear(c); vorbis_book_clear(c);
return(-1); return(-1);
} }

View file

@ -16,7 +16,6 @@
********************************************************************/ ********************************************************************/
#include <stdlib.h> #include <stdlib.h>
#include <math.h>
#include "misc.h" #include "misc.h"
#include "window.h" #include "window.h"
#include "window_lookup.h" #include "window_lookup.h"
@ -56,7 +55,7 @@ void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
long *blocksizes, long *blocksizes,
int lW,int W,int nW){ int lW,int W,int nW){
LOOKUP_T *window[2]={window_p[0],window_p[1]}; const LOOKUP_T *window[2];
long n=blocksizes[W]; long n=blocksizes[W];
long ln=blocksizes[lW]; long ln=blocksizes[lW];
long rn=blocksizes[nW]; long rn=blocksizes[nW];
@ -69,6 +68,9 @@ void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
int i,p; int i,p;
window[0] = (const LOOKUP_T *)window_p[0];
window[1] = (const LOOKUP_T *)window_p[1];
for(i=0;i<leftbegin;i++) for(i=0;i<leftbegin;i++)
d[i]=0; d[i]=0;