diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-01-10 21:47:11 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-01-10 21:47:11 +0000 |
| commit | 70684e31a96bd7d4c7b09d525902959345b76526 (patch) | |
| tree | 2d9f17c88d73df8c72747086e2f11b740f010395 /src/lib/audio_ring_buffers.cc | |
| parent | d9c2cf78e6c5e465e7f76020f78f7ed1e71c3bc0 (diff) | |
Fix a crash due the assertion in emit_audio failing when applying
trims which do not land precisely on a DCP audio sample boundary
(at least, I think that's what triggers it).
Diffstat (limited to 'src/lib/audio_ring_buffers.cc')
| -rw-r--r-- | src/lib/audio_ring_buffers.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/audio_ring_buffers.cc b/src/lib/audio_ring_buffers.cc index d26fb9eb7..21c4b6a5c 100644 --- a/src/lib/audio_ring_buffers.cc +++ b/src/lib/audio_ring_buffers.cc @@ -46,10 +46,11 @@ AudioRingBuffers::put (shared_ptr<const AudioBuffers> data, DCPTime time, int fr if (!_buffers.empty()) { DCPOMATIC_ASSERT (_buffers.front().first->channels() == data->channels()); - if ((_buffers.back().second + DCPTime::from_frames(_buffers.back().first->frames(), frame_rate)) != time) { + DCPTime const end = (_buffers.back().second + DCPTime::from_frames(_buffers.back().first->frames(), frame_rate)); + if (labs(end.get() - time.get()) > 1) { cout << "bad put " << to_string(_buffers.back().second) << " " << _buffers.back().first->frames() << " " << to_string(time) << "\n"; } - DCPOMATIC_ASSERT ((_buffers.back().second + DCPTime::from_frames(_buffers.back().first->frames(), frame_rate)) == time); + DCPOMATIC_ASSERT (labs(end.get() - time.get()) < 2); } _buffers.push_back(make_pair(data, time)); |
