summaryrefslogtreecommitdiff
path: root/src/post/visualizations
diff options
context:
space:
mode:
Diffstat (limited to 'src/post/visualizations')
-rw-r--r--src/post/visualizations/fft.c6
-rw-r--r--src/post/visualizations/fft.h6
-rw-r--r--src/post/visualizations/fftgraph.c54
-rw-r--r--src/post/visualizations/fftscope.c42
-rw-r--r--src/post/visualizations/fooviz.c80
-rw-r--r--src/post/visualizations/oscope.c88
6 files changed, 138 insertions, 138 deletions
diff --git a/src/post/visualizations/fft.c b/src/post/visualizations/fft.c
index 01044987b..8e9364400 100644
--- a/src/post/visualizations/fft.c
+++ b/src/post/visualizations/fft.c
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2003 the xine project
- *
+ *
* This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
diff --git a/src/post/visualizations/fft.h b/src/post/visualizations/fft.h
index 1600430bc..358cec33c 100644
--- a/src/post/visualizations/fft.h
+++ b/src/post/visualizations/fft.h
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2003 the xine project
- *
+ *
* This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
diff --git a/src/post/visualizations/fftgraph.c b/src/post/visualizations/fftgraph.c
index 1f38d3478..2d13c4084 100644
--- a/src/post/visualizations/fftgraph.c
+++ b/src/post/visualizations/fftgraph.c
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2003 the xine project
- *
+ *
* This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -66,7 +66,7 @@ struct post_plugin_fftgraph_s {
/* private metronom for syncing the video */
metronom_t *metronom;
-
+
double ratio;
int data_idx;
@@ -92,21 +92,21 @@ static void fade(int r1, int g1, int b1,
int r2, int g2, int b2,
uint32_t *yuy2_colors, int steps) {
int i, r, g, b, y, u, v;
-
+
for (i = 0; i < steps; i++) {
r = r1 + (r2 - r1) * i / steps;
g = g1 + (g2 - g1) * i / steps;
b = b1 + (b2 - b1) * i / steps;
-
+
y = COMPUTE_Y(r, g, b);
u = COMPUTE_U(r, g, b);
v = COMPUTE_V(r, g, b);
-
+
*(yuy2_colors + i) = be2me_32((y << 24) |
(u << 16) |
(y << 8) |
v);
-
+
}
}
@@ -212,19 +212,19 @@ static int fftgraph_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream
int i,j;
uint32_t *color_ptr;
uint32_t last_color, yuy2_black;
-
+
/* printf("fftgraph_port_open, port_gen=%p, stream=%p, this=%p\n", port_gen, stream, this); */
_x_post_rewire(&this->post);
_x_post_inc_usage(port);
-
+
port->stream = stream;
port->bits = bits;
port->rate = rate;
port->mode = mode;
-
+
this->ratio = (double)FFTGRAPH_WIDTH / (double)FFTGRAPH_HEIGHT;
-
+
this->channels = _x_ao_mode2channels(mode);
if( this->channels > MAXCHANNELS )
this->channels = MAXCHANNELS;
@@ -239,7 +239,7 @@ static int fftgraph_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream
this->fft = fft_new(FFT_BITS);
this->cur_line = 0;
-
+
/* compute colors */
color_ptr = this->yuy2_colors;
/* black -> red */
@@ -253,7 +253,7 @@ static int fftgraph_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream
40, 0, 160,
color_ptr, 256);
color_ptr += 256;
-
+
/* blue -> green */
fade(40, 0, 160,
40, 160, 70,
@@ -294,15 +294,15 @@ static void fftgraph_port_close(xine_audio_port_t *port_gen, xine_stream_t *stre
post_plugin_fftgraph_t *this = (post_plugin_fftgraph_t *)port->post;
port->stream = NULL;
-
+
fft_dispose(this->fft);
this->fft = NULL;
this->vo_port->close(this->vo_port, XINE_ANON_STREAM);
this->metronom->set_master(this->metronom, NULL);
-
+
port->original_port->close(port->original_port, stream );
-
+
_x_post_dec_usage(port);
}
@@ -329,7 +329,7 @@ static void fftgraph_port_put_buffer (xine_audio_port_t *port_gen,
/* pass data to original port */
port->original_port->put_buffer(port->original_port, buf, stream );
-
+
/* we must not use original data anymore, it should have already being moved
* to the fifo of free audio buffers. just use our private copy instead.
*/
@@ -372,8 +372,8 @@ static void fftgraph_port_put_buffer (xine_audio_port_t *port_gen,
this->ratio, XINE_IMGFMT_YUY2,
VO_BOTH_FIELDS);
frame->extra_info->invalid = 1;
-
- /* frame is marked as bad if we don't have enough samples for
+
+ /* frame is marked as bad if we don't have enough samples for
* updating the viz plugin (calculations may be skipped).
* we must keep the framerate though. */
if( this->data_idx == NUMSAMPLES ) {
@@ -385,10 +385,10 @@ static void fftgraph_port_put_buffer (xine_audio_port_t *port_gen,
frame->duration = 90000 * this->samples_per_frame / port->rate;
frame->pts = pts;
this->metronom->got_video_frame(this->metronom, frame);
-
+
this->sample_counter -= this->samples_per_frame;
- if( this->fft )
+ if( this->fft )
draw_fftgraph(this, frame);
else
frame->bad_frame = 1;
@@ -431,7 +431,7 @@ static post_plugin_t *fftgraph_open_plugin(post_class_t *class_gen, int inputs,
}
_x_post_init(&this->post, 1, 0);
-
+
this->metronom = _x_metronom_init(1, 0, class->xine);
this->vo_port = video_target[0];
@@ -460,16 +460,16 @@ static post_plugin_t *fftgraph_open_plugin(post_class_t *class_gen, int inputs,
void *fftgraph_init_plugin(xine_t *xine, void *data)
{
post_class_fftgraph_t *class = (post_class_fftgraph_t *)xine_xmalloc(sizeof(post_class_fftgraph_t));
-
+
if (!class)
return NULL;
-
+
class->post_class.open_plugin = fftgraph_open_plugin;
class->post_class.identifier = "fftgraph";
class->post_class.description = N_("fftgraph Visualization Post Plugin");
class->post_class.dispose = default_post_class_dispose;
-
+
class->xine = xine;
-
+
return class;
}
diff --git a/src/post/visualizations/fftscope.c b/src/post/visualizations/fftscope.c
index b6af2fc6c..3ec72fba8 100644
--- a/src/post/visualizations/fftscope.c
+++ b/src/post/visualizations/fftscope.c
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2003 the xine project
- *
+ *
* This file is part of xine, a free video player.
*
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -53,7 +53,7 @@ typedef struct post_class_fftscope_s post_class_fftscope_t;
struct post_class_fftscope_s {
post_class_t post_class;
-
+
xine_t *xine;
};
@@ -63,10 +63,10 @@ struct post_plugin_fftscope_s {
/* private data */
xine_video_port_t *vo_port;
post_out_t video_output;
-
+
/* private metronom for syncing the video */
metronom_t *metronom;
-
+
double ratio;
int data_idx;
@@ -277,12 +277,12 @@ static int fftscope_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream
_x_post_rewire(&this->post);
_x_post_inc_usage(port);
-
+
port->stream = stream;
port->bits = bits;
port->rate = rate;
port->mode = mode;
-
+
this->ratio = (double)FFT_WIDTH/(double)FFT_HEIGHT;
this->channels = _x_ao_mode2channels(mode);
@@ -315,15 +315,15 @@ static void fftscope_port_close(xine_audio_port_t *port_gen, xine_stream_t *stre
post_plugin_fftscope_t *this = (post_plugin_fftscope_t *)port->post;
port->stream = NULL;
-
+
fft_dispose(this->fft);
this->fft = NULL;
this->vo_port->close(this->vo_port, XINE_ANON_STREAM);
this->metronom->set_master(this->metronom, NULL);
-
+
port->original_port->close(port->original_port, stream );
-
+
_x_post_dec_usage(port);
}
@@ -393,8 +393,8 @@ static void fftscope_port_put_buffer (xine_audio_port_t *port_gen,
this->ratio, XINE_IMGFMT_YUY2,
VO_BOTH_FIELDS);
frame->extra_info->invalid = 1;
-
- /* frame is marked as bad if we don't have enough samples for
+
+ /* frame is marked as bad if we don't have enough samples for
* updating the viz plugin (calculations may be skipped).
* we must keep the framerate though. */
if( this->data_idx == NUMSAMPLES ) {
@@ -406,10 +406,10 @@ static void fftscope_port_put_buffer (xine_audio_port_t *port_gen,
frame->duration = 90000 * this->samples_per_frame / port->rate;
frame->pts = pts;
this->metronom->got_video_frame(this->metronom, frame);
-
+
this->sample_counter -= this->samples_per_frame;
- if( this->fft )
+ if( this->fft )
draw_fftscope(this, frame);
else
frame->bad_frame = 1;
@@ -423,7 +423,7 @@ static void fftscope_port_put_buffer (xine_audio_port_t *port_gen,
static void fftscope_dispose(post_plugin_t *this_gen)
{
post_plugin_fftscope_t *this = (post_plugin_fftscope_t *)this_gen;
-
+
if (_x_post_dispose(this_gen)) {
this->metronom->exit(this->metronom);
@@ -450,7 +450,7 @@ static post_plugin_t *fftscope_open_plugin(post_class_t *class_gen, int inputs,
free(this);
return NULL;
}
-
+
_x_post_init(&this->post, 1, 0);
this->metronom = _x_metronom_init(1, 0, class->xine);
@@ -481,16 +481,16 @@ static post_plugin_t *fftscope_open_plugin(post_class_t *class_gen, int inputs,
void *fftscope_init_plugin(xine_t *xine, void *data)
{
post_class_fftscope_t *class = (post_class_fftscope_t *)xine_xmalloc(sizeof(post_class_fftscope_t));
-
+
if (!class)
return NULL;
-
+
class->post_class.open_plugin = fftscope_open_plugin;
class->post_class.identifier = "FFT Scope";
class->post_class.description = N_("FFT Scope");
class->post_class.dispose = default_post_class_dispose;
-
+
class->xine = xine;
-
+
return &class->post_class;
}
diff --git a/src/post/visualizations/fooviz.c b/src/post/visualizations/fooviz.c
index 751cb9bac..9c8a9c1fa 100644
--- a/src/post/visualizations/fooviz.c
+++ b/src/post/visualizations/fooviz.c
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2004 the xine project
- *
+ *
* This file is part of xine, a free video player.
- *
+ *
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -60,7 +60,7 @@ struct post_plugin_fooviz_s {
/* private metronom for syncing the video */
metronom_t *metronom;
-
+
double ratio;
int data_idx;
@@ -90,7 +90,7 @@ static int fooviz_rewire_video(xine_post_out_t *output_gen, void *data)
xine_video_port_t *old_port = *(xine_video_port_t **)output_gen->data;
xine_video_port_t *new_port = (xine_video_port_t *)data;
post_plugin_fooviz_t *this = (post_plugin_fooviz_t *)output->post;
-
+
if (!data)
return 0;
/* register our stream at the new output port */
@@ -109,12 +109,12 @@ static int fooviz_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream,
_x_post_rewire(&this->post);
_x_post_inc_usage(port);
-
+
port->stream = stream;
port->bits = bits;
port->rate = rate;
port->mode = mode;
-
+
this->ratio = (double)FOO_WIDTH/(double)FOO_HEIGHT;
this->channels = _x_ao_mode2channels(mode);
this->samples_per_frame = rate / FPS;
@@ -133,18 +133,18 @@ static void fooviz_port_close(xine_audio_port_t *port_gen, xine_stream_t *stream
post_plugin_fooviz_t *this = (post_plugin_fooviz_t *)port->post;
port->stream = NULL;
-
+
this->vo_port->close(this->vo_port, XINE_ANON_STREAM);
this->metronom->set_master(this->metronom, NULL);
-
+
port->original_port->close(port->original_port, stream );
-
+
_x_post_dec_usage(port);
}
-static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
+static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
audio_buffer_t *buf, xine_stream_t *stream) {
-
+
post_audio_port_t *port = (post_audio_port_t *)port_gen;
post_plugin_fooviz_t *this = (post_plugin_fooviz_t *)port->post;
vo_frame_t *frame;
@@ -153,34 +153,34 @@ static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
int samples_used = 0;
int64_t pts = buf->vpts;
int i, j;
-
+
/* make a copy of buf data for private use */
if( this->buf.mem_size < buf->mem_size ) {
this->buf.mem = realloc(this->buf.mem, buf->mem_size);
this->buf.mem_size = buf->mem_size;
}
- memcpy(this->buf.mem, buf->mem,
+ memcpy(this->buf.mem, buf->mem,
buf->num_frames*this->channels*((port->bits == 8)?1:2));
this->buf.num_frames = buf->num_frames;
-
+
/* pass data to original port */
- port->original_port->put_buffer(port->original_port, buf, stream );
-
+ port->original_port->put_buffer(port->original_port, buf, stream );
+
/* we must not use original data anymore, it should have already being moved
* to the fifo of free audio buffers. just use our private copy instead.
*/
- buf = &this->buf;
+ buf = &this->buf;
this->sample_counter += buf->num_frames;
-
+
j = (this->channels >= 2) ? 1 : 0;
do {
-
+
if( port->bits == 8 ) {
data8 = (int8_t *)buf->mem;
data8 += samples_used * this->channels;
-
+
/* scale 8 bit data to 16 bits and convert to signed as well */
for( i = samples_used; i < buf->num_frames && this->data_idx < NUMSAMPLES;
i++, this->data_idx++, data8 += this->channels ) {
@@ -190,24 +190,24 @@ static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
} else {
data = buf->mem;
data += samples_used * this->channels;
-
+
for( i = samples_used; i < buf->num_frames && this->data_idx < NUMSAMPLES;
i++, this->data_idx++, data += this->channels ) {
this->data[0][this->data_idx] = data[0];
this->data[1][this->data_idx] = data[j];
}
}
-
+
if( this->sample_counter >= this->samples_per_frame ) {
-
+
samples_used += this->samples_per_frame;
-
+
frame = this->vo_port->get_frame (this->vo_port, FOO_WIDTH, FOO_HEIGHT,
this->ratio, XINE_IMGFMT_YUY2,
VO_BOTH_FIELDS);
frame->extra_info->invalid = 1;
-
- /* frame is marked as bad if we don't have enough samples for
+
+ /* frame is marked as bad if we don't have enough samples for
* updating the viz plugin (calculations may be skipped).
* we must keep the framerate though. */
if( this->data_idx == NUMSAMPLES ) {
@@ -219,7 +219,7 @@ static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
frame->duration = 90000 * this->samples_per_frame / port->rate;
frame->pts = pts;
this->metronom->got_video_frame(this->metronom, frame);
-
+
this->sample_counter -= this->samples_per_frame;
memset(frame->base[0], this->current_yuv_byte, FOO_WIDTH * FOO_HEIGHT * 2);
@@ -256,14 +256,14 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs,
post_out_t *output;
post_out_t *outputv;
post_audio_port_t *port;
-
+
if (!this || !video_target || !video_target[0] || !audio_target || !audio_target[0] ) {
free(this);
return NULL;
}
-
+
_x_post_init(&this->post, 1, 0);
-
+
this->metronom = _x_metronom_init(1, 0, class->xine);
this->vo_port = video_target[0];
@@ -272,7 +272,7 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs,
port->new_port.open = fooviz_port_open;
port->new_port.close = fooviz_port_close;
port->new_port.put_buffer = fooviz_port_put_buffer;
-
+
outputv = &this->video_output;
outputv->xine_out.name = "generated video";
outputv->xine_out.type = XINE_POST_DATA_VIDEO;
@@ -280,9 +280,9 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs,
outputv->xine_out.rewire = fooviz_rewire_video;
outputv->post = &this->post;
xine_list_push_back(this->post.output, outputv);
-
+
this->post.xine_post.audio_input[0] = &port->new_port;
-
+
this->post.dispose = fooviz_dispose;
return &this->post;
@@ -292,17 +292,17 @@ static post_plugin_t *fooviz_open_plugin(post_class_t *class_gen, int inputs,
static void *fooviz_init_plugin(xine_t *xine, void *data)
{
post_class_fooviz_t *class = (post_class_fooviz_t *)xine_xmalloc(sizeof(post_class_fooviz_t));
-
+
if (!class)
return NULL;
-
+
class->post_class.open_plugin = fooviz_open_plugin;
class->post_class.identifier = "fooviz";
class->post_class.description = N_("fooviz");
class->post_class.dispose = default_post_class_dispose;
-
+
class->xine = xine;
-
+
return class;
}
@@ -310,7 +310,7 @@ static void *fooviz_init_plugin(xine_t *xine, void *data)
static const post_info_t fooviz_special_info = { XINE_POST_TYPE_AUDIO_VISUALIZATION };
const plugin_info_t xine_plugin_info[] EXPORTED = {
- /* type, API, "name", version, special_info, init_function */
+ /* type, API, "name", version, special_info, init_function */
{ PLUGIN_POST, 10, "fooviz", XINE_VERSION_CODE, &fooviz_special_info, &fooviz_init_plugin },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/post/visualizations/oscope.c b/src/post/visualizations/oscope.c
index c6861406e..ffd6f0842 100644
--- a/src/post/visualizations/oscope.c
+++ b/src/post/visualizations/oscope.c
@@ -1,18 +1,18 @@
/*
* Copyright (C) 2000-2003 the xine project
- *
+ *
* This file is part of xine, a free video player.
- *
+ *
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -59,13 +59,13 @@ struct post_plugin_oscope_s {
/* private metronom for syncing the video */
metronom_t *metronom;
-
+
double ratio;
int data_idx;
short data [MAXCHANNELS][NUMSAMPLES];
audio_buffer_t buf; /* dummy buffer just to hold a copy of audio data */
-
+
int channels;
int sample_counter;
int samples_per_frame;
@@ -130,7 +130,7 @@ static void draw_oscope_dots(post_plugin_oscope_t *this) {
/* draw channel scope */
for (i = 0; i < NUMSAMPLES; i++) {
- pixel_ptr =
+ pixel_ptr =
((OSCOPE_HEIGHT * (c * 2 + 1) / (2*this->channels) ) + (this->data[c][i] >> 9)) * OSCOPE_WIDTH + i;
this->yuv.y[pixel_ptr] = 0xFF;
this->yuv.u[pixel_ptr] = this->u_current;
@@ -161,7 +161,7 @@ static int oscope_rewire_video(xine_post_out_t *output_gen, void *data)
xine_video_port_t *old_port = *(xine_video_port_t **)output_gen->data;
xine_video_port_t *new_port = (xine_video_port_t *)data;
post_plugin_oscope_t *this = (post_plugin_oscope_t *)output->post;
-
+
if (!data)
return 0;
old_port->close(old_port, XINE_ANON_STREAM);
@@ -179,12 +179,12 @@ static int oscope_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream,
_x_post_rewire(&this->post);
_x_post_inc_usage(port);
-
+
port->stream = stream;
port->bits = bits;
port->rate = rate;
port->mode = mode;
-
+
this->ratio = (double)OSCOPE_WIDTH/(double)OSCOPE_HEIGHT;
this->channels = _x_ao_mode2channels(mode);
@@ -210,15 +210,15 @@ static void oscope_port_close(xine_audio_port_t *port_gen, xine_stream_t *stream
this->vo_port->close(this->vo_port, XINE_ANON_STREAM);
this->metronom->set_master(this->metronom, NULL);
-
+
port->original_port->close(port->original_port, stream );
-
+
_x_post_dec_usage(port);
}
-static void oscope_port_put_buffer (xine_audio_port_t *port_gen,
+static void oscope_port_put_buffer (xine_audio_port_t *port_gen,
audio_buffer_t *buf, xine_stream_t *stream) {
-
+
post_audio_port_t *port = (post_audio_port_t *)port_gen;
post_plugin_oscope_t *this = (post_plugin_oscope_t *)port->post;
vo_frame_t *frame;
@@ -227,32 +227,32 @@ static void oscope_port_put_buffer (xine_audio_port_t *port_gen,
int samples_used = 0;
int64_t pts = buf->vpts;
int i, c;
-
+
/* make a copy of buf data for private use */
if( this->buf.mem_size < buf->mem_size ) {
this->buf.mem = realloc(this->buf.mem, buf->mem_size);
this->buf.mem_size = buf->mem_size;
}
- memcpy(this->buf.mem, buf->mem,
+ memcpy(this->buf.mem, buf->mem,
buf->num_frames*this->channels*((port->bits == 8)?1:2));
this->buf.num_frames = buf->num_frames;
-
+
/* pass data to original port */
- port->original_port->put_buffer(port->original_port, buf, stream );
-
+ port->original_port->put_buffer(port->original_port, buf, stream );
+
/* we must not use original data anymore, it should have already being moved
* to the fifo of free audio buffers. just use our private copy instead.
*/
- buf = &this->buf;
-
+ buf = &this->buf;
+
this->sample_counter += buf->num_frames;
-
+
do {
-
+
if( port->bits == 8 ) {
data8 = (int8_t *)buf->mem;
data8 += samples_used * this->channels;
-
+
/* scale 8 bit data to 16 bits and convert to signed as well */
for( i = samples_used; i < buf->num_frames && this->data_idx < NUMSAMPLES;
i++, this->data_idx++, data8 += this->channels )
@@ -261,23 +261,23 @@ static void oscope_port_put_buffer (xine_audio_port_t *port_gen,
} else {
data = buf->mem;
data += samples_used * this->channels;
-
+
for( i = samples_used; i < buf->num_frames && this->data_idx < NUMSAMPLES;
i++, this->data_idx++, data += this->channels )
for( c = 0; c < this->channels; c++)
this->data[c][this->data_idx] = data[c];
}
-
+
if( this->sample_counter >= this->samples_per_frame ) {
-
+
samples_used += this->samples_per_frame;
-
+
frame = this->vo_port->get_frame (this->vo_port, OSCOPE_WIDTH, OSCOPE_HEIGHT,
this->ratio, XINE_IMGFMT_YUY2,
VO_BOTH_FIELDS);
frame->extra_info->invalid = 1;
-
- /* frame is marked as bad if we don't have enough samples for
+
+ /* frame is marked as bad if we don't have enough samples for
* updating the viz plugin (calculations may be skipped).
* we must keep the framerate though. */
if( this->data_idx == NUMSAMPLES ) {
@@ -289,12 +289,12 @@ static void oscope_port_put_buffer (xine_audio_port_t *port_gen,
frame->duration = 90000 * this->samples_per_frame / port->rate;
frame->pts = pts;
this->metronom->got_video_frame(this->metronom, frame);
-
+
this->sample_counter -= this->samples_per_frame;
-
+
draw_oscope_dots(this);
yuv444_to_yuy2(&this->yuv, frame->base[0], frame->pitches[0]);
-
+
frame->draw(frame, XINE_ANON_STREAM);
frame->free(frame);
@@ -307,7 +307,7 @@ static void oscope_dispose(post_plugin_t *this_gen)
post_plugin_oscope_t *this = (post_plugin_oscope_t *)this_gen;
if (_x_post_dispose(this_gen)) {
-
+
this->metronom->exit(this->metronom);
if(this->buf.mem)
@@ -327,14 +327,14 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs,
post_out_t *output;
post_out_t *outputv;
post_audio_port_t *port;
-
+
if (!this || !video_target || !video_target[0] || !audio_target || !audio_target[0] ) {
free(this);
return NULL;
}
-
+
_x_post_init(&this->post, 1, 0);
-
+
this->metronom = _x_metronom_init(1, 0, class->xine);
this->vo_port = video_target[0];
@@ -343,7 +343,7 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs,
port->new_port.open = oscope_port_open;
port->new_port.close = oscope_port_close;
port->new_port.put_buffer = oscope_port_put_buffer;
-
+
outputv = &this->video_output;
outputv->xine_out.name = "generated video";
outputv->xine_out.type = XINE_POST_DATA_VIDEO;
@@ -351,9 +351,9 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs,
outputv->xine_out.rewire = oscope_rewire_video;
outputv->post = &this->post;
xine_list_push_back(this->post.output, outputv);
-
+
this->post.xine_post.audio_input[0] = &port->new_port;
-
+
this->post.dispose = oscope_dispose;
return &this->post;
@@ -363,16 +363,16 @@ static post_plugin_t *oscope_open_plugin(post_class_t *class_gen, int inputs,
void *oscope_init_plugin(xine_t *xine, void *data)
{
post_class_oscope_t *class = (post_class_oscope_t *)xine_xmalloc(sizeof(post_class_oscope_t));
-
+
if (!class)
return NULL;
-
+
class->post_class.open_plugin = oscope_open_plugin;
class->post_class.identifier = "Oscilloscope";
class->post_class.description = N_("Oscilloscope");
class->post_class.dispose = default_post_class_dispose;
-
+
class->xine = xine;
-
+
return &class->post_class;
}