[FFmpeg-devel] [PATCH v2 1/4] avfilter/af_volumedetect.c: Move logdb function

Rémi Denis-Courmont remi at remlab.net
Sat Jun 29 22:22:02 EEST 2024


Le perjantaina 28. kesäkuuta 2024, 23.15.20 EEST Yigithan Yigit a écrit :
> ---
>  libavfilter/af_volumedetect.c | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c
> index 8b001d1cf2..327801a7f9 100644
> --- a/libavfilter/af_volumedetect.c
> +++ b/libavfilter/af_volumedetect.c
> @@ -24,6 +24,8 @@
>  #include "avfilter.h"
>  #include "internal.h"
> 
> +#define MAX_DB 91
> +
>  typedef struct VolDetectContext {
>      /**
>       * Number of samples at each PCM value.
> @@ -33,6 +35,14 @@ typedef struct VolDetectContext {
>      uint64_t histogram[0x10001];
>  } VolDetectContext;
> 
> +static inline double logdb(uint64_t v)
> +{
> +    double d = v / (double)(0x8000 * 0x8000);

ldexp(v, -30) ?

> +    if (!v)
> +        return MAX_DB;
> +    return -log10(d) * 10;
> +}
> +
>  static int filter_frame(AVFilterLink *inlink, AVFrame *samples)
>  {
>      AVFilterContext *ctx = inlink->dst;
> @@ -56,16 +66,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> *samples) return ff_filter_frame(inlink->dst->outputs[0], samples);
>  }
> 
> -#define MAX_DB 91
> -
> -static inline double logdb(uint64_t v)
> -{
> -    double d = v / (double)(0x8000 * 0x8000);
> -    if (!v)
> -        return MAX_DB;
> -    return -log10(d) * 10;
> -}
> -
>  static void print_stats(AVFilterContext *ctx)
>  {
>      VolDetectContext *vd = ctx->priv;


-- 
Rémi Denis-Courmont
http://www.remlab.net/





More information about the ffmpeg-devel mailing list