changeset 14528:860f06087aac

preload quicktime.qts, this allows us to ignore the hardcoded path inside the dlls so that quicktime.qts doesn't need to be in the windows system dir, patch by Gianluigi Tiesi <mplayer at netfarm.it>, comments by myself
author faust3
date Mon, 17 Jan 2005 20:57:48 +0000
parents 5417ab15e900
children cc9c088305d9
files libmpcodecs/ad_qtaudio.c libmpcodecs/vd_qtvideo.c libmpcodecs/ve_qtvideo.c
diffstat 3 files changed, 27 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/ad_qtaudio.c	Mon Jan 17 17:27:39 2005 +0000
+++ b/libmpcodecs/ad_qtaudio.c	Mon Jan 17 20:57:48 2005 +0000
@@ -68,6 +68,7 @@
                                 unsigned long *outputBytes);
 typedef int (__cdecl* LPFUNC9)(SoundConverter         sc) ;                                
 
+static HINSTANCE qtime_qts; // handle to the preloaded quicktime.qts
 static HINSTANCE qtml_dll;
 static LPFUNC1 InitializeQTML;
 static LPFUNC2 SoundConverterOpen;
@@ -91,10 +92,17 @@
 #ifdef WIN32_LOADER
     Setup_LDT_Keeper();
 #endif
+    //preload quicktime.qts to avoid the problems caused by the hardcoded path inside the dll
+    qtime_qts = LoadLibraryA("QuickTime.qts");
+    if( qtime_qts == (HMODULE)NULL )
+    {
+        mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading QuickTime.qts\n" );
+        return 1;
+    }
     qtml_dll = LoadLibraryA("qtmlClient.dll");
     if( qtml_dll == (HMODULE)NULL )
     {
-        mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading dll\n" );
+        mp_msg(MSGT_DECAUDIO,MSGL_ERR,"failed loading qtmlClient.dll\n" );
 	return 1;
     }
 #if 1
@@ -269,6 +277,8 @@
 //    printf("TerminateQTML:%i\n",error);
 //    FreeLibrary( qtml_dll );
 //    qtml_dll = NULL;
+//    FreeLibrary( qtime_qts );
+//    qtime_qts = NULL;
 //    printf("qt dll loader uninit done\n");
 #ifdef MACOSX
     ExitMovies();
--- a/libmpcodecs/vd_qtvideo.c	Mon Jan 17 17:27:39 2005 +0000
+++ b/libmpcodecs/vd_qtvideo.c	Mon Jan 17 20:57:48 2005 +0000
@@ -52,7 +52,7 @@
 
 static GWorldPtr OutBufferGWorld = NULL;//a GWorld is some kind of description for a drawing environment
 static ImageDescriptionHandle framedescHandle;
-//static HINSTANCE qtml_dll;
+static HINSTANCE qtime_qts; // handle to the preloaded quicktime.qts
 static HMODULE handler;
 
 #if defined(USE_QTX_CODECS) && !defined(MACOSX)
@@ -116,6 +116,13 @@
     Setup_LDT_Keeper();
 #endif
 
+    //preload quicktime.qts to avoid the problems caused by the hardcoded path inside the dll
+    qtime_qts = LoadLibraryA("QuickTime.qts");
+    if(!qtime_qts){
+    mp_msg(MSGT_DECVIDEO,MSGL_ERR,"unable to load QuickTime.qts\n" );
+    return 0;
+    }
+    
     handler = LoadLibraryA("qtmlClient.dll");
     if(!handler){
     mp_msg(MSGT_DECVIDEO,MSGL_ERR,"unable to load qtmlClient.dll\n");
--- a/libmpcodecs/ve_qtvideo.c	Mon Jan 17 17:27:39 2005 +0000
+++ b/libmpcodecs/ve_qtvideo.c	Mon Jan 17 20:57:48 2005 +0000
@@ -34,6 +34,7 @@
 HMODULE   WINAPI LoadLibraryA(LPCSTR);
 FARPROC   WINAPI GetProcAddress(HMODULE,LPCSTR);
 int       WINAPI FreeLibrary(HMODULE);
+static HINSTANCE qtime_qts; //handle to preloaded quicktime.qts
 static HMODULE handler;
 
 static OSErr        (*FindCodec)(CodecType              cType,
@@ -296,6 +297,13 @@
 #ifdef WIN32_LOADER
     Setup_LDT_Keeper();
 #endif
+    //preload quicktime.qts to avoid the problems caused by the hardcoded path inside the dll
+    qtime_qts = LoadLibraryA("QuickTime.qts");
+    if(!qtime_qts){
+        mp_msg(MSGT_MENCODER,MSGL_ERR,"unable to load QuickTime.qts\n" );
+        return 0;
+    }
+    
     handler = LoadLibraryA("qtmlClient.dll");
     if(!handler){
         mp_msg(MSGT_MENCODER,MSGL_ERR,"unable to load qtmlClient.dll\n");