diff -Naur MPlayer-20030204/configure MPlayer-faad2-patch/configure --- MPlayer-20030204/configure 2003-02-02 12:46:57.000000000 +0100 +++ MPlayer-faad2-patch/configure 2003-02-04 21:16:13.000000000 +0100 @@ -3759,7 +3759,29 @@ else _def_faad='#undef HAVE_FAAD' fi -echores "$_faad" + +if test "$_faad" = yes; then +cat > $TMPC < +int main(int argc) { + char temp[]=FAAD2_VERSION; + if(argc==1)printf("%s",strtok(temp,".")); + if(argc==2){strtok(temp,".");printf("%s",strtok(0," "));} + return 0; +} +EOF + if cc_check $_ld_faad -lm && "$TMPO" >> "$TMPLOG" ; then + _faad_version_major=`"$TMPO"` + _faad_version_minor=`"$TMPO" -` + _def_faad_version="#define FAADVERSION $_faad_version_major$_faad_version_minor" + echores "yes ($_faad_version_major.$_faad_version_minor)" + else + _faad=no + echores "no (failed to get version)" + fi +else + echores "$_faad" +fi if test "$_win32" = auto ; then if x86 ; then @@ -5252,6 +5274,7 @@ /* enable FAAD (AAC) support */ $_def_faad +$_def_faad_version /* enable streaming */ $_def_streaming diff -Naur MPlayer-20030204/libmpcodecs/ad_faad.c MPlayer-faad2-patch/libmpcodecs/ad_faad.c --- MPlayer-20030204/libmpcodecs/ad_faad.c 2002-10-07 12:18:46.000000000 +0200 +++ MPlayer-faad2-patch/libmpcodecs/ad_faad.c 2003-02-04 21:02:02.000000000 +0100 @@ -85,8 +85,13 @@ sh->a_in_buffer_len = demux_read_data(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size); /* init the codec */ + #if (FAADVERSION <= 11) faac_init = faacDecInit(faac_hdec, sh->a_in_buffer, &faac_samplerate, &faac_channels); + #else + faac_init = faacDecInit(faac_hdec, sh->a_in_buffer, + sh->a_in_buffer_len, &faac_samplerate, &faac_channels); + #endif sh->a_in_buffer_len -= (faac_init > 0)?faac_init:0; // how many bytes init consumed // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi @@ -164,7 +169,12 @@ if(!sh->codecdata_len){ // raw aac stream: do { + #if (FAADVERSION <= 11) faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j); + #else + faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j, sh->a_in_buffer_len); + #endif + /* update buffer index after faacDecDecode */ if(faac_finfo.bytesconsumed >= sh->a_in_buffer_len) { sh->a_in_buffer_len=0; @@ -184,7 +194,11 @@ unsigned char* bufptr=NULL; int buflen=ds_get_packet(sh->ds, &bufptr); if(buflen<=0) break; + #if (FAADVERSION <= 11) faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr); + #else + faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr, buflen); + #endif // printf("FAAC decoded %d of %d (err: %d) \n",faac_finfo.bytesconsumed,buflen,faac_finfo.error); }