[MPlayer-cvslog] r30854 - in trunk: libmpcodecs/vd_qtvideo.c libmpcodecs/ve_qtvideo.c loader/qtx/qtxsdk/components.h

sesse subversion at mplayerhq.hu
Sat Mar 6 12:12:32 CET 2010


Author: sesse
Date: Sat Mar  6 12:12:32 2010
New Revision: 30854

Log:
Fix QuickTime emulated OSErr type.

The OSErr type on Mac OS X is int16_t, not int32_t (see
http://developer.apple.com/mac/library/documentation/QuickTime/Reference/QTRef_DataTypes/Reference/reference.html).
The upper 16 bits will typically be something random (they're entirely
undefined). Change the type so it's right; a few places tried to compensate
for this by masking out the upper bits, but a few places also missed them,
which made for unpredictable behavior.

Modified:
   trunk/libmpcodecs/vd_qtvideo.c
   trunk/libmpcodecs/ve_qtvideo.c
   trunk/loader/qtx/qtxsdk/components.h

Modified: trunk/libmpcodecs/vd_qtvideo.c
==============================================================================
--- trunk/libmpcodecs/vd_qtvideo.c	Sat Mar  6 11:13:37 2010	(r30853)
+++ trunk/libmpcodecs/vd_qtvideo.c	Sat Mar  6 12:12:32 2010	(r30854)
@@ -90,7 +90,7 @@ static    OSErr           (*QTNewGWorldF
                                GWorldFlags flags,
                                void *baseAddr,
                                long rowBytes);
-static    OSErr           (*NewHandleClear)(Size byteCount);
+static    Handle          (*NewHandleClear)(Size byteCount);
 #endif /* #ifndef CONFIG_QUICKTIME */
 
 // to set/get/query special features/parameters
@@ -103,7 +103,7 @@ static int codec_initialized=0;
 // init driver
 static int init(sh_video_t *sh){
 #ifndef CONFIG_QUICKTIME
-    long result = 1;
+    OSErr result = 1;
 #endif
     ComponentResult cres;
     ComponentDescription desc;
@@ -156,7 +156,7 @@ static int init(sh_video_t *sh){
 
     result=InitializeQTML(6+16);
 //    result=InitializeQTML(0);
-    mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"InitializeQTML returned %li\n",result);
+    mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"InitializeQTML returned %d\n",result);
 //    result=EnterMovies();
 //    printf("EnterMovies->%d\n",result);
 #endif /* CONFIG_QUICKTIME */
@@ -305,7 +305,7 @@ static void uninit(sh_video_t *sh){
 
 // decode a frame
 static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
-    long result = 1;
+    OSErr result = 1;
     int i;
     mp_image_t* mpi;
     ComponentResult cres;
@@ -335,7 +335,7 @@ if(!codec_initialized){
         0,
         mpi->planes[0],
         mpi->stride[0]);
-    mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"NewGWorldFromPtr returned:%ld\n",65536-(result&0xffff));
+    mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"NewGWorldFromPtr returned:%d\n",result);
 //    if (65536-(result&0xFFFF) != 10000)
 //	return NULL;
 
@@ -406,7 +406,7 @@ if(!codec_initialized){
 
     ++decpar.frameNumber;
 
-    if(cres&0xFFFF){
+    if(cres) {
 	mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageCodecBandDecompress cres=0x%X (-0x%X) %d\n",cres,-cres,cres);
 	return NULL;
     }

Modified: trunk/libmpcodecs/ve_qtvideo.c
==============================================================================
--- trunk/libmpcodecs/ve_qtvideo.c	Sat Mar  6 11:13:37 2010	(r30853)
+++ trunk/libmpcodecs/ve_qtvideo.c	Sat Mar  6 12:12:32 2010	(r30854)
@@ -69,7 +69,7 @@ static OSErr        (*QTNewGWorldFromPtr
                         GWorldFlags flags,
                         void *baseAddr,
                         long rowBytes);
-static OSErr        (*NewHandleClear)(Size byteCount);
+static Handle       (*NewHandleClear)(Size byteCount);
 static OSErr        (*CompressSequenceBegin) (
      ImageSequence             *seqID,
      PixMapHandle              src,

Modified: trunk/loader/qtx/qtxsdk/components.h
==============================================================================
--- trunk/loader/qtx/qtxsdk/components.h	Sat Mar  6 11:13:37 2010	(r30853)
+++ trunk/loader/qtx/qtxsdk/components.h	Sat Mar  6 12:12:32 2010	(r30854)
@@ -12,7 +12,7 @@ typedef unsigned char                   
 typedef unsigned char                   Str31[32];
 typedef int32_t                         Fixed;
 
-typedef int32_t OSErr;
+typedef int16_t OSErr;
 typedef int OSType;
 
 typedef int32_t ComponentResult;


More information about the MPlayer-cvslog mailing list