Mercurial > mplayer.hg
diff command.c @ 34648:26eddbd6353a
Code cleanup: Use a stream_control instead of global functions to
get the language associate with a audio or subtitle stream from
the streaming layer.
author | reimar |
---|---|
date | Sun, 19 Feb 2012 13:15:41 +0000 |
parents | 206264c532f5 |
children | bdf9478e9374 |
line wrap: on
line diff
--- a/command.c Sat Feb 18 19:33:47 2012 +0000 +++ b/command.c Sun Feb 19 13:15:41 2012 +0000 @@ -910,30 +910,7 @@ *(char **) arg = strdup(MSGTR_Disabled); else { char lang[40] = MSGTR_Unknown; - sh_audio_t* sh = mpctx->sh_audio; - if (sh && sh->lang) - av_strlcpy(lang, sh->lang, 40); - // TODO: use a proper STREAM_CTRL instead of this mess - else if (sh && mpctx->stream->type == STREAMTYPE_BD) { - const char *l = bd_lang_from_id(mpctx->stream, audio_id); - if (l) - av_strlcpy(lang, l, sizeof(lang)); - } -#ifdef CONFIG_DVDREAD - else if (mpctx->stream->type == STREAMTYPE_DVD) { - int code = dvd_lang_from_aid(mpctx->stream, current_id); - if (code) { - lang[0] = code >> 8; - lang[1] = code; - lang[2] = 0; - } - } -#endif - -#ifdef CONFIG_DVDNAV - else if (mpctx->stream->type == STREAMTYPE_DVDNAV) - mp_dvdnav_lang_from_aid(mpctx->stream, current_id, lang); -#endif + demuxer_audio_lang(mpctx->demuxer, current_id, lang, sizeof(lang)); *(char **) arg = malloc(64); snprintf(*(char **) arg, 64, "(%d) %s", audio_id, lang); } @@ -1497,36 +1474,6 @@ strlen(tmp) < 20 ? tmp : tmp + strlen(tmp) - 19); return M_PROPERTY_OK; } -#ifdef CONFIG_DVDNAV - if (mpctx->stream->type == STREAMTYPE_DVDNAV) { - if (vo_spudec && dvdsub_id >= 0) { - unsigned char lang[3]; - if (mp_dvdnav_lang_from_sid(mpctx->stream, dvdsub_id, lang)) { - snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); - return M_PROPERTY_OK; - } - } - } -#endif - - if (mpctx->stream->type == STREAMTYPE_BD - && d_sub && d_sub->sh && dvdsub_id >= 0) { - const char *lang = bd_lang_from_id(mpctx->stream, ((sh_sub_t*)d_sub->sh)->sid); - if (!lang) lang = MSGTR_Unknown; - snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); - return M_PROPERTY_OK; - } - - if ((mpctx->demuxer->type == DEMUXER_TYPE_MATROSKA - || mpctx->demuxer->type == DEMUXER_TYPE_LAVF - || mpctx->demuxer->type == DEMUXER_TYPE_LAVF_PREFERRED - || 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; - } if (vo_vobsub && vobsub_id >= 0) { const char *language = MSGTR_Unknown; @@ -1535,22 +1482,12 @@ vobsub_id, language ? language : MSGTR_Unknown); return M_PROPERTY_OK; } -#ifdef CONFIG_DVDREAD - if (vo_spudec && mpctx->stream->type == STREAMTYPE_DVD - && dvdsub_id >= 0) { - char lang[3]; - int code = dvd_lang_from_sid(mpctx->stream, dvdsub_id); - lang[0] = code >> 8; - lang[1] = code; - lang[2] = 0; + if (dvdsub_id >= 0) { + char lang[40] = MSGTR_Unknown; + demuxer_sub_lang(mpctx->demuxer, dvdsub_id, lang, sizeof(lang)); snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, lang); return M_PROPERTY_OK; } -#endif - if (dvdsub_id >= 0) { - snprintf(*(char **) arg, 63, "(%d) %s", dvdsub_id, MSGTR_Unknown); - return M_PROPERTY_OK; - } snprintf(*(char **) arg, 63, MSGTR_Disabled); return M_PROPERTY_OK;