FFmpeg
Loading...
Searching...
No Matches
af_astats.c File Reference
#include <float.h>
#include <math.h>
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "audio.h"
#include "avfilter.h"
#include "filters.h"

Go to the source code of this file.

Data Structures

struct  ChannelStats
 
struct  AudioStatsContext
 

Macros

#define HISTOGRAM_SIZE   8192
 
#define HISTOGRAM_MAX   (HISTOGRAM_SIZE-1)
 
#define MEASURE_ALL   UINT_MAX
 
#define MEASURE_NONE   0
 
#define MEASURE_DC_OFFSET   (1 << 0)
 
#define MEASURE_MIN_LEVEL   (1 << 1)
 
#define MEASURE_MAX_LEVEL   (1 << 2)
 
#define MEASURE_MIN_DIFFERENCE   (1 << 3)
 
#define MEASURE_MAX_DIFFERENCE   (1 << 4)
 
#define MEASURE_MEAN_DIFFERENCE   (1 << 5)
 
#define MEASURE_RMS_DIFFERENCE   (1 << 6)
 
#define MEASURE_PEAK_LEVEL   (1 << 7)
 
#define MEASURE_RMS_LEVEL   (1 << 8)
 
#define MEASURE_RMS_PEAK   (1 << 9)
 
#define MEASURE_RMS_TROUGH   (1 << 10)
 
#define MEASURE_CREST_FACTOR   (1 << 11)
 
#define MEASURE_FLAT_FACTOR   (1 << 12)
 
#define MEASURE_PEAK_COUNT   (1 << 13)
 
#define MEASURE_BIT_DEPTH   (1 << 14)
 
#define MEASURE_DYNAMIC_RANGE   (1 << 15)
 
#define MEASURE_ZERO_CROSSINGS   (1 << 16)
 
#define MEASURE_ZERO_CROSSINGS_RATE   (1 << 17)
 
#define MEASURE_NUMBER_OF_SAMPLES   (1 << 18)
 
#define MEASURE_NUMBER_OF_NANS   (1 << 19)
 
#define MEASURE_NUMBER_OF_INFS   (1 << 20)
 
#define MEASURE_NUMBER_OF_DENORMALS   (1 << 21)
 
#define MEASURE_NOISE_FLOOR   (1 << 22)
 
#define MEASURE_NOISE_FLOOR_COUNT   (1 << 23)
 
#define MEASURE_ENTROPY   (1 << 24)
 
#define MEASURE_ABS_PEAK_COUNT   (1 << 25)
 
#define MEASURE_MINMAXPEAK   (MEASURE_MIN_LEVEL | MEASURE_MAX_LEVEL | MEASURE_PEAK_LEVEL)
 
#define OFFSET(x)
 
#define FLAGS   AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
#define LINEAR_TO_DB(x)
 
#define UPDATE_STATS_P(type, update_func, update_float, channel_func)
 
#define UPDATE_STATS_I(type, update_func, update_float, channel_func)
 
#define UPDATE_STATS(planar, type, sample, normalizer_suffix, int_sample)
 

Functions

 AVFILTER_DEFINE_CLASS (astats)
 
static void reset_stats (AudioStatsContext *s)
 
static int config_output (AVFilterLink *outlink)
 
static void bit_depth (AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
 
static double calc_entropy (AudioStatsContext *s, ChannelStats *p)
 
static double calc_noise_floor (double *ss, double x, double px, int n, int *ffront, int *bback)
 
static void update_minmax (AudioStatsContext *s, ChannelStats *p, double d)
 
static void update_stat (AudioStatsContext *s, ChannelStats *p, double d, double nd, int64_t i)
 
static void update_float_stat (AudioStatsContext *s, ChannelStats *p, float d)
 
static void update_double_stat (AudioStatsContext *s, ChannelStats *p, double d)
 
static void set_meta (AVDictionary **metadata, int chan, const char *key, const char *fmt, double val)
 
static void set_metadata (AudioStatsContext *s, AVDictionary **metadata)
 
static int filter_channel (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *buf)
 
static void print_stats (AVFilterContext *ctx)
 
static av_cold void uninit (AVFilterContext *ctx)
 

Variables

static const AVOption astats_options []
 
static const AVFilterPad astats_inputs []
 
static const AVFilterPad astats_outputs []
 
const FFFilter ff_af_astats
 

Macro Definition Documentation

◆ HISTOGRAM_SIZE

#define HISTOGRAM_SIZE   8192

Definition at line 31 of file af_astats.c.

Referenced by calc_entropy().

◆ HISTOGRAM_MAX

#define HISTOGRAM_MAX   (HISTOGRAM_SIZE-1)

Definition at line 32 of file af_astats.c.

Referenced by update_stat().

◆ MEASURE_ALL

#define MEASURE_ALL   UINT_MAX

Definition at line 34 of file af_astats.c.

◆ MEASURE_NONE

#define MEASURE_NONE   0

Definition at line 35 of file af_astats.c.

◆ MEASURE_DC_OFFSET

#define MEASURE_DC_OFFSET   (1 << 0)

Definition at line 37 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MIN_LEVEL

#define MEASURE_MIN_LEVEL   (1 << 1)

Definition at line 38 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MAX_LEVEL

#define MEASURE_MAX_LEVEL   (1 << 2)

Definition at line 39 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MIN_DIFFERENCE

#define MEASURE_MIN_DIFFERENCE   (1 << 3)

Definition at line 40 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MAX_DIFFERENCE

#define MEASURE_MAX_DIFFERENCE   (1 << 4)

Definition at line 41 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MEAN_DIFFERENCE

#define MEASURE_MEAN_DIFFERENCE   (1 << 5)

Definition at line 42 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_RMS_DIFFERENCE

#define MEASURE_RMS_DIFFERENCE   (1 << 6)

Definition at line 43 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_PEAK_LEVEL

#define MEASURE_PEAK_LEVEL   (1 << 7)

Definition at line 44 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_RMS_LEVEL

#define MEASURE_RMS_LEVEL   (1 << 8)

Definition at line 45 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_RMS_PEAK

#define MEASURE_RMS_PEAK   (1 << 9)

Definition at line 46 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_RMS_TROUGH

#define MEASURE_RMS_TROUGH   (1 << 10)

Definition at line 47 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_CREST_FACTOR

#define MEASURE_CREST_FACTOR   (1 << 11)

Definition at line 48 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_FLAT_FACTOR

#define MEASURE_FLAT_FACTOR   (1 << 12)

Definition at line 49 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_PEAK_COUNT

#define MEASURE_PEAK_COUNT   (1 << 13)

Definition at line 50 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_BIT_DEPTH

#define MEASURE_BIT_DEPTH   (1 << 14)

Definition at line 51 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_DYNAMIC_RANGE

#define MEASURE_DYNAMIC_RANGE   (1 << 15)

Definition at line 52 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_ZERO_CROSSINGS

#define MEASURE_ZERO_CROSSINGS   (1 << 16)

Definition at line 53 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_ZERO_CROSSINGS_RATE

#define MEASURE_ZERO_CROSSINGS_RATE   (1 << 17)

Definition at line 54 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NUMBER_OF_SAMPLES

#define MEASURE_NUMBER_OF_SAMPLES   (1 << 18)

Definition at line 55 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NUMBER_OF_NANS

#define MEASURE_NUMBER_OF_NANS   (1 << 19)

Definition at line 56 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NUMBER_OF_INFS

#define MEASURE_NUMBER_OF_INFS   (1 << 20)

Definition at line 57 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NUMBER_OF_DENORMALS

#define MEASURE_NUMBER_OF_DENORMALS   (1 << 21)

Definition at line 58 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NOISE_FLOOR

#define MEASURE_NOISE_FLOOR   (1 << 22)

Definition at line 59 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_NOISE_FLOOR_COUNT

#define MEASURE_NOISE_FLOOR_COUNT   (1 << 23)

Definition at line 60 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_ENTROPY

#define MEASURE_ENTROPY   (1 << 24)

Definition at line 61 of file af_astats.c.

◆ MEASURE_ABS_PEAK_COUNT

#define MEASURE_ABS_PEAK_COUNT   (1 << 25)

Definition at line 62 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ MEASURE_MINMAXPEAK

#define MEASURE_MINMAXPEAK   (MEASURE_MIN_LEVEL | MEASURE_MAX_LEVEL | MEASURE_PEAK_LEVEL)

Definition at line 64 of file af_astats.c.

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 119 of file af_astats.c.

◆ FLAGS

Definition at line 120 of file af_astats.c.

◆ LINEAR_TO_DB

#define LINEAR_TO_DB ( x)
Value:
(log10(x) * 20)

Definition at line 477 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ UPDATE_STATS_P

#define UPDATE_STATS_P ( type,
update_func,
update_float,
channel_func )
Value:
for (int c = start; c < end; c++) { \
ChannelStats *p = &s->chstats[c]; \
const type *src = (const type *)data[c]; \
const type * const srcend = src + samples; \
for (; src < srcend; src++) { \
update_func; \
update_float; \
} \
channel_func; \
}
#define s(width, name)
Definition cbs_vp9.c:198
cl_device_type type
const char data[16]
Definition mxf.c:149
#define src
Definition vp8dsp.c:248
static double c[64]

Definition at line 648 of file af_astats.c.

◆ UPDATE_STATS_I

#define UPDATE_STATS_I ( type,
update_func,
update_float,
channel_func )
Value:
for (int c = start; c < end; c++) { \
ChannelStats *p = &s->chstats[c]; \
const type *src = (const type *)data[0]; \
const type * const srcend = src + samples * channels; \
for (src += c; src < srcend; src += channels) { \
update_func; \
update_float; \
} \
channel_func; \
}
channels
Definition aptx.h:31

Definition at line 660 of file af_astats.c.

◆ UPDATE_STATS

#define UPDATE_STATS ( planar,
type,
sample,
normalizer_suffix,
int_sample )
Value:
if ((s->measure_overall | s->measure_perchannel) & ~MEASURE_MINMAXPEAK) { \
UPDATE_STATS_##planar(type, update_stat(s, p, sample, sample normalizer_suffix, int_sample), s->is_float ? update_float_stat(s, p, sample) : s->is_double ? update_double_stat(s, p, sample) : (void)NULL, ); \
} else { \
UPDATE_STATS_##planar(type, update_minmax(s, p, sample), , p->nmin = p->min normalizer_suffix; p->nmax = p->max normalizer_suffix;); \
}
static void update_stat(AudioStatsContext *s, ChannelStats *p, double d, double nd, int64_t i)
Definition af_astats.c:349
#define MEASURE_MINMAXPEAK
Definition af_astats.c:64
static void update_float_stat(AudioStatsContext *s, ChannelStats *p, float d)
Definition af_astats.c:445
static void update_double_stat(AudioStatsContext *s, ChannelStats *p, double d)
Definition af_astats.c:454
static void update_minmax(AudioStatsContext *s, ChannelStats *p, double d)
Definition af_astats.c:341
uint8_t pi<< 24) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_U8,(uint64_t)((*(const uint8_t *) pi - 0x80U))<< 56) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16,(*(const int16_t *) pi > >8)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_S16, *(const int16_t *) pi *(1<< 16)) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S16,(uint64_t)(*(const int16_t *) pi)<< 48) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32,(*(const int32_t *) pi > >24)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S32,(uint64_t)(*(const int32_t *) pi)<< 32) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S64,(*(const int64_t *) pi > >56)+0x80) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S64, *(const int64_t *) pi *(1.0f/(UINT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S64, *(const int64_t *) pi *(1.0/(UINT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_FLT, llrintf(*(const float *) pi *(UINT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_DBL, llrint(*(const double *) pi *(UINT64_C(1)<< 63))) #define FMT_PAIR_FUNC(out, in) static conv_func_type *const fmt_pair_to_conv_functions[AV_SAMPLE_FMT_NB *AV_SAMPLE_FMT_NB]={ FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S64), };static void cpy1(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, len);} static void cpy2(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 2 *len);} static void cpy4(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 4 *len);} static void cpy8(uint8_t **dst, const uint8_t **src, int len){ memcpy(*dst, *src, 8 *len);} AudioConvert *swri_audio_convert_alloc(enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, const int *ch_map, int flags) { AudioConvert *ctx;conv_func_type *f=fmt_pair_to_conv_functions[av_get_packed_sample_fmt(out_fmt)+AV_SAMPLE_FMT_NB *av_get_packed_sample_fmt(in_fmt)];if(!f) return NULL;ctx=av_mallocz(sizeof(*ctx));if(!ctx) return NULL;if(channels==1){ in_fmt=av_get_planar_sample_fmt(in_fmt);out_fmt=av_get_planar_sample_fmt(out_fmt);} ctx->channels=channels;ctx->conv_f=f;ctx->ch_map=ch_map;if(in_fmt==AV_SAMPLE_FMT_U8||in_fmt==AV_SAMPLE_FMT_U8P) memset(ctx->silence, 0x80, sizeof(ctx->silence));if(out_fmt==in_fmt &&!ch_map) { switch(av_get_bytes_per_sample(in_fmt)){ case 1:ctx->simd_f=cpy1;break;case 2:ctx->simd_f=cpy2;break;case 4:ctx->simd_f=cpy4;break;case 8:ctx->simd_f=cpy8;break;} } return ctx;} void swri_audio_convert_free(AudioConvert **ctx) { av_freep(ctx);} int swri_audio_convert(AudioConvert *ctx, AudioData *out, AudioData *in, int len) { int ch;int off=0;const int os=(out->planar ? 1 :out->ch_count) *out->bps;unsigned misaligned=0;av_assert0(ctx->channels==out->ch_count);if(ctx->in_simd_align_mask) { int planes=in->planar ? in->ch_count :1;unsigned m=0;for(ch=0;ch< planes;ch++) m|=(intptr_t) in->ch[ch];misaligned|=m &ctx->in_simd_align_mask;} if(ctx->out_simd_align_mask) { int planes=out->planar ? out->ch_count :1;unsigned m=0;for(ch=0;ch< planes;ch++) m|=(intptr_t) out->ch[ch];misaligned|=m &ctx->out_simd_align_mask;} if(ctx->simd_f &&!ctx->ch_map &&!misaligned){ off=len &~15;av_assert1(off >=0);av_assert1(off<=len);av_assert2(ctx->channels==SWR_CH_MAX||!in->ch[ctx->channels]);if(off >0){ if(out->planar==in->planar){ int planes=out->planar ? out->ch_count :1;for(ch=0;ch< planes;ch++){ ctx->simd_f(out->ch+ch,(const uint8_t **) in->ch+ch, off *(out-> planar
#define NULL
Definition coverity.c:32
#define sample

Definition at line 672 of file af_astats.c.

Referenced by filter_channel().

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( astats )

◆ reset_stats()

static void reset_stats ( AudioStatsContext * s)
static

Definition at line 161 of file af_astats.c.

Referenced by config_output(), and filter_frame().

◆ config_output()

static int config_output ( AVFilterLink * outlink)
static

Definition at line 209 of file af_astats.c.

◆ bit_depth()

static void bit_depth ( AudioStatsContext * s,
const uint64_t *const mask,
uint8_t * depth )
static

Definition at line 246 of file af_astats.c.

Referenced by amf_encode_init_av1(), amf_encode_init_hevc(), apv_decode_block(), apv_decode_check_format(), apv_decode_tile_component(), apv_decode_transquant_c(), calc_squared_error_and_weight(), check_add_res(), check_alf_classify(), check_alf_filter(), check_avg(), check_bdof(), check_chrConvertRange(), check_chroma_mc(), check_deblock_chroma(), check_deblock_luma(), check_decode_transquant_10(), check_dequant(), check_dmvr(), check_idct(), check_idct(), check_idct_dc(), check_idct_dequant(), check_idct_multiple(), check_ipred(), check_itxfm(), check_loop_filter(), check_loop_filter_intra(), check_loopfilter(), check_lumConvertRange(), check_mc(), check_pred16x16(), check_pred4x4(), check_pred8x8(), check_pred8x8l(), check_pred_angular(), check_pred_dc(), check_pred_planar(), check_put_vvc_chroma(), check_put_vvc_chroma_uni(), check_put_vvc_luma(), check_put_vvc_luma_uni(), check_ref_filter_3tap(), check_ref_filter_strong(), check_sao_band(), check_sao_band(), check_sao_edge(), check_sao_edge(), check_transform_luma(), check_vvc_sad(), check_yuv2yuvX(), checkasm_check_h264pred(), checkasm_check_h264qpel(), checkasm_check_hevc_add_res(), checkasm_check_hevc_deblock(), checkasm_check_hevc_dequant(), checkasm_check_hevc_epel(), checkasm_check_hevc_epel_bi(), checkasm_check_hevc_epel_bi_w(), checkasm_check_hevc_epel_uni(), checkasm_check_hevc_epel_uni_w(), checkasm_check_hevc_idct(), checkasm_check_hevc_pred(), checkasm_check_hevc_qpel(), checkasm_check_hevc_qpel_bi(), checkasm_check_hevc_qpel_bi_w(), checkasm_check_hevc_qpel_uni(), checkasm_check_hevc_qpel_uni_w(), checkasm_check_hevc_sao(), checkasm_check_vvc_alf(), checkasm_check_vvc_sao(), copy_subcoefs(), cuvid_test_capabilities(), dct4x4_impl(), dct8x8(), dnxhd_calc_bits_thread(), dvdvideo_audio_stream_analyze(), ff_bwdif_init_aarch64(), ff_bwdif_init_filter_line(), ff_bwdif_init_x86(), ff_dnxhd_find_cid(), ff_get_qtpalette(), ff_h264_pred_init(), ff_h264_pred_init_aarch64(), ff_h264_pred_init_arm(), ff_h264_pred_init_loongarch(), ff_h264_pred_init_mips(), ff_h264_pred_init_riscv(), ff_h264_pred_init_x86(), ff_h264chroma_init(), ff_h264chroma_init_aarch64(), ff_h264chroma_init_arm(), ff_h264chroma_init_loongarch(), ff_h264chroma_init_mips(), ff_h264chroma_init_ppc(), ff_h264chroma_init_riscv(), ff_h264chroma_init_x86(), ff_h264dsp_init(), ff_h264dsp_init_aarch64(), ff_h264dsp_init_arm(), ff_h264dsp_init_loongarch(), ff_h264dsp_init_mips(), ff_h264dsp_init_ppc(), ff_h264dsp_init_riscv(), ff_h264dsp_init_x86(), ff_h264qpel_init(), ff_h264qpel_init_aarch64(), ff_h264qpel_init_arm(), ff_h264qpel_init_loongarch(), ff_h264qpel_init_mips(), ff_h264qpel_init_ppc(), ff_h264qpel_init_riscv(), ff_h264qpel_init_x86(), ff_hevc_dsp_init(), ff_hevc_dsp_init_aarch64(), ff_hevc_dsp_init_arm(), ff_hevc_dsp_init_loongarch(), ff_hevc_dsp_init_mips(), ff_hevc_dsp_init_neon(), ff_hevc_dsp_init_ppc(), ff_hevc_dsp_init_riscv(), ff_hevc_dsp_init_wasm(), ff_hevc_dsp_init_x86(), ff_hevc_parse_sps(), ff_hevc_pred_init(), ff_hevc_pred_init_aarch64(), ff_hevc_pred_init_mips(), ff_hevc_sao_offset_abs_decode(), ff_hw_base_encode_init_params_h264(), ff_hw_base_encode_init_params_h265(), ff_isom_get_vpcc_features(), ff_isom_parse_apvc(), ff_spatial_idwt_init(), ff_vvc_dsp_init(), ff_vvc_ep_init_stat_coeff(), ff_vvc_new_palette_entries(), ff_yadif_init_x86(), ftx(), get_sw_pixel_format(), get_vt_hevc_profile_level(), h264_pred_init_neon(), h264_pred_init_neon(), h264dsp_init_neon(), hl_decode_mb(), hl_decode_mb_444(), idct_16x16(), idct_32x32(), idct_4x4(), idct_8x8(), init_range_convert_constants(), jpegxl_get_bit_depth(), lmcs_derive_lut(), mkv_write_track(), parse(), parse_bitstream(), parse_nal_unit(), parse_nal_unit(), pps_scc_extension(), pps_scc_extension(), PRED4x4(), PRED8x8(), print_stats(), profile_is_compatible(), randomize_buffers(), randomize_loopfilter_buffers(), randomize_luma_buffers(), set_metadata(), sps_scc_extension(), vaapi_av1_get_bit_depth_idx(), write_nalu(), and xavs2_init().

◆ calc_entropy()

static double calc_entropy ( AudioStatsContext * s,
ChannelStats * p )
static

Definition at line 270 of file af_astats.c.

Referenced by print_stats(), and set_metadata().

◆ calc_noise_floor()

static double calc_noise_floor ( double * ss,
double x,
double px,
int n,
int * ffront,
int * bback )
static

Definition at line 284 of file af_astats.c.

Referenced by update_stat().

◆ update_minmax()

static void update_minmax ( AudioStatsContext * s,
ChannelStats * p,
double d )
inlinestatic

Definition at line 341 of file af_astats.c.

◆ update_stat()

static void update_stat ( AudioStatsContext * s,
ChannelStats * p,
double d,
double nd,
int64_t i )
inlinestatic

Definition at line 349 of file af_astats.c.

◆ update_float_stat()

static void update_float_stat ( AudioStatsContext * s,
ChannelStats * p,
float d )
inlinestatic

Definition at line 445 of file af_astats.c.

◆ update_double_stat()

static void update_double_stat ( AudioStatsContext * s,
ChannelStats * p,
double d )
inlinestatic

Definition at line 454 of file af_astats.c.

◆ set_meta()

static void set_meta ( AVDictionary ** metadata,
int chan,
const char * key,
const char * fmt,
double val )
static

Definition at line 463 of file af_astats.c.

Referenced by set_metadata().

◆ set_metadata()

static void set_metadata ( AudioStatsContext * s,
AVDictionary ** metadata )
static

Definition at line 479 of file af_astats.c.

Referenced by filter_frame().

◆ filter_channel()

static int filter_channel ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 679 of file af_astats.c.

◆ filter_frame()

static int filter_frame ( AVFilterLink * inlink,
AVFrame * buf )
static

Definition at line 726 of file af_astats.c.

◆ print_stats()

static void print_stats ( AVFilterContext * ctx)
static

Definition at line 751 of file af_astats.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext * ctx)
static

Definition at line 926 of file af_astats.c.

Variable Documentation

◆ astats_options

const AVOption astats_options[]
static

Definition at line 122 of file af_astats.c.

◆ astats_inputs

const AVFilterPad astats_inputs[]
static
Initial value:
= {
{
.name = "default",
.filter_frame = filter_frame,
},
}
static int filter_frame(DBEDecodeContext *s, AVFrame *frame)
Definition dolby_e.c:1067
@ AVMEDIA_TYPE_AUDIO
Definition avutil.h:201

Definition at line 943 of file af_astats.c.

◆ astats_outputs

const AVFilterPad astats_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = config_output,
},
}
static int config_output(AVBitStreamFilterLink *outlink)

Definition at line 951 of file af_astats.c.

◆ ff_af_astats

const FFFilter ff_af_astats
Initial value:
= {
.p.name = "astats",
.p.description = NULL_IF_CONFIG_SMALL("Show time domain statistics about audio frames."),
.p.priv_class = &astats_class,
.priv_size = sizeof(AudioStatsContext),
}
static const AVFilterPad astats_outputs[]
Definition af_astats.c:951
static const AVFilterPad astats_inputs[]
Definition af_astats.c:943
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
Definition avfilter.h:166
#define AVFILTER_FLAG_METADATA_ONLY
The filter is a "metadata" filter - it does not modify the frame data in any way.
Definition avfilter.h:182
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition samplefmt.h:66
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
Definition samplefmt.h:64
@ AV_SAMPLE_FMT_FLT
float
Definition samplefmt.h:60
@ AV_SAMPLE_FMT_S64
signed 64 bits
Definition samplefmt.h:68
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
Definition samplefmt.h:65
@ AV_SAMPLE_FMT_S32
signed 32 bits
Definition samplefmt.h:59
@ AV_SAMPLE_FMT_DBLP
double, planar
Definition samplefmt.h:67
@ AV_SAMPLE_FMT_DBL
double
Definition samplefmt.h:61
@ AV_SAMPLE_FMT_S64P
signed 64 bits, planar
Definition samplefmt.h:69
@ AV_SAMPLE_FMT_S16
signed 16 bits
Definition samplefmt.h:58
static av_cold void uninit(AVBitStreamFilterContext *ctx)
#define FILTER_INPUTS(array)
Definition filters.h:264
#define FILTER_OUTPUTS(array)
Definition filters.h:265
#define FILTER_SAMPLEFMTS(...)
Definition filters.h:252
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88

Definition at line 959 of file af_astats.c.