diff options
| author | Maarten Bosmans <mkbosmans@gmail.com> | 2011-01-12 07:31:26 +0100 | 
|---|---|---|
| committer | Colin Guthrie <cguthrie@mandriva.org> | 2011-02-25 10:34:50 +0000 | 
| commit | 2ee4ec507cd4105fcddeaf706749524ddeb1ebf5 (patch) | |
| tree | cb28fcf4c177df08b1bfdb94dfb3dd6bfa97b3f2 | |
| parent | 2bfc0322c975f573e6aea136db1cf99c6dcb11fd (diff) | |
module-rtp-recv: Remove smoother from write index
It isn't necessary anymore with the new algorithm.  The slow adjust of the
smoother was even detrimental to the accuracy of the rate estimate.
| -rw-r--r-- | src/modules/rtp/module-rtp-recv.c | 24 | 
1 files changed, 3 insertions, 21 deletions
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c index baf5b50b..d214cbc6 100644 --- a/src/modules/rtp/module-rtp-recv.c +++ b/src/modules/rtp/module-rtp-recv.c @@ -52,7 +52,6 @@  #include <pulsecore/macro.h>  #include <pulsecore/atomic.h>  #include <pulsecore/atomic.h> -#include <pulsecore/time-smoother.h>  #include <pulsecore/socket-util.h>  #include <pulsecore/once.h> @@ -104,7 +103,6 @@ struct session {      pa_atomic_t timestamp; -    pa_smoother *smoother;      pa_usec_t intended_latency;      pa_usec_t sink_latency; @@ -197,10 +195,9 @@ static void sink_input_suspend_within_thread(pa_sink_input* i, pa_bool_t b) {      pa_sink_input_assert_ref(i);      pa_assert_se(s = i->userdata); -    if (b) { -        pa_smoother_pause(s->smoother, pa_rtclock_now()); +    if (b)          pa_memblockq_flush_read(s->memblockq); -    } else +    else          s->first_packet = FALSE;  } @@ -269,11 +266,6 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {      } else          pa_rtclock_from_wallclock(&now); -    pa_smoother_put(s->smoother, pa_timeval_load(&now), pa_bytes_to_usec((uint64_t) pa_memblockq_get_write_index(s->memblockq), &s->sink_input->sample_spec)); - -    /* Tell the smoother that we are rolling now, in case it is still paused */ -    pa_smoother_resume(s->smoother, pa_timeval_load(&now), TRUE); -      if (pa_memblockq_push(s->memblockq, &chunk) < 0) {          pa_log_warn("Queue overrun");          pa_memblockq_seek(s->memblockq, (int64_t) chunk.length, PA_SEEK_RELATIVE, TRUE); @@ -297,7 +289,7 @@ static int rtpoll_work_cb(pa_rtpoll_item *i) {          pa_log_debug("Updating sample rate"); -        wi = pa_smoother_get(s->smoother, pa_timeval_load(&now)); +        wi = pa_bytes_to_usec((uint64_t) pa_memblockq_get_write_index(s->memblockq), &s->sink_input->sample_spec);          ri = pa_bytes_to_usec((uint64_t) pa_memblockq_get_read_index(s->memblockq), &s->sink_input->sample_spec);          pa_log_debug("wi=%lu ri=%lu", (unsigned long) wi, (unsigned long) ri); @@ -508,14 +500,6 @@ static struct session *session_new(struct userdata *u, const pa_sdp_info *sdp_in      s->sdp_info = *sdp_info;      s->rtpoll_item = NULL;      s->intended_latency = LATENCY_USEC; -    s->smoother = pa_smoother_new( -            PA_USEC_PER_SEC*5, -            PA_USEC_PER_SEC*2, -            TRUE, -            TRUE, -            10, -            pa_timeval_load(&now), -            TRUE);      s->last_rate_update = pa_timeval_load(&now);      s->last_latency = LATENCY_USEC;      s->estimated_rate = (double) sink->sample_spec.rate; @@ -619,8 +603,6 @@ static void session_free(struct session *s) {      pa_sdp_info_destroy(&s->sdp_info);      pa_rtp_context_destroy(&s->rtp_context); -    pa_smoother_free(s->smoother); -      pa_xfree(s);  }  | 
