Observe actual silent device intervals when adapting playback history

This commit is contained in:
evgeny committed 2026-10-13 23:26:55 +02:00
1 parent 5c75487446
commit e1abcb5d69
4 files changed
+20 -2

No files matched your search

+11
View File
@@ -212,6 +212,17 @@ int64_t stream_playback_audio_pending_gain(struct stream_playback_audio* a, uint
uint64_t stream_playback_audio_written(const struct stream_playback_audio* a) { return a ? a->written : 0; }
int stream_playback_audio_starved(const struct stream_playback_audio* a, uint64_t played) {
if (!a || a->finished) return 0;
if (played >= a->written || !a->outputCount) return 1;
for (unsigned i = 0; i < a->outputCount; i++) {
const auto& span = a->output[(a->outputHead + i) % mapCapacity];
if (span.last <= played) continue;
return span.ptsLast == span.ptsFirst;
}
return 1;
}
void stream_playback_audio_finish(struct stream_playback_audio* a) {
if (!a || a->finished) return;
a->finished = true; a->stretch.flush();
+1
View File
@@ -26,6 +26,7 @@ int stream_playback_audio_pull(struct stream_playback_audio *audio, int16_t *pcm
void stream_playback_audio_silence(struct stream_playback_audio *audio, unsigned frames);
int64_t stream_playback_audio_position(struct stream_playback_audio *audio, uint64_t played_frames);
int64_t stream_playback_audio_pending_gain(struct stream_playback_audio *audio, uint64_t played_frames);
int stream_playback_audio_starved(const struct stream_playback_audio *audio, uint64_t played_frames);
uint64_t stream_playback_audio_written(const struct stream_playback_audio *audio);
void stream_playback_audio_finish(struct stream_playback_audio *audio);
int stream_playback_audio_empty(const struct stream_playback_audio *audio);