annotate xacodec.c @ 3038:fa8665a91729

subtitles looked bad here (inverted colors sometimes) looked like values wrapped around the byte (not sure of the side effects but subtitles look good now)
author pl
date Tue, 20 Nov 2001 21:45:07 +0000
parents 7177ca35ad1a
children 23320af18656
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
1 /*
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
2 xacodec.c -- XAnim Video Codec DLL support
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
3
0959af64c098 needs to be hacked
alex
parents:
diff changeset
4 (C) 2001 Alex Beregszaszi <alex@naxine.org>
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
5 and Arpad Gereoffy <arpi@thot.banki.hu>
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
6 */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
7
0959af64c098 needs to be hacked
alex
parents:
diff changeset
8 #include <stdio.h>
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
9 #include <stdlib.h>
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
10 #include <string.h> /* strerror */
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
11
2409
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
12 #ifdef __FreeBSD__
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
13 #include <unistd.h>
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
14 #endif
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
15
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
16 #include <dlfcn.h> /* dlsym, dlopen, dlclose */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
17 #include <stdarg.h> /* va_alist, va_start, va_end */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
18 #include <errno.h> /* strerror, errno */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
19
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
20 #include "config.h"
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
21
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
22 #include "mp_msg.h"
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
23 #include "bswap.h"
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
24
0959af64c098 needs to be hacked
alex
parents:
diff changeset
25 #include "stream.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
26 #include "demuxer.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
27 #include "codec-cfg.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
28 #include "stheader.h"
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
29
2897
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
30 #ifdef USE_LIBVO2
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
31 #include "libvo2/img_format.h"
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
32 #else
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
33 #include "libvo/img_format.h"
2897
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
34 #endif
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
35 #include "linux/timer.h"
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
36 #include "xacodec.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
37
2793
38cb77fd3427 uses fastmemcpy
alex
parents: 2789
diff changeset
38 #include "fastmemcpy.h"
38cb77fd3427 uses fastmemcpy
alex
parents: 2789
diff changeset
39
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
40 #ifdef USE_XANIM
2481
0e9a5504a246 libdl checking added
alex
parents: 2414
diff changeset
41
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
42 #if 0
2381
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
43 typedef char xaBYTE;
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
44 typedef short xaSHORT;
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
45 typedef int xaLONG;
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
46
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
47 typedef unsigned char xaUBYTE;
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
48 typedef unsigned short xaUSHORT;
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
49 typedef unsigned int xaULONG;
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
50 #endif
2381
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
51
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
52 #define xaFALSE 0
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
53 #define xaTRUE 1
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
54
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
55 #ifndef RTLD_NOW
0959af64c098 needs to be hacked
alex
parents:
diff changeset
56 #define RLTD_NOW 2
0959af64c098 needs to be hacked
alex
parents:
diff changeset
57 #endif
0959af64c098 needs to be hacked
alex
parents:
diff changeset
58 #ifndef RTLD_LAZY
0959af64c098 needs to be hacked
alex
parents:
diff changeset
59 #define RLTD_LAZY 1
0959af64c098 needs to be hacked
alex
parents:
diff changeset
60 #endif
0959af64c098 needs to be hacked
alex
parents:
diff changeset
61 #ifndef RTLD_GLOBAL
0959af64c098 needs to be hacked
alex
parents:
diff changeset
62 #define RLTD_GLOBAL 256
0959af64c098 needs to be hacked
alex
parents:
diff changeset
63 #endif
0959af64c098 needs to be hacked
alex
parents:
diff changeset
64
2382
alex
parents: 2381
diff changeset
65 #define XA_CLOSE_FUNCS 5
alex
parents: 2381
diff changeset
66 int xa_close_func = 0;
alex
parents: 2381
diff changeset
67
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
68 typedef struct xacodec_driver
0959af64c098 needs to be hacked
alex
parents:
diff changeset
69 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
70 XA_DEC_INFO *decinfo;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
71 void *file_handler;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
72 long (*iq_func)(XA_CODEC_HDR *codec_hdr);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
73 unsigned int (*dec_func)(unsigned char *image, unsigned char *delta,
0959af64c098 needs to be hacked
alex
parents:
diff changeset
74 unsigned int dsize, XA_DEC_INFO *dec_info);
2382
alex
parents: 2381
diff changeset
75 void *close_func[XA_CLOSE_FUNCS];
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
76 xacodec_image_t image;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
77 } xacodec_driver_t;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
78
0959af64c098 needs to be hacked
alex
parents:
diff changeset
79 xacodec_driver_t *xacodec_driver = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
80
0959af64c098 needs to be hacked
alex
parents:
diff changeset
81 /* Needed by XAnim DLLs */
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
82 void XA_Print(char *fmt, ...)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
83 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
84 va_list vallist;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
85 char buf[1024];
0959af64c098 needs to be hacked
alex
parents:
diff changeset
86
0959af64c098 needs to be hacked
alex
parents:
diff changeset
87 va_start(vallist, fmt);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
88 vsnprintf(buf, 1024, fmt, vallist);
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
89 mp_msg(MSGT_XACODEC, MSGL_DBG2, "[xacodec] %s\n", buf);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
90 va_end(vallist);
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
91
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
92 return;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
93 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
94
2382
alex
parents: 2381
diff changeset
95 /* 0 is no debug (needed by 3ivX) */
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
96 long xa_debug = 0;
2382
alex
parents: 2381
diff changeset
97
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
98 void TheEnd1(char *err_mess)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
99 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
100 XA_Print("error: %s - exiting\n", err_mess);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
101 xacodec_exit();
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
102
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
103 return;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
104 }
2382
alex
parents: 2381
diff changeset
105
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
106 void XA_Add_Func_To_Free_Chain(XA_ANIM_HDR *anim_hdr, void (*function)())
2382
alex
parents: 2381
diff changeset
107 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
108 // XA_Print("XA_Add_Func_To_Free_Chain('anim_hdr: %08x', 'function: %08x')",
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
109 // anim_hdr, function);
2382
alex
parents: 2381
diff changeset
110 xacodec_driver->close_func[xa_close_func] = function;
alex
parents: 2381
diff changeset
111 if (xa_close_func+1 < XA_CLOSE_FUNCS)
alex
parents: 2381
diff changeset
112 xa_close_func++;
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
113
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
114 return;
2382
alex
parents: 2381
diff changeset
115 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
116 /* end of crap */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
117
0959af64c098 needs to be hacked
alex
parents:
diff changeset
118 /* load, init and query */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
119 int xacodec_init(char *filename, xacodec_driver_t *codec_driver)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
120 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
121 void *(*what_the)();
0959af64c098 needs to be hacked
alex
parents:
diff changeset
122 char *error;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
123 XAVID_MOD_HDR *mod_hdr;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
124 XAVID_FUNC_HDR *func;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
125 int i;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
126
0959af64c098 needs to be hacked
alex
parents:
diff changeset
127 codec_driver->file_handler = dlopen(filename, RTLD_NOW|RTLD_GLOBAL);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
128 if (!codec_driver->file_handler)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
129 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
130 error = dlerror();
0959af64c098 needs to be hacked
alex
parents:
diff changeset
131 if (error)
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
132 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: failed to dlopen %s while %s\n", filename, error);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
133 else
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
134 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: failed to dlopen %s\n", filename);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
135 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
136 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
137
0959af64c098 needs to be hacked
alex
parents:
diff changeset
138 what_the = dlsym(codec_driver->file_handler, "What_The");
0959af64c098 needs to be hacked
alex
parents:
diff changeset
139 if ((error = dlerror()) != NULL)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
140 {
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
141 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: failed to init %s while %s\n", filename, error);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
142 dlclose(codec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
143 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
144 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
145
0959af64c098 needs to be hacked
alex
parents:
diff changeset
146 mod_hdr = what_the();
0959af64c098 needs to be hacked
alex
parents:
diff changeset
147 if (!mod_hdr)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
148 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
149 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: initializer function failed in %s\n", filename);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
150 dlclose(codec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
151 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
152 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
153
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
154 mp_msg(MSGT_DECVIDEO, MSGL_INFO, "=== XAnim Codec ===\n");
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
155 mp_msg(MSGT_DECVIDEO, MSGL_INFO, " Filename: %s (API revision: %x)\n", filename, mod_hdr->api_rev);
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
156 mp_msg(MSGT_DECVIDEO, MSGL_INFO, " Codec: %s. Rev: %s\n", mod_hdr->desc, mod_hdr->rev);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
157 if (mod_hdr->copyright)
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
158 mp_msg(MSGT_DECVIDEO, MSGL_INFO, " %s\n", mod_hdr->copyright);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
159 if (mod_hdr->mod_author)
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
160 mp_msg(MSGT_DECVIDEO, MSGL_INFO, " Module Author(s): %s\n", mod_hdr->mod_author);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
161 if (mod_hdr->authors)
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
162 mp_msg(MSGT_DECVIDEO, MSGL_INFO, " Codec Author(s): %s\n", mod_hdr->authors);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
163
0959af64c098 needs to be hacked
alex
parents:
diff changeset
164 if (mod_hdr->api_rev > XAVID_API_REV)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
165 {
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
166 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: not supported api revision (%d) in %s\n",
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
167 mod_hdr->api_rev, filename);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
168 dlclose(codec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
169 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
170 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
171
0959af64c098 needs to be hacked
alex
parents:
diff changeset
172 func = mod_hdr->funcs;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
173 if (!func)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
174 {
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
175 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: function table error in %s\n", filename);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
176 dlclose(codec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
177 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
178 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
179
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
180 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "Exported functions by codec: [functable: 0x%08x entries: %d]\n",
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
181 mod_hdr->funcs, mod_hdr->num_funcs);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
182 for (i = 0; i < mod_hdr->num_funcs; i++)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
183 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
184 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, " %d: %d %d [iq:0x%08x d:0x%08x]\n",
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
185 i, func[i].what, func[i].id, func[i].iq_func, func[i].dec_func);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
186 if (func[i].what & XAVID_AVI_QUERY)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
187 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
188 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, " 0x%08x: avi init/query func (id: %d)\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
189 func[i].iq_func, func[i].id);
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
190 codec_driver->iq_func = (void *)func[i].iq_func;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
191 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
192 if (func[i].what & XAVID_QT_QUERY)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
193 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
194 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, " 0x%08x: qt init/query func (id: %d)\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
195 func[i].iq_func, func[i].id);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
196 codec_driver->iq_func = (void *)func[i].iq_func;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
197 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
198 if (func[i].what & XAVID_DEC_FUNC)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
199 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
200 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, " 0x%08x: decoder func (init/query: 0x%08x) (id: %d)\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
201 func[i].dec_func, func[i].iq_func, func[i].id);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
202 codec_driver->dec_func = (void *)func[i].dec_func;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
203 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
204 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
205 return(1);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
206 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
207
0959af64c098 needs to be hacked
alex
parents:
diff changeset
208 int xacodec_query(xacodec_driver_t *codec_driver, XA_CODEC_HDR *codec_hdr)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
209 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
210 long codec_ret;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
211
2682
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
212 #if 0
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
213 /* the brute one */
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
214 if (codec_driver->dec_func)
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
215 {
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
216 codec_hdr->decoder = codec_driver->dec_func;
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
217 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "We got decoder's address at init! %p\n", codec_hdr->decoder);
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
218 return(1);
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
219 }
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
220 #endif
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
221 codec_ret = codec_driver->iq_func(codec_hdr);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
222 switch(codec_ret)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
223 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
224 case CODEC_SUPPORTED:
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
225 codec_driver->dec_func = (void *)codec_hdr->decoder;
2382
alex
parents: 2381
diff changeset
226 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "Codec is supported: found decoder for %s at 0x%08x\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
227 codec_hdr->description, codec_hdr->decoder);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
228 return(1);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
229 case CODEC_UNSUPPORTED:
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
230 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "Codec (%s) is unsupported by driver\n",
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
231 codec_hdr->description);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
232 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
233 case CODEC_UNKNOWN:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
234 default:
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
235 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "Codec (%s) is unknown by driver\n",
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
236 codec_hdr->description);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
237 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
238 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
239 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
240
0959af64c098 needs to be hacked
alex
parents:
diff changeset
241 char *xacodec_def_path = XACODEC_PATH;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
242
0959af64c098 needs to be hacked
alex
parents:
diff changeset
243 int xacodec_init_video(sh_video_t *vidinfo, int out_format)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
244 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
245 char dll[1024];
0959af64c098 needs to be hacked
alex
parents:
diff changeset
246 XA_CODEC_HDR codec_hdr;
2382
alex
parents: 2381
diff changeset
247 int i;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
248
0959af64c098 needs to be hacked
alex
parents:
diff changeset
249 xacodec_driver = realloc(xacodec_driver, sizeof(struct xacodec_driver));
0959af64c098 needs to be hacked
alex
parents:
diff changeset
250 if (xacodec_driver == NULL)
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
251 {
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
252 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: memory allocation error: %s\n",
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
253 strerror(errno));
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
254 return(0);
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
255 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
256
0959af64c098 needs to be hacked
alex
parents:
diff changeset
257 xacodec_driver->iq_func = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
258 xacodec_driver->dec_func = NULL;
2382
alex
parents: 2381
diff changeset
259
alex
parents: 2381
diff changeset
260 for (i=0; i < XA_CLOSE_FUNCS; i++)
alex
parents: 2381
diff changeset
261 xacodec_driver->close_func[i] = NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
262
0959af64c098 needs to be hacked
alex
parents:
diff changeset
263 snprintf(dll, 1024, "%s/%s", xacodec_def_path, vidinfo->codec->dll);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
264 if (xacodec_init(dll, xacodec_driver) == 0)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
265 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
266
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
267 codec_hdr.xapi_rev = XAVID_API_REV;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
268 codec_hdr.anim_hdr = malloc(4096);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
269 codec_hdr.description = vidinfo->codec->info;
2682
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
270 codec_hdr.compression = bswap_32(vidinfo->bih->biCompression);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
271 codec_hdr.decoder = NULL;
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
272 codec_hdr.x = vidinfo->bih->biWidth; /* ->disp_w */
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
273 codec_hdr.y = vidinfo->bih->biHeight; /* ->disp_h */
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
274 /* extra fields to store palette */
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
275 codec_hdr.avi_ctab_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
276 codec_hdr.avi_read_ext = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
277 codec_hdr.extra = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
278
0959af64c098 needs to be hacked
alex
parents:
diff changeset
279 switch(out_format)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
280 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
281 /* case IMGFMT_RGB8:
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
282 codec_hdr.depth = 8;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
283 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
284 case IMGFMT_RGB15:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
285 codec_hdr.depth = 15;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
286 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
287 case IMGFMT_RGB16:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
288 codec_hdr.depth = 16;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
289 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
290 case IMGFMT_RGB24:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
291 codec_hdr.depth = 24;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
292 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
293 case IMGFMT_RGB32:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
294 codec_hdr.depth = 32;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
295 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
296 case IMGFMT_BGR8:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
297 codec_hdr.depth = 8;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
298 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
299 case IMGFMT_BGR15:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
300 codec_hdr.depth = 15;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
301 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
302 case IMGFMT_BGR16:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
303 codec_hdr.depth = 16;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
304 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
305 case IMGFMT_BGR24:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
306 codec_hdr.depth = 24;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
307 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
308 case IMGFMT_BGR32:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
309 codec_hdr.depth = 32;
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
310 break;*/
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
311 case IMGFMT_IYUV:
2382
alex
parents: 2381
diff changeset
312 case IMGFMT_I420:
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
313 case IMGFMT_YV12:
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
314 codec_hdr.depth = 12;
2382
alex
parents: 2381
diff changeset
315 break;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
316 default:
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
317 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: not supported image out format (%s)\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
318 vo_format_name(out_format));
0959af64c098 needs to be hacked
alex
parents:
diff changeset
319 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
320 }
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
321 mp_msg(MSGT_DECVIDEO, MSGL_INFO, "xacodec: querying for input %dx%d %dbit [fourcc: %4x] (%s)...\n",
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
322 codec_hdr.x, codec_hdr.y, codec_hdr.depth, codec_hdr.compression, codec_hdr.description);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
323
0959af64c098 needs to be hacked
alex
parents:
diff changeset
324 if (xacodec_query(xacodec_driver, &codec_hdr) == 0)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
325 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
326
0959af64c098 needs to be hacked
alex
parents:
diff changeset
327 // free(codec_hdr.anim_hdr);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
328
0959af64c098 needs to be hacked
alex
parents:
diff changeset
329 xacodec_driver->decinfo = malloc(sizeof(XA_DEC_INFO));
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
330 if (xacodec_driver->decinfo == NULL)
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
331 {
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
332 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: memory allocation error: %s\n",
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
333 strerror(errno));
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
334 return(0);
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
335 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
336 xacodec_driver->decinfo->cmd = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
337 xacodec_driver->decinfo->skip_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
338 xacodec_driver->decinfo->imagex = xacodec_driver->decinfo->xe = codec_hdr.x;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
339 xacodec_driver->decinfo->imagey = xacodec_driver->decinfo->ye = codec_hdr.y;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
340 xacodec_driver->decinfo->imaged = codec_hdr.depth;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
341 xacodec_driver->decinfo->chdr = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
342 xacodec_driver->decinfo->map_flag = 0; /* xaFALSE */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
343 xacodec_driver->decinfo->map = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
344 xacodec_driver->decinfo->xs = xacodec_driver->decinfo->ys = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
345 xacodec_driver->decinfo->special = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
346 xacodec_driver->decinfo->extra = codec_hdr.extra;
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
347 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "decinfo->extra, filled by codec: 0x%08x [%s]\n",
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
348 &xacodec_driver->decinfo->extra, xacodec_driver->decinfo->extra);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
349
2377
3ad626921328 fixing...
arpi
parents: 2376
diff changeset
350 // vidinfo->our_out_buffer = malloc(codec_hdr.y * codec_hdr.x * ((codec_hdr.depth+7)/8));
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
351 // vidinfo->our_out_buffer = malloc(codec_hdr.y * codec_hdr.x * codec_hdr.depth);
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
352 xacodec_driver->image.out_fmt = out_format;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
353 xacodec_driver->image.bpp = codec_hdr.depth;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
354 xacodec_driver->image.width = codec_hdr.x;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
355 xacodec_driver->image.height = codec_hdr.y;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
356 xacodec_driver->image.mem = malloc(codec_hdr.y * codec_hdr.x * ((codec_hdr.depth+7)/8));
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
357
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
358 if (xacodec_driver->image.mem == NULL)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
359 {
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
360 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: memory allocation error: %s\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
361 strerror(errno));
0959af64c098 needs to be hacked
alex
parents:
diff changeset
362 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
363 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
364
0959af64c098 needs to be hacked
alex
parents:
diff changeset
365 return(1);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
366 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
367
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
368 #define ACT_DLTA_NORM 0x00000000
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
369 #define ACT_DLTA_BODY 0x00000001
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
370 #define ACT_DLTA_XOR 0x00000002
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
371 #define ACT_DLTA_NOP 0x00000004
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
372 #define ACT_DLTA_MAPD 0x00000008
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
373 #define ACT_DLTA_DROP 0x00000010
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
374 #define ACT_DLTA_BAD 0x80000000
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
375
0959af64c098 needs to be hacked
alex
parents:
diff changeset
376 // unsigned int (*dec_func)(unsigned char *image, unsigned char *delta,
0959af64c098 needs to be hacked
alex
parents:
diff changeset
377 // unsigned int dsize, XA_DEC_INFO *dec_info);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
378
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
379 xacodec_image_t* xacodec_decode_frame(uint8_t *frame, int frame_size, int skip_flag)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
380 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
381 unsigned int ret;
2387
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
382 xacodec_image_t *image=&xacodec_driver->image;
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
383
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
384 // ugyis kiirja a vegen h dropped vagy nem..
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
385 // if (skip_flag > 0)
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
386 // mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "frame will be dropped..\n");
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
387
0959af64c098 needs to be hacked
alex
parents:
diff changeset
388 xacodec_driver->decinfo->skip_flag = skip_flag;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
389
2387
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
390 image->planes[0]=image->mem;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
391 image->stride[0]=image->width;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
392 image->stride[1]=image->stride[2]=image->width/2;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
393 switch(image->out_fmt){
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
394 case IMGFMT_YV12:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
395 image->planes[2]=image->planes[0]+image->width*image->height;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
396 image->planes[1]=image->planes[2]+image->width*image->height/4;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
397 break;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
398 case IMGFMT_I420:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
399 case IMGFMT_IYUV:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
400 image->planes[1]=image->planes[0]+image->width*image->height;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
401 image->planes[2]=image->planes[1]+image->width*image->height/4;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
402 break;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
403 }
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
404
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
405 // printf("frame: %08x (size: %d) - dest: %08x\n", frame, frame_size, dest);
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
406
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
407 ret = xacodec_driver->dec_func((uint8_t*)&xacodec_driver->image, frame, frame_size, xacodec_driver->decinfo);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
408
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
409 // printf("ret: %lu : ", ret);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
410
0959af64c098 needs to be hacked
alex
parents:
diff changeset
411
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
412 if (ret == ACT_DLTA_NORM)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
413 {
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
414 // mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "norm\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
415 return &xacodec_driver->image;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
416 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
417
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
418 if (ret & ACT_DLTA_MAPD)
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
419 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "mapd\n");
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
420 /*
0959af64c098 needs to be hacked
alex
parents:
diff changeset
421 if (!(ret & ACT_DLT_MAPD))
0959af64c098 needs to be hacked
alex
parents:
diff changeset
422 xacodec_driver->decinfo->map_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
423 else
0959af64c098 needs to be hacked
alex
parents:
diff changeset
424 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
425 xacodec_driver->decinfo->map_flag = 1;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
426 xacodec_driver->decinfo->map = ...
0959af64c098 needs to be hacked
alex
parents:
diff changeset
427 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
428 */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
429
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
430 if (ret & ACT_DLTA_XOR)
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
431 {
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
432 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "xor\n");
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
433 return &xacodec_driver->image;
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
434 }
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
435
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
436 /* nothing changed */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
437 if (ret & ACT_DLTA_NOP)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
438 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
439 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "nop\n");
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
440 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
441 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
442
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
443 /* frame dropped (also display latest frame) */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
444 if (ret & ACT_DLTA_DROP)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
445 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
446 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "drop\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
447 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
448 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
449
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
450 if (ret & ACT_DLTA_BAD)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
451 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
452 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "bad\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
453 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
454 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
455
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
456 /* used for double buffer */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
457 if (ret & ACT_DLTA_BODY)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
458 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
459 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "body\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
460 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
461 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
462
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
463 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
464 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
465
0959af64c098 needs to be hacked
alex
parents:
diff changeset
466 int xacodec_exit()
0959af64c098 needs to be hacked
alex
parents:
diff changeset
467 {
2382
alex
parents: 2381
diff changeset
468 int i;
alex
parents: 2381
diff changeset
469 void (*close_func)();
alex
parents: 2381
diff changeset
470
alex
parents: 2381
diff changeset
471 for (i=0; i < XA_CLOSE_FUNCS; i++)
alex
parents: 2381
diff changeset
472 if (xacodec_driver->close_func[i])
alex
parents: 2381
diff changeset
473 {
alex
parents: 2381
diff changeset
474 close_func = xacodec_driver->close_func[i];
alex
parents: 2381
diff changeset
475 close_func();
alex
parents: 2381
diff changeset
476 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
477 dlclose(xacodec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
478 if (xacodec_driver->decinfo != NULL)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
479 free(xacodec_driver->decinfo);
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
480 free(xacodec_driver);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
481 return(TRUE);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
482 }
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
483
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
484
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
485 /* *** XANIM Conversions *** */
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
486 /* like loader/win32.c - mini XANIM library */
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
487
2382
alex
parents: 2381
diff changeset
488 unsigned long XA_Time_Read()
alex
parents: 2381
diff changeset
489 {
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
490 return GetTimer(); //(GetRelativeTime());
2382
alex
parents: 2381
diff changeset
491 }
alex
parents: 2381
diff changeset
492
alex
parents: 2381
diff changeset
493 void XA_dummy()
alex
parents: 2381
diff changeset
494 {
alex
parents: 2381
diff changeset
495 XA_Print("dummy() called");
alex
parents: 2381
diff changeset
496 }
alex
parents: 2381
diff changeset
497
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
498 void XA_Gen_YUV_Tabs(XA_ANIM_HDR *anim_hdr)
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
499 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
500 XA_Print("XA_Gen_YUV_Tabs('anim_hdr: %08x')", anim_hdr);
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
501
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
502 // XA_Print("anim type: %d - img[x: %d, y: %d, c: %d, d: %d]",
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
503 // anim_hdr->anim_type, anim_hdr->imagex, anim_hdr->imagey,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
504 // anim_hdr->imagec, anim_hdr->imaged);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
505 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
506 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
507
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
508 void JPG_Setup_Samp_Limit_Table(XA_ANIM_HDR *anim_hdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
509 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
510 XA_Print("JPG_Setup_Samp_Limit_Table('anim_hdr: %08x')", anim_hdr);
2381
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
511 // xa_byte_limit = jpg_samp_limit + (MAXJSAMPLE + 1);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
512 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
513 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
514
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
515 void JPG_Alloc_MCU_Bufs(XA_ANIM_HDR *anim_hdr, unsigned int width,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
516 unsigned int height, unsigned int full_flag)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
517 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
518 XA_Print("JPG_Alloc_MCU_Bufs('anim_hdr: %08x', 'width: %d', 'height: %d', 'full_flag: %d')",
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
519 anim_hdr, width, height, full_flag);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
520 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
521 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
522
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
523 /* --------------- 4x4 pixel YUV block fillers [CVID] ----------------- */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
524
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
525 typedef struct
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
526 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
527 unsigned char r0, g0, b0;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
528 unsigned char r1, g1, b1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
529 unsigned char r2, g2, b2;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
530 unsigned char r3, g3, b3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
531 unsigned int clr0_0, clr0_1, clr0_2, clr0_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
532 unsigned int clr1_0, clr1_1, clr1_2, clr1_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
533 unsigned int clr2_0, clr2_1, clr2_2, clr2_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
534 unsigned int clr3_0, clr3_1, clr3_2, clr3_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
535 } XA_2x2_Color;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
536
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
537 #define SET_4_YUV_PIXELS(image,x,y,cmap2x2) \
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
538 image->planes[0][((x)+0)+((y)+0)*image->stride[0]]=cmap2x2->clr0_0;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
539 image->planes[0][((x)+1)+((y)+0)*image->stride[0]]=cmap2x2->clr0_1;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
540 image->planes[0][((x)+0)+((y)+1)*image->stride[0]]=cmap2x2->clr0_2;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
541 image->planes[0][((x)+1)+((y)+1)*image->stride[0]]=cmap2x2->clr0_3;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
542 image->planes[1][((x)>>1)+((y)>>1)*image->stride[1]]=cmap2x2->clr1_0;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
543 image->planes[2][((x)>>1)+((y)>>1)*image->stride[2]]=cmap2x2->clr1_1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
544
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
545 void XA_2x2_OUT_1BLK_Convert(unsigned char *image_p, unsigned int x, unsigned int y,
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
546 unsigned int imagex, XA_2x2_Color *cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
547 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
548 xacodec_image_t *image=(xacodec_image_t*)image_p;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
549
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
550 #if 0
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
551 SET_4_YUV_PIXELS(image,x,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
552 #else
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
553 SET_4_YUV_PIXELS(image,x,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
554 SET_4_YUV_PIXELS(image,x+2,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
555 SET_4_YUV_PIXELS(image,x,y+2,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
556 SET_4_YUV_PIXELS(image,x+2,y+2,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
557 #endif
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
558 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
559 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
560
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
561 void XA_2x2_OUT_4BLKS_Convert(unsigned char *image_p, unsigned int x, unsigned int y,
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
562 unsigned int imagex, XA_2x2_Color *cm0, XA_2x2_Color *cm1, XA_2x2_Color *cm2,
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
563 XA_2x2_Color *cm3)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
564 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
565 xacodec_image_t *image=(xacodec_image_t*)image_p;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
566
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
567 SET_4_YUV_PIXELS(image,x,y,cm0)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
568 SET_4_YUV_PIXELS(image,x+2,y,cm1)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
569 SET_4_YUV_PIXELS(image,x,y+2,cm2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
570 SET_4_YUV_PIXELS(image,x+2,y+2,cm3)
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
571 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
572 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
573
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
574 void *YUV2x2_Blk_Func(unsigned int image_type, int blks, unsigned int dith_flag)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
575 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
576 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "YUV2x2_Blk_Func(image_type=%d, blks=%d, dith_flag=%d)\n",
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
577 image_type, blks, dith_flag);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
578 switch(blks){
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
579 case 1:
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
580 return (void*) XA_2x2_OUT_1BLK_Convert;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
581 case 4:
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
582 return (void*) XA_2x2_OUT_4BLKS_Convert;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
583 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
584
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
585 mp_msg(MSGT_DECVIDEO,MSGL_WARN,"Unimplemented: YUV2x2_Blk_Func(image_type=%d blks=%d dith=%d)\n",image_type,blks,dith_flag);
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
586 return (void*) XA_dummy;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
587 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
588
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
589 // Take Four Y's and UV and put them into a 2x2 Color structure.
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
590
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
591 void XA_YUV_2x2_clr(XA_2x2_Color *cmap2x2, unsigned int Y0, unsigned int Y1,
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
592 unsigned int Y2, unsigned int Y3, unsigned int U, unsigned int V,
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
593 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
594 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
595
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
596 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV_2x2_clr(%p [%d,%d,%d,%d][%d][%d] %d %p %p)\n",
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
597 cmap2x2,Y0,Y1,Y2,Y3,U,V,map_flag,map,chdr);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
598
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
599 cmap2x2->clr0_0=Y0;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
600 cmap2x2->clr0_1=Y1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
601 cmap2x2->clr0_2=Y2;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
602 cmap2x2->clr0_3=Y3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
603 cmap2x2->clr1_0=U;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
604 cmap2x2->clr1_1=V;
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
605 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
606 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
607
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
608 void *YUV2x2_Map_Func(unsigned int image_type, unsigned int dith_type)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
609 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
610 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "YUV2x2_Map_Func('image_type: %d', 'dith_type: %d')",
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
611 image_type, dith_type);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
612 return((void*)XA_YUV_2x2_clr);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
613 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
614
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
615 /* -------------------- whole YUV frame converters ------------------------- */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
616
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
617 typedef struct
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
618 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
619 unsigned char *Ybuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
620 unsigned char *Ubuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
621 unsigned char *Vbuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
622 unsigned char *the_buf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
623 unsigned int the_buf_size;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
624 unsigned short y_w, y_h;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
625 unsigned short uv_w, uv_h;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
626 } YUVBufs;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
627
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
628 typedef struct
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
629 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
630 unsigned long Uskip_mask;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
631 long *YUV_Y_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
632 long *YUV_UB_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
633 long *YUV_VR_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
634 long *YUV_UG_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
635 long *YUV_VG_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
636 } YUVTabs;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
637
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
638 YUVBufs jpg_YUVBufs;
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
639 YUVTabs def_yuv_tabs;
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
640
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
641 /* -------------- YUV 4x4 1x1 1x1 [Indeo 3,4,5] ------------------ */
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
642
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
643 void XA_YUV1611_Convert(unsigned char *image_p, unsigned int imagex, unsigned int imagey,
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
644 unsigned int i_x, unsigned int i_y, YUVBufs *yuv, YUVTabs *yuv_tabs,
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
645 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
646 {
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
647 xacodec_image_t *image=(xacodec_image_t*)image_p;
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
648 int y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
649 int uvstride;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
650
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
651 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "YUVTabs: %d %p %p %p %p %p\n",yuv_tabs->Uskip_mask,
2397
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
652 yuv_tabs->YUV_Y_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
653 yuv_tabs->YUV_UB_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
654 yuv_tabs->YUV_VR_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
655 yuv_tabs->YUV_UG_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
656 yuv_tabs->YUV_VG_tab );
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
657
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
658 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV1611_Convert('image: %08x', 'imagex: %d', 'imagey: %d', 'i_x: %d', 'i_y: %d', 'yuv_bufs: %08x', 'yuv_tabs: %08x', 'map_flag: %d', 'map: %08x', 'chdr: %08x')",
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
659 image, imagex, imagey, i_x, i_y, yuv, yuv_tabs, map_flag, map, chdr);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
660
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
661 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "YUV: %p %p %p %X (%d) %dx%d %dx%d\n",
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
662 yuv->Ybuf,yuv->Ubuf,yuv->Vbuf,yuv->the_buf,yuv->the_buf_size,
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
663 yuv->y_w,yuv->y_h,yuv->uv_w,yuv->uv_h);
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
664
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
665 // copy Y plane:
2397
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
666 if(yuv_tabs->YUV_Y_tab){ // dirty hack to detect iv32:
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
667 for(y=0;y<imagey*imagex;y++)
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
668 image->planes[0][y]=yuv->Ybuf[y]<<1;
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
669 } else
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
670 memcpy(image->planes[0],yuv->Ybuf,imagex*imagey);
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
671
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
672 // scale U,V planes by 2:
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
673 imagex>>=2;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
674 imagey>>=2;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
675
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
676 uvstride=(yuv->uv_w)?yuv->uv_w:imagex;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
677
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
678 for(y=0;y<imagey;y++){
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
679 unsigned char *su=yuv->Ubuf+uvstride*y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
680 unsigned char *sv=yuv->Vbuf+uvstride*y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
681 unsigned int strideu=image->stride[1];
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
682 unsigned int stridev=image->stride[2];
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
683 unsigned char *du=image->planes[1]+2*y*strideu;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
684 unsigned char *dv=image->planes[2]+2*y*stridev;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
685 int x;
2397
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
686 if(yuv_tabs->YUV_Y_tab){ // dirty hack to detect iv32:
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
687 for(x=0;x<imagex;x++){
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
688 du[2*x]=du[2*x+1]=du[2*x+strideu]=du[2*x+strideu+1]=su[x]*2;
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
689 dv[2*x]=dv[2*x+1]=dv[2*x+stridev]=dv[2*x+stridev+1]=sv[x]*2;
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
690 }
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
691 } else {
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
692 for(x=0;x<imagex;x++){
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
693 du[2*x]=du[2*x+1]=du[2*x+strideu]=du[2*x+strideu+1]=su[x];
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
694 dv[2*x]=dv[2*x+1]=dv[2*x+stridev]=dv[2*x+stridev+1]=sv[x];
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
695 }
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
696 }
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
697 }
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
698 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
699 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
700
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
701 void *XA_YUV1611_Func(unsigned int image_type)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
702 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
703 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV1611_Func('image_type: %d')", image_type);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
704 return((void *)XA_YUV1611_Convert);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
705 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
706
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
707 /* -------------- YUV 4x1 1x1 1x1 (4:1:1 ?) [CYUV] ------------------ */
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
708
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
709 void XA_YUV411111_Convert(unsigned char *image, unsigned int imagex, unsigned int imagey,
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
710 unsigned int i_x, unsigned int i_y, YUVBufs *yuv_bufs, YUVTabs *yuv_tabs,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
711 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
712 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
713 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV411111_Convert('image: %d', 'imagex: %d', 'imagey: %d', 'i_x: %d', 'i_y: %d', 'yuv_bufs: %08x', 'yuv_tabs: %08x', 'map_flag: %d', 'map: %08x', 'chdr: %08x')",
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
714 image, imagex, imagey, i_x, i_y, yuv_bufs, yuv_tabs, map_flag, map, chdr);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
715 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
716 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
717
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
718 void *XA_YUV411111_Func(unsigned int image_type)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
719 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
720 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV411111_Func('image_type: %d')", image_type);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
721 return((void*)XA_YUV411111_Convert);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
722 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
723
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
724 /* --------------- YUV 2x2 1x1 1x1 (4:2:0 aka YV12) [3ivX,H263] ------------ */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
725
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
726 void XA_YUV221111_Convert(unsigned char *image_p, unsigned int imagex, unsigned int imagey,
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
727 unsigned int i_x, unsigned int i_y, YUVBufs *yuv, YUVTabs *yuv_tabs, unsigned int map_flag,
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
728 unsigned int *map, XA_CHDR *chdr)
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
729 {
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
730 xacodec_image_t *image=(xacodec_image_t*)image_p;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
731
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
732 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV221111_Convert(%p %dx%d %d;%d [%dx%d] %p %p %d %p %p)\n",
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
733 image,imagex,imagey,i_x,i_y, image->width,image->height,
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
734 yuv,yuv_tabs,map_flag,map,chdr);
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
735
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
736 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "YUV: %p %p %p %X (%X) %Xx%X %Xx%X\n",
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
737 yuv->Ybuf,yuv->Ubuf,yuv->Vbuf,yuv->the_buf,yuv->the_buf_size,
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
738 yuv->y_w,yuv->y_h,yuv->uv_w,yuv->uv_h);
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
739
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
740 #warning "FIXME! Decoder doesn't supports Vivo/2.00 :("
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
741
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
742 if(i_x==image->width && i_y==image->height){
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
743 // printf("Direct render!!!\n");
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
744 image->planes[0]=yuv->Ybuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
745 if(image->out_fmt==IMGFMT_YV12){
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
746 image->planes[1]=yuv->Ubuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
747 image->planes[2]=yuv->Vbuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
748 } else {
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
749 image->planes[1]=yuv->Vbuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
750 image->planes[2]=yuv->Ubuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
751 }
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
752 image->stride[0]=i_x; // yuv->y_w
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
753 image->stride[1]=image->stride[2]=i_x/2; // yuv->uv_w
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
754 } else {
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
755 int y;
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
756 for(y=0;y<i_y;y++)
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
757 memcpy(image->planes[0]+y*image->stride[0],yuv->Ybuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
758 i_x>>=1; i_y>>=1;
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
759 for(y=0;y<i_y;y++){
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
760 memcpy(image->planes[1]+y*image->stride[1],yuv->Ubuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
761 memcpy(image->planes[2]+y*image->stride[2],yuv->Vbuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
762 }
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
763 }
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
764 return;
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
765 }
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
766
2382
alex
parents: 2381
diff changeset
767 void *XA_YUV221111_Func(unsigned int image_type)
alex
parents: 2381
diff changeset
768 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
769 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV221111_Func('image_type: %d')", image_type);
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
770 /* hotfix to disable segfault by Vivo/2.00 H263 stream */
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
771 if (image_type < 0x10) /* obtaining to the latest XAnim source: */
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
772 /* XA_IMTYPE_* has values from 0x0 to 0x9 */
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
773 return((void *)XA_YUV221111_Convert);
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
774
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
775 mp_msg(MSGT_DECVIDEO,MSGL_WARN,"Unimplemented: XA_YUV221111_Func(image_type=%d)\n",image_type);
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
776 return((void *)XA_dummy);
2382
alex
parents: 2381
diff changeset
777 }
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
778
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
779 /* *** EOF XANIM *** */
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
780 #endif