Hello,

Just wanted to see the movie today....

The gcc become so good that it actually forces one to write the standards
compliant code ;). And, according to the C++ standard (at last to the old
ones I'learned a while ago) "inline" methods must be defined in the
_header_ file, not in the .cpp file. This is how the modules which
"include" the header would see it.

The patch does just that, it moves few offending inline methods from
./plugins/libmpeg_audiodec/filter.cpp
./plugins/libmpeg_audiodec/filter.cpp

into
./plugins/libmpeg_audiodec/mpegsound.h

where they belong.

If You do not have the sources installed do

--------
> cd /Your temp dir
> cvs -d:pserver:[EMAIL PROTECTED]:/cvsroot/avifile login
> cvs -z3 -d:pserver:[EMAIL PROTECTED]:/cvsroot/avifile co 
>avifile-0.6
> cd avifile-0.6
> patch where/You/put/the/patch/sound_under_gcc_2.96.diff
> ./autogen.sh
> ./configure
> make
> su -
> make install
--------

otherwise You probaby know what to do.

This worked for me. I've also noticed that adding "-O3 -m686" options to
gcc significantly improves performance on my P-II.

Have a nice day !

With the best regards, Konstantin.

? sound_under_gcc_2.96.diff
Index: plugins/libmpeg_audiodec/filter.cpp
===================================================================
RCS file: /cvsroot/avifile/avifile-0.6/plugins/libmpeg_audiodec/filter.cpp,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 filter.cpp
159,317d158
< #define SAVE \
<         raw=(int)(r*scalefactor); \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw);
< #define OS  r=*vp * *dp++
< #define XX  vp+=15;r+=*vp * *dp++
< #define OP  r+=*--vp * *dp++
< 
< inline void Mpegtoraw::generatesingle(void)
< {
<   int i;
<   register REAL r, *vp;
<   register const REAL *dp;
<   int raw;
< 
<   i=32;
<   dp=filter;
<   vp=calcbufferL[currentcalcbuffer]+calcbufferoffset; 
< // actual_v+actual_write_pos;
< 
<   switch (calcbufferoffset)
<   {
<     case  0:for(;i;i--,vp+=15){
<               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  1:for(;i;i--,vp+=15){
<             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  2:for(;i;i--,vp+=15){
<               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  3:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  4:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  5:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  6:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  7:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  8:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  9:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case 10:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
<             SAVE;}break;
<     case 11:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
<             SAVE;}break;
<     case 12:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
<             SAVE;}break;
<     case 13:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
<             SAVE;}break;
<     case 14:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
<             SAVE;}break;
<     case 15:for(;i;i--,vp+=31){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<   }
< }
< 
< #undef OS
< #undef XX
< #undef OP
< #undef SAVE
< 
< #define SAVE \
<         raw=(int)(r1*scalefactor);  \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw);  \
<         raw=(int)(r2*scalefactor);  \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw);
< #define OS r1=*vp1 * *dp; \
<            r2=*vp2 * *dp++ 
< #define XX vp1+=15;r1+=*vp1 * *dp; \
<          vp2+=15;r2+=*vp2 * *dp++
< #define OP r1+=*--vp1 * *dp; \
<          r2+=*--vp2 * *dp++
< 
< 
< inline void Mpegtoraw::generate(void)
< {
<   int i;
<   REAL r1,r2;
<   register REAL *vp1,*vp2;
<   register const REAL *dp;
<   int raw;
< 
<   dp=filter;
<   vp1=calcbufferL[currentcalcbuffer]+calcbufferoffset;
<   vp2=calcbufferR[currentcalcbuffer]+calcbufferoffset;
< // actual_v+actual_write_pos;
< 
<   i=32;
<   switch (calcbufferoffset)
<   {
<     case  0:for(;i;i--,vp1+=15,vp2+=15){
<               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  1:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  2:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  3:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  4:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  5:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  6:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  7:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  8:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  9:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case 10:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
<             SAVE;}break;
<     case 11:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
<             SAVE;}break;
<     case 12:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
<             SAVE;}break;
<     case 13:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
<             SAVE;}break;
<     case 14:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
<             SAVE;}break;
<     case 15:for(;i;i--,vp1+=31,vp2+=31){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<   }
< }
Index: plugins/libmpeg_audiodec/filter_2.cpp
===================================================================
RCS file: /cvsroot/avifile/avifile-0.6/plugins/libmpeg_audiodec/filter_2.cpp,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 filter_2.cpp
178,341d177
< 
< #define SAVE \
<         raw=(int)(r*scalefactor); \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw); \
<         dp+=16;vp+=15+(15-14)
< #define OS   r=*vp * *dp++
< #define XX   vp+=15;r+=*vp * *dp++
< #define OP   r+=*--vp * *dp++
< 
< inline void Mpegtoraw::generatesingle_2(void)
< {
<   int i;
<   register REAL r, *vp;
<   register const REAL *dp;
<   int raw;
< 
<   i=32/2;
<   dp=filter;
<   vp=calcbufferL[currentcalcbuffer]+calcbufferoffset; 
< // actual_v+actual_write_pos;
< 
<   switch (calcbufferoffset)
<   {
<     case  0:for(;i;i--,vp+=15){
<               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  1:for(;i;i--,vp+=15){
<             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  2:for(;i;i--,vp+=15){
<               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  3:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  4:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  5:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  6:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  7:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  8:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  9:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case 10:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
<             SAVE;}break;
<     case 11:for(;i;i--,vp+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
<             SAVE;}break;
<     case 12:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
<             SAVE;}break;
<     case 13:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
<             SAVE;}break;
<     case 14:for(;i;i--,vp+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
<             SAVE;}break;
<     case 15:for(;i;i--,vp+=31){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<   }
< }
< 
< #undef OS
< #undef XX
< #undef OP
< #undef SAVE
< 
< #define SAVE \
<         raw=(int)(r1*scalefactor);  \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw);  \
<         raw=(int)(r2*scalefactor);  \
<         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
<       putraw(raw); \
<         dp+=16;vp1+=15+(15-14);vp2+=15+(15-14)
< #define OS r1=*vp1 * *dp; \
<            r2=*vp2 * *dp++ 
< #define XX vp1+=15;r1+=*vp1 * *dp; \
<          vp2+=15;r2+=*vp2 * *dp++
< #define OP r1+=*--vp1 * *dp; \
<          r2+=*--vp2 * *dp++
< 
< 
< inline void Mpegtoraw::generate_2(void)
< {
<   int i;
<   REAL r1,r2;
<   register REAL *vp1,*vp2;
<   register const REAL *dp;
<   int raw;
< 
<   dp=filter;
<   vp1=calcbufferL[currentcalcbuffer]+calcbufferoffset;
<   vp2=calcbufferR[currentcalcbuffer]+calcbufferoffset;
< // actual_v+actual_write_pos;
< 
<   i=32/2;
<   switch (calcbufferoffset)
<   {
<     case  0:for(;i;i--,vp1+=15,vp2+=15){
<               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  1:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  2:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  3:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  4:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  5:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  6:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  7:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  8:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case  9:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
<             SAVE;}break;
<     case 10:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
<             SAVE;}break;
<     case 11:for(;i;i--,vp1+=15,vp2+=15){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
<             SAVE;}break;
<     case 12:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
<             SAVE;}break;
<     case 13:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
<             SAVE;}break;
<     case 14:for(;i;i--,vp1+=15,vp2+=15){
<             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
<             SAVE;}break;
<     case 15:for(;i;i--,vp1+=31,vp2+=31){
<               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
<             SAVE;}break;
<   }
< }
< 
< 
Index: plugins/libmpeg_audiodec/mpegsound.h
===================================================================
RCS file: /cvsroot/avifile/avifile-0.6/plugins/libmpeg_audiodec/mpegsound.h,v
retrieving revision 1.10
diff -r1.10 mpegsound.h
466a467,793
> #define SAVE \
>         raw=(int)(r*scalefactor); \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw); \
>         dp+=16;vp+=15+(15-14)
> #define OS   r=*vp * *dp++
> #define XX   vp+=15;r+=*vp * *dp++
> #define OP   r+=*--vp * *dp++
> 
> inline void Mpegtoraw::generatesingle_2(void)
> {
>   int i;
>   register REAL r, *vp;
>   register const REAL *dp;
>   int raw;
> 
>   i=32/2;
>   dp=filter;
>   vp=calcbufferL[currentcalcbuffer]+calcbufferoffset; 
> // actual_v+actual_write_pos;
> 
>   switch (calcbufferoffset)
>   {
>     case  0:for(;i;i--,vp+=15){
>               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  1:for(;i;i--,vp+=15){
>             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  2:for(;i;i--,vp+=15){
>               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  3:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  4:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  5:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  6:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  7:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  8:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  9:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case 10:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
>             SAVE;}break;
>     case 11:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
>             SAVE;}break;
>     case 12:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
>             SAVE;}break;
>     case 13:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
>             SAVE;}break;
>     case 14:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
>             SAVE;}break;
>     case 15:for(;i;i--,vp+=31){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>   }
> }
> 
> #undef OS
> #undef XX
> #undef OP
> #undef SAVE
> 
> 
> #define SAVE \
>         raw=(int)(r1*scalefactor);  \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw);  \
>         raw=(int)(r2*scalefactor);  \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw); \
>         dp+=16;vp1+=15+(15-14);vp2+=15+(15-14)
> #define OS r1=*vp1 * *dp; \
>            r2=*vp2 * *dp++ 
> #define XX vp1+=15;r1+=*vp1 * *dp; \
>          vp2+=15;r2+=*vp2 * *dp++
> #define OP r1+=*--vp1 * *dp; \
>          r2+=*--vp2 * *dp++
> 
> 
> inline void Mpegtoraw::generate_2(void)
> {
>   int i;
>   REAL r1,r2;
>   register REAL *vp1,*vp2;
>   register const REAL *dp;
>   int raw;
> 
>   dp=filter;
>   vp1=calcbufferL[currentcalcbuffer]+calcbufferoffset;
>   vp2=calcbufferR[currentcalcbuffer]+calcbufferoffset;
> // actual_v+actual_write_pos;
> 
>   i=32/2;
>   switch (calcbufferoffset)
>   {
>     case  0:for(;i;i--,vp1+=15,vp2+=15){
>               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  1:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  2:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  3:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  4:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  5:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  6:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  7:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  8:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  9:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case 10:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
>             SAVE;}break;
>     case 11:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
>             SAVE;}break;
>     case 12:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
>             SAVE;}break;
>     case 13:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
>             SAVE;}break;
>     case 14:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
>             SAVE;}break;
>     case 15:for(;i;i--,vp1+=31,vp2+=31){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>   }
> }
> 
> #undef OS
> #undef XX
> #undef OP
> #undef SAVE
> 
> #define SAVE \
>         raw=(int)(r*scalefactor); \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw);
> #define OS  r=*vp * *dp++
> #define XX  vp+=15;r+=*vp * *dp++
> #define OP  r+=*--vp * *dp++
> 
> inline void Mpegtoraw::generatesingle(void)
> {
>   int i;
>   register REAL r, *vp;
>   register const REAL *dp;
>   int raw;
> 
>   i=32;
>   dp=filter;
>   vp=calcbufferL[currentcalcbuffer]+calcbufferoffset; 
> // actual_v+actual_write_pos;
> 
>   switch (calcbufferoffset)
>   {
>     case  0:for(;i;i--,vp+=15){
>               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  1:for(;i;i--,vp+=15){
>             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  2:for(;i;i--,vp+=15){
>               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  3:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  4:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  5:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  6:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  7:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  8:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  9:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case 10:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
>             SAVE;}break;
>     case 11:for(;i;i--,vp+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
>             SAVE;}break;
>     case 12:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
>             SAVE;}break;
>     case 13:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
>             SAVE;}break;
>     case 14:for(;i;i--,vp+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
>             SAVE;}break;
>     case 15:for(;i;i--,vp+=31){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>   }
> }
> 
> #undef OS
> #undef XX
> #undef OP
> #undef SAVE
> 
> #define SAVE \
>         raw=(int)(r1*scalefactor);  \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw);  \
>         raw=(int)(r2*scalefactor);  \
>         if(raw>MAXSCALE)raw=MAXSCALE;else if(raw<MINSCALE)raw=MINSCALE; \
>       putraw(raw);
> #define OS r1=*vp1 * *dp; \
>            r2=*vp2 * *dp++ 
> #define XX vp1+=15;r1+=*vp1 * *dp; \
>          vp2+=15;r2+=*vp2 * *dp++
> #define OP r1+=*--vp1 * *dp; \
>          r2+=*--vp2 * *dp++
> 
> 
> inline void Mpegtoraw::generate(void)
> {
>   int i;
>   REAL r1,r2;
>   register REAL *vp1,*vp2;
>   register const REAL *dp;
>   int raw;
> 
>   dp=filter;
>   vp1=calcbufferL[currentcalcbuffer]+calcbufferoffset;
>   vp2=calcbufferR[currentcalcbuffer]+calcbufferoffset;
> // actual_v+actual_write_pos;
> 
>   i=32;
>   switch (calcbufferoffset)
>   {
>     case  0:for(;i;i--,vp1+=15,vp2+=15){
>               OS;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  1:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  2:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  3:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  4:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  5:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  6:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  7:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  8:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case  9:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;OP;
>             SAVE;}break;
>     case 10:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;OP;
>             SAVE;}break;
>     case 11:for(;i;i--,vp1+=15,vp2+=15){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;OP;
>             SAVE;}break;
>     case 12:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;OP;
>             SAVE;}break;
>     case 13:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;OP;
>             SAVE;}break;
>     case 14:for(;i;i--,vp1+=15,vp2+=15){
>             OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;XX;
>             SAVE;}break;
>     case 15:for(;i;i--,vp1+=31,vp2+=31){
>               OS;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;OP;
>             SAVE;}break;
>   }
> }

Reply via email to