annotate libmpcodecs/vd_qtvideo.c @ 30504:cc27da5d7286

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