--- ad_faad-old.c 2004-05-10 22:08:57.000000000 +0200 +++ ad_faad.c 2004-05-10 22:10:36.000000000 +0200 @@ -61,6 +61,27 @@ /* Set the default object type and samplerate */ /* This is useful for RAW AAC files */ faac_conf = faacDecGetCurrentConfiguration(faac_hdec); + if(sh->wf){ + faac_conf->defSampleRate = sh->wf->nSamplesPerSec; + switch(sh->wf->wBitsPerSample){ + case 8: + mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: 8Bit samplesize not supported by FAAD, assuming 16Bit!\n"); + default: + case 16: // 16Bit + faac_conf->outputFormat = FAAD_FMT_16BIT; + break; + case 24: // 24Bit + faac_conf->outputFormat = FAAD_FMT_24BIT; + break; + case 32: // 32Bit + faac_conf->outputFormat = FAAD_FMT_32BIT; + break; + } + faac_channels=sh->wf->nChannels; + faac_samplerate=sh->wf->nSamplesPerSec; + sh->i_bps=sh->wf->nAvgBytesPerSec; + } + else{ if(sh->samplerate) faac_conf->defSampleRate = sh->samplerate; /* XXX: FAAD support FLOAT output, how do we handle @@ -81,6 +102,7 @@ faac_conf->outputFormat = FAAD_FMT_32BIT; break; } + } //faac_conf->defObjectType = LTP; // => MAIN, LC, SSR, LTP available. faacDecSetConfiguration(faac_hdec, faac_conf); @@ -116,6 +138,12 @@ } else { mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Decoder init done (%dBytes)!\n", sh->a_in_buffer_len); // XXX: remove or move to debug! mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Negotiated samplerate: %dHz channels: %d\n", faac_samplerate, faac_channels); + + if(sh->wf) + { + faac_channels=sh->wf->nChannels; + faac_samplerate=sh->wf->nSamplesPerSec; + } sh->channels = faac_channels; sh->samplerate = faac_samplerate; //sh->o_bps = sh->samplesize*faac_channels*faac_samplerate;