From: Gildas Bazin Date: Sat, 28 Aug 2004 17:36:02 +0000 (+0000) Subject: * ALL: use i_visible_lines in plane_t. X-Git-Tag: 0.8.0~563 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=56b5483c5684b5e91e56fdbc7429b264728e2e77;p=vlc * ALL: use i_visible_lines in plane_t. --- diff --git a/modules/access/v4l/v4l.c b/modules/access/v4l/v4l.c index 396612cbf1..85d21f29b5 100644 --- a/modules/access/v4l/v4l.c +++ b/modules/access/v4l/v4l.c @@ -438,6 +438,11 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) *pi64 = (int64_t)var_GetInteger( p_demux, "v4l-caching" ) * 1000; return VLC_SUCCESS; + case DEMUX_GET_TIME: + pi64 = (int64_t*)va_arg( args, int64_t * ); + *pi64 = mdate(); + return VLC_SUCCESS; + /* TODO implement others */ default: return VLC_EGENERIC; @@ -1109,7 +1114,7 @@ static int OpenVideoDev( demux_t *p_demux, char *psz_device ) p_sys->i_video_frame_size = 0; for( i = 0; i < p_sys->pic.i_planes; i++ ) { - p_sys->i_video_frame_size += p_sys->pic.p[i].i_lines * + p_sys->i_video_frame_size += p_sys->pic.p[i].i_visible_lines * p_sys->pic.p[i].i_visible_pitch; } diff --git a/modules/codec/cinepak.c b/modules/codec/cinepak.c index 86be9174a6..c0191015ec 100644 --- a/modules/codec/cinepak.c +++ b/modules/codec/cinepak.c @@ -2,7 +2,7 @@ * cinepak.c: cinepak video decoder ***************************************************************************** * Copyright (C) 1999-2001 VideoLAN - * $Id: cinepak.c,v 1.6 2003/11/23 13:25:32 gbazin Exp $ + * $Id$ * * Authors: Laurent Aimar * @@ -173,7 +173,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) p_src = p_sys->context.p_pix[i_plane]; i_lines = __MIN( p_sys->context.i_lines[i_plane], - p_pic->p[i_plane].i_lines ); + p_pic->p[i_plane].i_visible_lines ); for( i_line = 0; i_line < i_lines; i_line++ ) { memcpy( p_dst, p_src, diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c index 8bdade37a6..ad366a8909 100644 --- a/modules/codec/dmo/dmo.c +++ b/modules/codec/dmo/dmo.c @@ -883,7 +883,7 @@ static void CopyPicture( decoder_t *p_dec, picture_t *p_pic, uint8_t *p_in ) i_width = p_pic->p[i_plane].i_visible_pitch; i_dst_stride = p_pic->p[i_plane].i_pitch; - for( i_line = 0; i_line < p_pic->p[i_plane].i_lines; i_line++ ) + for( i_line = 0; i_line < p_pic->p[i_plane].i_visible_lines; i_line++ ) { p_dec->p_vlc->pf_memcpy( p_dst, p_src, i_width ); p_src += i_width; @@ -1399,7 +1399,8 @@ static block_t *EncodeBlock( encoder_t *p_enc, void *p_data ) i_width = p_pic->p[i_plane].i_visible_pitch; i_src_stride = p_pic->p[i_plane].i_pitch; - for( i_line = 0; i_line < p_pic->p[i_plane].i_lines; i_line++ ) + for( i_line = 0; i_line < p_pic->p[i_plane].i_visible_lines; + i_line++ ) { p_enc->p_vlc->pf_memcpy( p_dst, p_src, i_width ); p_dst += i_width; diff --git a/modules/codec/ffmpeg/video.c b/modules/codec/ffmpeg/video.c index 6847544442..44cf3b02c6 100644 --- a/modules/codec/ffmpeg/video.c +++ b/modules/codec/ffmpeg/video.c @@ -689,7 +689,8 @@ static void ffmpeg_CopyPicture( decoder_t *p_dec, i_dst_stride = p_pic->p[i_plane].i_pitch; i_size = __MIN( i_src_stride, i_dst_stride ); - for( i_line = 0; i_line < p_pic->p[i_plane].i_lines; i_line++ ) + for( i_line = 0; i_line < p_pic->p[i_plane].i_visible_lines; + i_line++ ) { p_dec->p_vlc->pf_memcpy( p_dst, p_src, i_size ); p_src += i_src_stride; diff --git a/modules/codec/rawvideo.c b/modules/codec/rawvideo.c index 4fe833c7de..82be6aaabf 100644 --- a/modules/codec/rawvideo.c +++ b/modules/codec/rawvideo.c @@ -2,7 +2,7 @@ * rawvideo.c: Pseudo video decoder/packetizer for raw video data ***************************************************************************** * Copyright (C) 2001, 2002 VideoLAN - * $Id: rawvideo.c,v 1.13 2004/02/27 14:02:05 fenrir Exp $ + * $Id$ * * Authors: Laurent Aimar * @@ -235,7 +235,7 @@ static void FillPicture( decoder_t *p_dec, block_t *p_block, picture_t *p_pic ) p_dst = p_pic->p[i_plane].p_pixels; i_width = p_pic->p[i_plane].i_visible_pitch; - for( i_line = 0; i_line < p_pic->p[i_plane].i_lines; i_line++ ) + for( i_line = 0; i_line < p_pic->p[i_plane].i_visible_lines; i_line++ ) { p_dec->p_vlc->pf_memcpy( p_dst, p_src, i_width ); p_src += i_width; diff --git a/modules/codec/tarkin.c b/modules/codec/tarkin.c index 3626bfa2f1..62c8d30e97 100644 --- a/modules/codec/tarkin.c +++ b/modules/codec/tarkin.c @@ -2,7 +2,7 @@ * tarkin.c: tarkin decoder module making use of libtarkin. ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: tarkin.c,v 1.11 2004/01/25 18:20:12 bigben Exp $ + * $Id$ * * Authors: Gildas Bazin * @@ -306,7 +306,7 @@ static void tarkin_CopyPicture( decoder_t *p_dec, picture_t *p_pic, i_dst_stride = p_pic->p[i_plane].i_pitch; i_src_stride = i_pitch; - for( i_line = 0; i_line < p_pic->p[i_plane].i_lines; i_line++ ) + for( i_line = 0; i_line < p_pic->p[i_plane].i_visible_lines; i_line++ ) { p_dec->p_vlc->pf_memcpy( p_dst, p_src, i_src_stride ); diff --git a/modules/gui/beos/VideoOutput.cpp b/modules/gui/beos/VideoOutput.cpp index 0e6f9034d1..bb9051e4cd 100644 --- a/modules/gui/beos/VideoOutput.cpp +++ b/modules/gui/beos/VideoOutput.cpp @@ -1468,6 +1468,7 @@ int Init( vout_thread_t *p_vout ) } p_pic->p->p_pixels = (uint8_t*)p_vout->p_sys->p_window->bitmap[buffer_index]->Bits(); p_pic->p->i_lines = p_vout->p_sys->i_height; + p_pic->p->i_visible_lines = p_vout->p_sys->i_height; p_pic->p->i_pixel_pitch = colspace[p_vout->p_sys->p_window->colspace_index].pixel_bytes; p_pic->i_planes = colspace[p_vout->p_sys->p_window->colspace_index].planes; diff --git a/modules/gui/macosx/voutqt.m b/modules/gui/macosx/voutqt.m index f67ded19a8..e923c8eb91 100644 --- a/modules/gui/macosx/voutqt.m +++ b/modules/gui/macosx/voutqt.m @@ -630,6 +630,7 @@ static int QTNewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->p[0].p_pixels = p_pic->p_data; p_pic->p[0].i_lines = p_vout->output.i_height; + p_pic->p[0].i_visible_lines = p_vout->output.i_height; p_pic->p[0].i_pitch = p_vout->output.i_width * 2; p_pic->p[0].i_pixel_pitch = 1; p_pic->p[0].i_visible_pitch = p_vout->output.i_width * 2; diff --git a/modules/gui/qnx/vout.c b/modules/gui/qnx/vout.c index 1c5a3d613e..3512361749 100644 --- a/modules/gui/qnx/vout.c +++ b/modules/gui/qnx/vout.c @@ -757,6 +757,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_image->image; p_pic->p->i_lines = p_pic->p_sys->p_image->size.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_image->size.h; p_pic->p->i_pitch = p_pic->p_sys->p_image->bpl; p_pic->p->i_pixel_pitch = p_vout->p_sys->i_bytes_per_pixel; p_pic->p->i_visible_pitch = p_vout->p_sys->i_bytes_per_pixel @@ -792,6 +793,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_buf[0]; p_pic->p->i_lines = p_pic->p_sys->p_ctx[0]->dim.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_ctx[0]->dim.h; p_pic->p->i_pitch = p_pic->p_sys->p_ctx[0]->pitch; p_pic->p->i_pixel_pitch = p_vout->p_sys->i_bytes_per_pixel; p_pic->p->i_visible_pitch = p_vout->p_sys->i_bytes_per_pixel @@ -837,18 +839,21 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->Y_PIXELS = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p[Y_PLANE].i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p[Y_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p[Y_PLANE].i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p[Y_PLANE].i_pixel_pitch = 1; p_pic->p[Y_PLANE].i_visible_pitch = p_pic->p[Y_PLANE].i_pitch; p_pic->U_PIXELS = p_pic->p_sys->p_buf[U_PLANE]; p_pic->p[U_PLANE].i_lines = p_pic->p_sys->p_ctx[U_PLANE]->dim.h; + p_pic->p[U_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[U_PLANE]->dim.h; p_pic->p[U_PLANE].i_pitch = p_pic->p_sys->p_ctx[U_PLANE]->pitch; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_pic->p[U_PLANE].i_pitch; p_pic->V_PIXELS = p_pic->p_sys->p_buf[V_PLANE]; p_pic->p[V_PLANE].i_lines = p_pic->p_sys->p_ctx[V_PLANE]->dim.h; + p_pic->p[V_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[V_PLANE]->dim.h; p_pic->p[V_PLANE].i_pitch = p_pic->p_sys->p_ctx[V_PLANE]->pitch; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_pic->p[V_PLANE].i_pitch; @@ -871,18 +876,21 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->Y_PIXELS = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p[Y_PLANE].i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p[Y_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p[Y_PLANE].i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p[Y_PLANE].i_pixel_pitch = 1; p_pic->p[Y_PLANE].i_visible_pitch = p_pic->p[Y_PLANE].i_pitch; p_pic->U_PIXELS = p_pic->p_sys->p_buf[U_PLANE]; p_pic->p[U_PLANE].i_lines = p_pic->p_sys->p_ctx[U_PLANE]->dim.h; + p_pic->p[U_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[U_PLANE]->dim.h; p_pic->p[U_PLANE].i_pitch = p_pic->p_sys->p_ctx[U_PLANE]->pitch; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_pic->p[U_PLANE].i_pitch; p_pic->V_PIXELS = p_pic->p_sys->p_buf[V_PLANE]; p_pic->p[V_PLANE].i_lines = p_pic->p_sys->p_ctx[V_PLANE]->dim.h; + p_pic->p[V_PLANE].i_visible_lines = p_pic->p_sys->p_ctx[V_PLANE]->dim.h; p_pic->p[V_PLANE].i_pitch = p_pic->p_sys->p_ctx[V_PLANE]->pitch; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_pic->p[V_PLANE].i_pitch; @@ -903,6 +911,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p->i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p->i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p->i_pixel_pitch = 4; p_pic->p->i_visible_pitch = p_pic->p->i_pitch; @@ -918,6 +927,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p->i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p->i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p->i_pixel_pitch = 2; p_pic->p->i_visible_pitch = 2 * p_pic->p_sys->p_ctx[Y_PLANE]->dim.w; @@ -933,6 +943,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p->i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p->i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p->i_pixel_pitch = 4; p_pic->p->i_visible_pitch = 4 * p_pic->p_sys->p_ctx[Y_PLANE]->dim.w; @@ -948,6 +959,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_buf[Y_PLANE]; p_pic->p->i_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; + p_pic->p->i_visible_lines = p_pic->p_sys->p_ctx[Y_PLANE]->dim.h; p_pic->p->i_pitch = p_pic->p_sys->p_ctx[Y_PLANE]->pitch; p_pic->p->i_pixel_pitch = 4; p_pic->p->i_visible_pitch = 4 * p_pic->p_sys->p_ctx[Y_PLANE]->dim.w; @@ -965,6 +977,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index ) p_pic->p->p_pixels = p_pic->p_sys->p_image->data + p_pic->p_sys->p_image->offsets[0]; p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; /* XXX: this just looks so plain wrong... check it out ! */ p_pic->p->i_pitch = p_pic->p_sys->p_image->pitches[0] / 4; p_pic->p->i_pixel_pitch = 4; diff --git a/modules/video_chroma/i420_ymga.c b/modules/video_chroma/i420_ymga.c index 307184604e..4200f915af 100644 --- a/modules/video_chroma/i420_ymga.c +++ b/modules/video_chroma/i420_ymga.c @@ -2,7 +2,7 @@ * i420_ymga.c : YUV to YUV conversion module for vlc ***************************************************************************** * Copyright (C) 2000, 2001 VideoLAN - * $Id: i420_ymga.c,v 1.3 2004/01/25 17:20:18 kuehne Exp $ + * $Id$ * * Authors: Samuel Hocevar * @@ -108,10 +108,10 @@ static void I420_YMGA( vout_thread_t *p_vout, picture_t *p_source, /* Copy the Y part */ p_vout->p_vlc->pf_memcpy( p_dest->Y_PIXELS, p_source->Y_PIXELS, - p_dest->p[Y_PLANE].i_pitch * p_dest->p[Y_PLANE].i_lines ); + p_dest->p[Y_PLANE].i_pitch * p_dest->p[Y_PLANE].i_visible_lines ); /* Copy the U:V part */ - for( i_x = p_dest->p[U_PLANE].i_pitch * p_dest->p[U_PLANE].i_lines / 64; + for( i_x = p_dest->p[U_PLANE].i_pitch * p_dest->p[U_PLANE].i_visible_lines / 64; i_x--; ) { #if defined (MODULE_NAME_IS_i420_ymga) diff --git a/modules/video_chroma/i420_yuy2.c b/modules/video_chroma/i420_yuy2.c index 16c72e7ef3..d137b83dc0 100644 --- a/modules/video_chroma/i420_yuy2.c +++ b/modules/video_chroma/i420_yuy2.c @@ -397,10 +397,10 @@ static void I420_cyuv( vout_thread_t *p_vout, picture_t *p_source, picture_t *p_dest ) { uint8_t *p_line1 = p_dest->p->p_pixels + - p_dest->p->i_lines * p_dest->p->i_pitch + p_dest->p->i_visible_lines * p_dest->p->i_pitch + p_dest->p->i_pitch; uint8_t *p_line2 = p_dest->p->p_pixels + - p_dest->p->i_lines * p_dest->p->i_pitch; + p_dest->p->i_visible_lines * p_dest->p->i_pitch; uint8_t *p_y1, *p_y2 = p_source->Y_PIXELS; uint8_t *p_u = p_source->U_PIXELS; uint8_t *p_v = p_source->V_PIXELS; diff --git a/modules/video_chroma/i422_yuy2.c b/modules/video_chroma/i422_yuy2.c index 15df43624a..b0ec75cb92 100644 --- a/modules/video_chroma/i422_yuy2.c +++ b/modules/video_chroma/i422_yuy2.c @@ -248,7 +248,7 @@ static void I422_IUYV( vout_thread_t *p_vout, picture_t *p_source, static void I422_cyuv( vout_thread_t *p_vout, picture_t *p_source, picture_t *p_dest ) { - uint8_t *p_line = p_dest->p->p_pixels + p_dest->p->i_lines * p_dest->p->i_pitch; + uint8_t *p_line = p_dest->p->p_pixels + p_dest->p->i_visible_lines * p_dest->p->i_pitch; uint8_t *p_y = p_source->Y_PIXELS; uint8_t *p_u = p_source->U_PIXELS; uint8_t *p_v = p_source->V_PIXELS; @@ -283,7 +283,7 @@ static void I422_cyuv( vout_thread_t *p_vout, picture_t *p_source, static void I422_Y211( vout_thread_t *p_vout, picture_t *p_source, picture_t *p_dest ) { - uint8_t *p_line = p_dest->p->p_pixels + p_dest->p->i_lines * p_dest->p->i_pitch; + uint8_t *p_line = p_dest->p->p_pixels + p_dest->p->i_visible_lines * p_dest->p->i_pitch; uint8_t *p_y = p_source->Y_PIXELS; uint8_t *p_u = p_source->U_PIXELS; uint8_t *p_v = p_source->V_PIXELS; diff --git a/modules/video_filter/adjust.c b/modules/video_filter/adjust.c index 56d9c47a1b..5b4909cce5 100644 --- a/modules/video_filter/adjust.c +++ b/modules/video_filter/adjust.c @@ -286,7 +286,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) */ p_in = p_pic->p[0].p_pixels; - p_in_end = p_in + p_pic->p[0].i_lines * p_pic->p[0].i_pitch - 8; + p_in_end = p_in + p_pic->p[0].i_visible_lines * p_pic->p[0].i_pitch - 8; p_out = p_outpic->p[0].p_pixels; @@ -320,7 +320,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) p_in = p_pic->p[1].p_pixels; p_in_v = p_pic->p[2].p_pixels; - p_in_end = p_in + p_pic->p[1].i_lines * p_pic->p[1].i_pitch - 8; + p_in_end = p_in + p_pic->p[1].i_visible_lines * p_pic->p[1].i_pitch - 8; p_out = p_outpic->p[1].p_pixels; p_out_v = p_outpic->p[2].p_pixels; diff --git a/modules/video_filter/clone.c b/modules/video_filter/clone.c index 6172289ff7..f3e4a4232c 100644 --- a/modules/video_filter/clone.c +++ b/modules/video_filter/clone.c @@ -341,11 +341,12 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) && i_out_pitch == i_copy_pitch ) { p_vout->p_vlc->pf_memcpy( p_out, p_in, i_in_pitch - * p_outpic->p[i_plane].i_lines ); + * p_outpic->p[i_plane].i_visible_lines ); } else { - p_in_end = p_in + i_in_pitch * p_outpic->p[i_plane].i_lines; + p_in_end = p_in + i_in_pitch * + p_outpic->p[i_plane].i_visible_lines; while( p_in < p_in_end ) { diff --git a/modules/video_filter/crop.c b/modules/video_filter/crop.c index 91716b4382..83b0094588 100644 --- a/modules/video_filter/crop.c +++ b/modules/video_filter/crop.c @@ -371,13 +371,13 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) p_in = p_pic->p[i_plane].p_pixels /* Skip the right amount of lines */ - + i_in_pitch * ( p_pic->p[i_plane].i_lines * p_vout->p_sys->i_y - / p_vout->output.i_height ) + + i_in_pitch * ( p_pic->p[i_plane].i_visible_lines * + p_vout->p_sys->i_y / p_vout->output.i_height ) /* Skip the right amount of columns */ + i_in_pitch * p_vout->p_sys->i_x / p_vout->output.i_width; p_out = p_outpic->p[i_plane].p_pixels; - p_out_end = p_out + i_out_pitch * p_outpic->p[i_plane].i_lines; + p_out_end = p_out + i_out_pitch * p_outpic->p[i_plane].i_visible_lines; while( p_out < p_out_end ) { @@ -402,7 +402,7 @@ static void UpdateStats( vout_thread_t *p_vout, picture_t *p_pic ) uint8_t *p_in = p_pic->p[0].p_pixels; int i_pitch = p_pic->p[0].i_pitch; int i_visible_pitch = p_pic->p[0].i_visible_pitch; - int i_lines = p_pic->p[0].i_lines; + int i_lines = p_pic->p[0].i_visible_lines; int i_firstwhite = -1, i_lastwhite = -1, i; /* Determine where black borders are */ diff --git a/modules/video_filter/deinterlace.c b/modules/video_filter/deinterlace.c index 041716f3c5..47d3234f00 100644 --- a/modules/video_filter/deinterlace.c +++ b/modules/video_filter/deinterlace.c @@ -508,7 +508,7 @@ static void RenderDiscard( vout_thread_t *p_vout, p_out = p_outpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch - * p_outpic->p[i_plane].i_lines; + * p_outpic->p[i_plane].i_visible_lines; switch( p_vout->render.i_chroma ) { @@ -577,7 +577,7 @@ static void RenderBob( vout_thread_t *p_vout, p_in = p_pic->p[i_plane].p_pixels; p_out = p_outpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch - * p_outpic->p[i_plane].i_lines; + * p_outpic->p[i_plane].i_visible_lines; switch( p_vout->render.i_chroma ) { @@ -697,7 +697,7 @@ static void RenderLinear( vout_thread_t *p_vout, p_in = p_pic->p[i_plane].p_pixels; p_out = p_outpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch - * p_outpic->p[i_plane].i_lines; + * p_outpic->p[i_plane].i_visible_lines; /* For BOTTOM field we need to add the first line */ if( i_field == 1 ) @@ -753,7 +753,7 @@ static void RenderMean( vout_thread_t *p_vout, p_out = p_outpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch - * p_outpic->p[i_plane].i_lines; + * p_outpic->p[i_plane].i_visible_lines; /* All lines: mean value */ for( ; p_out < p_out_end ; ) @@ -782,7 +782,7 @@ static void RenderBlend( vout_thread_t *p_vout, p_out = p_outpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch - * p_outpic->p[i_plane].i_lines; + * p_outpic->p[i_plane].i_visible_lines; switch( p_vout->render.i_chroma ) { diff --git a/modules/video_filter/distort.c b/modules/video_filter/distort.c index f36bdcb871..10a5702821 100644 --- a/modules/video_filter/distort.c +++ b/modules/video_filter/distort.c @@ -297,7 +297,7 @@ static void DistortWave( vout_thread_t *p_vout, picture_t *p_inpic, p_in = p_inpic->p[i_index].p_pixels; p_out = p_outpic->p[i_index].p_pixels; - i_num_lines = p_inpic->p[i_index].i_lines; + i_num_lines = p_inpic->p[i_index].i_visible_lines; black_pixel = ( i_index == Y_PLANE ) ? 0x00 : 0x80; @@ -363,7 +363,7 @@ static void DistortRipple( vout_thread_t *p_vout, picture_t *p_inpic, black_pixel = ( i_index == Y_PLANE ) ? 0x00 : 0x80; - i_num_lines = p_inpic->p[i_index].i_lines; + i_num_lines = p_inpic->p[i_index].i_visible_lines; i_first_line = i_num_lines * 4 / 5; diff --git a/modules/video_filter/invert.c b/modules/video_filter/invert.c index 64fa0a2f68..5c10f778db 100644 --- a/modules/video_filter/invert.c +++ b/modules/video_filter/invert.c @@ -208,7 +208,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) uint8_t *p_in, *p_in_end, *p_line_end, *p_out; p_in = p_pic->p[i_index].p_pixels; - p_in_end = p_in + p_pic->p[i_index].i_lines + p_in_end = p_in + p_pic->p[i_index].i_visible_lines * p_pic->p[i_index].i_pitch; p_out = p_outpic->p[i_index].p_pixels; diff --git a/modules/video_filter/logo.c b/modules/video_filter/logo.c index b009aabc1f..58fb5b4553 100644 --- a/modules/video_filter/logo.c +++ b/modules/video_filter/logo.c @@ -382,7 +382,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) { memcpy( p_outpic->p[i_index].p_pixels, p_pic->p[i_index].p_pixels, - p_pic->p[i_index].i_lines * p_pic->p[i_index].i_pitch); + p_pic->p[i_index].i_visible_lines * p_pic->p[i_index].i_pitch); if (p_vout->p_sys->error == 0) diff --git a/modules/video_filter/motionblur.c b/modules/video_filter/motionblur.c index 4d2784fc64..015ba58133 100644 --- a/modules/video_filter/motionblur.c +++ b/modules/video_filter/motionblur.c @@ -293,7 +293,7 @@ static void CopyPicture( vout_thread_t * p_vout, /* There are margins, but with the same width : perfect ! */ p_vout->p_vlc->pf_memcpy( p_dest->p[i].p_pixels, p_src->p[i].p_pixels, - p_src->p[i].i_pitch * p_src->p[i].i_lines ); + p_src->p[i].i_pitch * p_src->p[i].i_visible_lines ); } else { @@ -302,7 +302,7 @@ static void CopyPicture( vout_thread_t * p_vout, uint8_t *p_out = p_dest->p[i].p_pixels; int i_line; - for( i_line = p_src->p[i].i_lines; i_line--; ) + for( i_line = p_src->p[i].i_visible_lines; i_line--; ) { p_vout->p_vlc->pf_memcpy( p_out, p_in, p_src->p[i].i_visible_pitch ); @@ -329,7 +329,7 @@ static void RenderBlur( vout_thread_t *p_vout, picture_t *p_oldpic, p_new = p_newpic->p[i_plane].p_pixels; p_old = p_oldpic->p[i_plane].p_pixels; p_out_end = p_out + p_outpic->p[i_plane].i_pitch * - p_outpic->p[i_plane].i_lines; + p_outpic->p[i_plane].i_visible_lines; while ( p_out < p_out_end ) { p_out_line_end = p_out + p_outpic->p[i_plane].i_visible_pitch; diff --git a/modules/video_filter/transform.c b/modules/video_filter/transform.c index 29577975f3..0e1ec782e0 100644 --- a/modules/video_filter/transform.c +++ b/modules/video_filter/transform.c @@ -293,8 +293,9 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) uint8_t *p_in = p_pic->p[i_index].p_pixels; 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; + uint8_t *p_out_end = p_out + + p_outpic->p[i_index].i_visible_lines * + p_outpic->p[i_index].i_pitch; for( ; p_out < p_out_end ; ) { @@ -302,7 +303,8 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) 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; + p_line_end = p_in + p_pic->p[i_index].i_visible_lines * + i_pitch; for( ; p_in < p_line_end ; ) { @@ -319,7 +321,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ ) { 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 + uint8_t *p_in_end = p_in + p_pic->p[i_index].i_visible_lines * p_pic->p[i_index].i_pitch; uint8_t *p_out = p_outpic->p[i_index].p_pixels; @@ -350,14 +352,16 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) uint8_t *p_in = p_pic->p[i_index].p_pixels; 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; + uint8_t *p_out_end = p_out + + p_outpic->p[i_index].i_visible_lines * + p_outpic->p[i_index].i_pitch; for( ; p_out < p_out_end ; ) { uint8_t *p_in_end; - p_in_end = p_in + p_pic->p[i_index].i_lines * i_pitch; + p_in_end = p_in + p_pic->p[i_index].i_visible_lines * + i_pitch; for( ; p_in < p_in_end ; ) { @@ -376,7 +380,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ ) { 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 + uint8_t *p_in_end = p_in + p_pic->p[i_index].i_visible_lines * p_pic->p[i_index].i_pitch; uint8_t *p_out = p_outpic->p[i_index].p_pixels; @@ -395,7 +399,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) for( i_index = 0 ; i_index < p_pic->i_planes ; i_index++ ) { 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 + uint8_t *p_in_end = p_in + p_pic->p[i_index].i_visible_lines * p_pic->p[i_index].i_pitch; uint8_t *p_out = p_outpic->p[i_index].p_pixels; diff --git a/modules/video_filter/wall.c b/modules/video_filter/wall.c index 0d4a18d90f..28ec64ecbd 100644 --- a/modules/video_filter/wall.c +++ b/modules/video_filter/wall.c @@ -402,7 +402,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) p_in = p_pic->p[i_plane].p_pixels + pi_top_skip[i_plane] + pi_left_skip[i_plane]; - p_in_end = p_in + p_outpic->p[i_plane].i_lines + p_in_end = p_in + p_outpic->p[i_plane].i_visible_lines * p_pic->p[i_plane].i_pitch; p_out = p_outpic->p[i_plane].p_pixels; @@ -428,7 +428,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic ) for( i_plane = 0 ; i_plane < p_pic->i_planes ; i_plane++ ) { pi_top_skip[i_plane] += p_vout->p_sys->pp_vout[ i_vout ].i_height - * p_pic->p[i_plane].i_lines + * p_pic->p[i_plane].i_visible_lines / p_vout->output.i_height * p_pic->p[i_plane].i_pitch; } diff --git a/modules/video_output/aa.c b/modules/video_output/aa.c index b3ceaa1afa..9db0342dd4 100644 --- a/modules/video_output/aa.c +++ b/modules/video_output/aa.c @@ -2,7 +2,7 @@ * vout_aa.c: Aa video output display method for testing purposes ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: aa.c,v 1.3 2003/10/25 00:49:14 sam Exp $ + * $Id$ * * Authors: Sigmund Augdal * @@ -147,6 +147,7 @@ static int Init( vout_thread_t *p_vout ) /* Allocate the picture */ p_pic->p->p_pixels = aa_image( p_vout->p_sys->aa_context ); p_pic->p->i_lines = p_vout->p_sys->i_height; + p_pic->p->i_visible_lines = p_vout->p_sys->i_height; p_pic->p->i_pitch = p_vout->p_sys->i_width; p_pic->p->i_pixel_pitch = 1; p_pic->p->i_visible_pitch = p_vout->p_sys->i_width; diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c index ee0ec51818..6b8d8773e6 100644 --- a/modules/video_output/caca.c +++ b/modules/video_output/caca.c @@ -209,6 +209,7 @@ static int Init( vout_thread_t *p_vout ) /* Allocate the picture */ p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; p_pic->p->i_pitch = 4 * ((p_vout->output.i_width + 15) & ~15); p_pic->p->i_pixel_pitch = 4; p_pic->p->i_visible_pitch = 4 * p_vout->output.i_width; diff --git a/modules/video_output/directx/directx.c b/modules/video_output/directx/directx.c index 50db94c541..eab877d0fe 100644 --- a/modules/video_output/directx/directx.c +++ b/modules/video_output/directx/directx.c @@ -1392,7 +1392,7 @@ static int NewPictureVec( vout_thread_t *p_vout, picture_t *p_pic, { int i,j; for( i = 0; i < front_pic.i_planes; i++ ) - for( j = 0; j < front_pic.p[i].i_lines; j++) + for( j = 0; j < front_pic.p[i].i_visible_lines; j++) memset( front_pic.p[i].p_pixels + j * front_pic.p[i].i_pitch, 127, front_pic.p[i].i_visible_pitch ); @@ -1597,6 +1597,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, case VLC_FOURCC('R','V','3','2'): p_pic->p->p_pixels = p_pic->p_sys->ddsd.lpSurface; p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; p_pic->p->i_pitch = p_pic->p_sys->ddsd.lPitch; switch( p_vout->output.i_chroma ) { @@ -1625,6 +1626,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->Y_PIXELS = p_pic->p_sys->ddsd.lpSurface; p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height; + p_pic->p[Y_PLANE].i_visible_lines = p_vout->output.i_height; p_pic->p[Y_PLANE].i_pitch = p_pic->p_sys->ddsd.lPitch; p_pic->p[Y_PLANE].i_pixel_pitch = 1; p_pic->p[Y_PLANE].i_visible_pitch = p_vout->output.i_width * @@ -1633,6 +1635,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->V_PIXELS = p_pic->Y_PIXELS + p_pic->p[Y_PLANE].i_lines * p_pic->p[Y_PLANE].i_pitch; p_pic->p[V_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[V_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[V_PLANE].i_pitch = p_pic->p[Y_PLANE].i_pitch / 2; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_vout->output.i_width / 2 * @@ -1641,6 +1644,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->U_PIXELS = p_pic->V_PIXELS + p_pic->p[V_PLANE].i_lines * p_pic->p[V_PLANE].i_pitch; p_pic->p[U_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[U_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[U_PLANE].i_pitch = p_pic->p[Y_PLANE].i_pitch / 2; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_vout->output.i_width / 2 * @@ -1653,6 +1657,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->Y_PIXELS = p_pic->p_sys->ddsd.lpSurface; p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height; + p_pic->p[Y_PLANE].i_visible_lines = p_vout->output.i_height; p_pic->p[Y_PLANE].i_pitch = p_pic->p_sys->ddsd.lPitch; p_pic->p[Y_PLANE].i_pixel_pitch = 1; p_pic->p[Y_PLANE].i_visible_pitch = p_vout->output.i_width * @@ -1661,6 +1666,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->U_PIXELS = p_pic->Y_PIXELS + p_pic->p[Y_PLANE].i_lines * p_pic->p[Y_PLANE].i_pitch; p_pic->p[U_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[U_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[U_PLANE].i_pitch = p_pic->p[Y_PLANE].i_pitch / 2; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_vout->output.i_width / 2 * @@ -1669,6 +1675,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->V_PIXELS = p_pic->U_PIXELS + p_pic->p[U_PLANE].i_lines * p_pic->p[U_PLANE].i_pitch; p_pic->p[V_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[V_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[V_PLANE].i_pitch = p_pic->p[Y_PLANE].i_pitch / 2; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_vout->output.i_width / 2 * @@ -1682,6 +1689,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic, p_pic->p->p_pixels = p_pic->p_sys->ddsd.lpSurface; p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; p_pic->p->i_pitch = p_pic->p_sys->ddsd.lPitch; p_pic->p->i_pixel_pitch = 2; p_pic->p->i_visible_pitch = p_vout->output.i_width * diff --git a/modules/video_output/fb.c b/modules/video_output/fb.c index b21fdfc4c5..70eedc9d4d 100644 --- a/modules/video_output/fb.c +++ b/modules/video_output/fb.c @@ -298,6 +298,7 @@ static int Init( vout_thread_t *p_vout ) p_pic->p->p_pixels = p_vout->p_sys->p_video; p_pic->p->i_pixel_pitch = p_vout->p_sys->i_bytes_per_pixel; p_pic->p->i_lines = p_vout->p_sys->var_info.yres; + p_pic->p->i_visible_lines = p_vout->p_sys->var_info.yres; if( p_vout->p_sys->var_info.xres_virtual ) { diff --git a/modules/video_output/ggi.c b/modules/video_output/ggi.c index 01a3ccdfeb..1124919c4b 100644 --- a/modules/video_output/ggi.c +++ b/modules/video_output/ggi.c @@ -190,6 +190,7 @@ static int Init( vout_thread_t *p_vout ) p_pic->p->p_pixels = p_b[ 0 ]->write; p_pic->p->i_pixel_pitch = p_b[ 0 ]->buffer.plb.pixelformat->size / 8; p_pic->p->i_lines = p_vout->p_sys->mode.visible.y; + p_pic->p->i_visible_lines = p_vout->p_sys->mode.visible.y; p_pic->p->i_pitch = p_b[ 0 ]->buffer.plb.stride; diff --git a/modules/video_output/glide.c b/modules/video_output/glide.c index 28b2dd5f9d..ec88455558 100644 --- a/modules/video_output/glide.c +++ b/modules/video_output/glide.c @@ -2,7 +2,7 @@ * glide.c : 3dfx Glide plugin for vlc ***************************************************************************** * Copyright (C) 2000, 2001 VideoLAN - * $Id: glide.c,v 1.3 2003/10/25 00:49:14 sam Exp $ + * $Id$ * * Authors: Samuel Hocevar * @@ -153,6 +153,7 @@ static int Init( vout_thread_t *p_vout ) p_pic->p->p_pixels = p_vout->p_sys->pp_buffer[p_vout->p_sys->i_index]; p_pic->p->i_lines = GLIDE_HEIGHT; + p_pic->p->i_visible_lines = GLIDE_HEIGHT; p_pic->p->i_pitch = p_vout->p_sys->p_buffer_info.strideInBytes; /*1024 * GLIDE_BYTES_PER_PIXEL*/ p_pic->p->i_pixel_pitch = GLIDE_BYTES_PER_PIXEL; diff --git a/modules/video_output/hd1000v.cpp b/modules/video_output/hd1000v.cpp index ceb7e69fae..df8abcf445 100644 --- a/modules/video_output/hd1000v.cpp +++ b/modules/video_output/hd1000v.cpp @@ -213,6 +213,7 @@ static int Init( vout_thread_t *p_vout ) /* Allocate the picture */ p_pic->p->i_lines = p_vout->p_sys->i_height; + p_pic->p->i_visible_lines = p_vout->p_sys->i_height; p_pic->p->i_pitch = p_vout->p_sys->i_width; p_pic->p->i_pixel_pitch = 1; p_pic->p->i_visible_pitch = p_vout->p_sys->i_width; @@ -277,6 +278,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) } p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; p_pic->p->p_pixels = (uint8_t*) p_pic->p_sys->p_image->MapLock(); p_pic->p->i_pitch = p_vout->p_sys->i_screen_depth; p_pic->p->i_visible_pitch = p_pic->p->i_pixel_pitch diff --git a/modules/video_output/mga.c b/modules/video_output/mga.c index dc2d321daf..08288f4f77 100644 --- a/modules/video_output/mga.c +++ b/modules/video_output/mga.c @@ -318,18 +318,21 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->Y_PIXELS = p_pic->p_data; p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height; + p_pic->p[Y_PLANE].i_visible_lines = p_vout->output.i_height; p_pic->p[Y_PLANE].i_pitch = CEIL32( p_vout->output.i_width ); p_pic->p[Y_PLANE].i_pixel_pitch = 1; p_pic->p[Y_PLANE].i_visible_pitch = p_vout->output.i_width; p_pic->U_PIXELS = p_pic->p_data + p_vout->p_sys->mga.frame_size * 2/4; p_pic->p[U_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[U_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[U_PLANE].i_pitch = CEIL32( p_vout->output.i_width ) / 2; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_pic->p[U_PLANE].i_pitch; p_pic->V_PIXELS = p_pic->p_data + p_vout->p_sys->mga.frame_size * 3/4; p_pic->p[V_PLANE].i_lines = p_vout->output.i_height / 2; + p_pic->p[V_PLANE].i_visible_lines = p_vout->output.i_height / 2; p_pic->p[V_PLANE].i_pitch = CEIL32( p_vout->output.i_width ) / 2; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_pic->p[V_PLANE].i_pitch; diff --git a/modules/video_output/opengl.c b/modules/video_output/opengl.c index fbfe1f5333..2f63f3fc26 100644 --- a/modules/video_output/opengl.c +++ b/modules/video_output/opengl.c @@ -275,6 +275,7 @@ static int Init( vout_thread_t *p_vout ) p_vout->p_picture[0].i_planes = 1; p_vout->p_picture[0].p->p_pixels = p_sys->pp_buffer[0]; p_vout->p_picture[0].p->i_lines = p_vout->output.i_height; + p_vout->p_picture[0].p->i_visible_lines = p_vout->output.i_height; p_vout->p_picture[0].p->i_pixel_pitch = i_pixel_pitch; p_vout->p_picture[0].p->i_pitch = p_vout->output.i_width * p_vout->p_picture[0].p->i_pixel_pitch; diff --git a/modules/video_output/qte/qte.cpp b/modules/video_output/qte/qte.cpp index 1be40e803e..af2b388252 100644 --- a/modules/video_output/qte/qte.cpp +++ b/modules/video_output/qte/qte.cpp @@ -2,7 +2,7 @@ * qte.cpp : QT Embedded plugin for vlc ***************************************************************************** * Copyright (C) 1998-2003 VideoLAN - * $Id: qte.cpp,v 1.22 2004/03/03 20:39:52 gbazin Exp $ + * $Id$ * * Authors: Gerald Hansink * Jean-Paul Saman @@ -462,6 +462,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->p->p_pixels = (p_pic->p_sys->pQImage->jumpTable())[0]; p_pic->p->i_pitch = p_pic->p_sys->pQImage->bytesPerLine(); p_pic->p->i_lines = p_vout->output.i_height; + p_pic->p->i_visible_lines = p_vout->output.i_height; p_pic->p->i_visible_pitch = p_pic->p->i_pixel_pitch * p_vout->output.i_width; diff --git a/modules/video_output/sdl.c b/modules/video_output/sdl.c index b0c5108601..5935745640 100644 --- a/modules/video_output/sdl.c +++ b/modules/video_output/sdl.c @@ -814,6 +814,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->p->p_pixels = p_vout->p_sys->p_display->pixels; p_pic->p->i_lines = p_vout->p_sys->p_display->h; + p_pic->p->i_visible_lines = p_vout->p_sys->p_display->h; p_pic->p->i_pitch = p_vout->p_sys->p_display->pitch; p_pic->p->i_visible_pitch = p_pic->p->i_pixel_pitch * p_vout->p_sys->p_display->w; @@ -846,6 +847,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->Y_PIXELS = p_pic->p_sys->p_overlay->pixels[0]; p_pic->p[Y_PLANE].i_lines = p_pic->p_sys->p_overlay->h; + p_pic->p[Y_PLANE].i_visible_lines = p_pic->p_sys->p_overlay->h; p_pic->p[Y_PLANE].i_pitch = p_pic->p_sys->p_overlay->pitches[0]; switch( p_vout->output.i_chroma ) @@ -856,12 +858,14 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->U_PIXELS = p_pic->p_sys->p_overlay->pixels[2]; p_pic->p[U_PLANE].i_lines = p_pic->p_sys->p_overlay->h / 2; + p_pic->p[U_PLANE].i_visible_lines = p_pic->p_sys->p_overlay->h / 2; p_pic->p[U_PLANE].i_pitch = p_pic->p_sys->p_overlay->pitches[2]; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_pic->p_sys->p_overlay->w / 2; p_pic->V_PIXELS = p_pic->p_sys->p_overlay->pixels[1]; p_pic->p[V_PLANE].i_lines = p_pic->p_sys->p_overlay->h / 2; + p_pic->p[V_PLANE].i_visible_lines = p_pic->p_sys->p_overlay->h / 2; p_pic->p[V_PLANE].i_pitch = p_pic->p_sys->p_overlay->pitches[1]; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_pic->p_sys->p_overlay->w / 2; @@ -875,12 +879,14 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) p_pic->U_PIXELS = p_pic->p_sys->p_overlay->pixels[1]; p_pic->p[U_PLANE].i_lines = p_pic->p_sys->p_overlay->h / 2; + p_pic->p[U_PLANE].i_visible_lines = p_pic->p_sys->p_overlay->h / 2; p_pic->p[U_PLANE].i_pitch = p_pic->p_sys->p_overlay->pitches[1]; p_pic->p[U_PLANE].i_pixel_pitch = 1; p_pic->p[U_PLANE].i_visible_pitch = p_pic->p_sys->p_overlay->w / 2; p_pic->V_PIXELS = p_pic->p_sys->p_overlay->pixels[2]; p_pic->p[V_PLANE].i_lines = p_pic->p_sys->p_overlay->h / 2; + p_pic->p[V_PLANE].i_visible_lines = p_pic->p_sys->p_overlay->h / 2; p_pic->p[V_PLANE].i_pitch = p_pic->p_sys->p_overlay->pitches[2]; p_pic->p[V_PLANE].i_pixel_pitch = 1; p_pic->p[V_PLANE].i_visible_pitch = p_pic->p_sys->p_overlay->w / 2; diff --git a/modules/video_output/wingdi.c b/modules/video_output/wingdi.c index c08b9ef1dd..baca573be4 100755 --- a/modules/video_output/wingdi.c +++ b/modules/video_output/wingdi.c @@ -2,7 +2,7 @@ * wingdi.c : Win32 / WinCE GDI video output plugin for vlc ***************************************************************************** * Copyright (C) 2002 VideoLAN - * $Id: wingdi.c,v 1.8 2003/12/04 14:48:24 gbazin Exp $ + * $Id$ * * Authors: Samuel Hocevar * @@ -271,7 +271,7 @@ static void Display( vout_thread_t *p_vout, picture_t *p_pic ) SelectObject( p_vout->p_sys->off_dc, p_vout->p_sys->off_bitmap ); /* Stupid GDI is upside-down */ - i_src_bytes = p_pic->p->i_lines * p_pic->p->i_pitch; + i_src_bytes = p_pic->p->i_visible_lines * p_pic->p->i_pitch; i_dest_bytes = 0; while( i_src_bytes ) diff --git a/modules/video_output/x11/xcommon.c b/modules/video_output/x11/xcommon.c index f7cd860e15..c2cbddcf82 100644 --- a/modules/video_output/x11/xcommon.c +++ b/modules/video_output/x11/xcommon.c @@ -1252,6 +1252,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic ) case VLC_FOURCC('R','V','3','2'): p_pic->p->i_lines = p_pic->p_sys->p_image->height; + p_pic->p->i_visible_lines = p_pic->p_sys->p_image->height; p_pic->p->p_pixels = p_pic->p_sys->p_image->data + p_pic->p_sys->p_image->xoffset; p_pic->p->i_pitch = p_pic->p_sys->p_image->bytes_per_line; diff --git a/modules/visualization/visual/visual.c b/modules/visualization/visual/visual.c index 930306c602..a0570bd976 100644 --- a/modules/visualization/visual/visual.c +++ b/modules/visualization/visual/visual.c @@ -291,7 +291,7 @@ static void DoWork( aout_instance_t *p_aout, aout_filter_t *p_filter, for( i = 0 ; i < p_outpic->i_planes ; i++ ) { memset( p_outpic->p[i].p_pixels, i > 0 ? 0x80 : 0x00, - p_outpic->p[i].i_lines * p_outpic->p[i].i_pitch ); + p_outpic->p[i].i_visible_lines * p_outpic->p[i].i_pitch ); } /* We can now call our visualization effects */ diff --git a/src/video_output/vout_pictures.c b/src/video_output/vout_pictures.c index 9af5cc8427..4611405af6 100644 --- a/src/video_output/vout_pictures.c +++ b/src/video_output/vout_pictures.c @@ -524,9 +524,8 @@ void vout_AllocatePicture( vlc_object_t *p_this, picture_t *p_pic, for( i_index = 1; i_index < p_pic->i_planes; i_index++ ) { - p_pic->p[i_index].p_pixels = p_pic->p[i_index-1].p_pixels - + p_pic->p[i_index-1].i_lines - * p_pic->p[i_index-1].i_pitch; + p_pic->p[i_index].p_pixels = p_pic->p[i_index-1].p_pixels + + p_pic->p[i_index-1].i_lines * p_pic->p[i_index-1].i_pitch; } } @@ -655,12 +654,15 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, { case FOURCC_I411: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 4; p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 4; p_pic->p[ V_PLANE ].i_lines = i_height; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 4; p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 4; p_pic->i_planes = 3; @@ -669,12 +671,15 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_I410: case FOURCC_YVU9: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height / 4; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned / 4; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 4; p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 4; p_pic->p[ V_PLANE ].i_lines = i_height / 4; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned / 4; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 4; p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 4; p_pic->i_planes = 3; @@ -684,12 +689,15 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_I420: case FOURCC_IYUV: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height / 2; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned / 2; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 2; p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 2; p_pic->p[ V_PLANE ].i_lines = i_height / 2; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned / 2; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 2; p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 2; p_pic->i_planes = 3; @@ -697,12 +705,15 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_I422: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 2; p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 2; p_pic->p[ V_PLANE ].i_lines = i_height; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 2; p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 2; p_pic->i_planes = 3; @@ -710,12 +721,15 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_I444: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned; p_pic->p[ U_PLANE ].i_visible_pitch = i_width; p_pic->p[ V_PLANE ].i_lines = i_height; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned; p_pic->p[ V_PLANE ].i_visible_pitch = i_width; p_pic->i_planes = 3; @@ -723,15 +737,19 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_YUVA: p_pic->p[ Y_PLANE ].i_lines = i_height; + p_pic->p[ Y_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned; p_pic->p[ Y_PLANE ].i_visible_pitch = i_width; p_pic->p[ U_PLANE ].i_lines = i_height; + p_pic->p[ U_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ U_PLANE ].i_pitch = i_width_aligned; p_pic->p[ U_PLANE ].i_visible_pitch = i_width; p_pic->p[ V_PLANE ].i_lines = i_height; + p_pic->p[ V_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ V_PLANE ].i_pitch = i_width_aligned; p_pic->p[ V_PLANE ].i_visible_pitch = i_width; p_pic->p[ A_PLANE ].i_lines = i_height; + p_pic->p[ A_PLANE ].i_visible_lines = i_height_aligned; p_pic->p[ A_PLANE ].i_pitch = i_width_aligned; p_pic->p[ A_PLANE ].i_visible_pitch = i_width; p_pic->i_planes = 4; @@ -739,6 +757,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_YUVP: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned; p_pic->p->i_visible_pitch = i_width; p_pic->p->i_pixel_pitch = 8; @@ -747,6 +766,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_Y211: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned; p_pic->p->i_visible_pitch = i_width; p_pic->p->i_pixel_pitch = 4; @@ -756,6 +776,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_UYVY: case FOURCC_YUY2: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned * 2; p_pic->p->i_visible_pitch = i_width * 2; p_pic->p->i_pixel_pitch = 4; @@ -764,6 +785,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_RGB2: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned; p_pic->p->i_visible_pitch = i_width; p_pic->p->i_pixel_pitch = 1; @@ -772,6 +794,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_RV15: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned * 2; p_pic->p->i_visible_pitch = i_width * 2; p_pic->p->i_pixel_pitch = 2; @@ -780,6 +803,7 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_RV16: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned * 2; p_pic->p->i_visible_pitch = i_width * 2; p_pic->p->i_pixel_pitch = 2; @@ -788,23 +812,16 @@ void vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic, case FOURCC_RV24: p_pic->p->i_lines = i_height; - - /* FIXME: Should be 3 here but x11 and our chroma conversion - * routines assume 4. */ -#ifdef WIN32 + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned * 3; p_pic->p->i_visible_pitch = i_width * 3; p_pic->p->i_pixel_pitch = 3; -#else - p_pic->p->i_pitch = i_width_aligned * 4; - p_pic->p->i_visible_pitch = i_width * 4; - p_pic->p->i_pixel_pitch = 4; -#endif p_pic->i_planes = 1; break; case FOURCC_RV32: p_pic->p->i_lines = i_height; + p_pic->p->i_visible_lines = i_height_aligned; p_pic->p->i_pitch = i_width_aligned * 4; p_pic->p->i_visible_pitch = i_width * 4; p_pic->p->i_pixel_pitch = 4; @@ -902,7 +919,7 @@ static void CopyPicture( vout_thread_t * p_vout, /* There are margins, but with the same width : perfect ! */ p_vout->p_vlc->pf_memcpy( p_dest->p[i].p_pixels, p_src->p[i].p_pixels, - p_src->p[i].i_pitch * p_src->p[i].i_lines ); + p_src->p[i].i_pitch * p_src->p[i].i_visible_lines ); } else { @@ -911,7 +928,7 @@ static void CopyPicture( vout_thread_t * p_vout, uint8_t *p_out = p_dest->p[i].p_pixels; int i_line; - for( i_line = p_src->p[i].i_lines; i_line--; ) + for( i_line = p_src->p[i].i_visible_lines; i_line--; ) { p_vout->p_vlc->pf_memcpy( p_out, p_in, p_src->p[i].i_visible_pitch );