[FFmpeg-devel] [PATCH] avcodec/pngenc: cast double to integer type to avoid problems with some AV_WB32() implementations

Ronald S. Bultje rsbultje at gmail.com
Mon Mar 2 02:07:46 CET 2015


Hi,

On Sun, Mar 1, 2015 at 7:38 PM, Michael Niedermayer <michaelni at gmx.at>
wrote:

> alternatively lrint(f)() could be used
> or various other options
>
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavcodec/pngenc.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
> index 9fd8eef..3a94366 100644
> --- a/libavcodec/pngenc.c
> +++ b/libavcodec/pngenc.c
> @@ -231,7 +231,7 @@ static int png_write_row(PNGEncContext *s, const
> uint8_t *data, int size)
>      return 0;
>  }
>
> -#define AV_WB32_PNG(buf, n) (AV_WB32(buf, round((n) * 100000)))
> +#define AV_WB32_PNG(buf, n) (AV_WB32(buf, (unsigned int)round((n) *
> 100000))
>

The typical solution here is to use lrint(f), and that is the C-recommended
way of converting a double to a integer(ish). So I'd prefer we use that
instead of this sort of frankenversion of the same concept.

Ronald


More information about the ffmpeg-devel mailing list