- uint8_t *p_src = p_pic->p->p_pixels;
- uint8_t *p_dst = p_pic_dst->p->p_pixels;
- int i_src_pitch = p_pic->p->i_pitch;
- int i_dst_pitch = p_pic_dst->p->i_pitch;
- for( i = 0; i < p_pic_dst->p->i_visible_lines; i++ )
+ 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 )