summaryrefslogtreecommitdiff
authorharlekin <harlekin>2002-12-19 21:41:50 (UTC)
committer harlekin <harlekin>2002-12-19 21:41:50 (UTC)
commit5fd6636ba3d94b48dd543887316c47c5388a43c2 (patch) (unidiff)
treef750583ce4284ac226da90858751875a5404de6b
parentd73c08dacb1abd6e02e0ff803083985bd0ca791b (diff)
downloadopie-5fd6636ba3d94b48dd543887316c47c5388a43c2.zip
opie-5fd6636ba3d94b48dd543887316c47c5388a43c2.tar.gz
opie-5fd6636ba3d94b48dd543887316c47c5388a43c2.tar.bz2
adapted to todays xine cvs
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/nullvideo.c2
-rw-r--r--noncore/multimedia/opieplayer2/yuv2rgb.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/noncore/multimedia/opieplayer2/nullvideo.c b/noncore/multimedia/opieplayer2/nullvideo.c
index a49f9d3..095f206 100644
--- a/noncore/multimedia/opieplayer2/nullvideo.c
+++ b/noncore/multimedia/opieplayer2/nullvideo.c
@@ -22,192 +22,194 @@
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <stdlib.h> 34#include <stdlib.h>
35#include <stdio.h> 35#include <stdio.h>
36 36
37#include <math.h> 37#include <math.h>
38 38
39#include <xine.h> 39#include <xine.h>
40#include <xine/video_out.h> 40#include <xine/video_out.h>
41#include <xine/xine_internal.h> 41#include <xine/xine_internal.h>
42#include <xine/xineutils.h> 42#include <xine/xineutils.h>
43#include <xine/vo_scale.h> 43#include <xine/vo_scale.h>
44#include <xine/buffer.h> 44#include <xine/buffer.h>
45 45
46#include <pthread.h> 46#include <pthread.h>
47#include "alphablend.h" 47#include "alphablend.h"
48#include "yuv2rgb.h" 48#include "yuv2rgb.h"
49 49
50#define printf(x,...) 50#define printf(x,...)
51 51
52/* 52/*
53#define LOG 53#define LOG
54*/ 54*/
55 55
56/* the caller for our event draw handler */ 56/* the caller for our event draw handler */
57typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame, 57typedef void (*display_xine_frame_t) (void *user_data, uint8_t* frame,
58 int width, int height,int bytes ); 58 int width, int height,int bytes );
59 59
60typedef struct null_driver_s null_driver_t; 60typedef struct null_driver_s null_driver_t;
61 61
62struct null_driver_s { 62struct null_driver_s {
63 vo_driver_t vo_driver; 63 vo_driver_t vo_driver;
64 64
65 uint32_t m_capabilities; 65 uint32_t m_capabilities;
66 int m_show_video; 66 int m_show_video;
67 int m_video_fullscreen; 67 int m_video_fullscreen;
68 int m_is_scaling; 68 int m_is_scaling;
69 69
70 int depth, bpp, bytes_per_pixel; 70 int depth, bpp, bytes_per_pixel;
71 int yuv2rgb_mode; 71 int yuv2rgb_mode;
72 int yuv2rgb_swap; 72 int yuv2rgb_swap;
73 int yuv2rgb_gamma; 73 int yuv2rgb_gamma;
74 uint8_t *yuv2rgb_cmap; 74 uint8_t *yuv2rgb_cmap;
75 yuv2rgb_factory_t *yuv2rgb_factory; 75 yuv2rgb_factory_t *yuv2rgb_factory;
76 76
77 vo_overlay_t *overlay; 77 vo_overlay_t *overlay;
78 vo_scale_t sc; 78 vo_scale_t sc;
79 79
80 int gui_width; 80 int gui_width;
81 int gui_height; 81 int gui_height;
82 int gui_changed; 82 int gui_changed;
83 83
84 double display_ratio; 84 double display_ratio;
85 void* caller; 85 void* caller;
86 display_xine_frame_t frameDis; 86 display_xine_frame_t frameDis;
87}; 87};
88 88
89typedef struct opie_frame_s opie_frame_t; 89typedef struct opie_frame_s opie_frame_t;
90struct opie_frame_s { 90struct opie_frame_s {
91 vo_frame_t frame; 91 vo_frame_t frame;
92 92
93 int format; 93 int format;
94 int flags; 94 int flags;
95 95
96 vo_scale_t sc; 96 vo_scale_t sc;
97 97
98 uint8_t *chunk[3]; 98 uint8_t *chunk[3];
99 99
100 uint8_t *data; /* rgb */ 100 uint8_t *data; /* rgb */
101 int bytes_per_line; 101 int bytes_per_line;
102 102
103 yuv2rgb_t *yuv2rgb; 103 yuv2rgb_t *yuv2rgb;
104 uint8_t *rgb_dst; 104 uint8_t *rgb_dst;
105 int yuv_stride; 105 int yuv_stride;
106 int stripe_height, stripe_inc; 106 int stripe_height, stripe_inc;
107 107
108 null_driver_t *output; 108 null_driver_t *output;
109}; 109};
110 110
111static uint32_t null_get_capabilities( vo_driver_t *self ){ 111static uint32_t null_get_capabilities( vo_driver_t *self ){
112 null_driver_t* this = (null_driver_t*)self; 112 null_driver_t* this = (null_driver_t*)self;
113 return this->m_capabilities; 113 return this->m_capabilities;
114} 114}
115 115
116static void null_frame_copy (vo_frame_t *vo_img, uint8_t **src) { 116static void null_frame_copy (vo_frame_t *vo_img, uint8_t **src) {
117 opie_frame_t *frame = (opie_frame_t *) vo_img ; 117 opie_frame_t *frame = (opie_frame_t *) vo_img ;
118
119 vo_img->copy_called = 1;
118 120
119 if (!frame->output->m_show_video) { 121 if (!frame->output->m_show_video) {
120 /* printf("nullvideo: no video\n"); */ 122 /* printf("nullvideo: no video\n"); */
121 return; 123 return;
122 } 124 }
123 125
124 if (frame->format == XINE_IMGFMT_YV12) { 126 if (frame->format == XINE_IMGFMT_YV12) {
125 frame->yuv2rgb->yuv2rgb_fun (frame->yuv2rgb, frame->rgb_dst, 127 frame->yuv2rgb->yuv2rgb_fun (frame->yuv2rgb, frame->rgb_dst,
126 src[0], src[1], src[2]); 128 src[0], src[1], src[2]);
127 } else { 129 } else {
128 130
129 frame->yuv2rgb->yuy22rgb_fun (frame->yuv2rgb, frame->rgb_dst, 131 frame->yuv2rgb->yuy22rgb_fun (frame->yuv2rgb, frame->rgb_dst,
130 src[0]); 132 src[0]);
131 } 133 }
132 134
133 frame->rgb_dst += frame->stripe_inc; 135 frame->rgb_dst += frame->stripe_inc;
134} 136}
135 137
136static void null_frame_field (vo_frame_t *vo_img, int which_field) { 138static void null_frame_field (vo_frame_t *vo_img, int which_field) {
137 139
138 opie_frame_t *frame = (opie_frame_t *) vo_img ; 140 opie_frame_t *frame = (opie_frame_t *) vo_img ;
139 141
140 switch (which_field) { 142 switch (which_field) {
141 case VO_TOP_FIELD: 143 case VO_TOP_FIELD:
142 frame->rgb_dst = (uint8_t *)frame->data; 144 frame->rgb_dst = (uint8_t *)frame->data;
143 frame->stripe_inc = 2*frame->stripe_height * frame->bytes_per_line; 145 frame->stripe_inc = 2*frame->stripe_height * frame->bytes_per_line;
144 break; 146 break;
145 case VO_BOTTOM_FIELD: 147 case VO_BOTTOM_FIELD:
146 frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ; 148 frame->rgb_dst = (uint8_t *)frame->data + frame->bytes_per_line ;
147 frame->stripe_inc = 2*frame->stripe_height * frame->bytes_per_line; 149 frame->stripe_inc = 2*frame->stripe_height * frame->bytes_per_line;
148 break; 150 break;
149 case VO_BOTH_FIELDS: 151 case VO_BOTH_FIELDS:
150 frame->rgb_dst = (uint8_t *)frame->data; 152 frame->rgb_dst = (uint8_t *)frame->data;
151 break; 153 break;
152 } 154 }
153} 155}
154 156
155 157
156/* take care of the frame*/ 158/* take care of the frame*/
157static void null_frame_dispose( vo_frame_t* vo_img){ 159static void null_frame_dispose( vo_frame_t* vo_img){
158 opie_frame_t* frame = (opie_frame_t*)vo_img; 160 opie_frame_t* frame = (opie_frame_t*)vo_img;
159 161
160 if (frame->data) 162 if (frame->data)
161 free( frame->data ); 163 free( frame->data );
162 free (frame); 164 free (frame);
163} 165}
164 166
165/* end take care of frames*/ 167/* end take care of frames*/
166 168
167static vo_frame_t* null_alloc_frame( vo_driver_t* self ){ 169static vo_frame_t* null_alloc_frame( vo_driver_t* self ){
168 170
169 null_driver_t* this = (null_driver_t*)self; 171 null_driver_t* this = (null_driver_t*)self;
170 opie_frame_t* frame; 172 opie_frame_t* frame;
171 173
172#ifdef LOG 174#ifdef LOG
173 fprintf (stderr, "nullvideo: alloc_frame\n"); 175 fprintf (stderr, "nullvideo: alloc_frame\n");
174#endif 176#endif
175 177
176 frame = (opie_frame_t*)malloc ( sizeof(opie_frame_t) ); 178 frame = (opie_frame_t*)malloc ( sizeof(opie_frame_t) );
177 179
178 memset( frame, 0, sizeof( opie_frame_t) ); 180 memset( frame, 0, sizeof( opie_frame_t) );
179 memcpy (&frame->sc, &this->sc, sizeof(vo_scale_t)); 181 memcpy (&frame->sc, &this->sc, sizeof(vo_scale_t));
180 182
181 pthread_mutex_init (&frame->frame.mutex, NULL); 183 pthread_mutex_init (&frame->frame.mutex, NULL);
182 184
183 frame->output = this; 185 frame->output = this;
184 186
185 /* initialize the frame*/ 187 /* initialize the frame*/
186 frame->frame.driver = self; 188 frame->frame.driver = self;
187 frame->frame.copy = null_frame_copy; 189 frame->frame.copy = null_frame_copy;
188 frame->frame.field = null_frame_field; 190 frame->frame.field = null_frame_field;
189 frame->frame.dispose = null_frame_dispose; 191 frame->frame.dispose = null_frame_dispose;
190 192
191 /* 193 /*
192 * colorspace converter for this frame 194 * colorspace converter for this frame
193 */ 195 */
194 frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory); 196 frame->yuv2rgb = this->yuv2rgb_factory->create_converter (this->yuv2rgb_factory);
195 197
196 return (vo_frame_t*) frame; 198 return (vo_frame_t*) frame;
197} 199}
198 200
199static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img, 201static void null_update_frame_format( vo_driver_t* self, vo_frame_t* img,
200 uint32_t width, uint32_t height, 202 uint32_t width, uint32_t height,
201 int ratio_code, int format, int flags ){ 203 int ratio_code, int format, int flags ){
202 null_driver_t* this = (null_driver_t*) self; 204 null_driver_t* this = (null_driver_t*) self;
203 opie_frame_t* frame = (opie_frame_t*)img; 205 opie_frame_t* frame = (opie_frame_t*)img;
204 /* not needed now */ 206 /* not needed now */
205 207
206#ifdef LOG 208#ifdef LOG
207 fprintf (stderr, "nullvideo: update_frame_format\n"); 209 fprintf (stderr, "nullvideo: update_frame_format\n");
208#endif 210#endif
209 211
210 flags &= VO_BOTH_FIELDS; 212 flags &= VO_BOTH_FIELDS;
211 213
212 /* find out if we need to adapt this frame */ 214 /* find out if we need to adapt this frame */
213 215
diff --git a/noncore/multimedia/opieplayer2/yuv2rgb.c b/noncore/multimedia/opieplayer2/yuv2rgb.c
index e8e86e6..8e34052 100644
--- a/noncore/multimedia/opieplayer2/yuv2rgb.c
+++ b/noncore/multimedia/opieplayer2/yuv2rgb.c
@@ -1114,197 +1114,197 @@ static void scale_line_3_4 (uint8_t *source, uint8_t *dest,
1114 int width, int step) { 1114 int width, int step) {
1115 1115
1116 int p1, p2; 1116 int p1, p2;
1117 1117
1118 xine_profiler_start_count(prof_scale_line); 1118 xine_profiler_start_count(prof_scale_line);
1119 1119
1120 while ((width -= 4) >= 0) { 1120 while ((width -= 4) >= 0) {
1121 p1 = source[0]; 1121 p1 = source[0];
1122 p2 = source[1]; 1122 p2 = source[1];
1123 dest[0] = p1; 1123 dest[0] = p1;
1124 dest[1] = (1*p1 + 3*p2) >> 2; 1124 dest[1] = (1*p1 + 3*p2) >> 2;
1125 p1 = source[2]; 1125 p1 = source[2];
1126 dest[2] = (1*p2 + 1*p1) >> 1; 1126 dest[2] = (1*p2 + 1*p1) >> 1;
1127 p2 = source[3]; 1127 p2 = source[3];
1128 dest[3] = (3*p1 + 1*p2) >> 2; 1128 dest[3] = (3*p1 + 1*p2) >> 2;
1129 source += 3; 1129 source += 3;
1130 dest += 4; 1130 dest += 4;
1131 } 1131 }
1132 1132
1133 if ((width += 4) <= 0) goto done; 1133 if ((width += 4) <= 0) goto done;
1134 *dest++ = source[0]; 1134 *dest++ = source[0];
1135 if (--width <= 0) goto done; 1135 if (--width <= 0) goto done;
1136 *dest++ = (1*source[0] + 3*source[1]) >> 2; 1136 *dest++ = (1*source[0] + 3*source[1]) >> 2;
1137 if (--width <= 0) goto done; 1137 if (--width <= 0) goto done;
1138 *dest++ = (1*source[1] + 1*source[2]) >> 1; 1138 *dest++ = (1*source[1] + 1*source[2]) >> 1;
1139done: 1139done:
1140 1140
1141 xine_profiler_stop_count(prof_scale_line); 1141 xine_profiler_stop_count(prof_scale_line);
1142} 1142}
1143 1143
1144 1144
1145/* Interpolate 2 output pixels from one source pixel. */ 1145/* Interpolate 2 output pixels from one source pixel. */
1146 1146
1147static void scale_line_1_2 (uint8_t *source, uint8_t *dest, 1147static void scale_line_1_2 (uint8_t *source, uint8_t *dest,
1148 int width, int step) { 1148 int width, int step) {
1149 int p1, p2; 1149 int p1, p2;
1150 1150
1151 xine_profiler_start_count(prof_scale_line); 1151 xine_profiler_start_count(prof_scale_line);
1152 1152
1153 p1 = *source; 1153 p1 = *source;
1154 while ((width -= 4) >= 0) { 1154 while ((width -= 4) >= 0) {
1155 *dest++ = p1; 1155 *dest++ = p1;
1156 p2 = *++source; 1156 p2 = *++source;
1157 *dest++ = (p1 + p2) >> 1; 1157 *dest++ = (p1 + p2) >> 1;
1158 *dest++ = p2; 1158 *dest++ = p2;
1159 p1 = *++source; 1159 p1 = *++source;
1160 *dest++ = (p2 + p1) >> 1; 1160 *dest++ = (p2 + p1) >> 1;
1161 } 1161 }
1162 1162
1163 if ((width += 4) <= 0) goto done; 1163 if ((width += 4) <= 0) goto done;
1164 *dest++ = source[0]; 1164 *dest++ = source[0];
1165 if (--width <= 0) goto done; 1165 if (--width <= 0) goto done;
1166 *dest++ = (source[0] + source[1]) >> 1; 1166 *dest++ = (source[0] + source[1]) >> 1;
1167 if (--width <= 0) goto done; 1167 if (--width <= 0) goto done;
1168 *dest++ = source[1]; 1168 *dest++ = source[1];
1169 done: 1169 done:
1170 1170
1171 xine_profiler_stop_count(prof_scale_line); 1171 xine_profiler_stop_count(prof_scale_line);
1172} 1172}
1173 1173
1174 1174
1175/* 1175/*
1176 * Scale line with no horizontal scaling. For NTSC mpeg2 dvd input in 1176 * Scale line with no horizontal scaling. For NTSC mpeg2 dvd input in
1177 * 4:3 output format (720x480 -> 720x540) 1177 * 4:3 output format (720x480 -> 720x540)
1178 */ 1178 */
1179static void scale_line_1_1 (uint8_t *source, uint8_t *dest, 1179static void scale_line_1_1 (uint8_t *source, uint8_t *dest,
1180 int width, int step) { 1180 int width, int step) {
1181 1181
1182 xine_profiler_start_count(prof_scale_line); 1182 xine_profiler_start_count(prof_scale_line);
1183 xine_fast_memcpy(dest, source, width); 1183 xine_fast_memcpy(dest, source, width);
1184 xine_profiler_stop_count(prof_scale_line); 1184 xine_profiler_stop_count(prof_scale_line);
1185} 1185}
1186 1186
1187 1187
1188static scale_line_func_t find_scale_line_func(int step) { 1188static scale_line_func_t find_scale_line_func(int step) {
1189 static struct { 1189 static struct {
1190 int src_step; 1190 int src_step;
1191 int dest_step; 1191 int dest_step;
1192 scale_line_func_tfunc; 1192 scale_line_func_tfunc;
1193 char *desc; 1193 char *desc;
1194 } scale_line[] = { 1194 } scale_line[] = {
1195 { 15, 16, scale_line_15_16, "dvd 4:3(pal)" }, 1195 { 15, 16, scale_line_15_16, "dvd 4:3(pal)" },
1196 { 45, 64, scale_line_45_64, "dvd 16:9(pal), fullscreen(1024x768)" }, 1196 { 45, 64, scale_line_45_64, "dvd 16:9(pal), fullscreen(1024x768)" },
1197 { 9, 16, scale_line_9_16, "dvd fullscreen(1280x1024)" }, 1197 { 9, 16, scale_line_9_16, "dvd fullscreen(1280x1024)" },
1198 { 45, 53, scale_line_45_53, "dvd 16:9(ntsc)" }, 1198 { 45, 53, scale_line_45_53, "dvd 16:9(ntsc)" },
1199 { 11, 12, scale_line_11_12, "vcd 4:3(pal)" }, 1199 { 11, 12, scale_line_11_12, "vcd 4:3(pal)" },
1200 { 11, 24, scale_line_11_24, "vcd 4:3(pal) 2*zoom" }, 1200 { 11, 24, scale_line_11_24, "vcd 4:3(pal) 2*zoom" },
1201 { 5, 8, scale_line_5_8, "svcd 4:3(pal)" }, 1201 { 5, 8, scale_line_5_8, "svcd 4:3(pal)" },
1202 { 3, 4, scale_line_3_4, "svcd 4:3(ntsc)" }, 1202 { 3, 4, scale_line_3_4, "svcd 4:3(ntsc)" },
1203 { 1, 2, scale_line_1_2, "2*zoom" }, 1203 { 1, 2, scale_line_1_2, "2*zoom" },
1204 { 1, 1, scale_line_1_1, "non-scaled" }, 1204 { 1, 1, scale_line_1_1, "non-scaled" },
1205 }; 1205 };
1206 int i; 1206 int i;
1207 1207
1208 for (i = 0; i < sizeof(scale_line)/sizeof(scale_line[0]); i++) { 1208 for (i = 0; i < sizeof(scale_line)/sizeof(scale_line[0]); i++) {
1209 if (step == scale_line[i].src_step*32768/scale_line[i].dest_step) { 1209 if (step == scale_line[i].src_step*32768/scale_line[i].dest_step) {
1210 printf("yuv2rgb: using %s optimized scale_line\n", scale_line[i].desc); 1210 //printf("yuv2rgb: using %s optimized scale_line\n", scale_line[i].desc);
1211 return scale_line[i].func; 1211 return scale_line[i].func;
1212 } 1212 }
1213 } 1213 }
1214 printf("yuv2rgb: using generic scale_line with interpolation\n"); 1214 //printf("yuv2rgb: using generic scale_line with interpolation\n");
1215 return scale_line_gen; 1215 return scale_line_gen;
1216 1216
1217} 1217}
1218 1218
1219 1219
1220static void scale_line_2 (uint8_t *source, uint8_t *dest, 1220static void scale_line_2 (uint8_t *source, uint8_t *dest,
1221 int width, int step) { 1221 int width, int step) {
1222 int p1; 1222 int p1;
1223 int p2; 1223 int p2;
1224 int dx; 1224 int dx;
1225 1225
1226 p1 = *source; source+=2; 1226 p1 = *source; source+=2;
1227 p2 = *source; source+=2; 1227 p2 = *source; source+=2;
1228 dx = 0; 1228 dx = 0;
1229 1229
1230 while (width) { 1230 while (width) {
1231 1231
1232 *dest = (p1 * (32768 - dx) + p2 * dx) / 32768; 1232 *dest = (p1 * (32768 - dx) + p2 * dx) / 32768;
1233 1233
1234 dx += step; 1234 dx += step;
1235 while (dx > 32768) { 1235 while (dx > 32768) {
1236 dx -= 32768; 1236 dx -= 32768;
1237 p1 = p2; 1237 p1 = p2;
1238 p2 = *source; 1238 p2 = *source;
1239 source+=2; 1239 source+=2;
1240 } 1240 }
1241 1241
1242 dest ++; 1242 dest ++;
1243 width --; 1243 width --;
1244 } 1244 }
1245} 1245}
1246 1246
1247static void scale_line_4 (uint8_t *source, uint8_t *dest, 1247static void scale_line_4 (uint8_t *source, uint8_t *dest,
1248 int width, int step) { 1248 int width, int step) {
1249 int p1; 1249 int p1;
1250 int p2; 1250 int p2;
1251 int dx; 1251 int dx;
1252 1252
1253 p1 = *source; source+=4; 1253 p1 = *source; source+=4;
1254 p2 = *source; source+=4; 1254 p2 = *source; source+=4;
1255 dx = 0; 1255 dx = 0;
1256 1256
1257 while (width) { 1257 while (width) {
1258 1258
1259 *dest = (p1 * (32768 - dx) + p2 * dx) / 32768; 1259 *dest = (p1 * (32768 - dx) + p2 * dx) / 32768;
1260 1260
1261 dx += step; 1261 dx += step;
1262 while (dx > 32768) { 1262 while (dx > 32768) {
1263 dx -= 32768; 1263 dx -= 32768;
1264 p1 = p2; 1264 p1 = p2;
1265 p2 = *source; 1265 p2 = *source;
1266 source+=4; 1266 source+=4;
1267 } 1267 }
1268 1268
1269 dest ++; 1269 dest ++;
1270 width --; 1270 width --;
1271 } 1271 }
1272} 1272}
1273 1273
1274 1274
1275 #define RGB(i) \ 1275 #define RGB(i) \
1276 U = pu[i]; \ 1276 U = pu[i]; \
1277 V = pv[i]; \ 1277 V = pv[i]; \
1278 r = this->table_rV[V]; \ 1278 r = this->table_rV[V]; \
1279 g = (void *) (((uint8_t *)this->table_gU[U]) + this->table_gV[V]);\ 1279 g = (void *) (((uint8_t *)this->table_gU[U]) + this->table_gV[V]);\
1280 b = this->table_bU[U]; 1280 b = this->table_bU[U];
1281 1281
1282 #define DST1(i) \ 1282 #define DST1(i) \
1283 Y = py_1[2*i]; \ 1283 Y = py_1[2*i]; \
1284 dst_1[2*i] = r[Y] + g[Y] + b[Y];\ 1284 dst_1[2*i] = r[Y] + g[Y] + b[Y];\
1285 Y = py_1[2*i+1]; \ 1285 Y = py_1[2*i+1]; \
1286 dst_1[2*i+1] = r[Y] + g[Y] + b[Y]; 1286 dst_1[2*i+1] = r[Y] + g[Y] + b[Y];
1287 1287
1288 #define DST2(i) \ 1288 #define DST2(i) \
1289 Y = py_2[2*i]; \ 1289 Y = py_2[2*i]; \
1290 dst_2[2*i] = r[Y] + g[Y] + b[Y];\ 1290 dst_2[2*i] = r[Y] + g[Y] + b[Y];\
1291 Y = py_2[2*i+1]; \ 1291 Y = py_2[2*i+1]; \
1292 dst_2[2*i+1] = r[Y] + g[Y] + b[Y]; 1292 dst_2[2*i+1] = r[Y] + g[Y] + b[Y];
1293 1293
1294 #define DST1RGB(i) \ 1294 #define DST1RGB(i) \
1295 Y = py_1[2*i]; \ 1295 Y = py_1[2*i]; \
1296 dst_1[6*i] = r[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = b[Y];\ 1296 dst_1[6*i] = r[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = b[Y];\
1297 Y = py_1[2*i+1]; \ 1297 Y = py_1[2*i+1]; \
1298 dst_1[6*i+3] = r[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = b[Y]; 1298 dst_1[6*i+3] = r[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = b[Y];
1299 1299
1300 #define DST2RGB(i) \ 1300 #define DST2RGB(i) \
1301 Y = py_2[2*i]; \ 1301 Y = py_2[2*i]; \
1302 dst_2[6*i] = r[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = b[Y];\ 1302 dst_2[6*i] = r[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = b[Y];\
1303 Y = py_2[2*i+1]; \ 1303 Y = py_2[2*i+1]; \
1304 dst_2[6*i+3] = r[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = b[Y]; 1304 dst_2[6*i+3] = r[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = b[Y];
1305 1305
1306 #define DST1BGR(i) \ 1306 #define DST1BGR(i) \
1307 Y = py_1[2*i]; \ 1307 Y = py_1[2*i]; \
1308 dst_1[6*i] = b[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = r[Y];\ 1308 dst_1[6*i] = b[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = r[Y];\
1309 Y = py_1[2*i+1]; \ 1309 Y = py_1[2*i+1]; \
1310 dst_1[6*i+3] = b[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = r[Y]; 1310 dst_1[6*i+3] = b[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = r[Y];