#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
-#include "vlc_filter.h"
+#include <vlc_filter.h>
#include "filter_picture.h"
/*****************************************************************************
#define FILTER_PREFIX "motiondetect-"
-vlc_module_begin();
- set_description( N_("Motion detect video filter") );
- set_shortname( N_( "Motion Detect" ));
- set_capability( "video filter2", 0 );
- set_category( CAT_VIDEO );
- set_subcategory( SUBCAT_VIDEO_VFILTER );
+vlc_module_begin ()
+ set_description( N_("Motion detect video filter") )
+ set_shortname( N_( "Motion Detect" ))
+ set_category( CAT_VIDEO )
+ set_subcategory( SUBCAT_VIDEO_VFILTER )
+ set_capability( "video filter2", 0 )
- add_shortcut( "motion" );
- set_callbacks( Create, Destroy );
-vlc_module_end();
+ add_shortcut( "motion" )
+ set_callbacks( Create, Destroy )
+vlc_module_end ()
/*****************************************************************************
break;
default:
- msg_Err( p_filter, "Unsupported input chroma (%4s)",
+ msg_Err( p_filter, "Unsupported input chroma (%4.4s)",
(char*)&(p_fmt->i_chroma) );
return VLC_EGENERIC;
}
return VLC_ENOMEM;
p_sys->b_old = false;
- p_sys->p_old = picture_New( p_fmt->i_chroma,
- p_fmt->i_width, p_fmt->i_height, 0 );
+ p_sys->p_old = picture_NewFromFormat( p_fmt );
p_sys->p_buf = calloc( p_fmt->i_width * p_fmt->i_height, sizeof(*p_sys->p_buf) );
p_sys->p_buf2 = calloc( p_fmt->i_width * p_fmt->i_height, sizeof(*p_sys->p_buf) );
picture_t *p_outpic;
- const uint8_t *p_inpix = p_inpic->p[Y_PLANE].p_pixels;
- const int i_src_pitch = p_inpic->p[Y_PLANE].i_pitch;
-
uint8_t *p_oldpix = p_sys->p_old->p[Y_PLANE].p_pixels;
const int i_old_pitch = p_sys->p_old->p[Y_PLANE].i_pitch;
uint32_t *p_buf = p_sys->p_buf;
if( !p_inpic )
return NULL;
- if( !p_sys->b_old )
- {
- picture_Copy( p_sys->p_old, p_inpic );
- p_sys->b_old = true;
- return p_inpic;
- }
+ const uint8_t *p_inpix = p_inpic->p[Y_PLANE].p_pixels;
+ const int i_src_pitch = p_inpic->p[Y_PLANE].i_pitch;
p_outpic = filter_NewPicture( p_filter );
if( !p_outpic )
}
picture_Copy( p_outpic, p_inpic );
+ if( !p_sys->b_old )
+ {
+ picture_Copy( p_sys->p_old, p_inpic );
+ picture_Release( p_inpic );
+ p_sys->b_old = true;
+ return p_outpic;
+ }
+
/**
* Substract Y planes
*/
int i_chroma_dy;
switch( p_inpic->format.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
i_chroma_dx = 2;
i_chroma_dy = 2;
break;
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
i_chroma_dx = 2;
i_chroma_dy = 1;
break;
if( GetPackedYuvOffsets( p_fmt->i_chroma,
&i_y_offset, &i_u_offset, &i_v_offset ) )
{
- msg_Warn( p_filter, "Unsupported input chroma (%4s)",
+ msg_Warn( p_filter, "Unsupported input chroma (%4.4s)",
(char*)&p_fmt->i_chroma );
return p_inpic;
}