#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
+#include <vlc_cpu.h>
#include "filter_picture.h"
vlc_module_begin ()
set_description( N_("Video post processing filter") )
set_shortname( N_("Postproc" ) )
- add_shortcut( "postprocess" ) /* name is "postproc" */
- add_shortcut( "pp" )
+ add_shortcut( "postprocess", "pp" ) /* name is "postproc" */
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_VFILTER )
i_flags |= PP_FORMAT_420;
break;
default:
- msg_Err( p_filter, "Unsupported input chroma (%4s)",
+ msg_Err( p_filter, "Unsupported input chroma (%4.4s)",
(char*)&p_filter->fmt_in.video.i_chroma );
return VLC_EGENERIC;
}
config_ChainParse( p_filter, FILTER_PREFIX, ppsz_filter_options,
p_filter->p_cfg );
- var_Create( p_filter, FILTER_PREFIX "q",
- VLC_VAR_INTEGER | VLC_VAR_HASCHOICE | VLC_VAR_DOINHERIT |
- VLC_VAR_ISCOMMAND );
- /* For some obscure reason the VLC_VAR_ISCOMMAND isn't taken into account
- in during var_Create */
- var_Change( p_filter, FILTER_PREFIX "q", VLC_VAR_SETISCOMMAND, NULL, NULL );
+ var_Create( p_filter, FILTER_PREFIX "q", VLC_VAR_INTEGER |
+ VLC_VAR_HASCHOICE | VLC_VAR_DOINHERIT | VLC_VAR_ISCOMMAND );
text.psz_string = _("Post processing");
var_Change( p_filter, FILTER_PREFIX "q", VLC_VAR_SETTEXT, &text, NULL );
{
msg_Err( p_filter, "Error while creating post processing mode." );
free( val.psz_string );
- var_Destroy( p_filter, FILTER_PREFIX "q" );
pp_free_context( p_sys->pp_context );
free( p_sys );
return VLC_EGENERIC;
int i_plane;
int i_src_stride[3], i_dst_stride[3];
+ picture_t *p_outpic = filter_NewPicture( p_filter );
+ if( !p_outpic )
+ {
+ picture_Release( p_pic );
+ return NULL;
+ }
+
/* Lock to prevent issues if pp_mode is changed */
vlc_mutex_lock( &p_sys->lock );
if( !p_sys->pp_mode )
{
vlc_mutex_unlock( &p_sys->lock );
- return p_pic;
+ picture_CopyPixels( p_outpic, p_pic );
+ return CopyInfoAndRelease( p_outpic, p_pic );
}
- picture_t *p_outpic = filter_NewPicture( p_filter );
- if( !p_outpic )
- {
- picture_Release( p_pic );
- vlc_mutex_unlock( &p_sys->lock );
- return NULL;
- }
for( i_plane = 0; i_plane < p_pic->i_planes; i_plane++ )
{