diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c index 5968359edd..4eabb0de48 100644 --- a/libavcodec/webvttdec.c +++ b/libavcodec/webvttdec.c @@ -28,6 +28,7 @@ #include "avcodec.h" #include "ass.h" #include "codec_internal.h" +#include "decode.h" #include "libavutil/bprint.h" #include "libavutil/mathematics.h" @@ -184,7 +185,7 @@ static int webvtt_decode_frame(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const AVPacket *avpkt) { int ret = 0; - const char *ptr = avpkt->data; + const char *ptr = ff_decode_subtitle_text(avctx, avpkt); FFASSDecoderContext *s = avctx->priv_data; AVBPrint buf; AVRational ms = { 1, 1000 }; @@ -199,6 +200,9 @@ static int webvtt_decode_frame(AVCodecContext *avctx, AVSubtitle *sub, end_ms = start_ms + av_rescale_q(avpkt->duration, avctx->pkt_timebase, ms); } + if (avpkt->size > 0 && !ptr) + return AVERROR(ENOMEM); + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED); if (ptr && avpkt->size > 0 && !webvtt_event_to_ass(&buf, ptr, start_ms, end_ms))