Mercurial > mplayer.hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
5205:47259a4f3216 | 5206:2ca5a9bfaa98 |
---|---|
326 } | 326 } |
327 | 327 |
328 int init_audio(sh_audio_t *sh_audio){ | 328 int init_audio(sh_audio_t *sh_audio){ |
329 int driver=sh_audio->codec->driver; | 329 int driver=sh_audio->codec->driver; |
330 | 330 |
331 sh_audio->samplesize=2; | 331 if(!sh_audio->samplesize) |
332 sh_audio->samplesize=2; | |
333 if(!sh_audio->sample_format) | |
332 #ifdef WORDS_BIGENDIAN | 334 #ifdef WORDS_BIGENDIAN |
333 sh_audio->sample_format=AFMT_S16_BE; | 335 sh_audio->sample_format=AFMT_S16_BE; |
334 #else | 336 #else |
335 sh_audio->sample_format=AFMT_S16_LE; | 337 sh_audio->sample_format=AFMT_S16_LE; |
336 #endif | 338 #endif |
337 sh_audio->samplerate=0; | 339 //sh_audio->samplerate=0; |
338 //sh_audio->pcm_bswap=0; | 340 //sh_audio->pcm_bswap=0; |
339 sh_audio->o_bps=0; | 341 //sh_audio->o_bps=0; |
340 | 342 |
341 sh_audio->a_buffer_size=0; | 343 sh_audio->a_buffer_size=0; |
342 sh_audio->a_buffer=NULL; | 344 sh_audio->a_buffer=NULL; |
343 | 345 |
344 sh_audio->a_in_buffer_len=0; | 346 sh_audio->a_in_buffer_len=0; |
838 case AFM_AAC: { | 840 case AFM_AAC: { |
839 unsigned long faac_samplerate, faac_channels; | 841 unsigned long faac_samplerate, faac_channels; |
840 faacDecConfigurationPtr faac_conf; | 842 faacDecConfigurationPtr faac_conf; |
841 faac_hdec = faacDecOpen(); | 843 faac_hdec = faacDecOpen(); |
842 | 844 |
843 #if 0 | 845 #if 1 |
844 /* Set the default object type and samplerate */ | 846 /* Set the default object type and samplerate */ |
845 /* This is useful for RAW AAC files */ | 847 /* This is useful for RAW AAC files */ |
846 faac_conf = faacDecGetCurrentConfiguration(faac_hdec); | 848 faac_conf = faacDecGetCurrentConfiguration(faac_hdec); |
847 if(sh_audio->samplerate) | 849 if(sh_audio->samplerate) |
848 faac_conf->defSampleRate = sh_audio->samplerate; | 850 faac_conf->defSampleRate = sh_audio->samplerate; |
849 /* XXX: is outputFormat samplesize of compressed data or samplesize of | 851 /* XXX: FAAD support FLOAT output, how do we handle |
850 * decoded data, maybe upsampled? Also, FAAD support FLOAT output, | 852 * that (FAAD_FMT_FLOAT)? ::atmos |
851 * how do we handle that (FAAD_FMT_FLOAT)? ::atmos | 853 */ |
852 */ | |
853 if(sh_audio->samplesize) | 854 if(sh_audio->samplesize) |
854 switch(sh_audio->samplesize){ | 855 switch(sh_audio->samplesize){ |
855 case 1: // 8Bit | 856 case 1: // 8Bit |
856 mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: 8Bit samplesize not supported by FAAD, assuming 16Bit!\n"); | 857 mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: 8Bit samplesize not supported by FAAD, assuming 16Bit!\n"); |
857 default: | 858 default: |
863 break; | 864 break; |
864 case 4: // 32Bit | 865 case 4: // 32Bit |
865 faac_conf->outputFormat = FAAD_FMT_32BIT; | 866 faac_conf->outputFormat = FAAD_FMT_32BIT; |
866 break; | 867 break; |
867 } | 868 } |
868 faac_conf->defObjectType = LTP; // => MAIN, LC, SSR, LTP available. | 869 //faac_conf->defObjectType = LTP; // => MAIN, LC, SSR, LTP available. |
869 | 870 |
870 faacDecSetConfiguration(faac_hdec, faac_conf); | 871 faacDecSetConfiguration(faac_hdec, faac_conf); |
871 #endif | 872 #endif |
872 | 873 |
873 if(faac_buffer == NULL) | 874 if(faac_buffer == NULL) |
885 } else { | 886 } else { |
886 mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Decoder init done (%dBytes)!\n", faac_bytesconsumed); // XXX: remove or move to debug! | 887 mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Decoder init done (%dBytes)!\n", faac_bytesconsumed); // XXX: remove or move to debug! |
887 mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Negotiated samplerate: %dHz channels: %d\n", faac_samplerate, faac_channels); | 888 mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: Negotiated samplerate: %dHz channels: %d\n", faac_samplerate, faac_channels); |
888 sh_audio->channels = faac_channels; | 889 sh_audio->channels = faac_channels; |
889 sh_audio->samplerate = faac_samplerate; | 890 sh_audio->samplerate = faac_samplerate; |
890 sh_audio->i_bps = 128*1000/8; // XXX: HACK!!! There's currently no way to get bitrate from libfaad2! ::atmos | 891 if(!sh_audio->i_bps) { |
892 mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: compressed input bitrate missing, assuming 128kbit/s!\n"); | |
893 sh_audio->i_bps = 128*1000/8; // XXX: HACK!!! There's currently no way to get bitrate from libfaad2! ::atmos | |
894 } else | |
895 mp_msg(MSGT_DECAUDIO,MSGL_V,"FAAD: got %dkbit/s rate from MP4 header!\n",sh_audio->i_bps*8/1000); | |
891 } | 896 } |
892 | 897 |
893 } break; | 898 } break; |
894 #endif | 899 #endif |
895 | 900 |