* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#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;
* 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_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
/*****************************************************************************
* 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++; \
*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++; \
} \
{ \
/* 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 ) \
} \
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 ) \
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) ) \
{ \
} \
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 */ \
- p_vout->p_libvlc->pf_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; \
} \
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) ) \
{ \
} \
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; \
} \