projects
/
dcpomatic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0da7c88
)
Don't allow _decoded_audio to grow to very large sizes during seek.
author
Carl Hetherington
<cth@carlh.net>
Fri, 20 Jun 2014 09:04:25 +0000
(10:04 +0100)
committer
Carl Hetherington
<cth@carlh.net>
Fri, 20 Jun 2014 09:04:25 +0000
(10:04 +0100)
src/lib/audio_decoder.cc
patch
|
blob
|
history
diff --git
a/src/lib/audio_decoder.cc
b/src/lib/audio_decoder.cc
index 4a543cea9351af00cf652b6bcfd755ad013d2860..2c0388fc39318851242b96a7a672b014ba5fca27 100644
(file)
--- a/
src/lib/audio_decoder.cc
+++ b/
src/lib/audio_decoder.cc
@@
-132,7
+132,16
@@
AudioDecoder::audio (shared_ptr<const AudioBuffers> data, ContentTime time)
assert (_audio_position.get() >= (_decoded_audio.frame + _decoded_audio.audio->frames()));
/* Resize _decoded_audio to fit the new data */
assert (_audio_position.get() >= (_decoded_audio.frame + _decoded_audio.audio->frames()));
/* Resize _decoded_audio to fit the new data */
- int const new_size = _audio_position.get() + data->frames() - _decoded_audio.frame;
+ int new_size = 0;
+ if (_decoded_audio.audio->frames() == 0) {
+ /* There's nothing in there, so just store the new data */
+ new_size = data->frames ();
+ _decoded_audio.frame = _audio_position.get ();
+ } else {
+ /* Otherwise we need to extend _decoded_audio to include the new stuff */
+ new_size = _audio_position.get() + data->frames() - _decoded_audio.frame;
+ }
+
_decoded_audio.audio->ensure_size (new_size);
_decoded_audio.audio->set_frames (new_size);
_decoded_audio.audio->ensure_size (new_size);
_decoded_audio.audio->set_frames (new_size);