summaryrefslogtreecommitdiff
path: root/src/lib/encoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-02-18 19:54:51 +0000
committerCarl Hetherington <cth@carlh.net>2013-02-18 19:54:51 +0000
commit95a27725707b2368d175f5ed51637fee88cb32b4 (patch)
treec2d2a1ad2bb5d5d4166928943fb0d987eaab86ac /src/lib/encoder.cc
parent78ef2afb8e64fd0093b2f94b3f8246dba0a8058f (diff)
parentc9831a8704aeae286be6c39bfbdc4b48cff1f087 (diff)
Merge branch 'master' of ssh://carlh.dnsalias.org/home/carl/git/dvdomatic
Diffstat (limited to 'src/lib/encoder.cc')
-rw-r--r--src/lib/encoder.cc42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc
index d64622cba..f25256379 100644
--- a/src/lib/encoder.cc
+++ b/src/lib/encoder.cc
@@ -140,7 +140,7 @@ Encoder::process_end ()
}
out->set_frames (frames);
- _writer->write (out);
+ write_audio (out);
}
swr_free (&_swr_context);
@@ -319,23 +319,7 @@ Encoder::process_audio (shared_ptr<AudioBuffers> data)
}
#endif
- if (_film->audio_channels() == 1) {
- /* We need to switch things around so that the mono channel is on
- the centre channel of a 5.1 set (with other channels silent).
- */
-
- shared_ptr<AudioBuffers> b (new AudioBuffers (6, data->frames ()));
- b->make_silent (libdcp::LEFT);
- b->make_silent (libdcp::RIGHT);
- memcpy (b->data()[libdcp::CENTRE], data->data()[0], data->frames() * sizeof(float));
- b->make_silent (libdcp::LFE);
- b->make_silent (libdcp::LS);
- b->make_silent (libdcp::RS);
-
- data = b;
- }
-
- _writer->write (data);
+ write_audio (data);
}
void
@@ -435,3 +419,25 @@ Encoder::encoder_thread (ServerDescription* server)
_condition.notify_all ();
}
}
+
+void
+Encoder::write_audio (shared_ptr<const AudioBuffers> data)
+{
+ if (_film->audio_channels() == 1) {
+ /* We need to switch things around so that the mono channel is on
+ the centre channel of a 5.1 set (with other channels silent).
+ */
+
+ shared_ptr<AudioBuffers> b (new AudioBuffers (6, data->frames ()));
+ b->make_silent (libdcp::LEFT);
+ b->make_silent (libdcp::RIGHT);
+ memcpy (b->data()[libdcp::CENTRE], data->data()[0], data->frames() * sizeof(float));
+ b->make_silent (libdcp::LFE);
+ b->make_silent (libdcp::LS);
+ b->make_silent (libdcp::RS);
+
+ data = b;
+ }
+
+ _writer->write (data);
+}