X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aacdec.c;h=0eab773a16a024a693d40728d41aa9ea87b8dd49;hp=e69840cd1df2202464d3b2f48d0618c36ac8d11a;hb=f94f6caa5b4053a3a205329f48bbb49c390c409a;hpb=4dff2e74d0fe7788195820f9b2c822eb7b7c9482 diff --git a/aacdec.c b/aacdec.c index e69840cd..0eab773a 100644 --- a/aacdec.c +++ b/aacdec.c @@ -208,25 +208,32 @@ static ssize_t mp4dec(char *inbuffer, size_t len, struct filter_node *fn) ret = padd->consumed; goto out; } - PARA_INFO_LOG("consumed total: %lu, first_chunk: %d\n", - padd->consumed_total, padd->offset[0]); +// PARA_INFO_LOG("consumed total: %lu, first_chunk: %d\n", +// padd->consumed_total, padd->offset[0]); ret = len; if (padd->consumed_total + len < padd->offset[0]) goto out; if (padd->consumed_total < padd->offset[0]) padd->consumed = padd->offset[0] - padd->consumed_total; } + for (; padd->consumed < padd->inbuf_len; padd->consumed++) + if ((padd->inbuf[padd->consumed] & 0xfe) == 0x20) + break; + if (padd->consumed >= padd->inbuf_len) + goto success; p = padd->inbuf + padd->consumed; +// PARA_NOTICE_LOG("p[0]: %lx\n", (long unsigned) *p); outbuffer = NeAACDecDecode(padd->decoder, &padd->frame_info, p, len - padd->consumed); - PARA_INFO_LOG("frame_error: %d, consumed: %lu + %d + %lu\n", - padd->frame_info.error, padd->consumed_total, - padd->consumed, padd->frame_info.bytesconsumed); ret = -E_AAC_DECODE; if (padd->frame_info.error != 0) { + PARA_ERROR_LOG("frame_error: %d, consumed: %lu + %d + %lu\n", + padd->frame_info.error, padd->consumed_total, + padd->consumed, padd->frame_info.bytesconsumed); PARA_ERROR_LOG("%s\n", NeAACDecGetErrorMessage( padd->frame_info.error)); - goto out; + padd->consumed++; /* catch 21 */ + goto success; } padd->consumed += padd->frame_info.bytesconsumed; ret = padd->consumed; @@ -238,6 +245,7 @@ static ssize_t mp4dec(char *inbuffer, size_t len, struct filter_node *fn) fn->buf[fn->loaded++] = s[i] & 0xff; fn->buf[fn->loaded++] = (s[i] >> 8) & 0xff; } +success: ret = padd->consumed; out: if (ret > 0)