[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec dtsdec.c,1.7,1.8

Roberto Togni CVS rtognimp
Thu Apr 20 21:23:59 CEST 2006


Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv18091

Modified Files:
	dtsdec.c 
Log Message:
dtsdec.c copies one input packet at a time to a (static) buffer of size
4096 bytes while the packet can be up to 18726 bytes.
The code also keeps decoding until all input data has been used up,
not respecting AVCODEC_MAX_AUDIO_FRAME_SIZE.

The patch increases the buffer size and return after decoding one frame.
Also fixes dts_decode_init to return -1, not 1, on failure.

Patch by Uoti Urpala  ||| uoti : urpala |!| pp1 : inet : fi |||


Index: dtsdec.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/dtsdec.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- dtsdec.c	22 Dec 2005 01:10:06 -0000	1.7
+++ dtsdec.c	20 Apr 2006 19:23:57 -0000	1.8
@@ -33,8 +33,7 @@
 #include <malloc.h>
 #endif
 
-#define INBUF_SIZE 4096
-#define BUFFER_SIZE 4096
+#define BUFFER_SIZE 18726
 #define HEADER_SIZE 14
 
 #ifdef LIBDTS_FIXED
@@ -231,9 +230,11 @@
       memcpy (bufptr, start, len);
       bufptr += len;
       start += len;
-      if (bufptr == bufpos)
-        {
-          if (bufpos == buf + HEADER_SIZE)
+      if (bufptr != bufpos)
+          return start - buff;
+      if (bufpos != buf + HEADER_SIZE)
+          break;
+
             {
               int length;
 
@@ -248,7 +249,8 @@
                 }
               bufpos = buf + length;
             }
-          else
+    }
+
             {
               level_t level;
               sample_t bias;
@@ -280,16 +282,14 @@
                 }
               bufptr = buf;
               bufpos = buf + HEADER_SIZE;
-              continue;
+              return start-buff;
             error:
               av_log (NULL, AV_LOG_ERROR, "error\n");
               bufptr = buf;
               bufpos = buf + HEADER_SIZE;
             }
-        }
-    }
 
-  return buff_size;
+  return start-buff;
 }
 
 static int
@@ -297,7 +297,7 @@
 {
   avctx->priv_data = dts_init (0);
   if (avctx->priv_data == NULL)
-    return 1;
+    return -1;
 
   return 0;
 }





More information about the ffmpeg-cvslog mailing list