summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-09-24 13:12:34 +0100
committerCarl Hetherington <cth@carlh.net>2012-09-24 13:12:34 +0100
commitb8b9800d1022fe0912b180e8b3b41fd4b616478a (patch)
tree699fd2b2a457b8d716fbabad4ac7f44e6b32b595
parent13d997b1e39ce12415b47f8ccb7f0e51b01ab8ea (diff)
Fix problems with overflow on long films.
-rw-r--r--.be/aff5ca2c-44ee-4ed6-800b-4abe9c3e794c/bugs/666e8ba3-f1a3-4245-9d00-9a3a5e048ed9/values17
-rw-r--r--ChangeLog4
-rw-r--r--src/lib/decoder.cc26
-rw-r--r--src/lib/decoder.h2
4 files changed, 36 insertions, 13 deletions
diff --git a/.be/aff5ca2c-44ee-4ed6-800b-4abe9c3e794c/bugs/666e8ba3-f1a3-4245-9d00-9a3a5e048ed9/values b/.be/aff5ca2c-44ee-4ed6-800b-4abe9c3e794c/bugs/666e8ba3-f1a3-4245-9d00-9a3a5e048ed9/values
new file mode 100644
index 000000000..8861f1d19
--- /dev/null
+++ b/.be/aff5ca2c-44ee-4ed6-800b-4abe9c3e794c/bugs/666e8ba3-f1a3-4245-9d00-9a3a5e048ed9/values
@@ -0,0 +1,17 @@
+creator: Carl Hetherington <cth@carlh.net>
+
+
+reporter: Carl Hetherington <cth@carlh.net>
+
+
+severity: minor
+
+
+status: open
+
+
+summary: Re-setting content file runs thumb scan twice?
+
+
+time: Mon, 24 Sep 2012 09:42:18 +0000
+
diff --git a/ChangeLog b/ChangeLog
index 70c097f16..1aaed3818 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2012-09-24 Carl Hetherington <cth@carlh.net>
+ * Fix problems with overflow on long films.
+
+2012-09-24 Carl Hetherington <cth@carlh.net>
+
* Version 0.52 released.
2012-09-23 Carl Hetherington <cth@carlh.net>
diff --git a/src/lib/decoder.cc b/src/lib/decoder.cc
index 9332511bc..2f02147e3 100644
--- a/src/lib/decoder.cc
+++ b/src/lib/decoder.cc
@@ -165,20 +165,22 @@ Decoder::process_end ()
in to get it to the right length.
*/
- int const audio_short_by_frames =
- (decoding_frames() * dcp_audio_sample_rate (_fs->audio_sample_rate) / _fs->frames_per_second)
+ int64_t const audio_short_by_frames =
+ ((int64_t) decoding_frames() * dcp_audio_sample_rate (_fs->audio_sample_rate) / _fs->frames_per_second)
- _audio_frames_processed;
- int bytes = audio_short_by_frames * _fs->audio_channels * _fs->bytes_per_sample();
-
- int const silence_size = 64 * 1024;
- uint8_t silence[silence_size];
- memset (silence, 0, silence_size);
-
- while (bytes) {
- int const t = min (bytes, silence_size);
- Audio (silence, t);
- bytes -= t;
+ if (audio_short_by_frames >= 0) {
+ int bytes = audio_short_by_frames * _fs->audio_channels * _fs->bytes_per_sample();
+
+ int const silence_size = 64 * 1024;
+ uint8_t silence[silence_size];
+ memset (silence, 0, silence_size);
+
+ while (bytes) {
+ int const t = min (bytes, silence_size);
+ Audio (silence, t);
+ bytes -= t;
+ }
}
}
diff --git a/src/lib/decoder.h b/src/lib/decoder.h
index 792f7dde2..14b25c7b0 100644
--- a/src/lib/decoder.h
+++ b/src/lib/decoder.h
@@ -145,7 +145,7 @@ private:
/* Number of audio frames that we have pushed to the encoder
(at the DCP sample rate).
*/
- int _audio_frames_processed;
+ int64_t _audio_frames_processed;
};
#endif