diff options
Diffstat (limited to 'src/post/visualizations/oscope.c')
-rw-r--r-- | src/post/visualizations/oscope.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/post/visualizations/oscope.c b/src/post/visualizations/oscope.c index 3e2908d54..4f312ca49 100644 --- a/src/post/visualizations/oscope.c +++ b/src/post/visualizations/oscope.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2002 the xine project + * Copyright (C) 2000-2003 the xine project * * This file is part of xine, a free video player. * @@ -20,7 +20,7 @@ * Basic Oscilloscope Visualization Post Plugin For xine * by Mike Melanson (melanson@pcisys.net) * - * $Id: oscope.c,v 1.9 2003/08/04 03:47:11 miguelfreitas Exp $ + * $Id: oscope.c,v 1.10 2003/10/30 22:40:53 mroi Exp $ * */ @@ -29,6 +29,7 @@ #include "xine_internal.h" #include "xineutils.h" #include "post.h" +#include "visualizations.h" #define FPS 20 @@ -244,17 +245,10 @@ static void oscope_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, c; - /* 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); @@ -306,15 +300,24 @@ static void oscope_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; draw_oscope_dots(this); yuv444_to_yuy2(&this->yuv, frame->base[0], frame->pitches[0]); - frame->draw(frame, stream); + frame->draw(frame, NULL); frame->free(frame); } |