1
0
Fork 0

HACK: matroskadec_haali: extract the SSA extradata from the main segment

This works around a short-coming in dynamic format switching of the common subtitle renderers.
This commit is contained in:
Hendrik Leppkes 2013-03-30 18:00:01 +01:00
parent 299257ea20
commit 4bbb506f83
Signed by: hendrik
GPG Key ID: 846079A4B0A7C1B5
1 changed files with 15 additions and 0 deletions

View File

@ -1108,6 +1108,21 @@ static int mkv_read_header(AVFormatContext *s)
st->need_parsing = AVSTREAM_PARSE_HEADERS;
} else if (info->Type == TT_SUB) {
st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE;
if (st->codec->codec_id == AV_CODEC_ID_SSA) {
/* HACK: Try to get the privdata of the main segments SSA track, otherwise DirectShow renderers fail */
unsigned num = mkv_GetNumTracks(ctx->segments[0]->matroska);
if (num > i) {
info = mkv_GetTrackInfo(ctx->segments[0]->matroska, i);
uint8_t *main_extradata = NULL;
int main_extradata_size = 0;
ret = mkv_generate_extradata(s, info, codec_id, &main_extradata, &main_extradata_size);
if (ret == 0 && main_extradata_size && main_extradata) {
av_freep(&st->codec->extradata);
st->codec->extradata = main_extradata;
st->codec->extradata_size = main_extradata_size;
}
}
}
}
}