From c7d21dee2856da817b5c1ce3746adbcce5420f9e Mon Sep 17 00:00:00 2001 From: Nicholas Robbins Date: Sat, 20 Sep 2014 07:53:44 -0400 Subject: [PATCH] libavcodec/dvdsubdec: Add option forced_subs_only to only decode forced subtitle frames. Signed-off-by: Nicholas Robbins Signed-off-by: Michael Niedermayer --- libavcodec/dvdsubdec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index c7973f05aa..bb28d9e3b7 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -39,6 +39,7 @@ typedef struct DVDSubContext uint8_t alpha[256]; uint8_t *buf; int buf_size; + int forced_subs_only; #ifdef DEBUG int sub_id; #endif @@ -548,6 +549,9 @@ static int dvdsub_decode(AVCodecContext *avctx, if (!is_menu && find_smallest_bounding_rectangle(sub) == 0) goto no_subtitle; + if (ctx->forced_subs_only && !(sub->rects[0]->flags & AV_SUBTITLE_FLAG_FORCED)) + goto no_subtitle; + #if defined(DEBUG) { char ppm_name[32]; @@ -652,6 +656,7 @@ static av_cold int dvdsub_close(AVCodecContext *avctx) #define SD AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { { "palette", "set the global palette", OFFSET(palette_str), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, SD }, + { "forced_subs_only", "Only show forced subtitles", OFFSET(forced_subs_only), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, SD}, { NULL } }; static const AVClass dvdsub_class = {