xine-lib: xine-lib-1.2.13/src/post/visualizations/fftgraph.c File Reference

xine-lib 1.2.13-20230125hg15249

Data Structures | Macros | Typedefs | Functions
fftgraph.c File Reference
`#include <stdio.h>`
`#include <math.h>`
`#include <assert.h>`
`#include <xine/xine_internal.h>`
`#include <xine/xineutils.h>`
`#include <xine/post.h>`
`#include "bswap.h"`
`#include "visualizations.h"`
`#include "fft.h"`

## Data Structures
struct | post_plugin_fftgraph_s

## Macros
#define | FPS 20
#define | FFTGRAPH_WIDTH 512
#define | FFTGRAPH_HEIGHT 256
#define | FFT_BITS 11
#define | NUMSAMPLES (1 << FFT_BITS)
#define | MAXCHANNELS 6

## Typedefs
typedef struct post_plugin_fftgraph_s | post_plugin_fftgraph_t

## Functions
static int | d2db (double d)
static void | fade (int r1, int g1, int b1, int r2, int g2, int b2, uint32_t *yuy2_colors, int ldsteps)
static void | draw_fftgraph (post_plugin_fftgraph_t *this, vo_frame_t *frame)
static int | fftgraph_rewire_video (xine_post_out_t *output_gen, void *data)
static int | fftgraph_port_open (xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode)
static void | fftgraph_port_close (xine_audio_port_t *port_gen, xine_stream_t *stream)
static void | fftgraph_port_put_buffer (xine_audio_port_t *port_gen, audio_buffer_t *buf, xine_stream_t *stream)
static void | fftgraph_dispose (post_plugin_t *this_gen)
static post_plugin_t * | fftgraph_open_plugin (post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target)
void * | fftgraph_init_plugin (xine_t *xine, const void *data)

## Macro Definition Documentation

## ◆ FFT_BITS

#define FFT_BITS 11

Referenced by fftgraph_port_open().

## ◆ FFTGRAPH_HEIGHT

#define FFTGRAPH_HEIGHT 256

Referenced by draw_fftgraph(), fftgraph_port_open(), and fftgraph_port_put_buffer().

## ◆ FFTGRAPH_WIDTH

#define FFTGRAPH_WIDTH 512

Referenced by draw_fftgraph(), fftgraph_port_open(), and fftgraph_port_put_buffer().

## ◆ FPS

#define FPS 20

Referenced by fftgraph_port_open().

## ◆ MAXCHANNELS

#define MAXCHANNELS 6

Referenced by fftgraph_port_open().

## ◆ NUMSAMPLES

#define NUMSAMPLES (1 << FFT_BITS)

Referenced by fftgraph_port_put_buffer().

## Typedef Documentation

## ◆ post_plugin_fftgraph_t

typedef struct post_plugin_fftgraph_s post_plugin_fftgraph_t

## Function Documentation

## ◆ d2db()

static int d2db | ( | double | d | ) |
| static

Referenced by draw_fftgraph().

## ◆ draw_fftgraph()

static void draw_fftgraph | ( | post_plugin_fftgraph_t * | this,
|  | vo_frame_t * | frame )
| static

References vo_frame_s::base, be2me_32, d2db(), fft_amp2(), fft_compute(), fft_scale(), fft_window(), FFTGRAPH_HEIGHT, FFTGRAPH_WIDTH, and xine_fast_memcpy.

Referenced by fftgraph_port_put_buffer().

## ◆ fade()

static void fade | ( | int | r1,
|  | int | g1,
|  | int | b1,
|  | int | r2,
|  | int | g2,
|  | int | b2,
|  | uint32_t * | yuy2_colors,
|  | int | ldsteps )
| static

References COMPUTE_U, COMPUTE_V, COMPUTE_Y, and v.

Referenced by fftgraph_port_open().

## ◆ fftgraph_dispose()

static void fftgraph_dispose | ( | post_plugin_t * | this_gen | ) |
| static

References _x_freep(), and _x_post_dispose().

Referenced by fftgraph_open_plugin().

## ◆ fftgraph_init_plugin()

void * fftgraph_init_plugin | ( | xine_t * | xine,
|  | const void * | data )

References post_plugin_s::dispose, fftgraph_open_plugin(), N_, NULL, and post_class_s::open_plugin.

## ◆ fftgraph_open_plugin()

static post_plugin_t * fftgraph_open_plugin | ( | post_class_t * | class_gen,
|  | int | inputs,
|  | xine_audio_port_t ** | audio_target,
|  | xine_video_port_t ** | video_target )
| static

References _x_post_init(), _x_post_intercept_audio_port(), xine_audio_port_s::close, xine_post_out_s::data, fftgraph_dispose(), fftgraph_port_close(), fftgraph_port_open(), fftgraph_port_put_buffer(), fftgraph_rewire_video(), input(), xine_post_out_s::name, post_audio_port_s::new_port, NULL, xine_audio_port_s::open, post_out_s::post, xine_audio_port_s::put_buffer, xine_post_out_s::rewire, xine_post_out_s::type, xine_list_push_back(), post_out_s::xine_out, and XINE_POST_DATA_VIDEO.

Referenced by fftgraph_init_plugin().

## ◆ fftgraph_port_close()

static void fftgraph_port_close | ( | xine_audio_port_t * | port_gen,
|  | xine_stream_t * | stream )
| static

References _x_post_dec_usage, xine_audio_port_s::close, fft_dispose(), NULL, post_audio_port_s::original_port, post_audio_port_s::post, post_audio_port_s::stream, and XINE_ANON_STREAM.

Referenced by fftgraph_open_plugin().

## ◆ fftgraph_port_open()

static int fftgraph_port_open | ( | xine_audio_port_t * | port_gen,
|  | xine_stream_t * | stream,
|  | uint32_t | bits,
|  | uint32_t | rate,
|  | int | mode )
| static

References _x_ao_mode2channels(), _x_metronom_init(), _x_post_inc_usage, _x_post_rewire(), be2me_32, bits, post_audio_port_s::bits, fade(), FFT_BITS, fft_new(), FFTGRAPH_HEIGHT, FFTGRAPH_WIDTH, FPS, MAXCHANNELS, xine_stream_s::metronom, mode(), post_audio_port_s::mode, xine_audio_port_s::open, post_audio_port_s::original_port, post_audio_port_s::post, post_audio_port_s::rate, post_audio_port_s::stream, xine_stream_s::xine, and XINE_ANON_STREAM.

Referenced by fftgraph_open_plugin().

## ◆ fftgraph_port_put_buffer()

static void fftgraph_port_put_buffer | ( | xine_audio_port_t * | port_gen,
|  | audio_buffer_t * | buf,
|  | xine_stream_t * | stream )
| static

References vo_frame_s::bad_frame, post_audio_port_s::bits, vo_frame_s::draw, draw_fftgraph(), vo_frame_s::duration, vo_frame_s::extra_info, FFTGRAPH_HEIGHT, FFTGRAPH_WIDTH, vo_frame_s::free, extra_info_s::invalid, audio_buffer_s::mem, audio_buffer_s::mem_size, audio_buffer_s::num_frames, NUMSAMPLES, post_audio_port_s::original_port, post_audio_port_s::post, vo_frame_s::pts, xine_audio_port_s::put_buffer, post_audio_port_s::rate, VO_BOTH_FIELDS, audio_buffer_s::vpts, XINE_ANON_STREAM, and XINE_IMGFMT_YUY2.

Referenced by fftgraph_open_plugin().

## ◆ fftgraph_rewire_video()

static int fftgraph_rewire_video | ( | xine_post_out_t * | output_gen,
|  | void * | data )
| static

References xine_video_port_s::close, xine_post_out_s::data, xine_video_port_s::open, post_out_s::post, and XINE_ANON_STREAM.

Referenced by fftgraph_open_plugin().