X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fsubviewerdec.c;h=06b827b70f113d60bec84f218b8840e2bd425255;hb=00ed04d6149691a9abf486b2f88172fd6341d801;hp=af084f48560ddfae970d41204786719d1404c05a;hpb=1f1ec958f6c68a5ceafea206a99c895f62d0f3ec;p=ffmpeg diff --git a/libavformat/subviewerdec.c b/libavformat/subviewerdec.c index af084f48560..06b827b70f1 100644 --- a/libavformat/subviewerdec.c +++ b/libavformat/subviewerdec.c @@ -27,6 +27,7 @@ #include "avformat.h" #include "internal.h" #include "subtitles.h" +#include "avio_internal.h" #include "libavcodec/internal.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" @@ -36,7 +37,7 @@ typedef struct { FFDemuxSubtitlesQueue q; } SubViewerContext; -static int subviewer_probe(AVProbeData *p) +static int subviewer_probe(const AVProbeData *p) { char c; const unsigned char *ptr = p->buf; @@ -78,6 +79,11 @@ static int subviewer_read_header(AVFormatContext *s) if (!st) return AVERROR(ENOMEM); + res = ffio_ensure_seekback(s->pb, 3); + if (res < 0) + return res; + if (avio_rb24(s->pb) != 0xefbbbf) + avio_seek(s->pb, -3, SEEK_CUR); avpriv_set_pts_info(st, 64, 1, 100); st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE; st->codecpar->codec_id = AV_CODEC_ID_SUBVIEWER;