Mercurial > mplayer.hg
comparison libvo/vosub_vidix.c @ 4430:b4cc68c448db
IMGFMT_RGBxx experimental support
author | nick |
---|---|
date | Thu, 31 Jan 2002 08:53:58 +0000 |
parents | 7a4837091398 |
children | e956fa7f79c7 |
comparison
equal
deleted
inserted
replaced
4429:edc703059853 | 4430:b4cc68c448db |
---|---|
257 if(verbose > 1) printf("vosub_vidix: vidix_term() was called\n"); | 257 if(verbose > 1) printf("vosub_vidix: vidix_term() was called\n"); |
258 vidix_stop(); | 258 vidix_stop(); |
259 vdlClose(vidix_handler); | 259 vdlClose(vidix_handler); |
260 } | 260 } |
261 | 261 |
262 uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,int y) | 262 static uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,int y) |
263 { | 263 { |
264 uint8_t *src; | 264 uint8_t *src; |
265 uint8_t *dest; | 265 uint8_t *dest; |
266 unsigned bespitch,apitch; | 266 unsigned bespitch,apitch; |
267 int i; | 267 int i; |
311 dest += bespitch/2; | 311 dest += bespitch/2; |
312 } | 312 } |
313 return 0; | 313 return 0; |
314 } | 314 } |
315 | 315 |
316 uint32_t vidix_draw_slice_422(uint8_t *image[], int stride[], int w,int h,int x,int y) | 316 static uint32_t vidix_draw_slice_422(uint8_t *image[], int stride[], int w,int h,int x,int y) |
317 { | 317 { |
318 uint8_t *src; | 318 uint8_t *src; |
319 uint8_t *dest; | 319 uint8_t *dest; |
320 unsigned bespitch,apitch; | 320 unsigned bespitch,apitch; |
321 int i; | 321 int i; |
331 } | 331 } |
332 | 332 |
333 return 0; | 333 return 0; |
334 } | 334 } |
335 | 335 |
336 static uint32_t vidix_draw_slice_32(uint8_t *image[], int stride[], int w,int h,int x,int y) | |
337 { | |
338 uint8_t *src; | |
339 uint8_t *dest; | |
340 unsigned bespitch,apitch; | |
341 int i; | |
342 apitch = vidix_play.dest.pitch.y-1; | |
343 bespitch = (w*4 + apitch) & ~apitch; | |
344 dest = vidix_mem + vidix_play.offsets[next_frame] + vidix_play.offset.y; | |
345 dest += bespitch*y + x; | |
346 src = image[0]; | |
347 for(i=0;i<h;i++){ | |
348 memcpy(dest,src,w*4); | |
349 src+=stride[0]; | |
350 dest += bespitch; | |
351 } | |
352 | |
353 return 0; | |
354 } | |
355 | |
356 static uint32_t vidix_draw_slice_24(uint8_t *image[], int stride[], int w,int h,int x,int y) | |
357 { | |
358 uint8_t *src; | |
359 uint8_t *dest; | |
360 unsigned bespitch,apitch; | |
361 int i; | |
362 apitch = vidix_play.dest.pitch.y-1; | |
363 bespitch = (w*3 + apitch) & ~apitch; | |
364 dest = vidix_mem + vidix_play.offsets[next_frame] + vidix_play.offset.y; | |
365 dest += bespitch*y + x; | |
366 src = image[0]; | |
367 for(i=0;i<h;i++){ | |
368 memcpy(dest,src,w*3); | |
369 src+=stride[0]; | |
370 dest += bespitch; | |
371 } | |
372 | |
373 return 0; | |
374 } | |
336 | 375 |
337 uint32_t vidix_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) | 376 uint32_t vidix_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) |
338 { | 377 { |
339 if(verbose > 1) printf("vosub_vidix: vidix_draw_slice() was called\n"); | 378 if(verbose > 1) printf("vosub_vidix: vidix_draw_slice() was called\n"); |
340 if(src_format == IMGFMT_YV12 || src_format == IMGFMT_I420 || src_format == IMGFMT_IYUV) | 379 if(src_format == IMGFMT_YV12 || src_format == IMGFMT_I420 || src_format == IMGFMT_IYUV) |
341 vidix_draw_slice_420(image,stride,w,h,x,y); | 380 vidix_draw_slice_420(image,stride,w,h,x,y); |
342 else | 381 else |
382 if(src_format == IMGFMT_RGB32 || src_format == IMGFMT_BGR32) | |
383 vidix_draw_slice_32(image,stride,w,h,x,y); | |
384 else | |
385 if(src_format == IMGFMT_RGB24 || src_format == IMGFMT_BGR24) | |
386 vidix_draw_slice_24(image,stride,w,h,x,y); | |
387 else | |
343 vidix_draw_slice_422(image,stride,w,h,x,y); | 388 vidix_draw_slice_422(image,stride,w,h,x,y); |
344 return 0; | 389 return 0; |
345 } | 390 } |
346 | 391 |
347 uint32_t vidix_draw_frame(uint8_t *image[]) | 392 uint32_t vidix_draw_frame(uint8_t *image[]) |
351 if(src_format == IMGFMT_YV12 || src_format == IMGFMT_I420 || src_format == IMGFMT_IYUV) | 396 if(src_format == IMGFMT_YV12 || src_format == IMGFMT_I420 || src_format == IMGFMT_IYUV) |
352 { | 397 { |
353 printf("vosub_vidix: draw_frame for YUV420 called\nExiting...\n"); | 398 printf("vosub_vidix: draw_frame for YUV420 called\nExiting...\n"); |
354 vidix_term(); | 399 vidix_term(); |
355 exit( EXIT_FAILURE ); | 400 exit( EXIT_FAILURE ); |
401 } | |
402 else | |
403 if(src_format == IMGFMT_RGB32 || src_format == IMGFMT_BGR32) | |
404 { | |
405 int stride[1]; | |
406 stride[0] = vidix_play.src.w*4; | |
407 vidix_draw_slice_32(image,stride,vidix_play.src.w,vidix_play.src.h, | |
408 vidix_play.src.x,vidix_play.src.y); | |
409 } | |
410 else | |
411 if(src_format == IMGFMT_RGB24 || src_format == IMGFMT_BGR24) | |
412 { | |
413 int stride[1]; | |
414 stride[0] = vidix_play.src.w*3; | |
415 vidix_draw_slice_24(image,stride,vidix_play.src.w,vidix_play.src.h, | |
416 vidix_play.src.x,vidix_play.src.y); | |
356 } | 417 } |
357 else | 418 else |
358 { | 419 { |
359 int stride[1]; | 420 int stride[1]; |
360 stride[0] = vidix_play.src.w*2; | 421 stride[0] = vidix_play.src.w*2; |
401 case IMGFMT_YUY2: | 462 case IMGFMT_YUY2: |
402 vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0),2*bespitch); | 463 vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0),2*bespitch); |
403 break; | 464 break; |
404 case IMGFMT_UYVY: | 465 case IMGFMT_UYVY: |
405 vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0)+1,2*bespitch); | 466 vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0)+1,2*bespitch); |
467 break; | |
468 case IMGFMT_RGB32: | |
469 case IMGFMT_BGR32: | |
470 vo_draw_alpha_rgb32(w,h,src,srca,stride,lvo_mem+4*(y0*bespitch+x0),4*bespitch); | |
471 break; | |
472 case IMGFMT_RGB24: | |
473 case IMGFMT_BGR24: | |
474 vo_draw_alpha_rgb24(w,h,src,srca,stride,lvo_mem+3*(y0*bespitch+x0),3*bespitch); | |
475 break; | |
476 case IMGFMT_RGB16: | |
477 case IMGFMT_BGR16: | |
478 vo_draw_alpha_rgb16(w,h,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); | |
479 break; | |
480 case IMGFMT_RGB15: | |
481 case IMGFMT_BGR15: | |
482 vo_draw_alpha_rgb15(w,h,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); | |
406 break; | 483 break; |
407 default: | 484 default: |
408 draw_alpha_null(x0,y0,w,h,src,srca,stride); | 485 draw_alpha_null(x0,y0,w,h,src,srca,stride); |
409 } | 486 } |
410 } | 487 } |