From 9d4d5b4469a16a05226b510e652a4f40099317c0 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Thu, 31 Mar 2011 03:23:55 +0300 Subject: [PATCH] demux_mkv: simplify subtitle type recognition Remove indirection through MATROSKA_SUBTYPE_* and instead set the per-track type field to the letter identifier used in public sh_sub. --- libmpdemux/demux_mkv.c | 22 ++++++++-------------- libmpdemux/ebml.h | 6 ------ 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 85bea70780..e76a385e3f 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -604,17 +604,15 @@ static void parse_trackentry(struct demuxer *demuxer, || !strcmp(track->codec_id, MKV_A_ACM)) track->ms_compat = 1; else if (!strcmp(track->codec_id, MKV_S_VOBSUB)) - track->subtitle_type = MATROSKA_SUBTYPE_VOBSUB; + track->subtitle_type = 'v'; else if (!strcmp(track->codec_id, MKV_S_TEXTSSA) || !strcmp(track->codec_id, MKV_S_TEXTASS) || !strcmp(track->codec_id, MKV_S_SSA) - || !strcmp(track->codec_id, MKV_S_ASS)) { - track->subtitle_type = MATROSKA_SUBTYPE_SSA; - } else if (!strcmp(track->codec_id, MKV_S_TEXTASCII)) - track->subtitle_type = MATROSKA_SUBTYPE_TEXT; - if (!strcmp(track->codec_id, MKV_S_TEXTUTF8)) { - track->subtitle_type = MATROSKA_SUBTYPE_TEXT; - } + || !strcmp(track->codec_id, MKV_S_ASS)) + track->subtitle_type = 'a'; + else if (!strcmp(track->codec_id, MKV_S_TEXTASCII) + || !strcmp(track->codec_id, MKV_S_TEXTUTF8)) + track->subtitle_type = 't'; mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Codec ID: %s\n", track->codec_id); } else @@ -1567,16 +1565,12 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track, static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track, int sid) { - if (track->subtitle_type != MATROSKA_SUBTYPE_UNKNOWN) { + if (track->subtitle_type) { int size; uint8_t *buffer; sh_sub_t *sh = new_sh_sub(demuxer, sid); track->sh_sub = sh; - sh->type = 't'; - if (track->subtitle_type == MATROSKA_SUBTYPE_VOBSUB) - sh->type = 'v'; - if (track->subtitle_type == MATROSKA_SUBTYPE_SSA) - sh->type = 'a'; + sh->type = track->subtitle_type; size = track->private_size; demux_mkv_decode(track, track->private_data, &buffer, &size, 2); if (buffer && buffer != track->private_data) { diff --git a/libmpdemux/ebml.h b/libmpdemux/ebml.h index 395ffc4df5..866e620c61 100644 --- a/libmpdemux/ebml.h +++ b/libmpdemux/ebml.h @@ -76,12 +76,6 @@ struct ebml_parse_ctx { #define MATROSKA_TRACK_SUBTITLE 0x11 /* text-subtitles */ #define MATROSKA_TRACK_CONTROL 0x20 /* control-codes for menu or other stuff*/ -/* matroska subtitle types */ -#define MATROSKA_SUBTYPE_UNKNOWN 0 -#define MATROSKA_SUBTYPE_TEXT 1 -#define MATROSKA_SUBTYPE_SSA 2 -#define MATROSKA_SUBTYPE_VOBSUB 3 - #ifndef UINT64_MAX #define UINT64_MAX 18446744073709551615ULL #endif -- 2.11.4.GIT