summaryrefslogtreecommitdiff
path: root/src/post/visualizations/fooviz.c
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2003-10-30 22:40:53 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2003-10-30 22:40:53 +0000
commitfe9eb37f05b677071f9de1b9e69c535aa2293d0b (patch)
tree54cbc02374f1fb4a466b360040a6b8a0a00d5674 /src/post/visualizations/fooviz.c
parentdeb61082227d4de4694578cdb96c156483c3cbac (diff)
downloadxine-lib-fe9eb37f05b677071f9de1b9e69c535aa2293d0b.tar.gz
xine-lib-fe9eb37f05b677071f9de1b9e69c535aa2293d0b.tar.bz2
* modify the engine slightly, so that the stream member in a video frame or
audio buffer can be NULL; this should be used to indicate that the frame/ buffer does not come directly from a stream, but was generated otherwise (the most important result is that frames/buffers with stream NULL will not be passed through metronom) * modify visualization post plugins so they set the stream on the generated frames to NULL, this avoids cluttering metronom, when playing a stream with audio AND video AND a visualization post * this also means modifying the way post plugins provide vpts values: they have to calculate them themselves for now CVS patchset: 5647 CVS date: 2003/10/30 22:40:53
Diffstat (limited to 'src/post/visualizations/fooviz.c')
-rw-r--r--src/post/visualizations/fooviz.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/post/visualizations/fooviz.c b/src/post/visualizations/fooviz.c
index f5da6f0ec..4b302f2df 100644
--- a/src/post/visualizations/fooviz.c
+++ b/src/post/visualizations/fooviz.c
@@ -23,7 +23,7 @@
* process. It simply paints the screen a solid color and rotates through
* colors on each iteration.
*
- * $Id: fooviz.c,v 1.11 2003/10/23 20:12:35 mroi Exp $
+ * $Id: fooviz.c,v 1.12 2003/10/30 22:40:53 mroi Exp $
*
*/
@@ -172,17 +172,10 @@ static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
int16_t *data;
int8_t *data8;
int samples_used = 0;
- uint64_t vpts = buf->vpts;
+ int64_t pts = buf->vpts;
+ int64_t vpts = 0;
int i, j;
- /* HACK: compute a pts using metronom internals */
- if (!vpts) {
- metronom_t *metronom = this->stream->metronom;
- pthread_mutex_lock(&metronom->lock);
- vpts = metronom->audio_vpts - metronom->vpts_offset;
- pthread_mutex_unlock(&metronom->lock);
- }
-
/* 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);
@@ -238,15 +231,24 @@ static void fooviz_port_put_buffer (xine_audio_port_t *port_gen,
VO_BOTH_FIELDS);
frame->extra_info->invalid = 1;
frame->bad_frame = 0;
- frame->pts = vpts;
- vpts = 0;
frame->duration = 90000 * this->samples_per_frame / this->sample_rate;
+ if (!vpts) {
+ vpts = this->stream->metronom->audio_vpts;
+ frame->pts = pts;
+ frame->vpts = vpts;
+ pts = 0;
+ vpts += frame->duration;
+ } else {
+ frame->pts = 0;
+ frame->vpts = vpts;
+ vpts += frame->duration;
+ }
this->sample_counter -= this->samples_per_frame;
memset(frame->base[0], this->current_yuv_byte, FOO_WIDTH * FOO_HEIGHT * 2);
this->current_yuv_byte += 3;
- frame->draw(frame, stream);
+ frame->draw(frame, NULL);
frame->free(frame);
}
} while( this->sample_counter >= this->samples_per_frame );