diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2024-04-13 18:30:39 +0200 |
---|---|---|
committer | Kacper Michajłow <kasper93@gmail.com> | 2024-04-27 01:14:23 +0200 |
commit | f55d19e8468440bd4d41d1ae817b9df8280f6378 (patch) | |
tree | 1e69750376cea8c5b14074797a2648c8377cb488 | |
parent | d8378dc226ad6be2a52ddaa0ca585838c28fe1a3 (diff) | |
download | mpv-f55d19e8468440bd4d41d1ae817b9df8280f6378.tar.bz2 mpv-f55d19e8468440bd4d41d1ae817b9df8280f6378.tar.xz |
sub/lavc_conv: don't override style of converted teletext pages
This fixes teletext pages rendering, while keeping the same default
style for subtitles and other converted formats.
-rw-r--r-- | sub/lavc_conv.c | 9 | ||||
-rw-r--r-- | sub/sd.h | 1 | ||||
-rw-r--r-- | sub/sd_ass.c | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/sub/lavc_conv.c b/sub/lavc_conv.c index f269da3698..3a33933605 100644 --- a/sub/lavc_conv.c +++ b/sub/lavc_conv.c @@ -33,6 +33,7 @@ struct lavc_conv { struct mp_log *log; struct mp_subtitle_opts *opts; + bool styled; AVCodecContext *avctx; AVPacket *avpkt; AVPacket *avpkt_vtt; @@ -245,9 +246,12 @@ char **lavc_conv_decode(struct lavc_conv *priv, struct demux_packet *packet, curr_pkt = priv->avpkt_vtt; } + priv->styled = avctx->codec_id == AV_CODEC_ID_DVB_TELETEXT; + if (avctx->codec_id == AV_CODEC_ID_DVB_TELETEXT) { if (!priv->opts->teletext_page) { av_opt_set(avctx, "txt_page", "subtitle", AV_OPT_SEARCH_CHILDREN); + priv->styled = false; } else if (priv->opts->teletext_page == -1) { av_opt_set(avctx, "txt_page", "*", AV_OPT_SEARCH_CHILDREN); } else { @@ -285,6 +289,11 @@ done: return priv->cur_list; } +bool lavc_conv_is_styled(struct lavc_conv *priv) +{ + return priv->styled; +} + void lavc_conv_reset(struct lavc_conv *priv) { avcodec_flush_buffers(priv->avctx); @@ -55,6 +55,7 @@ struct lavc_conv *lavc_conv_create(struct sd *sd); char *lavc_conv_get_extradata(struct lavc_conv *priv); char **lavc_conv_decode(struct lavc_conv *priv, struct demux_packet *packet, double *sub_pts, double *sub_duration); +bool lavc_conv_is_styled(struct lavc_conv *priv); void lavc_conv_reset(struct lavc_conv *priv); void lavc_conv_uninit(struct lavc_conv *priv); diff --git a/sub/sd_ass.c b/sub/sd_ass.c index 8ff6443f5b..881383e965 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -651,7 +651,7 @@ static struct sub_bitmaps *get_bitmaps(struct sd *sd, struct mp_osd_res dim, struct mp_subtitle_opts *opts = sd->opts; struct mp_subtitle_shared_opts *shared_opts = sd->shared_opts; bool no_ass = !opts->ass_enabled || shared_opts->ass_style_override[sd->order] == 5; - bool converted = ctx->is_converted || no_ass; + bool converted = (ctx->is_converted && !lavc_conv_is_styled(ctx->converter)) || no_ass; ASS_Track *track = no_ass ? ctx->shadow_track : ctx->ass_track; ASS_Renderer *renderer = ctx->ass_renderer; struct sub_bitmaps *res = &(struct sub_bitmaps){0}; |