00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdlib.h>
00028 #include "caudiox.hpp"
00029
00030
00031
00032 VOID CAudio::minmax( LONG len, DOUBLE *min, DOUBLE *max )
00033 {
00034 DOUBLE d, mi, ma;
00035 LONG i;
00036
00037 mi=ma=0;
00038
00039 if (len>0) {
00040 get(d);
00041 ma=mi=d;
00042 for (i=1; i<len; i++) {
00043 get(d);
00044 if (d>ma) ma=d;
00045 if (d<mi) mi=d;
00046 }
00047 }
00048 if (min) *min=mi;
00049 if (max) *max=ma;
00050 }
00051
00052
00053
00054 VOID CAudio::minmax( LONG len, INT16 *min, INT16 *max )
00055 {
00056 INT16 d, mi, ma;
00057 LONG i;
00058
00059 mi=ma=0;
00060
00061 if (len>0) {
00062 get(d);
00063 ma=mi=d;
00064 for (i=1; i<len; i++) {
00065 get(d);
00066 if (d>ma) ma=d;
00067 if (d<mi) mi=d;
00068 }
00069 }
00070 if (min) *min=mi;
00071 if (max) *max=ma;
00072 }
00073
00074
00075
00076 LONG CAudio::maxfr( UINT framelen, UINT winlen, LONG nframes )
00077 {
00078 LONG pos0 = getPos();
00079 INT ofs;
00080 LONG max, posmax;
00081
00082 if (nframes<0) {
00083 LONG len=getNSamples()-pos0;
00084 nframes=(LONG)((len+framelen-1)/framelen);
00085 }
00086
00087 if (framelen<=winlen)
00088 ofs = -((INT)(winlen-framelen+1)/2);
00089 else
00090 ofs = ((INT)(framelen-winlen)/2);
00091
00092 max=0;
00093 posmax=0;
00094 for ( LONG fr=0; fr<nframes; fr++) {
00095 setPos(pos0+fr*framelen+ofs);
00096 INT16 *v = get_i16(winlen);
00097 LONG sum=0;
00098 for (UINT i=0; i<winlen; i++)
00099 sum += abs(v[i]);
00100 if (sum>max) {
00101 max=sum;
00102 posmax = fr;
00103 }
00104 }
00105 return posmax;
00106 }
00107
00108
00109