/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <stdlib.h> /* malloc(), free() */
-#include <string.h>
#include <math.h> /* sin(), cos() */
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
-#include <vlc/decoder.h>
#include "vlc_filter.h"
#include "vlc_image.h"
*****************************************************************************/
vlc_module_begin();
set_description( _("Psychedelic video filter") );
- set_shortname( N_( "Psychedelic" ));
+ set_shortname( _( "Psychedelic" ));
set_capability( "video filter2", 0 );
set_category( CAT_VIDEO );
- set_subcategory( SUBCAT_VIDEO_VFILTER2 );
+ set_subcategory( SUBCAT_VIDEO_VFILTER );
add_shortcut( "psychedelic" );
set_callbacks( Create, Destroy );
if( p_filter->p_sys->p_image )
image_HandlerDelete( p_filter->p_sys->p_image );
+ p_filter->p_sys->p_image = NULL;
free( p_filter->p_sys );
}
int x,y;
uint8_t u,v;
- video_format_t fmt_out = {0};
picture_t *p_converted;
+ video_format_t fmt_out;
+ memset( &fmt_out, 0, sizeof(video_format_t) );
+ fmt_out.p_palette = NULL;
if( !p_pic ) return NULL;
v = p_filter->p_sys->v;
for( y = 0; y<p_outpic->p[U_PLANE].i_lines; y++)
{
- memset( p_outpic->p[U_PLANE].p_pixels+y*p_outpic->p[U_PLANE].i_pitch,
+ p_filter->p_libvlc->pf_memset(
+ p_outpic->p[U_PLANE].p_pixels+y*p_outpic->p[U_PLANE].i_pitch,
u, p_outpic->p[U_PLANE].i_pitch );
- memset( p_outpic->p[V_PLANE].p_pixels+y*p_outpic->p[V_PLANE].i_pitch,
+ p_filter->p_libvlc->pf_memset(
+ p_outpic->p[V_PLANE].p_pixels+y*p_outpic->p[V_PLANE].i_pitch,
v, p_outpic->p[V_PLANE].i_pitch );
if( v == 0 && u != 0 )
u --;
}
/* luminance */
- p_filter->p_vlc->pf_memcpy(
+ p_filter->p_libvlc->pf_memcpy(
p_outpic->p[Y_PLANE].p_pixels, p_pic->p[Y_PLANE].p_pixels,
p_outpic->p[Y_PLANE].i_lines * p_outpic->p[Y_PLANE].i_pitch );
-
/* image visualization */
fmt_out = p_filter->fmt_out.video;
fmt_out.i_width = p_filter->fmt_out.video.i_width*p_filter->p_sys->scale/150;
p_converted = image_Convert( p_filter->p_sys->p_image, p_pic,
&(p_pic->format), &fmt_out );
+ if( p_converted )
+ {
#define copyimage( plane, b ) \
for( y=0; y<p_converted->p[plane].i_visible_lines; y++) { \
for( x=0; x<p_converted->p[plane].i_visible_pitch; x++) { \
#undef copyimage
p_converted->pf_release( p_converted );
+ }
+ else
+ {
+ msg_Err( p_filter, "Image scaling failed miserably." );
+ }
p_filter->p_sys->x += p_filter->p_sys->xinc;
p_filter->p_sys->y += p_filter->p_sys->yinc;