From 26fa9eae3915f1392e251af27642de54fb227066 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 15 Aug 2018 21:31:59 +0200 Subject: [PATCH] clock: set rate correctly The ticks multiplied by the rate should give the time in seconds. --- spa/plugins/alsa/alsa-utils.c | 4 ++-- spa/plugins/v4l2/v4l2-utils.c | 5 ++--- src/modules/module-media-session.c | 3 +-- src/pipewire/node.c | 5 +++-- src/pipewire/stream.c | 3 ++- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/spa/plugins/alsa/alsa-utils.c b/spa/plugins/alsa/alsa-utils.c index c345ff136..b1f1205b3 100644 --- a/spa/plugins/alsa/alsa-utils.c +++ b/spa/plugins/alsa/alsa-utils.c @@ -571,7 +571,7 @@ static void alsa_on_playback_timeout_event(struct spa_source *source) if (state->clock) { state->clock->nsec = SPA_TIMESPEC_TO_TIME(&state->now); - state->clock->rate = SPA_FRACTION(state->rate, 1); + state->clock->rate = SPA_FRACTION(1, state->rate); state->clock->position = state->sample_count; state->clock->delay = state->filled; } @@ -643,7 +643,7 @@ static void alsa_on_capture_timeout_event(struct spa_source *source) if (state->clock) { state->clock->nsec = SPA_TIMESPEC_TO_TIME(&state->now); - state->clock->rate = SPA_FRACTION(state->rate, 1); + state->clock->rate = SPA_FRACTION(1, state->rate); state->clock->position = state->sample_count; state->clock->delay = avail; } diff --git a/spa/plugins/v4l2/v4l2-utils.c b/spa/plugins/v4l2/v4l2-utils.c index 74106bb06..da3c904eb 100644 --- a/spa/plugins/v4l2/v4l2-utils.c +++ b/spa/plugins/v4l2/v4l2-utils.c @@ -901,8 +901,8 @@ static int spa_v4l2_set_format(struct impl *this, struct spa_video_info *format, size->width = fmt.fmt.pix.width; size->height = fmt.fmt.pix.height; - framerate->num = streamparm.parm.capture.timeperframe.denominator; - framerate->denom = streamparm.parm.capture.timeperframe.numerator; + port->rate.denom = framerate->num = streamparm.parm.capture.timeperframe.denominator; + port->rate.num = framerate->denom = streamparm.parm.capture.timeperframe.numerator; port->fmt = fmt; port->info.flags = (port->export_buf ? SPA_PORT_INFO_FLAG_CAN_ALLOC_BUFFERS : 0) | @@ -911,7 +911,6 @@ static int spa_v4l2_set_format(struct impl *this, struct spa_video_info *format, SPA_PORT_INFO_FLAG_PHYSICAL | SPA_PORT_INFO_FLAG_TERMINAL; port->info.rate = streamparm.parm.capture.timeperframe.denominator; - port->rate = *framerate; return 0; } diff --git a/src/modules/module-media-session.c b/src/modules/module-media-session.c index c0eb6cd7c..800104b83 100644 --- a/src/modules/module-media-session.c +++ b/src/modules/module-media-session.c @@ -342,8 +342,7 @@ static void reconfigure_session(struct session *sess) sess->quantum_size = quantum_size; - sess->node->rt.quantum->rate.num = 1; - sess->node->rt.quantum->rate.denom = sess->sample_rate; + sess->node->rt.quantum->rate = SPA_FRACTION(1, sess->sample_rate); sess->node->rt.quantum->size = sess->quantum_size; pw_log_info("module %p: driver node:%p quantum:%d/%d", diff --git a/src/pipewire/node.c b/src/pipewire/node.c index b9b7944d9..789bca4f5 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -644,8 +644,9 @@ static void node_process(void *data, int status) } impl->next_position += q->size; - pw_log_trace("node %p: run %"PRIu64" %"PRIu64" %"PRIi64" %d", node, - q->nsec, q->position, q->delay, q->size); + pw_log_trace("node %p: run %"PRIu64" %d/%d %"PRIu64" %"PRIi64" %d", node, + q->nsec, q->rate.num, q->rate.denom, + q->position, q->delay, q->size); spa_graph_run(node->rt.driver); } diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 3088568f5..af07cb791 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1140,7 +1140,8 @@ int pw_stream_get_time(struct pw_stream *stream, struct pw_time *time) else time->queued = (int64_t)(impl->queued.incount - time->queued); - pw_log_trace("%ld %d/%d %ld", time->ticks, time->rate.num, time->rate.denom, time->queued); + pw_log_trace("%ld %ld %d/%d %ld", + time->now, time->ticks, time->rate.num, time->rate.denom, time->queued); return 0; }