diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c index a1e3ce413f..3bc8c68b3e 100644 --- a/libavcodec/hevc.c +++ b/libavcodec/hevc.c @@ -2107,35 +2107,34 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length) HEVCNAL *nal; int extract_length = 0; - if (s->disable_au == 0) { - if (s->is_nalff) { - int i; - for (i = 0; i < s->nal_length_size; i++) - extract_length = (extract_length << 8) | buf[i]; - buf += s->nal_length_size; - length -= s->nal_length_size; + if (s->is_nalff) { + int i; + for (i = 0; i < s->nal_length_size; i++) + extract_length = (extract_length << 8) | buf[i]; + buf += s->nal_length_size; + length -= s->nal_length_size; - if (extract_length > length) { - av_log(s->avctx, AV_LOG_ERROR, "Invalid NAL unit size.\n"); - ret = AVERROR_INVALIDDATA; - goto fail; - } - } else { - if (buf[2] == 0) { - length--; - buf++; - continue; - } - if (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) { - ret = AVERROR_INVALIDDATA; - goto fail; - } - - buf += 3; - length -= 3; + if (extract_length > length) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid NAL unit size.\n"); + ret = AVERROR_INVALIDDATA; + goto fail; } + } else { + if (buf[2] == 0) { + length--; + buf++; + continue; + } + if (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) { + ret = AVERROR_INVALIDDATA; + goto fail; + } + + buf += 3; + length -= 3; } - if (!s->is_nalff || s->disable_au) + + if (!s->is_nalff) extract_length = length; if (s->nals_allocated < s->nb_nals + 1) { @@ -2578,8 +2577,6 @@ static void hevc_decode_flush(AVCodecContext *avctx) #define OFFSET(x) offsetof(HEVCContext, x) #define PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) static const AVOption options[] = { - { "disable-au", "disable read frame AU by AU", OFFSET(disable_au), - AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, PAR }, { "strict-displaywin", "stricly apply default display window size", OFFSET(strict_def_disp_win), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, PAR }, { NULL }, diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h index 4b091b634c..adad57cb27 100644 --- a/libavcodec/hevc.h +++ b/libavcodec/hevc.h @@ -756,7 +756,6 @@ typedef struct HEVCContext { HEVCLocalContext HEVClc; - int disable_au; int width; int height;