audioplaybackcache: optimise writing to PCM

This commit is contained in:
Thomas Wilshaw
2021-04-24 14:26:07 +01:00
parent 8373579009
commit 59163e8127
+8 -4
View File
@@ -64,10 +64,14 @@ void AudioPlaybackCache::WritePCM(const TimeRange &range, SampleBufferPtr sample
// Ensure if we have enough segments to write this data, creating more if not
qint64 length_diff = params_.time_to_bytes(range.out()) - playlist_.GetLength();
while (length_diff > 0) {
qint64 seg_sz = qMin(kDefaultSegmentSize, length_diff);
playlist_.push_back(CreateSegment(seg_sz, playlist_.GetLength()));
length_diff -= seg_sz;
qint64 whole_segments = length_diff / kDefaultSegmentSize;
qint64 remainder = length_diff % kDefaultSegmentSize;
for (int i = 0; i < whole_segments; i++) {
playlist_.push_back(CreateSegment(kDefaultSegmentSize, playlist_.GetLength()));
}
if (remainder > 0) {
playlist_.push_back(CreateSegment(remainder, playlist_.GetLength()));
}
// Convert to packed data, which is what we store on disk so it can be played back easily