diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2020-11-11 23:44:15 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2020-11-12 23:14:05 -0800 |
commit | c265f13978fbd68f295d99b2fe4720fe4866d64c (patch) | |
tree | a08822aa66dd16bb3ef79d7e46706386db02ddcc /src/rmd_threads.c | |
parent | 7281dc6fdc4f345c9c1c7bcda20e3bef3003c140 (diff) |
timer: remove unnecessary timer thread
This removes the timer thread entirely in favor of a coordinated
delay loop directly within rmdGetFrame.
When there's an audio stream to synchronize with, avd is
maintained by the pcm buffer updates, and the fps-derived
frametimes synchronize with the audio that way.
When there's no audio stream (--no-sound), avd is now maintained
synthetically via clock_gettime(CLOCK_MONOTONIC) coordinating
with the clock instead.
There's been some reworking of frame sampling/reusing and cloning
logic, which may need some refinement. But for now the tests
seem to show promise.
The old timer approach just increased the non-determinism by
adding more scheduler latency and influence unnecessarily.
Diffstat (limited to 'src/rmd_threads.c')
-rw-r--r-- | src/rmd_threads.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/src/rmd_threads.c b/src/rmd_threads.c index 40fe94a..8514649 100644 --- a/src/rmd_threads.c +++ b/src/rmd_threads.c @@ -36,7 +36,6 @@ #include "rmd_get_frame.h" #include "rmd_jack.h" #include "rmd_register_callbacks.h" -#include "rmd_timer.h" #include "rmd_types.h" #include <pthread.h> @@ -55,8 +54,7 @@ void rmdThreads(ProgData *pdata) sound_capture_t, sound_encode_t, sound_cache_t, - flush_to_ogg_t, - timer_t; + flush_to_ogg_t; if (pdata->args.delay > 0) { fprintf(stderr, "Will sleep for %d seconds now.\n", pdata->args.delay); @@ -106,11 +104,6 @@ void rmdThreads(ProgData *pdata) (void *)pdata); rmdRegisterCallbacks(pdata); - pdata->timer_alive = 1; - pthread_create( &timer_t, - NULL, - (void *)rmdTimer, - (void *)pdata); fprintf(stderr,"Capturing!\n"); #ifdef HAVE_LIBJACK @@ -165,10 +158,6 @@ void rmdThreads(ProgData *pdata) fprintf(stderr,".."); fprintf(stderr,"."); - - //Now that we are done with recording we cancel the timer - pdata->timer_alive = 0; - pthread_join(timer_t,NULL); } void rmdThreadsSetName(const char *name) |