Mercurial > mplayer.hg
changeset 25635:25f6dca4df74
add support for per protocol and per extension playback profile loading
author | ben |
---|---|
date | Thu, 10 Jan 2008 18:45:08 +0000 |
parents | 4344e84f7a9f |
children | 3b0fed65048d |
files | help/help_mp-en.h mplayer.c |
diffstat | 2 files changed, 50 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/help/help_mp-en.h Thu Jan 10 18:41:21 2008 +0000 +++ b/help/help_mp-en.h Thu Jan 10 18:45:08 2008 +0000 @@ -151,6 +151,8 @@ " DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and\n"\ " won't help unless you provide this information when reporting a possible bug.\n" #define MSGTR_LoadingConfig "Loading config '%s'\n" +#define MSGTR_LoadingProtocolProfile "Loading protocol-related profile '%s'\n" +#define MSGTR_LoadingExtensionProfile "Loading extension-related profile '%s'\n" #define MSGTR_AddedSubtitleFile "SUB: Added subtitle file (%d): %s\n" #define MSGTR_RemovedSubtitleFile "SUB: Removed subtitle file (%d): %s\n" #define MSGTR_ErrorOpeningOutputFile "Error opening file [%s] for writing!\n"
--- a/mplayer.c Thu Jan 10 18:41:21 2008 +0000 +++ b/mplayer.c Thu Jan 10 18:45:08 2008 +0000 @@ -836,6 +836,52 @@ } } +#define PROFILE_CFG_PROTOCOL "protocol." + +static void load_per_protocol_config (m_config_t* conf, const char *const file) +{ + char *str; + char protocol[strlen (PROFILE_CFG_PROTOCOL) + strlen (file) + 1]; + m_profile_t *p; + + /* does filename actually uses a protocol ? */ + str = strstr (file, "://"); + if (!str) + return; + + sprintf (protocol, "%s%s", PROFILE_CFG_PROTOCOL, file); + protocol[strlen (PROFILE_CFG_PROTOCOL)+strlen(file)-strlen(str)] = '\0'; + p = m_config_get_profile (conf, protocol); + if (p) + { + mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_LoadingProtocolProfile, protocol); + m_config_set_profile(conf,p); + } +} + +#define PROFILE_CFG_EXTENSION "extension." + +static void load_per_extension_config (m_config_t* conf, const char *const file) +{ + char *str; + char extension[strlen (PROFILE_CFG_EXTENSION) + 8]; + m_profile_t *p; + + /* does filename actually have an extension ? */ + str = strrchr (filename, '.'); + if (!str) + return; + + sprintf (extension, PROFILE_CFG_EXTENSION); + strncat (extension, ++str, 7); + p = m_config_get_profile (conf, extension); + if (p) + { + mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_LoadingExtensionProfile, extension); + m_config_set_profile(conf,p); + } +} + static void load_per_file_config (m_config_t* conf, const char *const file) { char *confpath; @@ -2695,6 +2741,8 @@ mpctx->global_sub_size = 0; { int i; for (i = 0; i < SUB_SOURCES; i++) mpctx->global_sub_indices[i] = -1; } + if (filename) load_per_protocol_config (mconfig, filename); + if (filename) load_per_extension_config (mconfig, filename); if (filename) load_per_file_config (mconfig, filename); // We must enable getch2 here to be able to interrupt network connection