diff options
Diffstat (limited to 'media/ffvpx/libavcodec/parser.c')
-rw-r--r-- | media/ffvpx/libavcodec/parser.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/media/ffvpx/libavcodec/parser.c b/media/ffvpx/libavcodec/parser.c index 2c8fc6904..670680ea7 100644 --- a/media/ffvpx/libavcodec/parser.c +++ b/media/ffvpx/libavcodec/parser.c @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <inttypes.h> #include <stdint.h> #include <string.h> @@ -182,6 +183,11 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, index = s->parser->parser_parse(s, avctx, (const uint8_t **) poutbuf, poutbuf_size, buf, buf_size); av_assert0(index > -0x20000000); // The API does not allow returning AVERROR codes +#define FILL(name) if(s->name > 0 && avctx->name <= 0) avctx->name = s->name + if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { + FILL(field_order); + } + /* update the file pointer */ if (*poutbuf_size) { /* fill the data for the current frame */ @@ -246,7 +252,7 @@ int ff_combine_frame(ParseContext *pc, int next, const uint8_t **buf, int *buf_size) { if (pc->overread) { - ff_dlog(NULL, "overread %d, state:%X next:%d index:%d o_index:%d\n", + ff_dlog(NULL, "overread %d, state:%"PRIX32" next:%d index:%d o_index:%d\n", pc->overread, pc->state, next, pc->index, pc->overread_index); ff_dlog(NULL, "%X %X %X %X\n", (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]); @@ -279,6 +285,8 @@ int ff_combine_frame(ParseContext *pc, int next, return -1; } + av_assert0(next >= 0 || pc->buffer); + *buf_size = pc->overread_index = pc->index + next; @@ -309,7 +317,7 @@ int ff_combine_frame(ParseContext *pc, int next, } if (pc->overread) { - ff_dlog(NULL, "overread %d, state:%X next:%d index:%d o_index:%d\n", + ff_dlog(NULL, "overread %d, state:%"PRIX32" next:%d index:%d o_index:%d\n", pc->overread, pc->state, next, pc->index, pc->overread_index); ff_dlog(NULL, "%X %X %X %X\n", (*buf)[0], (*buf)[1], (*buf)[2], (*buf)[3]); |