vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Feb 26 20:48:00 2020 +0200| [8143eb5e518ee9c2ec2e9360188f3d9523599fc8] | committer: Rémi Denis-Courmont
adjust: avoid <vlc_atomic.h> and relax ordering > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8143eb5e518ee9c2ec2e9360188f3d9523599fc8 --- modules/video_filter/adjust.c | 61 +++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/modules/video_filter/adjust.c b/modules/video_filter/adjust.c index 000f84386e..c48d9b5ec3 100644 --- a/modules/video_filter/adjust.c +++ b/modules/video_filter/adjust.c @@ -34,7 +34,6 @@ #include <stdatomic.h> #include <vlc_common.h> -#include <vlc_atomic.h> #include <vlc_plugin.h> #include <vlc_filter.h> #include <vlc_picture.h> @@ -110,11 +109,11 @@ static const char *const ppsz_filter_options[] = { *****************************************************************************/ typedef struct { - vlc_atomic_float f_contrast; - vlc_atomic_float f_brightness; - vlc_atomic_float f_hue; - vlc_atomic_float f_saturation; - vlc_atomic_float f_gamma; + _Atomic float f_contrast; + _Atomic float f_brightness; + _Atomic float f_hue; + _Atomic float f_saturation; + _Atomic float f_gamma; atomic_bool b_brightness_threshold; int (*pf_process_sat_hue)( picture_t *, picture_t *, int, int, int, int, int ); @@ -125,9 +124,9 @@ typedef struct static int FloatCallback( vlc_object_t *obj, char const *varname, vlc_value_t oldval, vlc_value_t newval, void *data ) { - vlc_atomic_float *atom = data; + _Atomic float *atom = data; - vlc_atomic_store_float( atom, newval.f_float ); + atomic_store_explicit( atom, newval.f_float, memory_order_relaxed ); (void) obj; (void) varname; (void) oldval; return VLC_SUCCESS; } @@ -137,7 +136,7 @@ static int BoolCallback( vlc_object_t *obj, char const *varname, { atomic_bool *atom = data; - atomic_store( atom, newval.b_bool ); + atomic_store_explicit( atom, newval.b_bool, memory_order_relaxed ); (void) obj; (void) varname; (void) oldval; return VLC_SUCCESS; } @@ -198,16 +197,15 @@ static int Create( vlc_object_t *p_this ) * adjust{name=value} syntax */ config_ChainParse( p_filter, "", ppsz_filter_options, p_filter->p_cfg ); - vlc_atomic_init_float( &p_sys->f_contrast, - var_CreateGetFloatCommand( p_filter, "contrast" ) ); - vlc_atomic_init_float( &p_sys->f_brightness, - var_CreateGetFloatCommand( p_filter, "brightness" ) ); - vlc_atomic_init_float( &p_sys->f_hue, - var_CreateGetFloatCommand( p_filter, "hue" ) ); - vlc_atomic_init_float( &p_sys->f_saturation, - var_CreateGetFloatCommand( p_filter, "saturation" ) ); - vlc_atomic_init_float( &p_sys->f_gamma, - var_CreateGetFloatCommand( p_filter, "gamma" ) ); + atomic_init( &p_sys->f_contrast, + var_CreateGetFloatCommand( p_filter, "contrast" ) ); + atomic_init( &p_sys->f_brightness, + var_CreateGetFloatCommand( p_filter, "brightness" ) ); + atomic_init( &p_sys->f_hue, var_CreateGetFloatCommand( p_filter, "hue" ) ); + atomic_init( &p_sys->f_saturation, + var_CreateGetFloatCommand( p_filter, "saturation" ) ); + atomic_init( &p_sys->f_gamma, + var_CreateGetFloatCommand( p_filter, "gamma" ) ); atomic_init( &p_sys->b_brightness_threshold, var_CreateGetBoolCommand( p_filter, "brightness-threshold" ) ); @@ -289,16 +287,17 @@ static picture_t *FilterPlanar( filter_t *p_filter, picture_t *p_pic ) const unsigned i_mid = i_range >> 1; /* Get variables */ - int32_t i_cont = lroundf( vlc_atomic_load_float( &p_sys->f_contrast ) * f_max ); - int32_t i_lum = lroundf( (vlc_atomic_load_float( &p_sys->f_brightness ) - 1.f) * f_max ); - float f_hue = vlc_atomic_load_float( &p_sys->f_hue ) * (float)(M_PI / 180.); - int i_sat = (int)( vlc_atomic_load_float( &p_sys->f_saturation ) * f_range ); - float f_gamma = 1.f / vlc_atomic_load_float( &p_sys->f_gamma ); + int32_t i_cont = lroundf( atomic_load_explicit( &p_sys->f_contrast, memory_order_relaxed ) * f_max ); + int32_t i_lum = lroundf( (atomic_load_explicit( &p_sys->f_brightness, memory_order_relaxed ) - 1.f) * f_max ); + float f_hue = atomic_load_explicit( &p_sys->f_hue, memory_order_relaxed ) * (float)(M_PI / 180.); + int i_sat = (int)( atomic_load_explicit( &p_sys->f_saturation, memory_order_relaxed ) * f_range ); + float f_gamma = 1.f / atomic_load_explicit( &p_sys->f_gamma, memory_order_relaxed ); /* * Threshold mode drops out everything about luma, contrast and gamma. */ - if( !atomic_load( &p_sys->b_brightness_threshold ) ) + if( !atomic_load_explicit( &p_sys->b_brightness_threshold, + memory_order_relaxed ) ) { /* Contrast is a fast but kludged function, so I put this gap to be @@ -486,16 +485,16 @@ static picture_t *FilterPacked( filter_t *p_filter, picture_t *p_pic ) } /* Get variables */ - i_cont = (int)( vlc_atomic_load_float( &p_sys->f_contrast ) * 255 ); - i_lum = (int)( (vlc_atomic_load_float( &p_sys->f_brightness ) - 1.0)*255 ); - f_hue = vlc_atomic_load_float( &p_sys->f_hue ) * (float)(M_PI / 180.); - i_sat = (int)( vlc_atomic_load_float( &p_sys->f_saturation ) * 256 ); - f_gamma = 1.0 / vlc_atomic_load_float( &p_sys->f_gamma ); + i_cont = (int)( atomic_load_explicit( &p_sys->f_contrast, memory_order_relaxed ) * 255 ); + i_lum = (int)( (atomic_load_explicit( &p_sys->f_brightness, memory_order_relaxed ) - 1.0)*255 ); + f_hue = atomic_load_explicit( &p_sys->f_hue, memory_order_relaxed ) * (float)(M_PI / 180.); + i_sat = (int)( atomic_load_explicit( &p_sys->f_saturation, memory_order_relaxed ) * 256 ); + f_gamma = 1.0 / atomic_load_explicit( &p_sys->f_gamma, memory_order_relaxed ); /* * Threshold mode drops out everything about luma, contrast and gamma. */ - if( !atomic_load( &p_sys->b_brightness_threshold ) ) + if( !atomic_load_explicit( &p_sys->b_brightness_threshold, memory_order_relaxed ) ) { /* Contrast is a fast but kludged function, so I put this gap to be _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
