Mercurial > libavcodec.hg
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;