• Ganesh Ajjanagadde's avatar
    avutil/common: add av_rint64_clip · 6f520ce1
    Ganesh Ajjanagadde authored
    The rationale for this function is reflected in the documentation for
    it, and is copied here:
    
    Clip a double value into the long long amin-amax range.
    This function is needed because conversion of floating point to integers when
    it does not fit in the integer's representation does not necessarily saturate
    correctly (usually converted to a cvttsd2si on x86) which saturates numbers
    > INT64_MAX to INT64_MIN. The standard marks such conversions as undefined
    behavior, allowing this sort of mathematically bogus conversions. This provides
    a safe alternative that is slower obviously but assures safety and better
    mathematical behavior.
    API:
    @param a value to clip
    @param amin minimum value of the clip range
    @param amax maximum value of the clip range
    @return clipped value
    
    Note that a priori if one can guarantee from the calling side that the
    double is in range, it is safe to simply do an explicit/implicit cast,
    and that will be far faster. However, otherwise this function should be
    used.
    
    avutil minor version is bumped.
    Reviewed-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
    Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
    6f520ce1
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_qsv.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...