--- libavformat/assdec.c | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-)
diff --git a/libavformat/assdec.c b/libavformat/assdec.c index 5480171..2187c7d 100644 --- a/libavformat/assdec.c +++ b/libavformat/assdec.c @@ -104,7 +104,7 @@ static int ass_read_header(AVFormatContext *s) { ASSContext *ass = s->priv_data; AVBPrint header, line, rline; - int header_remaining, res = 0; + int res = 0; AVStream *st; FFTextReader tr; ff_text_init_avio(&tr, s->pb); @@ -116,33 +116,24 @@ static int ass_read_header(AVFormatContext *s) st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE; st->codec->codec_id = AV_CODEC_ID_ASS; - header_remaining = INT_MAX; - av_bprint_init(&header, 0, AV_BPRINT_SIZE_UNLIMITED); av_bprint_init(&line, 0, AV_BPRINT_SIZE_UNLIMITED); av_bprint_init(&rline, 0, AV_BPRINT_SIZE_UNLIMITED); + // TODO reindent for (;;) { int64_t pos = get_line(&line, &tr); - - if (!line.str[0]) // EOF - break; - - if (!memcmp(line.str, "[Events]", 8)) - header_remaining = 2; - else if (line.str[0] == '[') - header_remaining = INT_MAX; - - if (header_remaining) { - av_bprintf(&header, "%s", line.str); - header_remaining--; - } else { int64_t ts_start = AV_NOPTS_VALUE; int duration = -1; AVPacket *sub; - if (read_dialogue(ass, &rline, line.str, &ts_start, &duration) < 0) + if (!line.str[0]) // EOF + break; + + if (read_dialogue(ass, &rline, line.str, &ts_start, &duration) < 0) { + av_bprintf(&header, "%s", line.str); continue; + } sub = ff_subtitles_queue_insert(&ass->q, rline.str, rline.len, 0); if (!sub) { res = AVERROR(ENOMEM); @@ -151,7 +142,6 @@ static int ass_read_header(AVFormatContext *s) sub->pos = pos; sub->pts = ts_start; sub->duration = duration; - } } av_bprint_finalize(&line, NULL); -- 2.1.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel