annotate xacodec.c @ 5623:cdf5b88bdaa8

Most of informational printk's ifdef'd. Now without debug only initial and error messages go to syslog. eyck added to list of people who messed with this file(?).
author eyck
date Sun, 14 Apr 2002 23:14:26 +0000
parents a5e0d4c469e0
children 561de0125a61
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
5282
a5e0d4c469e0 dlfcn.h shouldn't be included if XANIM support disabled
arpi
parents: 4699
diff changeset
12 #include "config.h"
a5e0d4c469e0 dlfcn.h shouldn't be included if XANIM support disabled
arpi
parents: 4699
diff changeset
13
a5e0d4c469e0 dlfcn.h shouldn't be included if XANIM support disabled
arpi
parents: 4699
diff changeset
14 #ifdef USE_XANIM
a5e0d4c469e0 dlfcn.h shouldn't be included if XANIM support disabled
arpi
parents: 4699
diff changeset
15
2409
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
16 #ifdef __FreeBSD__
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
17 #include <unistd.h>
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
18 #endif
25f6a4335abb FreeBSD patch
nexus
parents: 2406
diff changeset
19
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
20 #include <dlfcn.h> /* dlsym, dlopen, dlclose */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
21 #include <stdarg.h> /* va_alist, va_start, va_end */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
22 #include <errno.h> /* strerror, errno */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
23
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
24 #include "mp_msg.h"
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
25 #include "bswap.h"
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
26
0959af64c098 needs to be hacked
alex
parents:
diff changeset
27 #include "stream.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
28 #include "demuxer.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
29 #include "codec-cfg.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
30 #include "stheader.h"
2376
4edd4d7f4511 mplayerization
arpi
parents: 2373
diff changeset
31
2897
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
32 #ifdef USE_LIBVO2
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
33 #include "libvo2/img_format.h"
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
34 #else
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
35 #include "libvo/img_format.h"
2897
283eab7c4c8e Added proper #include's for libvo2
mswitch
parents: 2793
diff changeset
36 #endif
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
37 #include "linux/timer.h"
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
38 #include "xacodec.h"
0959af64c098 needs to be hacked
alex
parents:
diff changeset
39
2793
38cb77fd3427 uses fastmemcpy
alex
parents: 2789
diff changeset
40 #include "fastmemcpy.h"
38cb77fd3427 uses fastmemcpy
alex
parents: 2789
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
4699
406d7fc6be4e use the XANIM_MOD_DIR env. var as described in xanim's docs
alex
parents: 3115
diff changeset
263 if (getenv("XANIM_MOD_DIR"))
406d7fc6be4e use the XANIM_MOD_DIR env. var as described in xanim's docs
alex
parents: 3115
diff changeset
264 xacodec_def_path = getenv("XANIM_MOD_DIR");
406d7fc6be4e use the XANIM_MOD_DIR env. var as described in xanim's docs
alex
parents: 3115
diff changeset
265
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
266 snprintf(dll, 1024, "%s/%s", xacodec_def_path, vidinfo->codec->dll);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
267 if (xacodec_init(dll, xacodec_driver) == 0)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
268 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
269
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
270 codec_hdr.xapi_rev = XAVID_API_REV;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
271 codec_hdr.anim_hdr = malloc(4096);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
272 codec_hdr.description = vidinfo->codec->info;
2682
77a237be71a6 fixed api revision and input fourcc handling (mappings are working too :)
alex
parents: 2659
diff changeset
273 codec_hdr.compression = bswap_32(vidinfo->bih->biCompression);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
274 codec_hdr.decoder = NULL;
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
275 codec_hdr.x = vidinfo->bih->biWidth; /* ->disp_w */
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
276 codec_hdr.y = vidinfo->bih->biHeight; /* ->disp_h */
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
277 /* extra fields to store palette */
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
278 codec_hdr.avi_ctab_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
279 codec_hdr.avi_read_ext = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
280 codec_hdr.extra = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
281
0959af64c098 needs to be hacked
alex
parents:
diff changeset
282 switch(out_format)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
283 {
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
284 /* case IMGFMT_RGB8:
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
285 codec_hdr.depth = 8;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
286 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
287 case IMGFMT_RGB15:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
288 codec_hdr.depth = 15;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
289 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
290 case IMGFMT_RGB16:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
291 codec_hdr.depth = 16;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
292 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
293 case IMGFMT_RGB24:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
294 codec_hdr.depth = 24;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
295 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
296 case IMGFMT_RGB32:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
297 codec_hdr.depth = 32;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
298 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
299 case IMGFMT_BGR8:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
300 codec_hdr.depth = 8;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
301 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
302 case IMGFMT_BGR15:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
303 codec_hdr.depth = 15;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
304 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
305 case IMGFMT_BGR16:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
306 codec_hdr.depth = 16;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
307 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
308 case IMGFMT_BGR24:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
309 codec_hdr.depth = 24;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
310 break;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
311 case IMGFMT_BGR32:
0959af64c098 needs to be hacked
alex
parents:
diff changeset
312 codec_hdr.depth = 32;
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
313 break;*/
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
314 case IMGFMT_IYUV:
2382
alex
parents: 2381
diff changeset
315 case IMGFMT_I420:
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
316 case IMGFMT_YV12:
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
317 codec_hdr.depth = 12;
2382
alex
parents: 2381
diff changeset
318 break;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
319 default:
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
320 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: not supported image out format (%s)\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
321 vo_format_name(out_format));
0959af64c098 needs to be hacked
alex
parents:
diff changeset
322 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
323 }
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
324 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
325 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
326
0959af64c098 needs to be hacked
alex
parents:
diff changeset
327 if (xacodec_query(xacodec_driver, &codec_hdr) == 0)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
328 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
329
0959af64c098 needs to be hacked
alex
parents:
diff changeset
330 // free(codec_hdr.anim_hdr);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
331
0959af64c098 needs to be hacked
alex
parents:
diff changeset
332 xacodec_driver->decinfo = malloc(sizeof(XA_DEC_INFO));
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
333 if (xacodec_driver->decinfo == NULL)
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
334 {
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
335 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: memory allocation error: %s\n",
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
336 strerror(errno));
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
337 return(0);
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
338 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
339 xacodec_driver->decinfo->cmd = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
340 xacodec_driver->decinfo->skip_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
341 xacodec_driver->decinfo->imagex = xacodec_driver->decinfo->xe = codec_hdr.x;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
342 xacodec_driver->decinfo->imagey = xacodec_driver->decinfo->ye = codec_hdr.y;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
343 xacodec_driver->decinfo->imaged = codec_hdr.depth;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
344 xacodec_driver->decinfo->chdr = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
345 xacodec_driver->decinfo->map_flag = 0; /* xaFALSE */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
346 xacodec_driver->decinfo->map = NULL;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
347 xacodec_driver->decinfo->xs = xacodec_driver->decinfo->ys = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
348 xacodec_driver->decinfo->special = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
349 xacodec_driver->decinfo->extra = codec_hdr.extra;
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
350 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
351 &xacodec_driver->decinfo->extra, xacodec_driver->decinfo->extra);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
352
2377
3ad626921328 fixing...
arpi
parents: 2376
diff changeset
353 // 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
354 // 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
355 xacodec_driver->image.out_fmt = out_format;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
356 xacodec_driver->image.bpp = codec_hdr.depth;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
357 xacodec_driver->image.width = codec_hdr.x;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
358 xacodec_driver->image.height = codec_hdr.y;
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
359 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
360
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
361 if (xacodec_driver->image.mem == NULL)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
362 {
2414
557a31eed636 some cosmetic and debugging changes
alex
parents: 2409
diff changeset
363 mp_msg(MSGT_DECVIDEO, MSGL_FATAL, "xacodec: memory allocation error: %s\n",
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
364 strerror(errno));
0959af64c098 needs to be hacked
alex
parents:
diff changeset
365 return(0);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
366 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
367
0959af64c098 needs to be hacked
alex
parents:
diff changeset
368 return(1);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
369 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
370
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
371 #define ACT_DLTA_NORM 0x00000000
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
372 #define ACT_DLTA_BODY 0x00000001
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
373 #define ACT_DLTA_XOR 0x00000002
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
374 #define ACT_DLTA_NOP 0x00000004
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
375 #define ACT_DLTA_MAPD 0x00000008
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
376 #define ACT_DLTA_DROP 0x00000010
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
377 #define ACT_DLTA_BAD 0x80000000
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
378
0959af64c098 needs to be hacked
alex
parents:
diff changeset
379 // unsigned int (*dec_func)(unsigned char *image, unsigned char *delta,
0959af64c098 needs to be hacked
alex
parents:
diff changeset
380 // unsigned int dsize, XA_DEC_INFO *dec_info);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
381
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
382 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
383 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
384 unsigned int ret;
2387
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
385 xacodec_image_t *image=&xacodec_driver->image;
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
386
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
387 // 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
388 // if (skip_flag > 0)
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
389 // mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "frame will be dropped..\n");
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
390
0959af64c098 needs to be hacked
alex
parents:
diff changeset
391 xacodec_driver->decinfo->skip_flag = skip_flag;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
392
2387
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
393 image->planes[0]=image->mem;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
394 image->stride[0]=image->width;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
395 image->stride[1]=image->stride[2]=image->width/2;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
396 switch(image->out_fmt){
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
397 case IMGFMT_YV12:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
398 image->planes[2]=image->planes[0]+image->width*image->height;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
399 image->planes[1]=image->planes[2]+image->width*image->height/4;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
400 break;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
401 case IMGFMT_I420:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
402 case IMGFMT_IYUV:
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
403 image->planes[1]=image->planes[0]+image->width*image->height;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
404 image->planes[2]=image->planes[1]+image->width*image->height/4;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
405 break;
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
406 }
d13780700b40 cvid yuv "fixed"
arpi
parents: 2384
diff changeset
407
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
408 // 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
409
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
410 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
411
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
412 // printf("ret: %lu : ", ret);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
413
0959af64c098 needs to be hacked
alex
parents:
diff changeset
414
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
415 if (ret == ACT_DLTA_NORM)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
416 {
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
417 // mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "norm\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
418 return &xacodec_driver->image;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
419 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
420
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
421 if (ret & ACT_DLTA_MAPD)
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
422 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "mapd\n");
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
423 /*
0959af64c098 needs to be hacked
alex
parents:
diff changeset
424 if (!(ret & ACT_DLT_MAPD))
0959af64c098 needs to be hacked
alex
parents:
diff changeset
425 xacodec_driver->decinfo->map_flag = 0;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
426 else
0959af64c098 needs to be hacked
alex
parents:
diff changeset
427 {
0959af64c098 needs to be hacked
alex
parents:
diff changeset
428 xacodec_driver->decinfo->map_flag = 1;
0959af64c098 needs to be hacked
alex
parents:
diff changeset
429 xacodec_driver->decinfo->map = ...
0959af64c098 needs to be hacked
alex
parents:
diff changeset
430 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
431 */
0959af64c098 needs to be hacked
alex
parents:
diff changeset
432
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
433 if (ret & ACT_DLTA_XOR)
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
434 {
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
435 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "xor\n");
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
436 return &xacodec_driver->image;
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
437 }
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
438
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
439 /* nothing changed */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
440 if (ret & ACT_DLTA_NOP)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
441 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
442 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "nop\n");
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
443 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
444 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
445
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
446 /* frame dropped (also display latest frame) */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
447 if (ret & ACT_DLTA_DROP)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
448 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
449 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "drop\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
450 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
451 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
452
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
453 if (ret & ACT_DLTA_BAD)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
454 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
455 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "bad\n");
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
456 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
457 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
458
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
459 /* used for double buffer */
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
460 if (ret & ACT_DLTA_BODY)
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
461 {
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
462 mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "body\n");
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
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
466 return NULL;
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
467 }
0959af64c098 needs to be hacked
alex
parents:
diff changeset
468
0959af64c098 needs to be hacked
alex
parents:
diff changeset
469 int xacodec_exit()
0959af64c098 needs to be hacked
alex
parents:
diff changeset
470 {
2382
alex
parents: 2381
diff changeset
471 int i;
alex
parents: 2381
diff changeset
472 void (*close_func)();
alex
parents: 2381
diff changeset
473
alex
parents: 2381
diff changeset
474 for (i=0; i < XA_CLOSE_FUNCS; i++)
alex
parents: 2381
diff changeset
475 if (xacodec_driver->close_func[i])
alex
parents: 2381
diff changeset
476 {
alex
parents: 2381
diff changeset
477 close_func = xacodec_driver->close_func[i];
alex
parents: 2381
diff changeset
478 close_func();
alex
parents: 2381
diff changeset
479 }
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
480 dlclose(xacodec_driver->file_handler);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
481 if (xacodec_driver->decinfo != NULL)
0959af64c098 needs to be hacked
alex
parents:
diff changeset
482 free(xacodec_driver->decinfo);
2388
9c14dc7a848c little cleanup
alex
parents: 2387
diff changeset
483 free(xacodec_driver);
2372
0959af64c098 needs to be hacked
alex
parents:
diff changeset
484 return(TRUE);
0959af64c098 needs to be hacked
alex
parents:
diff changeset
485 }
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
486
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
487
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
488 /* *** XANIM Conversions *** */
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
489 /* like loader/win32.c - mini XANIM library */
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
490
2382
alex
parents: 2381
diff changeset
491 unsigned long XA_Time_Read()
alex
parents: 2381
diff changeset
492 {
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
493 return GetTimer(); //(GetRelativeTime());
2382
alex
parents: 2381
diff changeset
494 }
alex
parents: 2381
diff changeset
495
alex
parents: 2381
diff changeset
496 void XA_dummy()
alex
parents: 2381
diff changeset
497 {
alex
parents: 2381
diff changeset
498 XA_Print("dummy() called");
alex
parents: 2381
diff changeset
499 }
alex
parents: 2381
diff changeset
500
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
501 void XA_Gen_YUV_Tabs(XA_ANIM_HDR *anim_hdr)
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
502 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
503 XA_Print("XA_Gen_YUV_Tabs('anim_hdr: %08x')", anim_hdr);
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
504
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
505 // XA_Print("anim type: %d - img[x: %d, y: %d, c: %d, d: %d]",
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
506 // anim_hdr->anim_type, anim_hdr->imagex, anim_hdr->imagey,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
507 // anim_hdr->imagec, anim_hdr->imaged);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
508 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
509 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
510
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
511 void JPG_Setup_Samp_Limit_Table(XA_ANIM_HDR *anim_hdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
512 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
513 XA_Print("JPG_Setup_Samp_Limit_Table('anim_hdr: %08x')", anim_hdr);
2381
448559791c0e cvid works but buggy
arpi
parents: 2377
diff changeset
514 // 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
515 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
516 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
517
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
518 void JPG_Alloc_MCU_Bufs(XA_ANIM_HDR *anim_hdr, unsigned int width,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
519 unsigned int height, unsigned int full_flag)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
520 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
521 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
522 anim_hdr, width, height, full_flag);
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
523 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
524 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
525
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
526 /* --------------- 4x4 pixel YUV block fillers [CVID] ----------------- */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
527
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
528 typedef struct
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
529 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
530 unsigned char r0, g0, b0;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
531 unsigned char r1, g1, b1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
532 unsigned char r2, g2, b2;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
533 unsigned char r3, g3, b3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
534 unsigned int clr0_0, clr0_1, clr0_2, clr0_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
535 unsigned int clr1_0, clr1_1, clr1_2, clr1_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
536 unsigned int clr2_0, clr2_1, clr2_2, clr2_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
537 unsigned int clr3_0, clr3_1, clr3_2, clr3_3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
538 } XA_2x2_Color;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
539
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
540 #define SET_4_YUV_PIXELS(image,x,y,cmap2x2) \
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
541 image->planes[0][((x)+0)+((y)+0)*image->stride[0]]=cmap2x2->clr0_0;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
542 image->planes[0][((x)+1)+((y)+0)*image->stride[0]]=cmap2x2->clr0_1;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
543 image->planes[0][((x)+0)+((y)+1)*image->stride[0]]=cmap2x2->clr0_2;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
544 image->planes[0][((x)+1)+((y)+1)*image->stride[0]]=cmap2x2->clr0_3;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
545 image->planes[1][((x)>>1)+((y)>>1)*image->stride[1]]=cmap2x2->clr1_0;\
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
546 image->planes[2][((x)>>1)+((y)>>1)*image->stride[2]]=cmap2x2->clr1_1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
547
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
548 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
549 unsigned int imagex, XA_2x2_Color *cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
550 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
551 xacodec_image_t *image=(xacodec_image_t*)image_p;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
552
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
553 #if 0
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
554 SET_4_YUV_PIXELS(image,x,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
555 #else
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
556 SET_4_YUV_PIXELS(image,x,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
557 SET_4_YUV_PIXELS(image,x+2,y,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
558 SET_4_YUV_PIXELS(image,x,y+2,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
559 SET_4_YUV_PIXELS(image,x+2,y+2,cmap2x2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
560 #endif
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
561 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
562 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
563
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
564 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
565 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
566 XA_2x2_Color *cm3)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
567 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
568 xacodec_image_t *image=(xacodec_image_t*)image_p;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
569
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
570 SET_4_YUV_PIXELS(image,x,y,cm0)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
571 SET_4_YUV_PIXELS(image,x+2,y,cm1)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
572 SET_4_YUV_PIXELS(image,x,y+2,cm2)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
573 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
574 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
575 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
576
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
577 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
578 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
579 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
580 image_type, blks, dith_flag);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
581 switch(blks){
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
582 case 1:
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
583 return (void*) XA_2x2_OUT_1BLK_Convert;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
584 case 4:
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
585 return (void*) XA_2x2_OUT_4BLKS_Convert;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
586 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
587
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
588 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
589 return (void*) XA_dummy;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
590 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
591
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
592 // 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
593
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
594 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
595 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
596 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
597 {
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
598
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
599 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
600 cmap2x2,Y0,Y1,Y2,Y3,U,V,map_flag,map,chdr);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
601
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
602 cmap2x2->clr0_0=Y0;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
603 cmap2x2->clr0_1=Y1;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
604 cmap2x2->clr0_2=Y2;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
605 cmap2x2->clr0_3=Y3;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
606 cmap2x2->clr1_0=U;
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
607 cmap2x2->clr1_1=V;
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
608 return;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
609 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
610
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
611 void *YUV2x2_Map_Func(unsigned int image_type, unsigned int dith_type)
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
612 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
613 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
614 image_type, dith_type);
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
615 return((void*)XA_YUV_2x2_clr);
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
616 }
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
617
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
618 /* -------------------- whole YUV frame converters ------------------------- */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
619
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
620 typedef struct
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
621 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
622 unsigned char *Ybuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
623 unsigned char *Ubuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
624 unsigned char *Vbuf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
625 unsigned char *the_buf;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
626 unsigned int the_buf_size;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
627 unsigned short y_w, y_h;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
628 unsigned short uv_w, uv_h;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
629 } YUVBufs;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
630
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
631 typedef struct
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
632 {
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
633 unsigned long Uskip_mask;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
634 long *YUV_Y_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
635 long *YUV_UB_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
636 long *YUV_VR_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
637 long *YUV_UG_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
638 long *YUV_VG_tab;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
639 } YUVTabs;
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
640
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
641 YUVBufs jpg_YUVBufs;
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
642 YUVTabs def_yuv_tabs;
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
643
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
644 /* -------------- YUV 4x4 1x1 1x1 [Indeo 3,4,5] ------------------ */
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
645
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
646 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
647 unsigned int i_x, unsigned int i_y, YUVBufs *yuv, YUVTabs *yuv_tabs,
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
648 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
649 {
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
650 xacodec_image_t *image=(xacodec_image_t*)image_p;
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
651 int y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
652 int uvstride;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
653
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
654 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
655 yuv_tabs->YUV_Y_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
656 yuv_tabs->YUV_UB_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
657 yuv_tabs->YUV_VR_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
658 yuv_tabs->YUV_UG_tab,
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
659 yuv_tabs->YUV_VG_tab );
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
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, "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
662 image, imagex, imagey, i_x, i_y, yuv, yuv_tabs, map_flag, map, chdr);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
663
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
664 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
665 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
666 yuv->y_w,yuv->y_h,yuv->uv_w,yuv->uv_h);
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
667
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
668 // copy Y plane:
2397
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
669 if(yuv_tabs->YUV_Y_tab){ // dirty hack to detect iv32:
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
670 for(y=0;y<imagey*imagex;y++)
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
671 image->planes[0][y]=yuv->Ybuf[y]<<1;
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
672 } else
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
673 memcpy(image->planes[0],yuv->Ybuf,imagex*imagey);
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
674
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
675 // scale U,V planes by 2:
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
676 imagex>>=2;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
677 imagey>>=2;
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
678
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
679 uvstride=(yuv->uv_w)?yuv->uv_w:imagex;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
680
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
681 for(y=0;y<imagey;y++){
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
682 unsigned char *su=yuv->Ubuf+uvstride*y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
683 unsigned char *sv=yuv->Vbuf+uvstride*y;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
684 unsigned int strideu=image->stride[1];
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
685 unsigned int stridev=image->stride[2];
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
686 unsigned char *du=image->planes[1]+2*y*strideu;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
687 unsigned char *dv=image->planes[2]+2*y*stridev;
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
688 int x;
2397
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
689 if(yuv_tabs->YUV_Y_tab){ // dirty hack to detect iv32:
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
690 for(x=0;x<imagex;x++){
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
691 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
692 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
693 }
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
694 } else {
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
695 for(x=0;x<imagex;x++){
af87f279dbd4 iv32 color scaling fix
arpi
parents: 2395
diff changeset
696 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
697 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
698 }
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
699 }
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
700 }
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
701 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
702 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
703
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
704 void *XA_YUV1611_Func(unsigned int image_type)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
705 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
706 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
707 return((void *)XA_YUV1611_Convert);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
708 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
709
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
710 /* -------------- YUV 4x1 1x1 1x1 (4:1:1 ?) [CYUV] ------------------ */
2395
6c176e31873d YUV 16:1:1 fixed (indeo5)
arpi
parents: 2391
diff changeset
711
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
712 void XA_YUV411111_Convert(unsigned char *image, unsigned int imagex, unsigned int imagey,
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
713 unsigned int i_x, unsigned int i_y, YUVBufs *yuv_bufs, YUVTabs *yuv_tabs,
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
714 unsigned int map_flag, unsigned int *map, XA_CHDR *chdr)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
715 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
716 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
717 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
718 return;
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
719 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
720
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
721 void *XA_YUV411111_Func(unsigned int image_type)
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
722 {
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
723 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
724 return((void*)XA_YUV411111_Convert);
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
725 }
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
726
2406
2547932c6ef0 comments...
arpi
parents: 2404
diff changeset
727 /* --------------- YUV 2x2 1x1 1x1 (4:2:0 aka YV12) [3ivX,H263] ------------ */
2391
335b9b6302fa cvid/3ivx yuv renderers cleanup
arpi
parents: 2388
diff changeset
728
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
729 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
730 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
731 unsigned int *map, XA_CHDR *chdr)
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
732 {
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
733 xacodec_image_t *image=(xacodec_image_t*)image_p;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
734
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
735 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
736 image,imagex,imagey,i_x,i_y, image->width,image->height,
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
737 yuv,yuv_tabs,map_flag,map,chdr);
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
738
2923
7177ca35ad1a do not fault with vivo2, and also inserted mp_dbg lines
alex
parents: 2897
diff changeset
739 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
740 yuv->Ybuf,yuv->Ubuf,yuv->Vbuf,yuv->the_buf,yuv->the_buf_size,
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
741 yuv->y_w,yuv->y_h,yuv->uv_w,yuv->uv_h);
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
742
2787
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
743 #warning "FIXME! Decoder doesn't supports Vivo/2.00 :("
8dfe10c9f15d fixes for vivo
alex
parents: 2682
diff changeset
744
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
745 if(i_x==image->width && i_y==image->height){
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
746 // printf("Direct render!!!\n");
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
747 image->planes[0]=yuv->Ybuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
748 if(image->out_fmt==IMGFMT_YV12){
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
749 image->planes[1]=yuv->Ubuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
750 image->planes[2]=yuv->Vbuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
751 } else {
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
752 image->planes[1]=yuv->Vbuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
753 image->planes[2]=yuv->Ubuf;
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
754 }
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
755 image->stride[0]=i_x; // yuv->y_w
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
756 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
757 } else {
2403
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
758 int y;
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[0]+y*image->stride[0],yuv->Ybuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
761 i_x>>=1; i_y>>=1;
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
762 for(y=0;y<i_y;y++){
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
763 memcpy(image->planes[1]+y*image->stride[1],yuv->Ubuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
764 memcpy(image->planes[2]+y*image->stride[2],yuv->Vbuf+y*i_x,i_x);
af90fac426a6 h263 fixed
arpi
parents: 2402
diff changeset
765 }
2384
814166bee8fd 3ivx YV12 direct rendering (one lss memcpy)
arpi
parents: 2383
diff changeset
766 }
2402
f628c76bbc11 little cleanup to eleminate xanim typedefs and be more mplayer like
alex
parents: 2397
diff changeset
767 return;
2383
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
768 }
e13c63bc4151 hmm. 3ivx works
arpi
parents: 2382
diff changeset
769
2382
alex
parents: 2381
diff changeset
770 void *XA_YUV221111_Func(unsigned int image_type)
alex
parents: 2381
diff changeset
771 {
3115
23320af18656 removed vivo shit
alex
parents: 2923
diff changeset
772 mp_dbg(MSGT_DECVIDEO,MSGL_DBG3, "XA_YUV221111_Func('image_type: %d')\n",image_type);
23320af18656 removed vivo shit
alex
parents: 2923
diff changeset
773 return((void *)XA_YUV221111_Convert);
2382
alex
parents: 2381
diff changeset
774 }
2373
463da8544d23 reworked for mplayer
alex
parents: 2372
diff changeset
775
2404
da766ceb7bdd cleaned up, also removed some useless printf's to be more faster ;)
alex
parents: 2403
diff changeset
776 /* *** EOF XANIM *** */
2659
39b8b9069f41 xacodec configure support
alex
parents: 2484
diff changeset
777 #endif