X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=plugins%2Fyuv%2Fvideo_yuvmmx.c;h=c7cf67f79cc3a801ec97a8d95bcfa2248fbdfe91;hb=b9f4c2bd2e44a61d712279ca2500cd5a9a1ad533;hp=d34410f3f66b191667e7bdd48d96008cb5f7fb67;hpb=583c6553f6761421260d86bbc21b5b3169c04319;p=vlc diff --git a/plugins/yuv/video_yuvmmx.c b/plugins/yuv/video_yuvmmx.c index d34410f3f6..c7cf67f79c 100644 --- a/plugins/yuv/video_yuvmmx.c +++ b/plugins/yuv/video_yuvmmx.c @@ -3,8 +3,9 @@ * Provides functions to perform the YUV conversion. ***************************************************************************** * Copyright (C) 1999, 2000 VideoLAN + * $Id: video_yuvmmx.c,v 1.7 2001/03/21 13:42:34 sam Exp $ * - * Authors: + * Authors: Samuel Hocevar * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -324,30 +325,59 @@ static void SetYUV( vout_thread_t *p_vout ) /* * Set functions pointers */ - if( p_vout->b_grayscale ) + if( p_vout->b_YCbr) + { + switch( p_vout->i_bytes_per_pixel) + { + case 1: + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420YCbr8; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422YCbr8; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444YCbr8; + break; + + case 2: + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420YCbr16; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422YCbr16; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444YCbr16; + break; + + case 3: + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420YCbr24; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422YCbr24; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444YCbr24; + break; + + case 4: + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420YCbr32; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422YCbr32; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444YCbr32; + break; + } + } + else if( p_vout->b_grayscale ) { /* Grayscale */ switch( p_vout->i_bytes_per_pixel ) { case 1: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertY4Gray8; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertY4Gray8; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertY4Gray8; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertY4Gray8; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertY4Gray8; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertY4Gray8; break; case 2: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertY4Gray16; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertY4Gray16; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertY4Gray16; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertY4Gray16; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertY4Gray16; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertY4Gray16; break; case 3: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB24; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertY4Gray24; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertY4Gray24; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB24; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertY4Gray24; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertY4Gray24; break; case 4: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB32; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertY4Gray32; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertY4Gray32; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB32; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertY4Gray32; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertY4Gray32; break; } } @@ -357,24 +387,24 @@ static void SetYUV( vout_thread_t *p_vout ) switch( p_vout->i_bytes_per_pixel ) { case 1: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB8; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertYUV422RGB8; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertYUV444RGB8; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB8; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422RGB8; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444RGB8; break; case 2: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB16; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertYUV422RGB16; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertYUV444RGB16; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB16; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422RGB16; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444RGB16; break; case 3: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB24; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertYUV422RGB24; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertYUV444RGB24; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB24; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422RGB24; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444RGB24; break; case 4: - p_vout->yuv.p_Convert420 = (vout_yuv_convert_t *) ConvertYUV420RGB32; - p_vout->yuv.p_Convert422 = (vout_yuv_convert_t *) ConvertYUV422RGB32; - p_vout->yuv.p_Convert444 = (vout_yuv_convert_t *) ConvertYUV444RGB32; + p_vout->yuv.pf_yuv420 = (vout_yuv_convert_t *) ConvertYUV420RGB32; + p_vout->yuv.pf_yuv422 = (vout_yuv_convert_t *) ConvertYUV422RGB32; + p_vout->yuv.pf_yuv444 = (vout_yuv_convert_t *) ConvertYUV444RGB32; break; } }