40 double (*
filter)(
double white,
double *
buf,
double half_amplitude);
55 #define OFFSET(x) offsetof(ANoiseSrcContext, x)
56 #define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
76 {
"nb_samples",
"set the number of samples per requested frame",
OFFSET(nb_samples),
AV_OPT_TYPE_INT, {.i64 = 1024}, 1, INT_MAX,
FLAGS },
77 {
"n",
"set the number of samples per requested frame",
OFFSET(nb_samples),
AV_OPT_TYPE_INT, {.i64 = 1024}, 1, INT_MAX,
FLAGS },
127 buf[0] = 0.99886 * buf[0] + white * 0.0555179;
128 buf[1] = 0.99332 * buf[1] + white * 0.0750759;
129 buf[2] = 0.96900 * buf[2] + white * 0.1538520;
130 buf[3] = 0.86650 * buf[3] + white * 0.3104856;
131 buf[4] = 0.55000 * buf[4] + white * 0.5329522;
132 buf[5] = -0.7616 * buf[5] - white * 0.0168980;
133 pink = buf[0] + buf[1] + buf[2] + buf[3] + buf[4] + buf[5] + buf[6] + white * 0.5362;
134 buf[6] = white * 0.115926;
143 buf[0] = 0.0555179 * white - 0.99886 * buf[0];
144 buf[1] = 0.0750759 * white - 0.99332 * buf[1];
145 buf[2] = 0.1538520 * white - 0.96900 * buf[2];
146 buf[3] = 0.3104856 * white - 0.86650 * buf[3];
147 buf[4] = 0.5329522 * white - 0.55000 * buf[4];
148 buf[5] = -0.016898 * white + 0.76160 * buf[5];
149 blue = buf[0] + buf[1] + buf[2] + buf[3] + buf[4] + buf[5] + buf[6] + white * 0.5362;
150 buf[6] = white * 0.115926;
158 brown = ((0.02 * white) + buf[0]) / 1.02;
167 violet = ((0.02 * white) - buf[0]) / 1.02;
174 return 2. * ha * ((white > ha) - (white < -ha));
186 if (
s->duration == 0)
213 if (!
s->infinite &&
s->duration <= 0) {
216 }
else if (!
s->infinite &&
s->duration <
s->nb_samples) {
217 nb_samples =
s->duration;
219 nb_samples =
s->nb_samples;
226 for (
i = 0;
i < nb_samples;
i++) {
228 white =
s->amplitude * ((2 * ((double)
av_lfg_get(&
s->c) / 0xffffffff)) - 1);
229 dst[
i] =
s->filter(white,
s->buf,
s->amplitude * 0.5);
233 s->duration -= nb_samples;
236 s->pts += nb_samples;
257 .priv_class = &anoisesrc_class,
static enum AVSampleFormat sample_fmts[]
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
static double pink_filter(double white, double *buf, double ha)
static double white_filter(double white, double *buf, double ha)
AVFilter ff_asrc_anoisesrc
static av_cold int query_formats(AVFilterContext *ctx)
static double velvet_filter(double white, double *buf, double ha)
static const AVOption anoisesrc_options[]
static double brown_filter(double white, double *buf, double ha)
AVFILTER_DEFINE_CLASS(anoisesrc)
static double violet_filter(double white, double *buf, double ha)
static int activate(AVFilterContext *ctx)
static double blue_filter(double white, double *buf, double ha)
static const AVFilterPad anoisesrc_outputs[]
static av_cold int config_props(AVFilterLink *outlink)
AVFrame * ff_get_audio_buffer(AVFilterLink *link, int nb_samples)
Request an audio samples buffer with a specific set of permissions.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
Main libavfilter public API header.
static void ff_outlink_set_status(AVFilterLink *link, int status, int64_t pts)
Set the status field of a link from the source filter.
#define FFERROR_NOT_READY
Filters implementation helper functions.
static int ff_outlink_frame_wanted(AVFilterLink *link)
Test if a frame is wanted on an output link.
#define AV_CH_LAYOUT_MONO
uint32_t av_get_random_seed(void)
Get a seed to use in conjunction with random functions.
#define AVERROR_EOF
End of file.
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest.
AVSampleFormat
Audio sample formats.
@ AV_SAMPLE_FMT_DBL
double
#define AV_TIME_BASE
Internal time base represented as integer.
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
common internal API header
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
enum MovChannelLayoutTag * layouts
double(* filter)(double white, double *buf, double half_amplitude)
Describe the class of an AVClass context structure.
A list of supported channel layouts.
A link between two filters.
AVFilterContext * src
source filter
A filter pad used for either input or output.
const char * name
Pad name.
const char * name
Filter name.
This structure describes decoded (raw) audio or video data.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
Context structure for the Lagged Fibonacci PRNG.