From ce9038a5b2ddef239a840c67cd84de30c963d2c3 Mon Sep 17 00:00:00 2001 From: Rich J Wareham Date: Sat, 2 Feb 2002 23:37:18 +0000 Subject: Added YUY2 support CVS patchset: 1471 CVS date: 2002/02/02 23:37:18 --- src/video_out/video_out_directfb.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/video_out/video_out_directfb.c b/src/video_out/video_out_directfb.c index e5d19e059..5455d9d14 100644 --- a/src/video_out/video_out_directfb.c +++ b/src/video_out/video_out_directfb.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: video_out_directfb.c,v 1.1 2002/02/02 17:05:43 richwareham Exp $ + * $Id: video_out_directfb.c,v 1.2 2002/02/02 23:37:18 richwareham Exp $ * * DirectFB based output plugin. * Rich Wareham @@ -167,25 +167,29 @@ static void directfb_frame_copy (vo_frame_t *vo_img, uint8_t **src) { uint32_t pitch, x,y,frame_offset, src_offset,i,a; DFBCHECK(frame->surface->Lock(frame->surface, DSLF_WRITE, - &data, &pitch)); + (void**)&data, &pitch)); - i=0; py = src[0]; pu = src[1]; pv=src[2]; a=0; - for(y=frame->line; (yline+16) && (yheight); y++, i++) { - frame_offset = (y * pitch)>>2; src_offset = i * frame->width; - a = (i>>1) * ((frame->width)>>1); - for(x=0; xwidth; x+=2) { - if(frame->format == IMGFMT_YV12) { + if(frame->format == IMGFMT_YV12) { + i=0; py = src[0]; pu = src[1]; pv=src[2]; a=0; + for(y=frame->line; (yline+16) && (yheight); y++, i++) { + frame_offset = (y * pitch)>>2; src_offset = i * frame->width; + a = (i>>1) * ((frame->width)>>1); + for(x=0; xwidth; x+=2) { data[frame_offset+(x>>1)] = py[(src_offset+x)] + ((pu[a])<<8) + ((py[(src_offset+x+1)])<<16) + ((pv[a])<<24); /* data[frame_offset+(x<<1)+2] = py[(src_offset+x+1)]; - data[frame_offset+(x<<1)+1] = pu[a]; - data[frame_offset+(x<<1)+3] = pv[a]; */ + data[frame_offset+(x<<1)+1] = pu[a]; + data[frame_offset+(x<<1)+3] = pv[a]; */ a++; } } + frame->line=y; + } else if(frame->format == IMGFMT_YUY2) { + xine_fast_memcpy(&(data[frame->line*pitch]), src[0], frame->width*32); + frame->line += 4; } - frame->line=y; + DFBCHECK(frame->surface->Unlock(frame->surface)); } @@ -323,6 +327,9 @@ static void directfb_update_frame_format (vo_driver_t *this_gen, case IMGFMT_YV12: dsc.pixelformat = DSPF_YUY2; break; + case IMGFMT_YUY2: + dsc.pixelformat = DSPF_YUY2; + break; default: fprintf(stderr,"Error unknown image format (%i), assuming YUY2\n", frame->format); dsc.pixelformat = DSPF_YUY2; -- cgit v1.2.3