annotate libmpcodecs/vd_qtvideo.c @ 26216:e402c7730fcf

Introduce HAVE_QUICKTIME definition and use it where appropriate.
author diego
date Sat, 15 Mar 2008 11:31:28 +0000
parents afa125da85cf
children 3a2e8ae7c548
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
1 #include <stdio.h>
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
2 #include <stdlib.h>
21263
db9754cebfab Move #include <QuickTime/ImageCodec.h> before internal headers
uau
parents: 18771
diff changeset
3 #include <inttypes.h>
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
4
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
5 #include "config.h"
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
6
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
7 #ifdef HAVE_QUICKTIME
21263
db9754cebfab Move #include <QuickTime/ImageCodec.h> before internal headers
uau
parents: 18771
diff changeset
8 #include <QuickTime/ImageCodec.h>
db9754cebfab Move #include <QuickTime/ImageCodec.h> before internal headers
uau
parents: 18771
diff changeset
9 #define dump_ImageDescription(x)
21264
a5daafb2c201 Fix previous broken vd_qtvideo.c commit which failed on MACOSX
uau
parents: 21263
diff changeset
10 #endif
21263
db9754cebfab Move #include <QuickTime/ImageCodec.h> before internal headers
uau
parents: 18771
diff changeset
11
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21264
diff changeset
12 #include "loader/wine/windef.h"
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
13
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
14 #include "mp_msg.h"
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
15 #include "vd_internal.h"
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
16
9405
a4444e7ee56a real cygwin support by Sascha Sommer <saschasommer@freenet.de>
alex
parents: 8473
diff changeset
17 #ifdef WIN32_LOADER
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21264
diff changeset
18 #include "loader/ldt_keeper.h"
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
19 #endif
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
20
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
21 static vd_info_t info = {
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
22 "Quicktime Video decoder",
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
23 "qtvideo",
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
24 "A'rpi",
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
25 "Sascha Sommer",
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
26 "win32"
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
27 };
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
28
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
29 LIBVD_EXTERN(qtvideo)
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
30
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 14528
diff changeset
31 #include "bswap.h"
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
32
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
33 #ifndef HAVE_QUICKTIME
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21264
diff changeset
34 #include "loader/qtx/qtxsdk/components.h"
21264
a5daafb2c201 Fix previous broken vd_qtvideo.c commit which failed on MACOSX
uau
parents: 21263
diff changeset
35
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
36 HMODULE WINAPI LoadLibraryA(LPCSTR);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
37 FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
38 int WINAPI FreeLibrary(HMODULE);
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
39 #endif
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
40
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
41 //static ComponentDescription desc; // for FindNextComponent()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
42 static ComponentInstance ci=NULL; // codec handle
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
43 //static CodecInfo cinfo; // for ImageCodecGetCodecInfo()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
44 //Component prev=NULL;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
45 //ComponentResult cres; //
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
46 static CodecCapabilities codeccap; // for decpar
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
47 static CodecDecompressParams decpar; // for ImageCodecPreDecompress()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
48 //static ImageSubCodecDecompressCapabilities icap; // for ImageCodecInitialize()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
49 static Rect OutBufferRect; //the dimensions of our GWorld
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
50
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
51 static GWorldPtr OutBufferGWorld = NULL;//a GWorld is some kind of description for a drawing environment
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
52 static ImageDescriptionHandle framedescHandle;
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
faust3
parents: 13606
diff changeset
53 static HINSTANCE qtime_qts; // handle to the preloaded quicktime.qts
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
54 static HMODULE handler;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
55
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
56 #ifndef HAVE_QUICKTIME
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
57 static Component (*FindNextComponent)(Component prev,ComponentDescription* desc);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
58 static OSErr (*GetComponentInfo)(Component prev,ComponentDescription* desc,Handle h1,Handle h2,Handle h3);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
59 static long (*CountComponents)(ComponentDescription* desc);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
60 static OSErr (*InitializeQTML)(long flags);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
61 static OSErr (*EnterMovies)(void);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
62 static ComponentInstance (*OpenComponent)(Component c);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
63 static ComponentResult (*ImageCodecInitialize)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
64 ImageSubCodecDecompressCapabilities * cap);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
65 static ComponentResult (*ImageCodecBeginBand)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
66 CodecDecompressParams * params,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
67 ImageSubCodecDecompressRecord * drp,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
68 long flags);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
69 static ComponentResult (*ImageCodecDrawBand)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
70 ImageSubCodecDecompressRecord * drp);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
71 static ComponentResult (*ImageCodecEndBand)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
72 ImageSubCodecDecompressRecord * drp,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
73 OSErr result,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
74 long flags);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
75 static ComponentResult (*ImageCodecGetCodecInfo)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
76 CodecInfo * info);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
77 static ComponentResult (*ImageCodecPreDecompress)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
78 CodecDecompressParams * params);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
79 static ComponentResult (*ImageCodecBandDecompress)(ComponentInstance ci,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
80 CodecDecompressParams * params);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
81 static PixMapHandle (*GetGWorldPixMap)(GWorldPtr offscreenGWorld);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
82 static OSErr (*QTNewGWorldFromPtr)(GWorldPtr *gw,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
83 OSType pixelFormat,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
84 const Rect *boundsRect,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
85 CTabHandle cTable,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
86 /*GDHandle*/void* aGDevice, //unused anyway
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
87 GWorldFlags flags,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
88 void *baseAddr,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
89 long rowBytes);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
90 static OSErr (*NewHandleClear)(Size byteCount);
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
91 #endif /* #ifndef HAVE_QUICKTIME */
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
92
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
93 // to set/get/query special features/parameters
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
94 static int control(sh_video_t *sh,int cmd,void* arg,...){
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
95 return CONTROL_UNKNOWN;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
96 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
97
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25811
diff changeset
98 static int codec_initialized=0;
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
99
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
100 // init driver
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
101 static int init(sh_video_t *sh){
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
102 long result = 1;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
103 ComponentResult cres;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
104 ComponentDescription desc;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
105 Component prev=NULL;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
106 CodecInfo cinfo; // for ImageCodecGetCodecInfo()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
107 ImageSubCodecDecompressCapabilities icap; // for ImageCodecInitialize()
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
108
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25811
diff changeset
109 codec_initialized = 0;
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
110 #ifdef HAVE_QUICKTIME
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
111 EnterMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
112 #else
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
113
9405
a4444e7ee56a real cygwin support by Sascha Sommer <saschasommer@freenet.de>
alex
parents: 8473
diff changeset
114 #ifdef WIN32_LOADER
8270
badd24741e4a loader support
arpi
parents: 8188
diff changeset
115 Setup_LDT_Keeper();
badd24741e4a loader support
arpi
parents: 8188
diff changeset
116 #endif
badd24741e4a loader support
arpi
parents: 8188
diff changeset
117
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
faust3
parents: 13606
diff changeset
118 //preload quicktime.qts to avoid the problems caused by the hardcoded path inside the dll
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
faust3
parents: 13606
diff changeset
119 qtime_qts = LoadLibraryA("QuickTime.qts");
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
faust3
parents: 13606
diff changeset
120 if(!qtime_qts){
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
faust3
parents: 13606
diff changeset
121 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"unable to load QuickTime.qts\n" );
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
faust3
parents: 13606
diff changeset
122 return 0;
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
faust3
parents: 13606
diff changeset
123 }
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
faust3
parents: 13606
diff changeset
124
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
125 handler = LoadLibraryA("qtmlClient.dll");
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
126 if(!handler){
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
127 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"unable to load qtmlClient.dll\n");
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
128 return 0;
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
129 }
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
130
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
131 InitializeQTML = (OSErr (*)(long))GetProcAddress(handler, "InitializeQTML");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
132 EnterMovies = (OSErr (*)(void))GetProcAddress(handler, "EnterMovies");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
133 FindNextComponent = (Component (*)(Component,ComponentDescription*))GetProcAddress(handler, "FindNextComponent");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
134 CountComponents = (long (*)(ComponentDescription*))GetProcAddress(handler, "CountComponents");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
135 GetComponentInfo = (OSErr (*)(Component,ComponentDescription*,Handle,Handle,Handle))GetProcAddress(handler, "GetComponentInfo");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
136 OpenComponent = (ComponentInstance (*)(Component))GetProcAddress(handler, "OpenComponent");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
137 ImageCodecInitialize = (ComponentResult (*)(ComponentInstance,ImageSubCodecDecompressCapabilities *))GetProcAddress(handler, "ImageCodecInitialize");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
138 ImageCodecGetCodecInfo = (ComponentResult (*)(ComponentInstance,CodecInfo *))GetProcAddress(handler, "ImageCodecGetCodecInfo");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
139 ImageCodecBeginBand = (ComponentResult (*)(ComponentInstance,CodecDecompressParams *,ImageSubCodecDecompressRecord *,long))GetProcAddress(handler, "ImageCodecBeginBand");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
140 ImageCodecPreDecompress = (ComponentResult (*)(ComponentInstance,CodecDecompressParams *))GetProcAddress(handler, "ImageCodecPreDecompress");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
141 ImageCodecBandDecompress = (ComponentResult (*)(ComponentInstance,CodecDecompressParams *))GetProcAddress(handler, "ImageCodecBandDecompress");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
142 GetGWorldPixMap = (PixMapHandle (*)(GWorldPtr))GetProcAddress(handler, "GetGWorldPixMap");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
143 QTNewGWorldFromPtr = (OSErr(*)(GWorldPtr *,OSType,const Rect *,CTabHandle,void*,GWorldFlags,void *,long))GetProcAddress(handler, "QTNewGWorldFromPtr");
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
144 NewHandleClear = (OSErr(*)(Size))GetProcAddress(handler, "NewHandleClear");
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
145 // = GetProcAddress(handler, "");
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
146
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
147 if(!InitializeQTML || !EnterMovies || !FindNextComponent || !ImageCodecBandDecompress){
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
148 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"invalid qtmlClient.dll!\n");
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
149 return 0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
150 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
151
8162
98951b7331e1 no need to EnterMovies(), do minimal InitializeQTML only
arpi
parents: 8160
diff changeset
152 result=InitializeQTML(6+16);
98951b7331e1 no need to EnterMovies(), do minimal InitializeQTML only
arpi
parents: 8160
diff changeset
153 // result=InitializeQTML(0);
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
154 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"InitializeQTML returned %li\n",result);
8162
98951b7331e1 no need to EnterMovies(), do minimal InitializeQTML only
arpi
parents: 8160
diff changeset
155 // result=EnterMovies();
98951b7331e1 no need to EnterMovies(), do minimal InitializeQTML only
arpi
parents: 8160
diff changeset
156 // printf("EnterMovies->%d\n",result);
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
157 #endif /* HAVE_QUICKTIME */
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
158
8428
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
159 #if 0
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
160 memset(&desc,0,sizeof(desc));
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
161 while((prev=FindNextComponent(prev,&desc))){
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
162 ComponentDescription desc2;
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
163 unsigned char* c1=&desc2.componentType;
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
164 unsigned char* c2=&desc2.componentSubType;
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
165 memset(&desc2,0,sizeof(desc2));
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
166 // printf("juhee %p (%p)\n",prev,&desc);
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
167 GetComponentInfo(prev,&desc2,NULL,NULL,NULL);
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
168 mp_msg(MSGT_DECVIDEO,MSGL_DGB2,"DESC: %c%c%c%c/%c%c%c%c [0x%X/0x%X] 0x%X\n",
8428
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
169 c1[3],c1[2],c1[1],c1[0],
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
170 c2[3],c2[2],c2[1],c2[0],
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
171 desc2.componentType,desc2.componentSubType,
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
172 desc2.componentFlags);
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
173 }
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
174 #endif
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
175
2090c9d9bb03 moved component lister up, as it messes up 'desc'
arpi
parents: 8321
diff changeset
176
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
177 memset(&desc,0,sizeof(desc));
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
178 desc.componentType= (((unsigned char)'i')<<24)|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
179 (((unsigned char)'m')<<16)|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
180 (((unsigned char)'d')<<8)|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
181 (((unsigned char)'c'));
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
182 #if 0
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
183 desc.componentSubType=
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
184 (((unsigned char)'S'<<24))|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
185 (((unsigned char)'V')<<16)|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
186 (((unsigned char)'Q')<<8)|
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
187 (((unsigned char)'3'));
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
188 #else
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
189 desc.componentSubType = bswap_32(sh->format);
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
190 #endif
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
191 desc.componentManufacturer=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
192 desc.componentFlags=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
193 desc.componentFlagsMask=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
194
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
195 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"Count = %ld\n",CountComponents(&desc));
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
196 prev=FindNextComponent(NULL,&desc);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
197 if(!prev){
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
198 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Cannot find requested component\n");
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
199 return(0);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
200 }
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
201 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"Found it! ID = %p\n",prev);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
202
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
203 ci=OpenComponent(prev);
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
204 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ci=%p\n",ci);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
205
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
206 memset(&icap,0,sizeof(icap));
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
207 cres=ImageCodecInitialize(ci,&icap);
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
208 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageCodecInitialize->%#x size=%d (%d)\n",cres,icap.recordSize,icap.decompressRecordSize);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
209
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
210 memset(&cinfo,0,sizeof(cinfo));
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
211 cres=ImageCodecGetCodecInfo(ci,&cinfo);
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
212 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"Flags: compr: 0x%X decomp: 0x%X format: 0x%X\n",
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
213 cinfo.compressFlags, cinfo.decompressFlags, cinfo.formatFlags);
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
214 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"Codec name: %.*s\n",((unsigned char*)&cinfo.typeName)[0],
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
215 ((unsigned char*)&cinfo.typeName)+1);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
216
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
217 //make a yuy2 gworld
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
218 OutBufferRect.top=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
219 OutBufferRect.left=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
220 OutBufferRect.right=sh->disp_w;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
221 OutBufferRect.bottom=sh->disp_h;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
222
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
223 //Fill the imagedescription for our SVQ3 frame
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
224 //we can probably get this from Demuxer
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
225 #if 0
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
226 framedescHandle=(ImageDescriptionHandle)NewHandleClear(sizeof(ImageDescription)+200);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
227 printf("framedescHandle=%p *p=%p\n",framedescHandle,*framedescHandle);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
228 { FILE* f=fopen("/root/.wine/fake_windows/IDesc","r");
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
229 if(!f) printf("filenot found: IDesc\n");
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
230 fread(*framedescHandle,sizeof(ImageDescription)+200,1,f);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
231 fclose(f);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
232 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
233 #else
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents: 8451
diff changeset
234 if(!sh->ImageDesc) sh->ImageDesc=(sh->bih+1); // hack for SVQ3-in-AVI
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
235 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageDescription size: %d\n",((ImageDescription*)(sh->ImageDesc))->idSize);
8301
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
236 framedescHandle=(ImageDescriptionHandle)NewHandleClear(((ImageDescription*)(sh->ImageDesc))->idSize);
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
237 memcpy(*framedescHandle,sh->ImageDesc,((ImageDescription*)(sh->ImageDesc))->idSize);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents: 8451
diff changeset
238 dump_ImageDescription(*framedescHandle);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
239 #endif
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
240 //Find codecscomponent for video decompression
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
241 // result = FindCodec ('SVQ1',anyCodec,&compressor,&decompressor );
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
242 // printf("FindCodec SVQ1 returned:%i compressor: 0x%X decompressor: 0x%X\n",result,compressor,decompressor);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
243
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 12356
diff changeset
244 sh->context = (void *)kYUVSPixelFormat;
8301
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
245 #if 1
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
246 {
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
247 int imgfmt = sh->codec->outfmt[sh->outfmtidx];
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
248 int qt_imgfmt;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
249 switch(imgfmt)
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
250 {
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
251 case IMGFMT_YUY2:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
252 qt_imgfmt = kYUVSPixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
253 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
254 case IMGFMT_YVU9:
8301
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
255 qt_imgfmt = 0x73797639; //kYVU9PixelFormat;
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
256 break;
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
257 case IMGFMT_YV12:
d867439e3940 - fixed 10l bug (imagedesc handle allocation)
arpi
parents: 8282
diff changeset
258 qt_imgfmt = 0x79343230;
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
259 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
260 case IMGFMT_UYVY:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
261 qt_imgfmt = kUYVY422PixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
262 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
263 case IMGFMT_YVYU:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
264 qt_imgfmt = kYVYU422PixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
265 imgfmt = IMGFMT_YUY2;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
266 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
267 case IMGFMT_RGB16:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
268 qt_imgfmt = k16LE555PixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
269 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
270 case IMGFMT_BGR24:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
271 qt_imgfmt = k24BGRPixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
272 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
273 case IMGFMT_BGR32:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
274 qt_imgfmt = k32BGRAPixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
275 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
276 case IMGFMT_RGB32:
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
277 qt_imgfmt = k32RGBAPixelFormat;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
278 break;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
279 default:
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
280 mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Unknown requested csp\n");
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
281 return(0);
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
282 }
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
283 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"imgfmt: %s qt_imgfmt: %.4s\n", vo_format_name(imgfmt), (char *)&qt_imgfmt);
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 12356
diff changeset
284 sh->context = (void *)qt_imgfmt;
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
285 if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,imgfmt)) return 0;
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
286 }
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
287 #else
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
288 if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_YUY2)) return 0;
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
289 #endif
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
290
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
291 return 1;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
292 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
293
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
294 // uninit driver
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
295 static void uninit(sh_video_t *sh){
26216
e402c7730fcf Introduce HAVE_QUICKTIME definition and use it where appropriate.
diego
parents: 25962
diff changeset
296 #ifdef HAVE_QUICKTIME
9502
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
297 ExitMovies();
241bba8f60e8 MACOSX support patch, based on Dan Christiansens work
alex
parents: 9405
diff changeset
298 #endif
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
299 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
300
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
301 // decode a frame
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
302 static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
303 long result = 1;
8321
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
304 int i;
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
305 mp_image_t* mpi;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
306 ComponentResult cres;
8473
12d19b01d4c6 handle mencoder's 0-byte 'skipped frames'
arpi
parents: 8471
diff changeset
307
12d19b01d4c6 handle mencoder's 0-byte 'skipped frames'
arpi
parents: 8471
diff changeset
308 if(len<=0) return NULL; // skipped frame
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
309
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
310 mpi=mpcodecs_get_image(sh, MP_IMGTYPE_STATIC, MP_IMGFLAG_PRESERVE,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
311 sh->disp_w, sh->disp_h);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
312 if(!mpi) return NULL;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
313
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
314 decpar.data = (char*)data;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
315 decpar.bufferSize = len;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
316 (**framedescHandle).dataSize=len;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
317
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25811
diff changeset
318 if(!codec_initialized){
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
319 result = QTNewGWorldFromPtr(
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
320 &OutBufferGWorld,
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
321 // kYUVSPixelFormat, //pixel format of new GWorld == YUY2
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 12356
diff changeset
322 (OSType)sh->context,
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
323 &OutBufferRect, //we should benchmark if yvu9 is faster for svq3, too
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
324 0,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
325 0,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
326 0,
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
327 mpi->planes[0],
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
328 mpi->stride[0]);
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
329 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"NewGWorldFromPtr returned:%ld\n",65536-(result&0xffff));
8282
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
330 // if (65536-(result&0xFFFF) != 10000)
b2c8b627d598 some fixes
alex
parents: 8270
diff changeset
331 // return NULL;
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
332
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
333 // printf("IDesc=%d\n",sizeof(ImageDescription));
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
334
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
335 decpar.imageDescription = framedescHandle;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
336 decpar.startLine=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
337 decpar.stopLine=(**framedescHandle).height;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
338 decpar.frameNumber = 1; //1
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
339 // decpar.conditionFlags=0xFFD; // first
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
340 // decpar.callerFlags=0x2001; // first
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
341 decpar.matrixFlags = 0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
342 decpar.matrixType = 0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
343 decpar.matrix = 0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
344 decpar.capabilities=&codeccap;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
345 // decpar.accuracy = 0x1680000; //codecNormalQuality;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
346 decpar.accuracy = codecNormalQuality;
8431
e0a26ef29fc3 we don't need to pass gworld :)
arpi
parents: 8430
diff changeset
347 // decpar.port = OutBufferGWorld;
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
348 // decpar.preferredOffscreenPixelSize=17207;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
349
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
350 // decpar.sequenceID=malloc(1000);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
351 // memset(decpar.sequenceID,0,1000);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
352
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
353 // SrcRect.top=17207;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
354 // SrcRect.left=0;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
355 // SrcRect.right=0;//image_width;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
356 // SrcRect.bottom=0;//image_height;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
357
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
358 // decpar.srcRect = SrcRect;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
359 decpar.srcRect = OutBufferRect;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
360
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
361 decpar.transferMode = srcCopy;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
362 decpar.dstPixMap = **GetGWorldPixMap( OutBufferGWorld);//destPixmap;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
363
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
364 cres=ImageCodecPreDecompress(ci,&decpar);
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
365 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageCodecPreDecompress cres=0x%X\n",cres);
8430
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
366
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
367 if(decpar.wantedDestinationPixelTypes)
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
368 { OSType *p=*(decpar.wantedDestinationPixelTypes);
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
369 if(p) while(*p){
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
370 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"supported csp: 0x%08X %.4s\n",*p,(char *)p);
8430
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
371 ++p;
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
372 }
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
373 }
e3804a802aac print list of supported output colorspaces
arpi
parents: 8428
diff changeset
374
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
375
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
376 // decpar.conditionFlags=0x10FFF; // first
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
377 // decpar.preferredOffscreenPixelSize=17207;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
378
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
379 // decpar.conditionFlags=0x10FFD; // first
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
380
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
381 // cres=ImageCodecPreDecompress(ci,&decpar);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
382 // printf("ImageCodecPreDecompress cres=0x%X\n",cres);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
383
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
384
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25811
diff changeset
385 codec_initialized=1;
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
386 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
387
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
388 #if 0
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
389 if(decpar.frameNumber==124){
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
390 decpar.frameNumber=1;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
391 cres=ImageCodecPreDecompress(ci,&decpar);
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
392 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageCodecPreDecompress cres=0x%lX\n",cres);
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
393 }
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
394 #endif
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
395
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
396 cres=ImageCodecBandDecompress(ci,&decpar);
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
397
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
398 ++decpar.frameNumber;
8321
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
399
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
400 if(cres&0xFFFF){
12194
81f8e4f97b38 printf -> mp_msg, error msg when qtmlClient.dll is missing
faust3
parents: 9502
diff changeset
401 mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"ImageCodecBandDecompress cres=0x%X (-0x%X) %d\n",cres,-cres,cres);
8321
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
402 return NULL;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
403 }
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
404
8321
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
405 // for(i=0;i<8;i++)
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
406 // printf("img_base[%d]=%p\n",i,((int*)decpar.dstPixMap.baseAddr)[i]);
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
407
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
408 if((int)sh->context==0x73797639){ // Sorenson 16-bit YUV -> std YVU9
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
409
8451
fb88ccbc5ccc compiler warning fixes
arpi
parents: 8431
diff changeset
410 short *src0=(short *)((char*)decpar.dstPixMap.baseAddr+0x20);
8321
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
411
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
412 for(i=0;i<mpi->h;i++){
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
413 int x;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
414 unsigned char* dst=mpi->planes[0]+i*mpi->stride[0];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
415 unsigned short* src=src0+i*((mpi->w+15)&(~15));
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
416 for(x=0;x<mpi->w;x++) dst[x]=src[x];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
417 }
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
418 src0+=((mpi->w+15)&(~15))*((mpi->h+15)&(~15));
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
419 for(i=0;i<mpi->h/4;i++){
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
420 int x;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
421 unsigned char* dst=mpi->planes[1]+i*mpi->stride[1];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
422 unsigned short* src=src0+i*(((mpi->w+63)&(~63))/4);
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
423 for(x=0;x<mpi->w/4;x++) dst[x]=src[x];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
424 src+=((mpi->w+63)&(~63))/4;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
425 }
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
426 src0+=(((mpi->w+63)&(~63))/4)*(((mpi->h+63)&(~63))/4);
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
427 for(i=0;i<mpi->h/4;i++){
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
428 int x;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
429 unsigned char* dst=mpi->planes[2]+i*mpi->stride[2];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
430 unsigned short* src=src0+i*(((mpi->w+63)&(~63))/4);
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
431 for(x=0;x<mpi->w/4;x++) dst[x]=src[x];
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
432 src+=((mpi->w+63)&(~63))/4;
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
433 }
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
434
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
435 }
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
436
ca24204fb547 SVQ1 support (ugly hack... - really we need 'syuv' support in swscaler :))
arpi
parents: 8301
diff changeset
437
8160
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
438 return mpi;
2be30233c532 qt video dll codecs support
arpi
parents:
diff changeset
439 }