From dbc1f67ca229c77150d2936e92d294580985144e Mon Sep 17 00:00:00 2001 From: faust3 Date: Sun, 16 Oct 2005 19:14:09 +0000 Subject: [PATCH] allow mencoder to load win32 codecs properly patch by Zuxy git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16782 b3059339-0415-0410-9bf9-f77b7e298cf2 --- get_path.c | 38 ++++++++++++++++++++++++++++++++++++++ mencoder.c | 4 ++++ mplayer.c | 30 +----------------------------- 3 files changed, 43 insertions(+), 29 deletions(-) diff --git a/get_path.c b/get_path.c index bde2b79fc2..7443cd341b 100644 --- a/get_path.c +++ b/get_path.c @@ -104,3 +104,41 @@ char *get_path(char *filename){ mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff); return buff; } + +#if defined(WIN32) && defined(USE_WIN32DLL) +void set_path_env() +{ + /*make our codec dirs available for LoadLibraryA()*/ + char tmppath[MAX_PATH*2 + 1]; + char win32path[MAX_PATH]; + char realpath[MAX_PATH]; +#ifdef __CYGWIN__ + cygwin_conv_to_full_win32_path(WIN32_PATH,win32path); + strcpy(tmppath,win32path); +#ifdef USE_REALCODECS + cygwin_conv_to_full_win32_path(REALCODEC_PATH,realpath); + sprintf(tmppath,"%s;%s",win32path,realpath); +#endif /*USE_REALCODECS*/ +#else /*__CYGWIN__*/ + /* Expand to absolute path unless it's already absolute */ + if(!strstr(WIN32_PATH,":") && WIN32_PATH[0] != '\\'){ + GetModuleFileNameA(NULL, win32path, MAX_PATH); + strcpy(strrchr(win32path, '\\') + 1, WIN32_PATH); + } + else strcpy(win32path,WIN32_PATH); + strcpy(tmppath,win32path); +#ifdef USE_REALCODECS + /* Expand to absolute path unless it's already absolute */ + if(!strstr(REALCODEC_PATH,":") && REALCODEC_PATH[0] != '\\'){ + GetModuleFileNameA(NULL, realpath, MAX_PATH); + strcpy(strrchr(realpath, '\\') + 1, REALCODEC_PATH); + } + else strcpy(realpath,REALCODEC_PATH); + sprintf(tmppath,"%s;%s",win32path,realpath); +#endif /*USE_REALCODECS*/ +#endif /*__CYGWIN__*/ + mp_msg(MSGT_WIN32, MSGL_V,"Setting PATH to %s\n",tmppath); + if (!SetEnvironmentVariableA("PATH", tmppath)) + mp_msg(MSGT_WIN32, MSGL_WARN, "Cannot set PATH!"); +} +#endif /*WIN32 && USE_WIN32DLL*/ diff --git a/mencoder.c b/mencoder.c index cdfa23b7b3..44f5eedcae 100644 --- a/mencoder.c +++ b/mencoder.c @@ -437,6 +437,10 @@ audio_encoder_t *aencoder = NULL; mp_msg(MSGT_CPLAYER,MSGL_INFO,"\n\n"); #endif #endif + +#if defined(WIN32) && defined(USE_WIN32DLL) + set_path_env(); +#endif /*WIN32 && USE_WIN32DLL*/ InitTimer(); diff --git a/mplayer.c b/mplayer.c index 52a9336f2a..6eae412a5a 100644 --- a/mplayer.c +++ b/mplayer.c @@ -1119,35 +1119,7 @@ int gui_no_filename=0; #endif /* defined(ARCH_X86) || defined(ARCH_X86_64) */ #if defined(WIN32) && defined(USE_WIN32DLL) -{ /*make our codec dirs available for LoadLibraryA()*/ - char tmppath[MAX_PATH*2 + 1]; - char win32path[MAX_PATH]; - char realpath[MAX_PATH]; -#ifdef __CYGWIN__ - cygwin_conv_to_full_win32_path(WIN32_PATH,win32path); - strcpy(tmppath,win32path); -#ifdef USE_REALCODECS - cygwin_conv_to_full_win32_path(REALCODEC_PATH,realpath); - sprintf(tmppath,"%s;%s",win32path,realpath); -#endif /*USE_REALCODECS*/ -#else - if(!strstr(WIN32_PATH,":")){ - GetModuleFileNameA(NULL, win32path, MAX_PATH); - strcpy(win32path + strlen(win32path) - strlen("mplayer.exe"), WIN32_PATH); - } - else strcpy(win32path,WIN32_PATH); - strcpy(tmppath,win32path); -#ifdef USE_REALCODECS - if(!strstr(REALCODEC_PATH,":")){ - GetModuleFileNameA(NULL, realpath, MAX_PATH); - strcpy(realpath + strlen(realpath) - strlen("mplayer.exe"), REALCODEC_PATH); - } - else strcpy(realpath,REALCODEC_PATH); - sprintf(tmppath,"%s;%s",win32path,realpath); -#endif /*USE_REALCODECS*/ -#endif /*__CYGWIN__*/ - SetEnvironmentVariableA("PATH", tmppath); -} + set_path_env(); #endif /*WIN32 && USE_WIN32DLL*/ #ifdef USE_TV