diff 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
line wrap: on
line diff
--- a/mencoder.c	Sun Jun 23 18:53:46 2002 +0000
+++ b/mencoder.c	Sun Jun 23 19:09:25 2002 +0000
@@ -716,7 +716,7 @@
     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 @@
 		  /* 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 @@
 		  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;
 		}