Mercurial > mplayer.hg
diff dec_audio.c @ 5206:2ca5a9bfaa98
allow sh_audio struct to be initialized by demuxer, add parsing of mp4 esds header to mov demuxer, init faad from info from mov header
author | atmos4 |
---|---|
date | Tue, 19 Mar 2002 21:48:55 +0000 |
parents | 59df6b778d78 |
children | 6175c9cfab11 |
line wrap: on
line diff
--- a/dec_audio.c Tue Mar 19 19:22:00 2002 +0000 +++ b/dec_audio.c Tue Mar 19 21:48:55 2002 +0000 @@ -328,15 +328,17 @@ int init_audio(sh_audio_t *sh_audio){ int driver=sh_audio->codec->driver; -sh_audio->samplesize=2; +if(!sh_audio->samplesize) + sh_audio->samplesize=2; +if(!sh_audio->sample_format) #ifdef WORDS_BIGENDIAN -sh_audio->sample_format=AFMT_S16_BE; + sh_audio->sample_format=AFMT_S16_BE; #else -sh_audio->sample_format=AFMT_S16_LE; + sh_audio->sample_format=AFMT_S16_LE; #endif -sh_audio->samplerate=0; +//sh_audio->samplerate=0; //sh_audio->pcm_bswap=0; -sh_audio->o_bps=0; +//sh_audio->o_bps=0; sh_audio->a_buffer_size=0; sh_audio->a_buffer=NULL; @@ -840,16 +842,15 @@ faacDecConfigurationPtr faac_conf; faac_hdec = faacDecOpen(); -#if 0 +#if 1 /* Set the default object type and samplerate */ /* This is useful for RAW AAC files */ faac_conf = faacDecGetCurrentConfiguration(faac_hdec); if(sh_audio->samplerate) faac_conf->defSampleRate = sh_audio->samplerate; - /* XXX: is outputFormat samplesize of compressed data or samplesize of - * decoded data, maybe upsampled? Also, FAAD support FLOAT output, - * how do we handle that (FAAD_FMT_FLOAT)? ::atmos - */ + /* XXX: FAAD support FLOAT output, how do we handle + * that (FAAD_FMT_FLOAT)? ::atmos + */ if(sh_audio->samplesize) switch(sh_audio->samplesize){ case 1: // 8Bit @@ -865,7 +866,7 @@ faac_conf->outputFormat = FAAD_FMT_32BIT; break; } - faac_conf->defObjectType = LTP; // => MAIN, LC, SSR, LTP available. + //faac_conf->defObjectType = LTP; // => MAIN, LC, SSR, LTP available. faacDecSetConfiguration(faac_hdec, faac_conf); #endif @@ -887,7 +888,11 @@ mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Negotiated samplerate: %dHz channels: %d\n", faac_samplerate, faac_channels); sh_audio->channels = faac_channels; sh_audio->samplerate = faac_samplerate; - sh_audio->i_bps = 128*1000/8; // XXX: HACK!!! There's currently no way to get bitrate from libfaad2! ::atmos + if(!sh_audio->i_bps) { + mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: compressed input bitrate missing, assuming 128kbit/s!\n"); + sh_audio->i_bps = 128*1000/8; // XXX: HACK!!! There's currently no way to get bitrate from libfaad2! ::atmos + } else + mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: got %dkbit/s rate from MP4 header!\n",sh_audio->i_bps*8/1000); } } break;