61 #define OFFSET(x) offsetof(AudioHistogramContext, x) 62 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM 175 for (n = H; n < s->
h; n++) {
184 for (y = 0; y <
w; y++) {
191 for (n = 0; n <
H; n++) {
203 for (c = 0; c < inlink->
channels; c++) {
208 bin =
lrint(av_clipf(fabsf(src[n]), 0, 1) * (w - 1));
218 bin =
lrint(av_clipf(fabsf(src2[n]), 0, 1) * (w - 1));
226 for (c = 0; c < inlink->
channels; c++) {
231 bin =
lrint(av_clipf(1 + log10(fabsf(src[n])) / 6, 0, 1) * (w - 1));
241 bin =
lrint(av_clipf(1 + log10(fabsf(src2[n])) / 6, 0, 1) * (w - 1));
269 uf *= 0.5 * sin((2 * M_PI * c) / s->
dchannels);
270 vf *= 0.5 * cos((2 * M_PI * c) / s->
dchannels);
273 for (n = 0; n <
w; n++) {
277 a = achistogram[
n] - shistogram[
n];
281 aa = a / (double)acmax;
284 aa = sqrt(a) / sqrt(acmax);
293 aa = 1. -
log2(a + 1) /
log2(acmax + 1);
305 for (y = H - h; y <
H; y++) {
323 for (y = H - h; y <
H; y++) {
342 for (n = 0; n <
w; n++) {
353 for (p = 0; p < 4; p++) {
354 for (y = s->
h; y >= H + 1; y--) {
400 for (i = 0; i < 101; i++)
423 .
name =
"ahistogram",
429 .
inputs = ahistogram_inputs,
431 .priv_class = &ahistogram_class,
static const AVFilterPad ahistogram_inputs[]
This structure describes decoded (raw) audio or video data.
Main libavfilter public API header.
int h
agreed upon image height
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
#define FFERROR_NOT_READY
Filters implementation helper functions.
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions.
void * av_calloc(size_t nmemb, size_t size)
Non-inlined equivalent of av_mallocz_array().
const char * name
Pad name.
AVFilterLink ** inputs
array of pointers to input links
#define av_assert0(cond)
assert() equivalent, that is always enabled.
static double cb(void *priv, double x, double y)
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
static int query_formats(AVFilterContext *ctx)
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
static const AVOption ahistogram_options[]
static int config_output(AVFilterLink *outlink)
#define FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink)
Forward the status on an output link to an input link.
A filter pad used for either input or output.
A link between two filters.
#define i(width, name, range_min, range_max)
AVRational frame_rate
Frame rate of the stream on the link, or 1/0 if unknown or variable; if left to 0/0, will be automatically copied from the first input of the source filter if it exists.
int sample_rate
samples per second
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
simple assert() macros that are a bit more flexible than ISO C assert().
struct AVFilterChannelLayouts * out_channel_layouts
static int config_input(AVFilterLink *inlink)
AVFilterFormats * in_formats
Lists of formats and channel layouts supported by the input and output filters respectively.
int w
agreed upon image width
#define FF_FILTER_FORWARD_WANTED(outlink, inlink)
Forward the frame_wanted_out flag from an output link to an input link.
AVFILTER_DEFINE_CLASS(ahistogram)
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest.
static int activate(AVFilterContext *ctx)
AVFilterContext * src
source filter
static const AVFilterPad inputs[]
AVFilterFormats * out_samplerates
AVFrame * av_frame_clone(const AVFrame *src)
Create a new frame that references the same data as src.
static const AVFilterPad outputs[]
A list of supported channel layouts.
static const AVFilterPad ahistogram_outputs[]
AVSampleFormat
Audio sample formats.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
int ff_inlink_consume_samples(AVFilterLink *link, unsigned min, unsigned max, AVFrame **rframe)
Take samples from the link's FIFO and update the link's stats.
Describe the class of an AVClass context structure.
Rational number (pair of numerator and denominator).
offset must point to AVRational
const char * name
Filter name.
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
offset must point to two consecutive integers
AVFilterLink ** outputs
array of pointers to output links
enum MovChannelLayoutTag * layouts
#define FF_FILTER_FORWARD_STATUS(inlink, outlink)
Acknowledge the status on an input link and forward it to an output link.
static enum AVPixelFormat pix_fmts[]
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static av_cold void uninit(AVFilterContext *ctx)
int channels
Number of channels.
AVFilterContext * dst
dest filter
AVFilter ff_avf_ahistogram
static enum AVSampleFormat sample_fmts[]
#define av_malloc_array(a, b)
uint8_t ** extended_data
pointers to the data planes/channels.
AVPixelFormat
Pixel format.
int nb_samples
number of audio samples (per channel) described by this frame
AVFilterFormats * out_formats