From: Cyril Mathé Date: Fri, 29 May 2009 12:25:45 +0000 (+0200) Subject: libvlc API: Add Deinterlace Filter to libvlc in video.c X-Git-Tag: 1.1.0-ff~5608 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=3f2f2e788242e8219c6ce9ab573b8cc2ebc71f9f;p=vlc libvlc API: Add Deinterlace Filter to libvlc in video.c - libvlc_video_enable_deinterlace(libvlc_media_player_t *p_mi, int b_enable, const char *psz_mode, libvlc_exception_t *p_e) - b_enable: boolean to enable or disable deinterlace filter - psz_mode: char to define the deinterlace mode (blend, linear...) Signed-off-by: Laurent Aimar --- diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h index 4694698088..4b811a09f0 100644 --- a/include/vlc/libvlc_media_player.h +++ b/include/vlc/libvlc_media_player.h @@ -714,6 +714,18 @@ VLC_PUBLIC_API void libvlc_video_set_track( libvlc_media_player_t *, int, libvlc */ VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, const char *,unsigned int, unsigned int, libvlc_exception_t * ); +/** + * Enable or disable deinterlace filter + * + * \param p_mi libvlc media player + * \param b_enable boolean to enable or disable deinterlace filter + * \param psz_mode type of deinterlace filter to use + * \param p_e an initialized exception pointer + */ +VLC_PUBLIC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *, + int , const char *, + libvlc_exception_t *); + /** @} video */ /** \defgroup libvlc_audio libvlc_audio diff --git a/src/control/video.c b/src/control/video.c index 3b79f555f9..de7614e45b 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -589,3 +589,42 @@ end: var_FreeList( &val_list, NULL ); vlc_object_release( p_input_thread ); } + +/****************************************************************************** + * libvlc_video_set_deinterlace : enable deinterlace + *****************************************************************************/ +void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int b_enable, + const char *psz_mode, + libvlc_exception_t *p_e ) +{ + vout_thread_t *p_vout = GetVout( p_mi, p_e ); + + if( p_vout ) + { + libvlc_exception_raise( p_e, "Unable to get video output" ); + return; + } + + if( b_enable ) + { + /* be sure that the filter name given is supported */ + if( !strcmp(psz_mode, "blend") || !strcmp(psz_mode, "bob") + || !strcmp(psz_mode, "discard") || !strcmp(psz_mode, "linear") + || !strcmp(psz_mode, "mean") || !strcmp(psz_mode, "x") ) + { + /* set deinterlace filter chosen */ + var_SetString( p_vout, "deinterlace", psz_mode ); + } + else + { + libvlc_exception_raise( p_e, "Unsuported or bad deinterlace filter name" ); + } + } + else + { + /* disable deinterlace filter */ + var_SetString( p_vout, "deinterlace", "" ); + } + + vlc_object_release( p_vout ); +} diff --git a/src/libvlc.sym b/src/libvlc.sym index e65211622f..b8ae1287fa 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -191,6 +191,7 @@ libvlc_video_get_track_description libvlc_video_get_width libvlc_video_set_aspect_ratio libvlc_video_set_crop_geometry +libvlc_video_set_deinterlace libvlc_video_set_scale libvlc_video_set_spu libvlc_video_set_subtitle_file