comparison libvo/vo_xv.c @ 247:dd107cd7686d

OSD/SUB support
author arpi_esp
date Thu, 29 Mar 2001 15:32:42 +0000
parents 80a7b40f201a
children 2dadc379a934
comparison
equal deleted inserted replaced
246:5673f9146c54 247:dd107cd7686d
251 fprintf( stderr,"[xv-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); 251 fprintf( stderr,"[xv-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
252 } 252 }
253 } 253 }
254 } 254 }
255 255
256
257 static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
258 int x,y;
259
260 if (xv_format==IMGFMT_YV12){
261
262 for(y=0;y<h;y++){
263 uint8_t *dst = xvimage[0]->data + image_width * (y+y0) + x0;
264 for(x=0;x<w;x++){
265 // dst[x]=(dst[x]*srca[x]+src[x]*(srca[x]^255))>>8;
266 if(srca[x])
267 dst[x]=(dst[x]*(srca[x]^255)+src[x]*(srca[x]))>>8;
268 }
269 src+=stride;
270 srca+=stride;
271 }
272
273 } else {
274
275 for(y=0;y<h;y++){
276 uint8_t *dst = xvimage[0]->data + 2*(image_width * (y+y0) + x0);
277 for(x=0;x<w;x++){
278 // dst[x]=(dst[x]*srca[x]+src[x]*(srca[x]^255))>>8;
279 if(srca[x])
280 dst[2*x]=(dst[2*x]*(srca[x]^255)+src[x]*(srca[x]))>>8;
281 }
282 src+=stride;
283 srca+=stride;
284 }
285
286 }
287
288 }
289
256 static void flip_page(void) 290 static void flip_page(void)
257 { 291 {
292 vo_draw_text(image_width,image_height,draw_alpha);
258 check_events(); 293 check_events();
259 XvShmPutImage(mydisplay, xv_port, mywindow, mygc, xvimage[0], 294 XvShmPutImage(mydisplay, xv_port, mywindow, mygc, xvimage[0],
260 0, 0, image_width, image_height, 295 0, 0, image_width, image_height,
261 drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight), 296 drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight),
262 False); 297 False);
263 XFlush(mydisplay); 298 XFlush(mydisplay);
264 return; 299 return;
265 } 300 }
301
302
266 303
267 static uint32_t draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) 304 static uint32_t draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
268 { 305 {
269 uint8_t *src; 306 uint8_t *src;
270 uint8_t *dst; 307 uint8_t *dst;