diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2020-07-15 01:48:07 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2020-07-15 01:48:07 -0700 |
commit | 63c510aca1de960ee12d2ee5b83b794c50258b44 (patch) | |
tree | ebd6f94ddb0ccf0dce7ad1bbad67b81b1e12ee89 /src/rmd_capture_sound.c | |
parent | 79cc627a9acae89d05b4e0c213b97ad4c0aec619 (diff) |
sound: move avd maintenance to point of capture
Since the sound capture buffers all sound in newly allocated memory,
the "stream time" represented by those buffers can be accounted for
immediately upon reading into the buffer. Doing it later in the
different threads on the other side of the queue, especially after
encoding, is an unnecessary pile of variable capacitance that just
makes things less synchronized for zero gain.
Diffstat (limited to 'src/rmd_capture_sound.c')
-rw-r--r-- | src/rmd_capture_sound.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/rmd_capture_sound.c b/src/rmd_capture_sound.c index 0c95afa..162ceed 100644 --- a/src/rmd_capture_sound.c +++ b/src/rmd_capture_sound.c @@ -146,6 +146,16 @@ void *rmdCaptureSound(ProgData *pdata) { sret += temp_sret; } while (sret < (pdata->args.buffsize << 1) * pdata->args.channels); #endif + + /* Since sound buffers are queued here by allocating buffers, their "stream time" + * can be accounted for here instead of after encoding, since encoding isn't lossy + * in the time domain there shouldn't be any disparity. Infact, buffer underruns + * should get accounted for too FIXME TODO + */ + pthread_mutex_lock(&pdata->avd_mutex); + pdata->avd -= pdata->periodtime; + pthread_mutex_unlock(&pdata->avd_mutex); + //queue the new buffer pthread_mutex_lock(&pdata->sound_buffer_mutex); tmp = pdata->sound_buffer; |