annotate libmpcodecs/ve_qtvideo.c @ 23523:273aa6124f66

avoid utter breakage on non-x86, patch from Chris Roccati <roccati@at@pobox.dot.com>
author lu_zero
date Sun, 10 Jun 2007 21:58:30 +0000
parents ed8f90096c65
children 87fe090606ba
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
1 /*qt video encoder using win32 libs
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
2 released under gnu gpl
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
3 (C)Sascha Sommer */
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
4
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
5 #define MAX_IDSIZE 0x6F
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
6
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
7 #include <stdio.h>
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
8 #include <stdlib.h>
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
9 #include <string.h>
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
10
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 15274
diff changeset
11 #include "config.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 15274
diff changeset
12 #include "mp_msg.h"
21372
1767c271d710 Remove bswap.h, use libavutil/bswap.h instead.
diego
parents: 18771
diff changeset
13 #include "libavutil/common.h"
21507
fa99b3d31d13 Hack around libavutil/bswap.h compilation problems due to always_inline undefined.
reimar
parents: 21372
diff changeset
14 #include "mpbswap.h"
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
15
9435
97b30b4b722f cygwin win32 dll support
faust3
parents: 9217
diff changeset
16 #ifdef WIN32_LOADER
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21660
diff changeset
17 #include "loader/ldt_keeper.h"
9217
420e2b2f8e5a compiler warning fixes patch by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 9014
diff changeset
18 #endif
420e2b2f8e5a compiler warning fixes patch by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 9014
diff changeset
19
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 15274
diff changeset
20 #include "loader/qtx/qtxsdk/components.h"
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 21660
diff changeset
21 #include "loader/wine/windef.h"
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
22
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
23 #include "codec-cfg.h"
22600
3c2b4a866c6a Add explicit location for headers from the stream/ directory.
diego
parents: 22577
diff changeset
24 #include "stream/stream.h"
22601
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
25 #include "libmpdemux/demuxer.h"
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
26 #include "libmpdemux/stheader.h"
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
27
22600
3c2b4a866c6a Add explicit location for headers from the stream/ directory.
diego
parents: 22577
diff changeset
28 #include "stream/stream.h"
22601
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
29 #include "libmpdemux/muxer.h"
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
30
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
31 #include "img_format.h"
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
32 #include "mp_image.h"
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
33 #include "vf.h"
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
34
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
35 HMODULE WINAPI LoadLibraryA(LPCSTR);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
36 FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
37 int WINAPI FreeLibrary(HMODULE);
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: 13188
diff changeset
38 static HINSTANCE qtime_qts; //handle to preloaded quicktime.qts
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
39 static HMODULE handler;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
40
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
41 static OSErr (*FindCodec)(CodecType cType,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
42 CodecComponent specCodec,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
43 CompressorComponent * compressor,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
44 DecompressorComponent * decompressor);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
45 static OSErr (*InitializeQTML)(long flags);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
46 static PixMapHandle (*GetGWorldPixMap)(GWorldPtr offscreenGWorld);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
47 static OSErr (*QTNewGWorldFromPtr)(GWorldPtr *gw,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
48 OSType pixelFormat,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
49 const Rect *boundsRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
50 CTabHandle cTable,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
51 /*GDHandle*/void* aGDevice, /*unused anyway*/
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
52 GWorldFlags flags,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
53 void *baseAddr,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
54 long rowBytes);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
55 static OSErr (*NewHandleClear)(Size byteCount);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
56 static OSErr (*CompressSequenceBegin) (
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
57 ImageSequence *seqID,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
58 PixMapHandle src,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
59 PixMapHandle prev,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
60 const Rect *srcRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
61 const Rect *prevRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
62 short colorDepth,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
63 CodecType cType,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
64 CompressorComponent codec,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
65 CodecQ spatialQuality,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
66 CodecQ temporalQuality,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
67 long keyFrameRate,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
68 CTabHandle ctable,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
69 CodecFlags flags,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
70 ImageDescriptionHandle desc );
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
71
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
72 static OSErr (*CompressSequenceFrame) (
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
73 ImageSequence seqID,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
74 PixMapHandle src,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
75 const Rect *srcRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
76 CodecFlags flags,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
77 Ptr data,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
78 long *dataSize,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
79 UInt8 *similarity,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
80 ICMCompletionProcRecordPtr asyncCompletionProc );
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
81
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
82 static OSErr (*GetMaxCompressionSize)(PixMapHandle src,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
83 const Rect *srcRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
84 short colorDepth,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
85 CodecQ quality,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
86 CodecType cType,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
87 CompressorComponent codec,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
88 long *size );
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
89 static OSErr (*CDSequenceEnd)( ImageSequence seqID );
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
90 static Component (*FindNextComponent)(Component prev,ComponentDescription* desc);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
91 static long (*CountComponents)(ComponentDescription* desc);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
92 static OSErr (*GetComponentInfo)(Component prev,ComponentDescription* desc,Handle h1,Handle h2,Handle h3);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
93
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
94
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
95
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
96 //static int format=mmioFOURCC('S','V','Q','1');
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
97 static int format=mmioFOURCC('S','V','Q','3');
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
98
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
99
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
100
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
101 //static void *frame_in; //input frame
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
102 static void *frame_prev; //previous frame
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
103 static void *frame_comp; //compressed frame
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
104 static GWorldPtr frame_GWorld_in = NULL;//a GWorld is some kind of description for a drawing environment
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
105 static GWorldPtr frame_GWorld_prev = NULL;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
106 static Rect FrameRect;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
107
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
108 static CompressorComponent compressor;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
109 static DecompressorComponent decompressor;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
110 static ImageDescriptionHandle desc;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
111 static ImageSequence seq;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
112
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
113
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
114
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
115
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
116
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
117 struct vf_priv_s {
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8511
diff changeset
118 muxer_stream_t* mux;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
119 //dv_encoder_t* enc;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
120
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
121 };
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
122 #define mux_v (vf->priv->mux)
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
123
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
124 //===========================================================================//
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
125
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
126 static int config(struct vf_instance_s* vf,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
127 int width, int height, int d_width, int d_height,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
128 unsigned int flags, unsigned int outfmt){
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
129 OSErr cres;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
130 ComponentDescription cdesc;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
131 mux_v->bih->biWidth=width;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
132 mux_v->bih->biHeight=height;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
133 mux_v->bih->biSizeImage=width*height*2;
12061
656a1b45b309 Use aspect from encoder for AVI vprp header
ranma
parents: 9435
diff changeset
134 mux_v->aspect = (float)d_width/d_height;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
135
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
136
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
137
15274
d42539110db9 typo, memset 0 was done on desc instead of cdesc, see bug #288
reimar
parents: 15212
diff changeset
138 memset(&cdesc,0,sizeof(cdesc));
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
139 cdesc.componentType= (((unsigned char)'i')<<24)|
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
140 (((unsigned char)'m')<<16)|
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
141 (((unsigned char)'c')<<8)|
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
142 (((unsigned char)'o'));
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
143
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
144 cdesc.componentSubType=bswap_32(format);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
145 cdesc.componentManufacturer=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
146 cdesc.componentFlags=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
147 cdesc.componentFlagsMask=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
148
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
149
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
150 mp_msg(MSGT_MENCODER,MSGL_DBG2,"Count = %ld\n",CountComponents(&cdesc));
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
151 compressor=FindNextComponent(NULL,&cdesc);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
152 if(!compressor){
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
153 mp_msg(MSGT_MENCODER,MSGL_ERR,"Cannot find requested component\n");
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
154 return(0);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
155 }
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
156 mp_msg(MSGT_MENCODER,MSGL_DBG2,"Found it! ID = %p\n",compressor);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
157
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
158 // cres= FindCodec (fourcc,anyCodec,&compressor,&decompressor );
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
159 // printf("FindCodec returned:%i compressor: 0x%X decompressor: 0x%X\n",cres&0xFFFF,compressor,decompressor);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
160
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
161 return 1;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
162 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
163
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
164 static int control(struct vf_instance_s* vf, int request, void* data){
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
165
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
166 return CONTROL_UNKNOWN;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
167 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
168
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
169 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14878
diff changeset
170 if(fmt==IMGFMT_YUY2) return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
171 return 0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
172 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
173
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
174 static int codec_inited = 0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
175
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17487
diff changeset
176 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
177
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
178 OSErr cres;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
179 long framesizemax;
8511
2b955a07fdcf set keyframe flag at encoding
arpi
parents: 8471
diff changeset
180 UInt8 similarity=0;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
181 long compressedsize;
13188
f60bc2314146 small gcc warning fixes
rathann
parents: 12195
diff changeset
182 OSType in_format=kYUVSPixelFormat;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
183 int width = mpi->width;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
184 int height = mpi->height;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
185 int stride = width*2;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
186 if(!codec_inited){
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
187 FrameRect.top=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
188 FrameRect.left=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
189 FrameRect.right=width;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
190 FrameRect.bottom=height;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
191 cres = QTNewGWorldFromPtr(
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
192 &frame_GWorld_in,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
193 in_format,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
194 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
195 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
196 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
197 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
198 mpi->planes[0],
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
199 stride);
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
200 mp_msg(MSGT_MENCODER,MSGL_DBG2,"NewGWorldFromPtr returned:%i\n",cres&0xFFFF);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
201 //dunno what todo about this
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
202 frame_prev = malloc(stride * height);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
203 cres = QTNewGWorldFromPtr(
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
204 &frame_GWorld_prev,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
205 in_format,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
206 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
207 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
208 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
209 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
210 frame_prev,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
211 stride);
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
212 mp_msg(MSGT_MENCODER,MSGL_DBG2,"height:%i width:%i stride:%i\n",height,width,stride);
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
213 mp_msg(MSGT_MENCODER,MSGL_DBG2,"NewGWorldFromPtr returned:%i\n",cres&0xFFFF);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
214 cres= GetMaxCompressionSize (
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
215 GetGWorldPixMap(frame_GWorld_in),
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
216 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
217 24,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
218 codecNormalQuality,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
219 bswap_32(format),
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
220 compressor,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
221 &framesizemax );
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 17012
diff changeset
222 mp_msg(MSGT_MENCODER,MSGL_DBG2,"GetMaxCompressionSize returned:%i : MaxSize:%li\n",cres&0xFFFF,framesizemax);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
223 frame_comp=malloc(framesizemax);
8511
2b955a07fdcf set keyframe flag at encoding
arpi
parents: 8471
diff changeset
224
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
225 desc = (ImageDescriptionHandle)NewHandleClear(MAX_IDSIZE); //memory where the desc will be stored
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
226 (*desc)->idSize=MAX_IDSIZE;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
227
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
228 cres= CompressSequenceBegin (
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
229 &seq,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
230 GetGWorldPixMap( frame_GWorld_in),
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
231 GetGWorldPixMap( frame_GWorld_prev),
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
232 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
233 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
234 24, // color depth
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
235 bswap_32(format), // fourcc
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
236 compressor, // codec component
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
237 codecNormalQuality, //codecNormalQuality,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
238 codecMaxQuality, //codecNormalQuality,
8511
2b955a07fdcf set keyframe flag at encoding
arpi
parents: 8471
diff changeset
239 10*30, // keyframe rate
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
240 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
241 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
242 desc);
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
243 mp_msg(MSGT_MENCODER,MSGL_DBG2,"CompressSequenceBegin returned:%i\n",cres&0xFFFF);
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
244 mp_msg(MSGT_MENCODER,MSGL_DBG2,"Sequence ID:%i\n",seq);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
245
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
246 dump_ImageDescription(*desc);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
247 codec_inited++;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
248 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
249 cres = CompressSequenceFrame (
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
250 seq,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
251 GetGWorldPixMap(frame_GWorld_in),
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
252 &FrameRect,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
253 0,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
254 (char*)mux_v->buffer,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
255 &compressedsize,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
256 &similarity,
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
257 0);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
258
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
259 if(cres&0xFFFF)mp_msg(MSGT_MENCODER,MSGL_DBG2,"CompressSequenceFrame returned:%i\n",cres&0xFFFF);
8511
2b955a07fdcf set keyframe flag at encoding
arpi
parents: 8471
diff changeset
260 #if 0
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
261 printf("Size %i->%i \n",stride*height,compressedsize);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
262 printf("Ratio: %i:1\n",(stride*height)/compressedsize);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
263 #endif
17487
fa17424b4c7b change muxer_write_chunk() so that pts/dts _could_ be passed from encoder to muxer
michael
parents: 17366
diff changeset
264 muxer_write_chunk(mux_v, compressedsize , similarity?0:0x10, MP_NOPTS_VALUE, MP_NOPTS_VALUE);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
265
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
266 if(((*desc)->idSize)>MAX_IDSIZE){
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
267 mp_msg(MSGT_MENCODER,MSGL_ERR,"FATAL! idSize=%d too big, increase MAX_IDSIZE in ve_qtvideo.c!\n",((*desc)->idSize));
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
268 } else {
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
269 // according to QT docs, imagedescription may be changed while encoding
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
270 // a frame (even its size may (and does!) change!)
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
271 memcpy(mux_v->bih+1,*desc,(*desc)->idSize);
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
272 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
273
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
274 return 1;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
275 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
276
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
277 //===========================================================================//
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
278
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
279 static int vf_open(vf_instance_t *vf, char* args){
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
280 OSErr cres = 1;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
281 vf->config=config;
14878
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14549
diff changeset
282 vf->default_caps=VFCAP_CONSTANT;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
283 vf->control=control;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
284 vf->query_format=query_format;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
285 vf->put_image=put_image;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
286 vf->priv=malloc(sizeof(struct vf_priv_s));
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
287 memset(vf->priv,0,sizeof(struct vf_priv_s));
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8511
diff changeset
288 vf->priv->mux=(muxer_stream_t*)args;
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
289
14549
acf3241be19b Initialized BITMAPINFOHEADER to 0 to avoid problems, esp. windows has problems
reimar
parents: 14528
diff changeset
290 mux_v->bih=calloc(1, sizeof(BITMAPINFOHEADER)+MAX_IDSIZE);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
291 mux_v->bih->biSize=sizeof(BITMAPINFOHEADER)+MAX_IDSIZE;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
292 mux_v->bih->biWidth=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
293 mux_v->bih->biHeight=0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
294 mux_v->bih->biCompression=format;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
295 mux_v->bih->biPlanes=1;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
296 mux_v->bih->biBitCount=24;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
297
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
298
9435
97b30b4b722f cygwin win32 dll support
faust3
parents: 9217
diff changeset
299 #ifdef WIN32_LOADER
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
300 Setup_LDT_Keeper();
9435
97b30b4b722f cygwin win32 dll support
faust3
parents: 9217
diff changeset
301 #endif
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: 13188
diff changeset
302 //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: 13188
diff changeset
303 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: 13188
diff changeset
304 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: 13188
diff changeset
305 mp_msg(MSGT_MENCODER,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: 13188
diff changeset
306 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: 13188
diff changeset
307 }
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: 13188
diff changeset
308
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
309 handler = LoadLibraryA("qtmlClient.dll");
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
310 if(!handler){
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
311 mp_msg(MSGT_MENCODER,MSGL_ERR,"unable to load qtmlClient.dll\n");
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
312 return 0;
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
313 }
8733
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
314 InitializeQTML = (OSErr (*)(long))GetProcAddress(handler, "InitializeQTML");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
315 GetGWorldPixMap = (PixMapHandle (*)(GWorldPtr))GetProcAddress(handler, "GetGWorldPixMap");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
316 QTNewGWorldFromPtr = (OSErr(*)(GWorldPtr *,OSType,const Rect *,CTabHandle,void*,GWorldFlags,void *,long))GetProcAddress(handler, "QTNewGWorldFromPtr");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
317 NewHandleClear = (OSErr(*)(Size))GetProcAddress(handler, "NewHandleClear");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
318 FindCodec = (OSErr (*)(CodecType,CodecComponent,CompressorComponent *,DecompressorComponent *))GetProcAddress(handler,"FindCodec");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
319 CompressSequenceBegin = (OSErr(*)(ImageSequence *,PixMapHandle,PixMapHandle,const Rect *,const Rect *,short,CodecType,CompressorComponent,CodecQ,CodecQ,long,CTabHandle,CodecFlags,ImageDescriptionHandle))GetProcAddress(handler,"CompressSequenceBegin");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
320 CompressSequenceFrame = (OSErr(*)(ImageSequence,PixMapHandle,const Rect *,CodecFlags,Ptr,long *,UInt8 *,ICMCompletionProcRecordPtr))GetProcAddress(handler,"CompressSequenceFrame");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
321 GetMaxCompressionSize = (OSErr(*)(PixMapHandle,const Rect *,short,CodecQ,CodecType,CompressorComponent,long *))GetProcAddress(handler,"GetMaxCompressionSize");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
322 CDSequenceEnd = (OSErr (*)(ImageSequence))GetProcAddress(handler,"CDSequenceEnd");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
323 FindNextComponent = (Component (*)(Component,ComponentDescription*))GetProcAddress(handler, "FindNextComponent");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
324 CountComponents = (long (*)(ComponentDescription*))GetProcAddress(handler, "CountComponents");
478561617705 compiler warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
arpi
parents: 8585
diff changeset
325 GetComponentInfo = (OSErr (*)(Component,ComponentDescription*,Handle,Handle,Handle))GetProcAddress(handler, "GetComponentInfo");
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
326 if(!InitializeQTML ||!CompressSequenceBegin){
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
327 mp_msg(MSGT_MENCODER,MSGL_ERR,"invalid qt DLL!\n");
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
328 return 0;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
329 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
330 //printf("%i,%i,%i\n",mmioFOURCC('S','V','Q','1'),'SVQ1',bswap_32(mmioFOURCC('S','V','Q','1')));
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
331 cres=InitializeQTML(6+16);
12195
96b366ed15ad printf -> mp_msg; print error msg when qtmlClient.dll is missing
faust3
parents: 12061
diff changeset
332 mp_msg(MSGT_MENCODER,MSGL_DBG2,"InitializeQTML returned %i\n",cres);
8471
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
333 return 1;
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
334 }
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
335
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
336 vf_info_t ve_info_qtvideo = {
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
337 "Quicktime video encoder using win32 DLLs",
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
338 "qtvideo",
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
339 "Sascha Sommer",
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
340 "for internal use by mencoder",
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
341 vf_open
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
342 };
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
343
0b7839c27be9 Sorenson 1/3 encoding just for fun :)
arpi
parents:
diff changeset
344 //===========================================================================//