annotate libmpcodecs/vd_qtvideo.c @ 29491:99eda963d27a

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