From: Clément Bœsch Date: Sun, 21 Feb 2016 11:41:49 +0000 (+0100) Subject: lavfi/ass: use ass_process_chunk() instead of ass_process_data() X-Git-Tag: android-x86-7.1-r1~6220 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fa2df3a40124bf1d0dc11999f5a578d40a29d553;p=android-x86%2Fexternal-ffmpeg.git lavfi/ass: use ass_process_chunk() instead of ass_process_data() --- diff --git a/libavfilter/vf_subtitles.c b/libavfilter/vf_subtitles.c index 63b22c3721..9e550022b2 100644 --- a/libavfilter/vf_subtitles.c +++ b/libavfilter/vf_subtitles.c @@ -393,6 +393,8 @@ static av_cold int init_subtitles(AVFilterContext *ctx) } if (ass->charenc) av_dict_set(&codec_opts, "sub_charenc", ass->charenc, 0); + if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,25,100)) + av_dict_set(&codec_opts, "sub_text_format", "ass", 0); ret = avcodec_open2(dec_ctx, dec, &codec_opts); if (ret < 0) goto end; @@ -436,11 +438,17 @@ static av_cold int init_subtitles(AVFilterContext *ctx) av_log(ctx, AV_LOG_WARNING, "Error decoding: %s (ignored)\n", av_err2str(ret)); } else if (got_subtitle) { + const int64_t start_time = av_rescale_q(sub.pts, AV_TIME_BASE_Q, av_make_q(1, 1000)); + const int64_t duration = sub.end_display_time; for (i = 0; i < sub.num_rects; i++) { char *ass_line = sub.rects[i]->ass; if (!ass_line) break; - ass_process_data(ass->track, ass_line, strlen(ass_line)); + if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,25,100)) + ass_process_data(ass->track, ass_line, strlen(ass_line)); + else + ass_process_chunk(ass->track, ass_line, strlen(ass_line), + start_time, duration); } } }