Commit f86eec5a authored by Sam Hocevar's avatar Sam Hocevar

* ./modules/video_filter/transform.c: the 90 and 270 transformation routines

    now use the visible pitch of a picture, not its total pitch (Closes: #29).
parent 08d62d37
......@@ -2,7 +2,7 @@
* transform.c : transform image plugin for vlc
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: transform.c,v 1.4 2002/11/28 17:35:00 sam Exp $
* $Id: transform.c,v 1.5 2003/01/09 14:00:00 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
......@@ -177,8 +177,9 @@ static int Init( vout_thread_t *p_vout )
p_vout->p_sys->p_vout = vout_Create( p_vout,
p_vout->render.i_height, p_vout->render.i_width,
p_vout->render.i_chroma,
(u64)VOUT_ASPECT_FACTOR * (u64)VOUT_ASPECT_FACTOR
/ (u64)p_vout->render.i_aspect );
(uint64_t)VOUT_ASPECT_FACTOR
* (uint64_t)VOUT_ASPECT_FACTOR
/ (uint64_t)p_vout->render.i_aspect );
}
else
{
......@@ -261,18 +262,19 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
{
int i_pitch = p_pic->p[i_index].i_pitch;
u8 *p_in = p_pic->p[i_index].p_pixels;
uint8_t *p_in = p_pic->p[i_index].p_pixels;
u8 *p_out = p_outpic->p[i_index].p_pixels;
u8 *p_out_end = p_out + p_outpic->p[i_index].i_lines
uint8_t *p_out = p_outpic->p[i_index].p_pixels;
uint8_t *p_out_end = p_out + p_outpic->p[i_index].i_lines
* p_outpic->p[i_index].i_pitch;
for( ; p_out < p_out_end ; )
{
u8 *p_line_end;
uint8_t *p_line_end;
p_line_end = p_in + p_pic->p[i_index].i_lines
* p_pic->p[i_index].i_pitch;
p_out_end -= p_outpic->p[i_index].i_pitch
- p_outpic->p[i_index].i_visible_pitch;
p_line_end = p_in + p_pic->p[i_index].i_lines * i_pitch;
for( ; p_in < p_line_end ; )
{
......@@ -286,13 +288,14 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
break;
case TRANSFORM_MODE_180:
/* FIXME: we should use i_visible_pitch here */
for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
{
u8 *p_in = p_pic->p[i_index].p_pixels;
u8 *p_in_end = p_in + p_pic->p[i_index].i_lines
uint8_t *p_in = p_pic->p[i_index].p_pixels;
uint8_t *p_in_end = p_in + p_pic->p[i_index].i_lines
* p_pic->p[i_index].i_pitch;
u8 *p_out = p_outpic->p[i_index].p_pixels;
uint8_t *p_out = p_outpic->p[i_index].p_pixels;
for( ; p_in < p_in_end ; )
{
......@@ -306,18 +309,17 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
{
int i_pitch = p_pic->p[i_index].i_pitch;
u8 *p_in = p_pic->p[i_index].p_pixels;
uint8_t *p_in = p_pic->p[i_index].p_pixels;
u8 *p_out = p_outpic->p[i_index].p_pixels;
u8 *p_out_end = p_out + p_outpic->p[i_index].i_lines
uint8_t *p_out = p_outpic->p[i_index].p_pixels;
uint8_t *p_out_end = p_out + p_outpic->p[i_index].i_lines
* p_outpic->p[i_index].i_pitch;
for( ; p_out < p_out_end ; )
{
u8 *p_in_end;
uint8_t *p_in_end;
p_in_end = p_in + p_pic->p[i_index].i_lines
* p_pic->p[i_index].i_pitch;
p_in_end = p_in + p_pic->p[i_index].i_lines * i_pitch;
for( ; p_in < p_in_end ; )
{
......@@ -325,6 +327,8 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
*p_out++ = *p_in_end;
}
p_out += p_outpic->p[i_index].i_pitch
- p_outpic->p[i_index].i_visible_pitch;
p_in++;
}
}
......@@ -333,17 +337,17 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
case TRANSFORM_MODE_VFLIP:
for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
{
u8 *p_in = p_pic->p[i_index].p_pixels;
u8 *p_in_end = p_in + p_pic->p[i_index].i_lines
uint8_t *p_in = p_pic->p[i_index].p_pixels;
uint8_t *p_in_end = p_in + p_pic->p[i_index].i_lines
* p_pic->p[i_index].i_pitch;
u8 *p_out = p_outpic->p[i_index].p_pixels;
uint8_t *p_out = p_outpic->p[i_index].p_pixels;
for( ; p_in < p_in_end ; )
{
p_in_end -= p_pic->p[i_index].i_pitch;
p_vout->p_vlc->pf_memcpy( p_out, p_in_end,
p_pic->p[i_index].i_pitch );
p_pic->p[i_index].i_visible_pitch );
p_out += p_pic->p[i_index].i_pitch;
}
}
......@@ -352,15 +356,16 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
case TRANSFORM_MODE_HFLIP:
for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ )
{
u8 *p_in = p_pic->p[i_index].p_pixels;
u8 *p_in_end = p_in + p_pic->p[i_index].i_lines
uint8_t *p_in = p_pic->p[i_index].p_pixels;
uint8_t *p_in_end = p_in + p_pic->p[i_index].i_lines
* p_pic->p[i_index].i_pitch;
u8 *p_out = p_outpic->p[i_index].p_pixels;
uint8_t *p_out = p_outpic->p[i_index].p_pixels;
for( ; p_in < p_in_end ; )
{
u8 *p_line_end = p_in + p_pic->p[i_index].i_pitch;
uint8_t *p_line_end = p_in
+ p_pic->p[i_index].i_visible_pitch;
for( ; p_in < p_line_end ; )
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment