Mercurial > mplayer.hg
comparison mencoder.c @ 6534:fce6f98eb72e
fixed mono mp3 encoding, hint by Paul Ortyl
author | alex |
---|---|
date | Sun, 23 Jun 2002 19:09:25 +0000 |
parents | f8d544dd22e9 |
children | 896c062e85ec |
comparison
equal
deleted
inserted
replaced
6533:52f8bde27fea | 6534:fce6f98eb72e |
---|---|
714 mux_a->h.dwRate=force_srate?force_srate:sh_audio->samplerate; | 714 mux_a->h.dwRate=force_srate?force_srate:sh_audio->samplerate; |
715 mux_a->h.dwScale=(mux_a->h.dwRate<32000)?576:1152; // samples/frame | 715 mux_a->h.dwScale=(mux_a->h.dwRate<32000)?576:1152; // samples/frame |
716 if(sizeof(MPEGLAYER3WAVEFORMAT)!=30) mp_msg(MSGT_MENCODER,MSGL_WARN,"sizeof(MPEGLAYER3WAVEFORMAT)==%d!=30, maybe broken C compiler?\n",sizeof(MPEGLAYER3WAVEFORMAT)); | 716 if(sizeof(MPEGLAYER3WAVEFORMAT)!=30) mp_msg(MSGT_MENCODER,MSGL_WARN,"sizeof(MPEGLAYER3WAVEFORMAT)==%d!=30, maybe broken C compiler?\n",sizeof(MPEGLAYER3WAVEFORMAT)); |
717 mux_a->wf=malloc(sizeof(MPEGLAYER3WAVEFORMAT)); // should be 30 | 717 mux_a->wf=malloc(sizeof(MPEGLAYER3WAVEFORMAT)); // should be 30 |
718 mux_a->wf->wFormatTag=0x55; // MP3 | 718 mux_a->wf->wFormatTag=0x55; // MP3 |
719 mux_a->wf->nChannels=(lame_param_mode == 3) ? 1 : sh_audio->channels; | 719 mux_a->wf->nChannels= sh_audio->channels; |
720 mux_a->wf->nSamplesPerSec=force_srate?force_srate:sh_audio->samplerate; | 720 mux_a->wf->nSamplesPerSec=force_srate?force_srate:sh_audio->samplerate; |
721 mux_a->wf->nAvgBytesPerSec=192000/8; // FIXME! | 721 mux_a->wf->nAvgBytesPerSec=192000/8; // FIXME! |
722 mux_a->wf->nBlockAlign=(mux_a->h.dwRate<32000)?576:1152; // required for l3codeca.acm + WMP 6.4 | 722 mux_a->wf->nBlockAlign=(mux_a->h.dwRate<32000)?576:1152; // required for l3codeca.acm + WMP 6.4 |
723 mux_a->wf->wBitsPerSample=0; //16; | 723 mux_a->wf->wBitsPerSample=0; //16; |
724 // from NaNdub: (requires for l3codeca.acm) | 724 // from NaNdub: (requires for l3codeca.acm) |
852 int len=dec_audio(sh_audio,tmp,2304); | 852 int len=dec_audio(sh_audio,tmp,2304); |
853 if(len<=0) break; // eof | 853 if(len<=0) break; // eof |
854 /* mono encoding, a bit tricky */ | 854 /* mono encoding, a bit tricky */ |
855 if (mux_a->wf->nChannels == 1) | 855 if (mux_a->wf->nChannels == 1) |
856 { | 856 { |
857 len = lame_encode_buffer(lame, tmp, tmp, len/4, | 857 len = lame_encode_buffer(lame, tmp, tmp, len/2, |
858 mux_a->buffer+mux_a->buffer_len, mux_a->buffer_size-mux_a->buffer_len); | 858 mux_a->buffer+mux_a->buffer_len, mux_a->buffer_size-mux_a->buffer_len); |
859 } | 859 } |
860 else | 860 else |
861 { | 861 { |
862 len=lame_encode_buffer_interleaved(lame, | 862 len=lame_encode_buffer_interleaved(lame, |
873 // printf("[%d]\n",mp_mp3_get_lsf(mux_a->buffer)); | 873 // printf("[%d]\n",mp_mp3_get_lsf(mux_a->buffer)); |
874 while(mux_a->buffer_len<len){ | 874 while(mux_a->buffer_len<len){ |
875 unsigned char tmp[2304]; | 875 unsigned char tmp[2304]; |
876 int len=dec_audio(sh_audio,tmp,2304); | 876 int len=dec_audio(sh_audio,tmp,2304); |
877 if(len<=0) break; // eof | 877 if(len<=0) break; // eof |
878 len=lame_encode_buffer_interleaved(lame, | 878 /* mono encoding, a bit tricky */ |
879 if (mux_a->wf->nChannels == 1) | |
880 { | |
881 len = lame_encode_buffer(lame, tmp, tmp, len/2, | |
882 mux_a->buffer+mux_a->buffer_len, mux_a->buffer_size-mux_a->buffer_len); | |
883 } | |
884 else | |
885 { | |
886 len=lame_encode_buffer_interleaved(lame, | |
879 tmp,len/4, | 887 tmp,len/4, |
880 mux_a->buffer+mux_a->buffer_len,mux_a->buffer_size-mux_a->buffer_len); | 888 mux_a->buffer+mux_a->buffer_len,mux_a->buffer_size-mux_a->buffer_len); |
889 } | |
881 if(len<0) break; // error | 890 if(len<0) break; // error |
882 mux_a->buffer_len+=len; | 891 mux_a->buffer_len+=len; |
883 } | 892 } |
884 break; | 893 break; |
885 #endif | 894 #endif |