From: Patrice Clement <[email protected]>
---
libavcodec/tak_parser.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/libavcodec/tak_parser.c b/libavcodec/tak_parser.c
index 295df24..b108540 100644
--- a/libavcodec/tak_parser.c
+++ b/libavcodec/tak_parser.c
@@ -49,6 +49,7 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext
*avctx,
GetBitContext gb;
int consumed = 0;
int needed = buf_size ? TAK_MAX_FRAME_HEADER_BYTES : 8;
+ int ret;
if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) {
TAKStreamInfo ti;
@@ -67,7 +68,11 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext
*avctx,
buf_size);
const uint8_t *tmp_buf = buf;
- ff_combine_frame(pc, END_NOT_FOUND, &tmp_buf, &tmp_buf_size);
+ ret = ff_combine_packet(pc, END_NOT_FOUND,
+ &tmp_buf, &tmp_buf_size);
+ if (ret == AVERROR(ENOMEM))
+ return ret;
+
consumed += tmp_buf_size;
buf += tmp_buf_size;
buf_size -= tmp_buf_size;
@@ -102,8 +107,11 @@ static int tak_parse(AVCodecParserContext *s,
AVCodecContext *avctx,
}
found:
- if (consumed && !buf_size && next == END_NOT_FOUND ||
- ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
+ if (consumed && !buf_size && next == END_NOT_FOUND) {
+ ret = ff_combine_frame(pc, next, &buf, &buf_size);
+ if (ret == AVERROR(ENOMEM))
+ return ret;
+
*poutbuf = NULL;
*poutbuf_size = 0;
return buf_size + consumed;
--
1.8.3.2
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel