Go to the source code of this file.
◆ OFFSET
◆ FLAGS
◆ BITCOUNTER
| #define BITCOUNTER |
( |
| type, |
|
|
| depth, |
|
|
| one ) |
Value: memset(counter, 0,
sizeof(
s->counter)); \
for (
int i = 0;
i < nb_samples;
i++) { \
for (int j = 0; j < depth && x; j++) \
counter[j] += !!(x & (one << j)); \
}
#define i(width, name, range_min, range_max)
Definition at line 141 of file avf_abitscope.c.
◆ BARS
| #define BARS |
( |
| type, |
|
|
| depth, |
|
|
| one ) |
Value: for (int ch = 0; ch < inlink->ch_layout.nb_channels; ch++) { \
const int nb_samples = insamples->nb_samples; \
const type *in = (
const type *)insamples->extended_data[ch]; \
const int w = outpicref->width / inlink->ch_layout.nb_channels; \
const int h = outpicref->height / depth; \
uint64_t *counter =
s->counter; \
\
BITCOUNTER(
type, depth, one) \
\
for (
int b = 0;
b < depth;
b++) { \
for (
int j = 1; j <
h - 1; j++) { \
uint8_t *
dst = outpicref->data[0] + (
b *
h + j) * outpicref->linesize[0] +
w * ch * 4; \
const int ww = (counter[depth -
b - 1] / (
float)nb_samples) * (
w - 1); \
\
for (
int i = 0;
i < ww;
i++) { \
} \
} \
} \
}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition at line 149 of file avf_abitscope.c.
Referenced by filter_frame().
◆ DO_TRACE
| #define DO_TRACE |
( |
| type, |
|
|
| depth, |
|
|
| one ) |
Value: for (int ch = 0; ch < inlink->ch_layout.nb_channels; ch++) { \
const int nb_samples = insamples->nb_samples; \
const int w = outpicref->width / inlink->ch_layout.nb_channels; \
const type *in = (
const type *)insamples->extended_data[ch]; \
uint64_t *counter =
s->counter; \
const int wb =
w / depth; \
int wv; \
\
BITCOUNTER(
type, depth, one) \
\
for (
int b = 0;
b < depth;
b++) { \
uint8_t colors[4]; \
uint8_t *
dst = outpicref->data[0] +
w * ch * 4 + wb *
b * 4 + \
s->current_vpos * outpicref->linesize[0]; \
wv = (counter[depth -
b - 1] * 255) / nb_samples; \
colors[0] = (wv *
s->fg[ch * 4 + 0] + 127) / 255; \
colors[1] = (wv *
s->fg[ch * 4 + 1] + 127) / 255; \
colors[2] = (wv *
s->fg[ch * 4 + 2] + 127) / 255; \
colors[3] = (wv *
s->fg[ch * 4 + 3] + 127) / 255; \
\
for (int x = 0; x < wb; x++) \
} \
}
Definition at line 172 of file avf_abitscope.c.
Referenced by filter_frame().
◆ AVFILTER_DEFINE_CLASS()
| AVFILTER_DEFINE_CLASS |
( |
abitscope | | ) |
|
◆ query_formats()
◆ config_input()
◆ config_output()
◆ filter_frame()
◆ activate()
◆ uninit()
◆ abitscope_options
Initial value:= {
{
"colors",
"set channels colors",
OFFSET(colors),
AV_OPT_TYPE_STRING, {.str =
"red|green|blue|yellow|orange|lime|pink|magenta|brown" }, 0, 0,
FLAGS },
}
mode
Use these values in ebur128_init (or'ed).
@ AV_OPT_TYPE_IMAGE_SIZE
Underlying C type is two consecutive integers.
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
@ AV_OPT_TYPE_VIDEO_RATE
Underlying C type is AVRational.
@ AV_OPT_TYPE_INT
Underlying C type is int.
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition at line 53 of file avf_abitscope.c.
◆ inputs
Initial value:= {
{
.name = "default",
},
}
static int config_input(AVFilterLink *inlink)
Definition at line 292 of file avf_abitscope.c.
◆ outputs
Initial value:= {
{
.name = "default",
},
}
static int config_output(AVBitStreamFilterLink *outlink)
Definition at line 300 of file avf_abitscope.c.
◆ ff_avf_abitscope
Initial value:= {
.p.name = "abitscope",
.p.priv_class = &abitscope_class,
}
static int query_formats(const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
static av_cold void uninit(AVBitStreamFilterContext *ctx)
static int activate(AVBitStreamFilterContext *ctx)
#define FILTER_INPUTS(array)
#define FILTER_OUTPUTS(array)
#define FILTER_QUERY_FUNC2(func)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition at line 308 of file avf_abitscope.c.