Unified · Split
| @@ -103,6 +103,7 @@ struct lavc_conv *lavc_conv_create(struct sd *sd) · 102 unmodified lines | ||
| 103 | 103 | priv->avctx = avctx; |
| 104 | 104 | priv->extradata = talloc_strndup(priv, avctx->subtitle_header, |
| 105 | 105 | avctx->subtitle_header_size); |
| 106 | + mp_codec_info_from_av(avctx, sd->codec); | |
| 106 | 107 | return priv; |
| 107 | 108 | |
| 108 | 109 | error: |
| @@ -285,6 +285,17 @@ static int init(struct sd *sd) · 284 unmodified lines | ||
| 285 | 285 | |
| 286 | 286 | ctx->packer = mp_ass_packer_alloc(ctx); |
| 287 | 287 | |
| 288 | + // Subtitles does not have any profile value, so put the converted type as a profile. | |
| 289 | + const char **desc = ctx->converter ? &sd->codec->codec_profile : &sd->codec->codec_desc; | |
| 290 | + switch (ctx->ass_track->track_type) { | |
| 291 | + case TRACK_TYPE_ASS: | |
| 292 | + *desc = "Advanced Sub Station Alpha"; | |
| 293 | + break; | |
| 294 | + case TRACK_TYPE_SSA: | |
| 295 | + *desc = "Sub Station Alpha"; | |
| 296 | + break; | |
| 297 | + } | |
| 298 | + | |
| 288 | 299 | return 0; |
| 289 | 300 | } |
| 290 | 301 | |
| @@ -56,6 +56,7 @@ struct seekpoint { · 55 unmodified lines | ||
| 56 | 56 | }; |
| 57 | 57 | |
| 58 | 58 | struct sd_lavc_priv { |
| 59 | + struct mp_codec_params *codec; | |
| 59 | 60 | AVCodecContext *avctx; |
| 60 | 61 | AVPacket *avpkt; |
| 61 | 62 | AVRational pkt_timebase; |
| @@ -119,6 +120,7 @@ static int init(struct sd *sd) · 57 unmodified lines | ||
| 119 | 120 | } |
| 120 | 121 | |
| 121 | 122 | priv->avpkt = av_packet_alloc(); |
| 123 | + priv->codec = sd->codec; | |
| 122 | 124 | if (!priv->avpkt) |
| 123 | 125 | goto error; |
| 124 | 126 | if (mp_set_avctx_codec_headers(ctx, sd->codec) < 0) |
| @@ -347,6 +349,8 @@ static void decode(struct sd *sd, struct demux_packet *packet) · 222 unmodified lines | ||
| 347 | 349 | if (res < 0 || !got_sub) |
| 348 | 350 | return; |
| 349 | 351 | |
| 352 | + mp_codec_info_from_av(ctx, priv->codec); | |
| 353 | + | |
| 350 | 354 | packet->sub_duration = sub.end_display_time; |
| 351 | 355 | |
| 352 | 356 | if (sub.pts != AV_NOPTS_VALUE) |