Mercurial > mplayer.hg
comparison libvo/vosub_vidix.c @ 4014:cb7c183816f8
Looks working ;)
author | nick |
---|---|
date | Sun, 06 Jan 2002 19:21:10 +0000 |
parents | 625b61fd11fb |
children | 8b8569b255d0 |
comparison
equal
deleted
inserted
replaced
4013:625b61fd11fb | 4014:cb7c183816f8 |
---|---|
1 | |
1 /* | 2 /* |
2 * vosub_vidix.c | 3 * vosub_vidix.c |
3 * | 4 * |
4 * Copyright (C) Nick Kurshev <nickols_k@mail.ru> - 2002 | 5 * Copyright (C) Nick Kurshev <nickols_k@mail.ru> - 2002 |
5 * | 6 * |
121 printf("vosub_vidix: vidix driver can't downscale image\n"); | 122 printf("vosub_vidix: vidix driver can't downscale image\n"); |
122 return -1; | 123 return -1; |
123 } | 124 } |
124 image_width = src_width; | 125 image_width = src_width; |
125 image_height = src_height; | 126 image_height = src_height; |
127 src_format = format; | |
126 memset(&vidix_play,0,sizeof(vidix_playback_t)); | 128 memset(&vidix_play,0,sizeof(vidix_playback_t)); |
127 vidix_play.fourcc = format; | 129 vidix_play.fourcc = format; |
128 vidix_play.capability = vidix_cap.flags; /* every ;) */ | 130 vidix_play.capability = vidix_cap.flags; /* every ;) */ |
129 vidix_play.blend_factor = 0; /* for now */ | 131 vidix_play.blend_factor = 0; /* for now */ |
130 vidix_play.src.x = vidix_play.src.y = 0; | 132 vidix_play.src.x = vidix_play.src.y = 0; |
165 | 167 |
166 uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,int y) | 168 uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,int y) |
167 { | 169 { |
168 uint8_t *src; | 170 uint8_t *src; |
169 uint8_t *dest; | 171 uint8_t *dest; |
170 unsigned bespitch; | 172 unsigned bespitch,apitch; |
171 int i; | 173 int i; |
172 | 174 apitch = vidix_play.dest.pitch.y-1; |
173 bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.y-1)) & ~(vidix_play.dest.pitch.y-1); | 175 bespitch = (w + apitch) & ~apitch; |
174 | 176 |
175 dest = vidix_mem + frames[next_frame] + vidix_play.offset.y; | 177 dest = vidix_mem + frames[next_frame] + vidix_play.offset.y; |
176 dest += bespitch*y + x; | 178 dest += bespitch*y + x; |
177 src = image[0]; | 179 src = image[0]; |
178 for(i=0;i<h;i++){ | 180 for(i=0;i<h;i++){ |
179 memcpy(dest,src,w); | 181 memcpy(dest,src,w); |
180 src+=stride[0]; | 182 src+=stride[0]; |
181 dest += bespitch; | 183 dest += bespitch; |
182 } | 184 } |
183 | 185 |
184 w/=2;h/=2;x/=2;y/=2; | 186 apitch = vidix_play.dest.pitch.v-1; |
185 | 187 bespitch = (w + apitch) & ~apitch; |
186 bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.u-1)) & ~(vidix_play.dest.pitch.u-1); | 188 dest = vidix_mem + frames[next_frame] + vidix_play.offset.v; |
189 dest += (bespitch*y + x)/2; | |
190 src = image[1]; | |
191 for(i=0;i<h/2;i++){ | |
192 memcpy(dest,src,w/2); | |
193 src+=stride[1]; | |
194 dest+=bespitch/2; | |
195 } | |
196 apitch = vidix_play.dest.pitch.u-1; | |
197 bespitch = (w + apitch) & ~apitch; | |
187 | 198 |
188 dest = vidix_mem + frames[next_frame] + vidix_play.offset.u; | 199 dest = vidix_mem + frames[next_frame] + vidix_play.offset.u; |
189 dest += bespitch*y + x; | 200 dest += (bespitch*y + x)/2; |
190 src = image[1]; | |
191 for(i=0;i<h;i++){ | |
192 memcpy(dest,src,w); | |
193 src+=stride[1]; | |
194 dest+=bespitch; | |
195 } | |
196 | |
197 bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.v-1)) & ~(vidix_play.dest.pitch.v-1); | |
198 | |
199 dest = vidix_mem + frames[next_frame] + vidix_play.offset.v; | |
200 dest += bespitch*y + x; | |
201 src = image[2]; | 201 src = image[2]; |
202 for(i=0;i<h;i++){ | 202 for(i=0;i<h/2;i++){ |
203 memcpy(dest,src,w); | 203 memcpy(dest,src,w/2); |
204 src+=stride[2]; | 204 src+=stride[2]; |
205 dest += bespitch; | 205 dest += bespitch/2; |
206 } | 206 } |
207 return 0; | 207 return 0; |
208 } | 208 } |
209 | 209 |
210 uint32_t vidix_draw_slice_422(uint8_t *image[], int stride[], int w,int h,int x,int y) | 210 uint32_t vidix_draw_slice_422(uint8_t *image[], int stride[], int w,int h,int x,int y) |
211 { | 211 { |
212 uint8_t *src; | 212 uint8_t *src; |
213 uint8_t *dest; | 213 uint8_t *dest; |
214 unsigned bespitch; | 214 unsigned bespitch,apitch; |
215 int i; | 215 int i; |
216 | 216 apitch = vidix_play.dest.pitch.y-1; |
217 bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.y-1)) & ~(vidix_play.dest.pitch.y-1); | 217 bespitch = (w*2 + apitch) & ~apitch; |
218 | |
219 dest = vidix_mem + frames[next_frame] + vidix_play.offset.y; | 218 dest = vidix_mem + frames[next_frame] + vidix_play.offset.y; |
220 dest += bespitch*y + x; | 219 dest += bespitch*y + x; |
221 src = image[0]; | 220 src = image[0]; |
222 for(i=0;i<h;i++){ | 221 for(i=0;i<h;i++){ |
223 memcpy(dest,src,w*2); | 222 memcpy(dest,src,w*2); |