[vlc-devel] [PATCH] Correct scroll effect and clearing in TV+Graphics decoder
    Jean-Baptiste Kempf 
    jb at videolan.org
       
    Wed Aug  3 15:32:38 CEST 2011
    
    
  
Thanks a lot for your work.
First quick pass of review:
On Tue, Aug 02, 2011 at 08:55:41PM +0100, Kym Greenshields wrote :
>  /* The screen size */
> -#define CDG_SCREEN_WIDTH 300u
> -#define CDG_SCREEN_HEIGHT 216u
> +#define CDG_SCREEN_WIDTH 300
> +#define CDG_SCREEN_HEIGHT 216
Why this change?
>  /* The border of the screen size */
> -#define CDG_SCREEN_BORDER_WIDTH 6u
> -#define CDG_SCREEN_BORDER_HEIGHT 12u
> +#define CDG_SCREEN_BORDER_WIDTH 6
> +#define CDG_SCREEN_BORDER_HEIGHT 12
Idem?
> +#define CDG_TILES_WIDE		50
> +#define CDG_TILES_HIGH		18
No tabs, in source code.
>  struct decoder_sys_t
>  {
>      uint8_t  color[16][3];
> @@ -59,6 +62,7 @@ struct decoder_sys_t
>      uint8_t  *p_screen;
>  
>      int      i_packet;
> +	int		 i_border_color;
Idem.
> +	/* Only update the border if it differs from this one */
> +	if ( p_cdg->i_border_color != i_color ) {
> +		ScreenFill( p_cdg,   0,   0,
> +                CDG_SCREEN_WIDTH, CDG_SCREEN_BORDER_HEIGHT, p_cdg->i_border_color );
> +		ScreenFill( p_cdg,   0, CDG_SCREEN_HEIGHT-CDG_SCREEN_BORDER_HEIGHT,
> +                CDG_SCREEN_WIDTH, CDG_SCREEN_BORDER_HEIGHT, p_cdg->i_border_color );
> +		ScreenFill( p_cdg,   0, CDG_SCREEN_BORDER_HEIGHT,
> +                CDG_SCREEN_BORDER_WIDTH, CDG_SCREEN_HEIGHT-CDG_SCREEN_BORDER_HEIGHT, p_cdg->i_border_color );
> +		ScreenFill( p_cdg,   CDG_SCREEN_WIDTH-CDG_SCREEN_BORDER_WIDTH, CDG_SCREEN_BORDER_HEIGHT,
> +                CDG_SCREEN_BORDER_WIDTH, CDG_SCREEN_HEIGHT-CDG_SCREEN_BORDER_HEIGHT, p_cdg->i_border_color );
> +    }
Is this related to the main patch? Couldn't this change be in a separate
patch?
> -    sy = (p_data[2] & 0x1f)*12;
> -    sx = (p_data[3] & 0x3f)*6;
> +	sy = (p_data[2] & 0x1f);
> +	sx = (p_data[3] & 0x3f);
> +	
> +	if ( sy >= CDG_TILES_HIGH ) return 0;
> +	if ( sx >= CDG_TILES_WIDE ) return 0;
> +	
> +    sy *= CDG_SCREEN_BORDER_HEIGHT;
> +    sx *= CDG_SCREEN_BORDER_WIDTH;
>  
>      for( y = 0; y < 12; y++ )
>      {
> @@ -272,6 +294,7 @@ static int DecodeTileBlock( decoder_sys_t *p_cdg, const uint8_t *p_data, int doX
>  
>  static int DecodeScroll( decoder_sys_t *p_cdg, const uint8_t *p_data, int b_copy )
>  {
> +
Unrelated change.
>      /* Copy back */
> -    for( unsigned y = 0; y < CDG_SCREEN_HEIGHT; y++ )
> +    for( int y = 0; y < CDG_SCREEN_HEIGHT; y++ )
Why?
> -        for( unsigned x = 0; x < CDG_SCREEN_WIDTH; x++ )
> +        for( int x = 0; x < CDG_SCREEN_WIDTH; x++ )
idem.
Best Regards,
-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
    
    
More information about the vlc-devel
mailing list