@ -63,19 +63,19 @@ static const AVOption hue_options[] = {
AVFILTER_DEFINE_CLASS ( hue ) ;
static av_cold int init ( AVFilterContext * ctx , const char * args )
static inline int set_options ( AVFilterContext * ctx , const char * args )
{
HueContext * hue = ctx - > priv ;
int n , ret ;
char c1 = 0 , c2 = 0 ;
char * equal ;
hue - > class = & hue_class ;
av_opt_set_defaults ( hue ) ;
if ( args ) {
/* named options syntax */
if ( equal = strchr ( args , ' = ' ) ) {
hue - > hue = - FLT_MAX ;
hue - > hue_deg = - FLT_MAX ;
if ( ( ret = av_set_options_string ( hue , args , " = " , " : " ) ) < 0 )
return ret ;
if ( hue - > hue ! = - FLT_MAX & & hue - > hue_deg ! = - FLT_MAX ) {
@ -103,6 +103,20 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
}
}
return 0 ;
}
static av_cold int init ( AVFilterContext * ctx , const char * args )
{
HueContext * hue = ctx - > priv ;
int ret ;
hue - > class = & hue_class ;
av_opt_set_defaults ( hue ) ;
if ( ( ret = set_options ( ctx , args ) ) < 0 )
return ret ;
if ( hue - > saturation = = - FLT_MAX )
hue - > hue = SAT_DEFAULT_VAL ;
if ( hue - > hue = = - FLT_MAX )
@ -223,6 +237,28 @@ static int draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
return ff_draw_slice ( inlink - > dst - > outputs [ 0 ] , y , h , slice_dir ) ;
}
static int process_command ( AVFilterContext * ctx , const char * cmd , const char * args ,
char * res , int res_len , int flags )
{
HueContext * hue = ctx - > priv ;
int ret ;
if ( ! strcmp ( cmd , " reinit " ) ) {
if ( ( ret = set_options ( ctx , args ) ) < 0 )
return ret ;
if ( hue - > hue_deg ! = - FLT_MAX )
/* Convert angle from degrees to radians */
hue - > hue = hue - > hue_deg * M_PI / 180 ;
hue - > hue_sin = rint ( sin ( hue - > hue ) * ( 1 < < 16 ) * hue - > saturation ) ;
hue - > hue_cos = rint ( cos ( hue - > hue ) * ( 1 < < 16 ) * hue - > saturation ) ;
} else
return AVERROR ( ENOSYS ) ;
return 0 ;
}
AVFilter avfilter_vf_hue = {
. name = " hue " ,
. description = NULL_IF_CONFIG_SMALL ( " Adjust the hue and saturation of the input video. " ) ,
@ -232,6 +268,7 @@ AVFilter avfilter_vf_hue = {
. init = init ,
. uninit = uninit ,
. query_formats = query_formats ,
. process_command = process_command ,
. inputs = ( const AVFilterPad [ ] ) {
{