unsigned option, const char *psz_value );
+/** option values for libvlc_video_{get,set}_adjust_{int,float,bool} */
+enum libvlc_video_adjust_option_t {
+ libvlc_adjust_Enable = 0,
+ libvlc_adjust_Contrast,
+ libvlc_adjust_Brightness,
+ libvlc_adjust_Hue,
+ libvlc_adjust_Saturation,
+ libvlc_adjust_Gamma,
+};
+
+/**
+ * Get integer adjust option.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option adjust option to get, values of libvlc_video_adjust_option_t
+ */
+VLC_PUBLIC_API int libvlc_video_get_adjust_int( libvlc_media_player_t *p_mi,
+ unsigned option );
+
+/**
+ * Set adjust option as integer. Options that take a different type value
+ * are ignored.
+ * Passing libvlc_adjust_enable as option value has the side effect of
+ * starting (arg !0) or stopping (arg 0) the adjust filter.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option adust option to set, values of libvlc_video_adjust_option_t
+ * \param value adjust option value
+ */
+VLC_PUBLIC_API void libvlc_video_set_adjust_int( libvlc_media_player_t *p_mi,
+ unsigned option, int value );
+
+/**
+ * Get float adjust option.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option adjust option to get, values of libvlc_video_adjust_option_t
+ */
+VLC_PUBLIC_API float libvlc_video_get_adjust_float( libvlc_media_player_t *p_mi,
+ unsigned option );
+
+/**
+ * Set adjust option as float. Options that take a different type value
+ * are ignored.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option adust option to set, values of libvlc_video_adjust_option_t
+ * \param value adjust option value
+ */
+VLC_PUBLIC_API void libvlc_video_set_adjust_float( libvlc_media_player_t *p_mi,
+ unsigned option, float value );
+
/** @} video */
/** \defgroup libvlc_audio LibVLC audio controls
var_Create (mp, "logo-opacity", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
var_Create (mp, "logo-position", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
+ var_Create (mp, "contrast", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
+ var_Create (mp, "brightness", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
+ var_Create (mp, "hue", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
+ var_Create (mp, "saturation", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
+ var_Create (mp, "gamma", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT);
+
/* Audio */
var_Create (mp, "aout", VLC_VAR_STRING | VLC_VAR_DOINHERIT);
var_Create (mp, "volume-muted", VLC_VAR_BOOL);
}
+static void
+set_float( libvlc_media_player_t *p_mi, const char *restrict name,
+ const opt_t *restrict opt, float value )
+{
+ if( !opt ) return;
+
+ if( opt->type != VLC_VAR_FLOAT )
+ {
+ libvlc_printerr( "Invalid argument to %s in %s", name, "set float" );
+ return;
+ }
+
+ var_SetFloat( p_mi, opt->name, value );
+
+ vlc_object_t *object = get_object( p_mi, name );
+ if( object )
+ {
+ var_SetFloat(object, opt->name, value );
+ vlc_object_release( object );
+ }
+}
+
+
+static float
+get_float( libvlc_media_player_t *p_mi, const char *restrict name,
+ const opt_t *restrict opt )
+{
+ if( !opt ) return 0.0;
+
+
+ if( opt->type != VLC_VAR_FLOAT )
+ {
+ libvlc_printerr( "Invalid argument to %s in %s", name, "get float" );
+ return 0.0;
+ }
+
+ return var_GetFloat( p_mi, opt->name );
+}
+
+
static void
set_string( libvlc_media_player_t *p_mi, const char *restrict name,
const opt_t *restrict opt, const char *restrict psz_value )
}
+/* adjust module support */
+
+
+static opt_t *
+adjust_option_bynumber( unsigned option )
+{
+ static const opt_t optlist[] =
+ {
+ { "adjust", 0 },
+ { "contrast", VLC_VAR_FLOAT },
+ { "brightness", VLC_VAR_FLOAT },
+ { "hue", VLC_VAR_INTEGER },
+ { "saturation", VLC_VAR_FLOAT },
+ { "gamma", VLC_VAR_FLOAT },
+ };
+ enum { num_opts = sizeof(optlist) / sizeof(*optlist) };
+
+ opt_t *r = option < num_opts ? optlist+option : NULL;
+ if( !r )
+ libvlc_printerr( "Unknown adjust option" );
+ return r;
+}
+
+
+void libvlc_video_set_adjust_int( libvlc_media_player_t *p_mi,
+ unsigned option, int value )
+{
+ set_int( p_mi, "adjust", adjust_option_bynumber(option), value );
+}
+
+
+int libvlc_video_get_adjust_int( libvlc_media_player_t *p_mi,
+ unsigned option )
+{
+ return get_int( p_mi, "adjust", adjust_option_bynumber(option) );
+}
+
+
+void libvlc_video_set_adjust_float( libvlc_media_player_t *p_mi,
+ unsigned option, float value )
+{
+ set_float( p_mi, "adjust", adjust_option_bynumber(option), value );
+}
+
+
+float libvlc_video_get_adjust_float( libvlc_media_player_t *p_mi,
+ unsigned option )
+{
+ return get_float( p_mi, "adjust", adjust_option_bynumber(option) );
+}
libvlc_toggle_fullscreen
libvlc_toggle_teletext
libvlc_track_description_release
+libvlc_video_get_adjust_bool
+libvlc_video_get_adjust_float
+libvlc_video_get_adjust_int
libvlc_video_get_aspect_ratio
libvlc_video_get_chapter_description
libvlc_video_get_crop_geometry
libvlc_video_get_track_count
libvlc_video_get_track_description
libvlc_video_get_width
+libvlc_video_set_adjust_bool
+libvlc_video_set_adjust_float
+libvlc_video_set_adjust_int
libvlc_video_set_aspect_ratio
libvlc_video_set_crop_geometry
libvlc_video_set_deinterlace