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

xine-lib 1.2.13-20230125hg15249

Data Structures | Macros | Typedefs | Functions
fftscope.c File Reference
`#include <stdio.h>`
`#include <math.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_fftscope_s

## Macros
#define | FPS 20
#define | FFT_WIDTH 512
#define | FFT_HEIGHT 256
#define | NUMSAMPLES 512
#define | MAXCHANNELS 6
#define | FFT_BITS 9

## Typedefs
typedef struct post_plugin_fftscope_s | post_plugin_fftscope_t

## Functions
static void | fade_out_yuv (uint8_t *y, uint8_t *u, uint8_t *v, float factor)
static void | draw_fftscope (post_plugin_fftscope_t *this, vo_frame_t *frame)
static int | fftscope_rewire_video (xine_post_out_t *output_gen, void *data)
static int | fftscope_port_open (xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode)
static void | fftscope_port_close (xine_audio_port_t *port_gen, xine_stream_t *stream)
static void | fftscope_port_put_buffer (xine_audio_port_t *port_gen, audio_buffer_t *buf, xine_stream_t *stream)
static void | fftscope_dispose (post_plugin_t *this_gen)
static post_plugin_t * | fftscope_open_plugin (post_class_t *class_gen, int inputs, xine_audio_port_t **audio_target, xine_video_port_t **video_target)
void * | fftscope_init_plugin (xine_t *xine, const void *data)

## Macro Definition Documentation

## ◆ FFT_BITS

#define FFT_BITS 9

Referenced by fftscope_port_open().

## ◆ FFT_HEIGHT

#define FFT_HEIGHT 256

Referenced by draw_fftscope(), fftscope_port_open(), and fftscope_port_put_buffer().

## ◆ FFT_WIDTH

#define FFT_WIDTH 512

Referenced by draw_fftscope(), fftscope_port_open(), and fftscope_port_put_buffer().

## ◆ FPS

#define FPS 20

Referenced by fftscope_port_open().

## ◆ MAXCHANNELS

#define MAXCHANNELS 6

Referenced by fftscope_port_open().

## ◆ NUMSAMPLES

#define NUMSAMPLES 512

Referenced by draw_fftscope(), fftscope_port_open(), and fftscope_port_put_buffer().

## Typedef Documentation

## ◆ post_plugin_fftscope_t

typedef struct post_plugin_fftscope_s post_plugin_fftscope_t

## Function Documentation

## ◆ draw_fftscope()

static void draw_fftscope | ( | post_plugin_fftscope_t * | this,
|  | vo_frame_t * | frame )
| static

References vo_frame_s::base, be2me_32, fade_out_yuv(), fft_amp2(), fft_compute(), FFT_HEIGHT, fft_scale(), FFT_WIDTH, fft_window(), and NUMSAMPLES.

Referenced by fftscope_port_put_buffer().

## ◆ fade_out_yuv()

static void fade_out_yuv | ( | uint8_t * | y,
|  | uint8_t * | u,
|  | uint8_t * | v,
|  | float | factor )
| static

References v.

Referenced by draw_fftscope().

## ◆ fftscope_dispose()

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

References _x_freep(), and _x_post_dispose().

Referenced by fftscope_open_plugin().

## ◆ fftscope_init_plugin()

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

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

## ◆ fftscope_open_plugin()

static post_plugin_t * fftscope_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, fftscope_dispose(), fftscope_port_close(), fftscope_port_open(), fftscope_port_put_buffer(), fftscope_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 fftscope_init_plugin().

## ◆ fftscope_port_close()

static void fftscope_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 fftscope_open_plugin().

## ◆ fftscope_port_open()

static int fftscope_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(), bits, post_audio_port_s::bits, FFT_BITS, FFT_HEIGHT, fft_new(), FFT_WIDTH, FPS, MAXCHANNELS, xine_stream_s::metronom, mode(), post_audio_port_s::mode, NUMSAMPLES, 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 fftscope_open_plugin().

## ◆ fftscope_port_put_buffer()

static void fftscope_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_fftscope(), vo_frame_s::duration, vo_frame_s::extra_info, FFT_HEIGHT, FFT_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 fftscope_open_plugin().

## ◆ fftscope_rewire_video()

static int fftscope_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 fftscope_open_plugin().