summaryrefslogtreecommitdiffstats
path: root/mencoder.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-23 19:09:25 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-23 19:09:25 +0000
commit645ad5efad353d376cddaa688c7a4b3c2561c2bf (patch)
tree4e5f9bc4209dc94021b4a4831a7149c918396846 /mencoder.c
parent10456fb9479a68a99fb3f9ab2d552e5e17307b66 (diff)
downloadmpv-645ad5efad353d376cddaa688c7a4b3c2561c2bf.tar.bz2
mpv-645ad5efad353d376cddaa688c7a4b3c2561c2bf.tar.xz
fixed mono mp3 encoding, hint by Paul Ortyl
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6535 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mencoder.c')
-rw-r--r--mencoder.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/mencoder.c b/mencoder.c
index b95777a901..8f17c477fa 100644
--- a/mencoder.c
+++ b/mencoder.c
@@ -716,7 +716,7 @@ case ACODEC_VBRMP3:
if(sizeof(MPEGLAYER3WAVEFORMAT)!=30) mp_msg(MSGT_MENCODER,MSGL_WARN,"sizeof(MPEGLAYER3WAVEFORMAT)==%d!=30, maybe broken C compiler?\n",sizeof(MPEGLAYER3WAVEFORMAT));
mux_a->wf=malloc(sizeof(MPEGLAYER3WAVEFORMAT)); // should be 30
mux_a->wf->wFormatTag=0x55; // MP3
- mux_a->wf->nChannels=(lame_param_mode == 3) ? 1 : sh_audio->channels;
+ mux_a->wf->nChannels= sh_audio->channels;
mux_a->wf->nSamplesPerSec=force_srate?force_srate:sh_audio->samplerate;
mux_a->wf->nAvgBytesPerSec=192000/8; // FIXME!
mux_a->wf->nBlockAlign=(mux_a->h.dwRate<32000)?576:1152; // required for l3codeca.acm + WMP 6.4
@@ -854,7 +854,7 @@ if(sh_audio){
/* mono encoding, a bit tricky */
if (mux_a->wf->nChannels == 1)
{
- len = lame_encode_buffer(lame, tmp, tmp, len/4,
+ len = lame_encode_buffer(lame, tmp, tmp, len/2,
mux_a->buffer+mux_a->buffer_len, mux_a->buffer_size-mux_a->buffer_len);
}
else
@@ -875,9 +875,18 @@ if(sh_audio){
unsigned char tmp[2304];
int len=dec_audio(sh_audio,tmp,2304);
if(len<=0) break; // eof
- len=lame_encode_buffer_interleaved(lame,
+ /* mono encoding, a bit tricky */
+ if (mux_a->wf->nChannels == 1)
+ {
+ len = lame_encode_buffer(lame, tmp, tmp, len/2,
+ mux_a->buffer+mux_a->buffer_len, mux_a->buffer_size-mux_a->buffer_len);
+ }
+ else
+ {
+ len=lame_encode_buffer_interleaved(lame,
tmp,len/4,
mux_a->buffer+mux_a->buffer_len,mux_a->buffer_size-mux_a->buffer_len);
+ }
if(len<0) break; // error
mux_a->buffer_len+=len;
}