Observe actual silent device intervals when adapting playback history
This commit is contained in:
1 parent
5c75487446
commit
e1abcb5d69
4 files changed
+20
-2
No files matched your search
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user