diff options
author | James Almer <jamrial@gmail.com> | 2018-07-30 15:14:24 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-08-02 12:41:54 -0300 |
commit | 692e323d893190051c488931bf15eb5c7d340f74 (patch) | |
tree | c75c2d1aa236732a48576a481a3abade6b3cf7d1 /libavformat | |
parent | 1e126560c2792e2e141167fb138d6ad1bfed7b39 (diff) |
avcodec/av1_parse: return size of the parsed OBU in parse_obu_header()
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/av1.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/libavformat/av1.c b/libavformat/av1.c index 7c55a100bf..fa34820e12 100644 --- a/libavformat/av1.c +++ b/libavformat/av1.c @@ -33,14 +33,10 @@ int ff_av1_filter_obus(AVIOContext *pb, const uint8_t *buf, int size) size = 0; while (buf < end) { - int ret = parse_obu_header(buf, end - buf, &obu_size, &start_pos, + int len = parse_obu_header(buf, end - buf, &obu_size, &start_pos, &type, &temporal_id, &spatial_id); - if (ret < 0) - return ret; - - obu_size += start_pos; - if (obu_size > INT_MAX) - return AVERROR_INVALIDDATA; + if (len < 0) + return len; switch (type) { case AV1_OBU_TEMPORAL_DELIMITER: @@ -48,11 +44,11 @@ int ff_av1_filter_obus(AVIOContext *pb, const uint8_t *buf, int size) case AV1_OBU_PADDING: break; default: - avio_write(pb, buf, obu_size); - size += obu_size; + avio_write(pb, buf, len); + size += len; break; } - buf += obu_size; + buf += len; } return size; @@ -86,25 +82,21 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) return AVERROR_INVALIDDATA; while (size > 0) { - int ret = parse_obu_header(buf, size, &obu_size, &start_pos, + int len = parse_obu_header(buf, size, &obu_size, &start_pos, &type, &temporal_id, &spatial_id); - if (ret < 0) - return ret; - - obu_size += start_pos; - if (obu_size > INT_MAX) - return AVERROR_INVALIDDATA; + if (len < 0) + return len; switch (type) { case AV1_OBU_SEQUENCE_HEADER: case AV1_OBU_METADATA: - avio_write(pb, buf, obu_size); + avio_write(pb, buf, len); break; default: break; } - size -= obu_size; - buf += obu_size; + size -= len; + buf += len; } return 0; |