X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_chroma%2Fi420_rgb.h;h=260f63e6afcc25b5229bd96f92e8ee19fac90b69;hb=be378fbc80c384e2541517d6853b59411b7e67de;hp=6b54c9bfe9ec1193ff5a4e252714f19feea6cf95;hpb=5b55ee1bb0a0212b967f8f4a33824ffc6b7c7f09;p=vlc diff --git a/modules/video_chroma/i420_rgb.h b/modules/video_chroma/i420_rgb.h index 6b54c9bfe9..260f63e6af 100644 --- a/modules/video_chroma/i420_rgb.h +++ b/modules/video_chroma/i420_rgb.h @@ -25,12 +25,12 @@ #define CMAP_RGB2_SIZE 256 /** - * chroma_sys_t: chroma method descriptor + * filter_sys_t: chroma method descriptor * This structure is part of the chroma transformation descriptor, it * describes the yuv2rgb specific properties. */ -struct chroma_sys_t +struct filter_sys_t { uint8_t *p_buffer; int *p_offset; @@ -56,17 +56,27 @@ struct chroma_sys_t * Prototypes *****************************************************************************/ #ifdef MODULE_NAME_IS_i420_rgb -void E_(I420_RGB8) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_RGB16_dither) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_RGB16) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_RGB32) ( vout_thread_t *, picture_t *, picture_t * ); +void I420_RGB8 ( filter_t *, picture_t *, picture_t * ); +void I420_RGB16_dither ( filter_t *, picture_t *, picture_t * ); +void I420_RGB16 ( filter_t *, picture_t *, picture_t * ); +void I420_RGB32 ( filter_t *, picture_t *, picture_t * ); +static picture_t *I420_RGB8_Filter ( filter_t *, picture_t * ); +static picture_t *I420_RGB16_dither_Filter ( filter_t *, picture_t * ); +static picture_t *I420_RGB16_Filter ( filter_t *, picture_t * ); +static picture_t *I420_RGB32_Filter ( filter_t *, picture_t * ); #else // if defined(MODULE_NAME_IS_i420_rgb_mmx) -void E_(I420_R5G5B5) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_R5G6B5) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_A8R8G8B8) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_R8G8B8A8) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_B8G8R8A8) ( vout_thread_t *, picture_t *, picture_t * ); -void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); +void I420_R5G5B5 ( filter_t *, picture_t *, picture_t * ); +void I420_R5G6B5 ( filter_t *, picture_t *, picture_t * ); +void I420_A8R8G8B8 ( filter_t *, picture_t *, picture_t * ); +void I420_R8G8B8A8 ( filter_t *, picture_t *, picture_t * ); +void I420_B8G8R8A8 ( filter_t *, picture_t *, picture_t * ); +void I420_A8B8G8R8 ( filter_t *, picture_t *, picture_t * ); +static picture_t *I420_R5G5B5_Filter ( filter_t *, picture_t * ); +static picture_t *I420_R5G6B5_Filter ( filter_t *, picture_t * ); +static picture_t *I420_A8R8G8B8_Filter ( filter_t *, picture_t * ); +static picture_t *I420_R8G8B8A8_Filter ( filter_t *, picture_t * ); +static picture_t *I420_B8G8R8A8_Filter ( filter_t *, picture_t * ); +static picture_t *I420_A8B8G8R8_Filter ( filter_t *, picture_t * ); #endif /***************************************************************************** @@ -170,7 +180,7 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); * Rewind buffer and offset, then copy and scale line */ \ p_buffer = p_buffer_start; \ p_offset = p_offset_start; \ - for( i_x = p_vout->output.i_width / 16; i_x--; ) \ + for( i_x = p_filter->fmt_out.video.i_width / 16; i_x--; ) \ { \ *p_pic++ = *p_buffer; p_buffer += *p_offset++; \ *p_pic++ = *p_buffer; p_buffer += *p_offset++; \ @@ -189,7 +199,7 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); *p_pic++ = *p_buffer; p_buffer += *p_offset++; \ *p_pic++ = *p_buffer; p_buffer += *p_offset++; \ } \ - for( i_x = p_vout->output.i_width & 15; i_x--; ) \ + for( i_x = p_filter->fmt_out.video.i_width & 15; i_x--; ) \ { \ *p_pic++ = *p_buffer; p_buffer += *p_offset++; \ } \ @@ -212,7 +222,7 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); { \ /* Horizontal scaling - we can't use a buffer due to dithering */ \ p_offset = p_offset_start; \ - for( i_x = p_vout->output.i_width / 16; i_x--; ) \ + for( i_x = p_filter->fmt_out.video.i_width / 16; i_x--; ) \ { \ CONVERT_4YUV_PIXEL_SCALE( CHROMA ) \ CONVERT_4YUV_PIXEL_SCALE( CHROMA ) \ @@ -222,7 +232,7 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); } \ else \ { \ - for( i_x = p_vout->render.i_width / 16; i_x--; ) \ + for( i_x = p_filter->fmt_in.video.i_width / 16; i_x--; ) \ { \ CONVERT_4YUV_PIXEL( CHROMA ) \ CONVERT_4YUV_PIXEL( CHROMA ) \ @@ -258,10 +268,10 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); switch( i_vscale ) \ { \ case -1: /* vertical scaling factor is < 1 */ \ - while( (i_scale_count -= p_vout->output.i_height) > 0 ) \ + while( (i_scale_count -= p_filter->fmt_out.video.i_height) > 0 ) \ { \ /* Height reduction: skip next source line */ \ - p_y += p_vout->render.i_width; \ + p_y += p_filter->fmt_in.video.i_width; \ i_y++; \ if( (CHROMA == 420) || (CHROMA == 422) ) \ { \ @@ -273,20 +283,20 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); } \ else if( CHROMA == 444 ) \ { \ - p_u += p_vout->render.i_width; \ - p_v += p_vout->render.i_width; \ + p_u += p_filter->fmt_in.video.i_width; \ + p_v += p_filter->fmt_in.video.i_width; \ } \ } \ - i_scale_count += p_vout->render.i_height; \ + i_scale_count += p_filter->fmt_in.video.i_height; \ break; \ case 1: /* vertical scaling factor is > 1 */ \ - while( (i_scale_count -= p_vout->render.i_height) > 0 ) \ + while( (i_scale_count -= p_filter->fmt_in.video.i_height) > 0 ) \ { \ /* Height increment: copy previous picture line */ \ - vlc_memcpy( p_pic, p_pic_start, p_vout->output.i_width * BPP ); \ + vlc_memcpy( p_pic, p_pic_start, p_filter->fmt_out.video.i_width * BPP ); \ p_pic = (void*)((uint8_t*)p_pic + p_dest->p->i_pitch ); \ } \ - i_scale_count += p_vout->output.i_height; \ + i_scale_count += p_filter->fmt_out.video.i_height; \ break; \ } \ @@ -313,10 +323,10 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); switch( i_vscale ) \ { \ case -1: /* vertical scaling factor is < 1 */ \ - while( (i_scale_count -= p_vout->output.i_height) > 0 ) \ + while( (i_scale_count -= p_filter->fmt_out.video.i_height) > 0 ) \ { \ /* Height reduction: skip next source line */ \ - p_y += p_vout->render.i_width; \ + p_y += p_filter->fmt_in.video.i_width; \ i_y++; \ if( (CHROMA == 420) || (CHROMA == 422) ) \ { \ @@ -328,21 +338,21 @@ void E_(I420_A8B8G8R8) ( vout_thread_t *, picture_t *, picture_t * ); } \ else if( CHROMA == 444 ) \ { \ - p_u += p_vout->render.i_width; \ - p_v += p_vout->render.i_width; \ + p_u += p_filter->fmt_in.video.i_width; \ + p_v += p_filter->fmt_in.video.i_width; \ } \ } \ - i_scale_count += p_vout->render.i_height; \ + i_scale_count += p_filter->fmt_in.video.i_height; \ break; \ case 1: /* vertical scaling factor is > 1 */ \ - while( (i_scale_count -= p_vout->render.i_height) > 0 ) \ + while( (i_scale_count -= p_filter->fmt_in.video.i_height) > 0 ) \ { \ - p_y -= p_vout->render.i_width; \ + p_y -= p_filter->fmt_in.video.i_width; \ p_u -= i_chroma_width; \ p_v -= i_chroma_width; \ SCALE_WIDTH_DITHER( CHROMA ); \ } \ - i_scale_count += p_vout->output.i_height; \ + i_scale_count += p_filter->fmt_out.video.i_height; \ break; \ } \