diff mp3lameaudio.c @ 2091:02a4fd7c606c libavcodec

flush audio encoder buffers at the end fix vorbis in nut again
author michael
date Tue, 22 Jun 2004 21:14:01 +0000
parents 81a1a5be13aa
children e25782262d7d
line wrap: on
line diff
--- a/mp3lameaudio.c	Mon Jun 21 01:01:44 2004 +0000
+++ b/mp3lameaudio.c	Tue Jun 22 21:14:01 2004 +0000
@@ -136,7 +136,9 @@
 	int lame_result;
 
 	/* lame 3.91 dies on '1-channel interleaved' data */
-	if (s->stereo) {
+
+    if(data){
+        if (s->stereo) {
             lame_result = lame_encode_buffer_interleaved(
                 s->gfp, 
                 data,
@@ -144,7 +146,7 @@
                 s->buffer + s->buffer_index, 
                 BUFFER_SIZE - s->buffer_index
                 );
-	} else {
+        } else {
             lame_result = lame_encode_buffer(
                 s->gfp, 
                 data, 
@@ -153,6 +155,13 @@
                 s->buffer + s->buffer_index, 
                 BUFFER_SIZE - s->buffer_index
                 );
+        }
+    }else{
+        lame_result= lame_encode_flush(
+                s->gfp, 
+                s->buffer + s->buffer_index, 
+                BUFFER_SIZE - s->buffer_index
+                );
     }
 
     if(lame_result==-1) {
@@ -174,7 +183,6 @@
 
             memmove(s->buffer, s->buffer+len, s->buffer_index);
             //FIXME fix the audio codec API, so we dont need the memcpy()
-            //FIXME fix the audio codec API, so we can output multiple packets if we have them
 /*for(i=0; i<len; i++){
     av_log(avctx, AV_LOG_DEBUG, "%2X ", frame[i]);
 }*/
@@ -201,5 +209,6 @@
     sizeof(Mp3AudioContext),
     MP3lame_encode_init,
     MP3lame_encode_frame,
-    MP3lame_encode_close
+    MP3lame_encode_close,
+    .capabilities= CODEC_CAP_DELAY,
 };