summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-05-25 14:38:31 +0100
committerCarl Hetherington <cth@carlh.net>2015-05-25 14:38:31 +0100
commite80732c66bb8907836eafeb816d695f96e063843 (patch)
tree1da686317768b3ab11228c2d7cc8715dd3ed6614 /src/lib/writer.cc
parentd3bd799b42c0a29b415c2a37f6dd8196a97ee541 (diff)
5b5c36d28d07e8cd93af5a3f766fd95f2a506beb from master; increase the number of images that are kept around in memory before pushing to disk.
Diffstat (limited to 'src/lib/writer.cc')
-rw-r--r--src/lib/writer.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index b71ff2891..592275281 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -83,6 +83,7 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j)
, _queued_full_in_memory (0)
, _last_written_frame (-1)
, _last_written_eyes (EYES_RIGHT)
+ , _maximum_frames_in_memory (0)
, _full_written (0)
, _fake_written (0)
, _pushed_to_disk (0)
@@ -152,7 +153,7 @@ Writer::write (shared_ptr<const EncodedData> encoded, int frame, Eyes eyes)
{
boost::mutex::scoped_lock lock (_mutex);
- while (_queued_full_in_memory > maximum_frames_in_memory ()) {
+ while (_queued_full_in_memory > _maximum_frames_in_memory) {
/* The queue is too big; wait until that is sorted out */
_full_condition.wait (lock);
}
@@ -185,7 +186,7 @@ Writer::fake_write (int frame, Eyes eyes)
{
boost::mutex::scoped_lock lock (_mutex);
- while (_queued_full_in_memory > maximum_frames_in_memory ()) {
+ while (_queued_full_in_memory > _maximum_frames_in_memory) {
/* The queue is too big; wait until that is sorted out */
_full_condition.wait (lock);
}
@@ -267,7 +268,7 @@ try
while (true) {
- if (_finish || _queued_full_in_memory > maximum_frames_in_memory () || have_sequenced_image_at_queue_head ()) {
+ if (_finish || _queued_full_in_memory > _maximum_frames_in_memory || have_sequenced_image_at_queue_head ()) {
/* We've got something to do: go and do it */
break;
}
@@ -353,7 +354,7 @@ try
}
}
- while (_queued_full_in_memory > maximum_frames_in_memory ()) {
+ while (_queued_full_in_memory > _maximum_frames_in_memory) {
done_something = true;
/* Too many frames in memory which can't yet be written to the stream.
Write some FULL frames to disk.
@@ -708,8 +709,8 @@ operator== (QueueItem const & a, QueueItem const & b)
return a.frame == b.frame && a.eyes == b.eyes;
}
-int
-Writer::maximum_frames_in_memory () const
+void
+Writer::set_encoder_threads (int threads)
{
- return Config::instance()->num_local_encoding_threads() + 4;
+ _maximum_frames_in_memory = rint (threads * 1.1);
}