changeset 3082:d85afa120256 libavcodec

output last ac3 frame and simplify
author michael
date Thu, 02 Feb 2006 18:38:47 +0000
parents 4bf348f8e2b1
children 0995d7ddeb58
files parser.c
diffstat 1 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/parser.c	Thu Feb 02 13:07:30 2006 +0000
+++ b/parser.c	Thu Feb 02 18:38:47 2006 +0000
@@ -873,9 +873,8 @@
         len = s->inbuf_ptr - s->inbuf;
         if (s->frame_size == 0) {
             /* no header seen : find one. We need at least 7 bytes to parse it */
-            len = AC3_HEADER_SIZE - len;
-            if (len > buf_size)
-                len = buf_size;
+            len = FFMIN(AC3_HEADER_SIZE - len, buf_size);
+
             memcpy(s->inbuf_ptr, buf_ptr, len);
             buf_ptr += len;
             s->inbuf_ptr += len;
@@ -898,21 +897,21 @@
                     avctx->frame_size = 6 * 256;
                 }
             }
-        } else if (len < s->frame_size) {
-            len = s->frame_size - len;
-            if (len > buf_size)
-                len = buf_size;
+        } 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;
-        } else {
-            *poutbuf = s->inbuf;
-            *poutbuf_size = s->frame_size;
-            s->inbuf_ptr = s->inbuf;
-            s->frame_size = 0;
-            break;
+
+            if(s->inbuf_ptr - s->inbuf == s->frame_size){
+                *poutbuf = s->inbuf;
+                *poutbuf_size = s->frame_size;
+                s->inbuf_ptr = s->inbuf;
+                s->frame_size = 0;
+                break;
+            }
         }
     }
     return buf_ptr - buf;