]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/aac_ac3_parser.c
Remove unneeded avio wrapper functions.
[ffmpeg] / libavcodec / aac_ac3_parser.c
index 4dcf3974f1f1f714933dae9b3adf6d8eb17cdd0d..fc6249ede454907cd94f63d90a567ed047576774 100644 (file)
 #include "parser.h"
 #include "aac_ac3_parser.h"
 
-int ac3_parse(AVCodecParserContext *s1,
+int ff_aac_ac3_parse(AVCodecParserContext *s1,
                      AVCodecContext *avctx,
                      const uint8_t **poutbuf, int *poutbuf_size,
                      const uint8_t *buf, int buf_size)
 {
-    AC3ParseContext *s = s1->priv_data;
+    AACAC3ParseContext *s = s1->priv_data;
     const uint8_t *buf_ptr;
     int len, sample_rate, bit_rate, channels, samples;
 
@@ -37,16 +37,18 @@ int ac3_parse(AVCodecParserContext *s1,
 
     buf_ptr = buf;
     while (buf_size > 0) {
+        int size_needed= s->frame_size ? s->frame_size : s->header_size;
         len = s->inbuf_ptr - s->inbuf;
-        if (s->frame_size == 0) {
-            /* no header seen : find one. We need at least s->header_size
-               bytes to parse it */
-            len = FFMIN(s->header_size - len, buf_size);
 
+        if(len<size_needed){
+            len = FFMIN(size_needed - len, buf_size);
             memcpy(s->inbuf_ptr, buf_ptr, len);
-            buf_ptr += len;
+            buf_ptr      += len;
             s->inbuf_ptr += len;
-            buf_size -= len;
+            buf_size     -= len;
+        }
+
+        if (s->frame_size == 0) {
             if ((s->inbuf_ptr - s->inbuf) == s->header_size) {
                 len = s->sync(s->inbuf, &channels, &sample_rate, &bit_rate,
                               &samples);
@@ -71,13 +73,6 @@ int ac3_parse(AVCodecParserContext *s1,
                 }
             }
         } else {
-            len = FFMIN(s->frame_size - len, buf_size);
-
-            memcpy(s->inbuf_ptr, buf_ptr, len);
-            buf_ptr += len;
-            s->inbuf_ptr += len;
-            buf_size -= len;
-
             if(s->inbuf_ptr - s->inbuf == s->frame_size){
                 *poutbuf = s->inbuf;
                 *poutbuf_size = s->frame_size;