+ int k = 1<<(SHIFT_SIZE-i_shift_width);
+ uint8_t *p_srcl = p_src
+ + (__MIN( i_src_height_1, l >> SHIFT_SIZE )*i_src_pitch);
+
+ for( ; p_dst < p_dstendline; p_dst++, k += i_width_coef )
+ {
+ *p_dst = p_srcl[__MIN( i_src_width_1, k >> SHIFT_SIZE )];
+ }
+ }
+ }
+ }
+ else /* RGBA */
+ {
+ const int i_src_pitch = p_pic->p->i_pitch;
+ const int i_dst_pitch = p_pic_dst->p->i_pitch;
+ const int i_src_height = p_filter->fmt_in.video.i_height;
+ const int i_src_width = p_filter->fmt_in.video.i_width;
+ const int i_dst_height = p_filter->fmt_out.video.i_height;
+ const int i_dst_width = p_filter->fmt_out.video.i_width;
+ const int i_dst_visible_lines =
+ p_pic_dst->p->i_visible_lines;
+ const int i_dst_visible_pitch =
+ p_pic_dst->p->i_visible_pitch;
+ const int i_dst_hidden_pitch = i_dst_pitch - i_dst_visible_pitch;
+ const int i_height_coef = ( i_src_height << SHIFT_SIZE )
+ / i_dst_height;
+ const int i_width_coef = ( i_src_width << SHIFT_SIZE )
+ / i_dst_width;
+ const int i_src_height_1 = i_src_height - 1;
+ const int i_src_width_1 = i_src_width - 1;
+
+ uint32_t *p_src = (uint32_t*)p_pic->p->p_pixels;
+ uint32_t *p_dst = (uint32_t*)p_pic_dst->p->p_pixels;
+ uint32_t *p_dstendline = p_dst + (i_dst_visible_pitch>>2);
+ const uint32_t *p_dstend = p_dst + i_dst_visible_lines*(i_dst_pitch>>2);
+
+ const int i_shift_height = i_dst_height / i_src_height;
+ const int i_shift_width = i_dst_width / i_src_width;
+
+ int l = 1<<(SHIFT_SIZE-i_shift_height);
+ for( ; p_dst < p_dstend;
+ p_dst += (i_dst_hidden_pitch>>2),
+ p_dstendline += (i_dst_pitch>>2),
+ l += i_height_coef )
+ {
+ int k = 1<<(SHIFT_SIZE-i_shift_width);
+ uint32_t *p_srcl = p_src
+ + (__MIN( i_src_height_1, l >> SHIFT_SIZE )*(i_src_pitch>>2));
+ for( ; p_dst < p_dstendline; p_dst++, k += i_width_coef )
+ {
+ *p_dst = p_srcl[__MIN( i_src_width_1, k >> SHIFT_SIZE )];