diff options
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 28 |
1 files changed, 7 insertions, 21 deletions
@@ -1296,8 +1296,6 @@ static int mp_property_sub_pos(m_option_t * prop, int action, void *arg, } } -char *demux_lavf_sub_lang(demuxer_t *demuxer, int track_num); - /// Selected subtitles (RW) static int mp_property_sub(m_option_t * prop, int action, void *arg, MPContext * mpctx) @@ -1352,28 +1350,16 @@ static int mp_property_sub(m_option_t * prop, int action, void *arg, } #endif -#ifdef USE_LIBAVFORMAT - if (mpctx->demuxer->type == DEMUXER_TYPE_LAVF && dvdsub_id >= 0) { - char *lang = demux_lavf_sub_lang(mpctx->demuxer, dvdsub_id); - snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); - return M_PROPERTY_OK; - } -#endif - if (mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA && dvdsub_id >= 0) { - char lang[40] = MSGTR_Unknown; - demux_mkv_get_sub_lang(mpctx->demuxer, dvdsub_id, lang, 9); + if ((mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA + || mpctx->demuxer->type == DEMUXER_TYPE_LAVF + || mpctx->demuxer->type == DEMUXER_TYPE_OGG) + && d_sub && d_sub->sh && dvdsub_id >= 0) { + const char* lang = ((sh_sub_t*)d_sub->sh)->lang; + if (!lang) lang = MSGTR_Unknown; snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); return M_PROPERTY_OK; } -#ifdef HAVE_OGGVORBIS - if (mpctx->demuxer->type == DEMUXER_TYPE_OGG && d_sub && dvdsub_id >= 0) { - const char *lang = demux_ogg_sub_lang(mpctx->demuxer, dvdsub_id); - if (!lang) - lang = MSGTR_Unknown; - snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); - return M_PROPERTY_OK; - } -#endif + if (vo_vobsub && vobsub_id >= 0) { const char *language = MSGTR_Unknown; language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id); |