decide if rematrixing is needed. It won't be, since
input and output layouts are the same.
*/
-
+
_swr_context = swr_alloc_set_opts (
0,
- av_get_default_channel_layout (_film->audio_channels ()),
+ av_get_default_channel_layout (_film->audio_mapping().dcp_channels ()),
AV_SAMPLE_FMT_FLTP,
_film->target_audio_sample_rate(),
- av_get_default_channel_layout (_film->audio_channels ()),
+ av_get_default_channel_layout (_film->audio_mapping().dcp_channels ()),
AV_SAMPLE_FMT_FLTP,
_film->audio_frame_rate(),
0, 0
Encoder::process_end ()
{
#if HAVE_SWRESAMPLE
- if (_film->has_audio() && _film->audio_channels() && _swr_context) {
+ if (_film->has_audio() && _swr_context) {
- shared_ptr<AudioBuffers> out (new AudioBuffers (_film->audio_channels(), 256));
+ shared_ptr<AudioBuffers> out (new AudioBuffers (_film->audio_mapping().dcp_channels(), 256));
while (1) {
int const frames = swr_convert (_swr_context, (uint8_t **) out->data(), 256, 0, 0);
}
void
-Encoder::process_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle> sub)
+Encoder::process_video (shared_ptr<const Image> image, bool same, shared_ptr<Subtitle> sub)
{
FrameRateConversion frc (_film->video_frame_rate(), _film->dcp_frame_rate());
}
void
-Encoder::process_audio (shared_ptr<AudioBuffers> data)
+Encoder::process_audio (shared_ptr<const AudioBuffers> data)
{
#if HAVE_SWRESAMPLE
/* Maybe sample-rate convert */
/* Compute the resampled frames count and add 32 for luck */
int const max_resampled_frames = ceil ((int64_t) data->frames() * _film->target_audio_sample_rate() / _film->audio_frame_rate()) + 32;
- shared_ptr<AudioBuffers> resampled (new AudioBuffers (_film->audio_channels(), max_resampled_frames));
+ shared_ptr<AudioBuffers> resampled (new AudioBuffers (_film->audio_mapping().dcp_channels(), max_resampled_frames));
/* Resample audio */
int const resampled_frames = swr_convert (
lock.unlock ();
for (list<boost::thread *>::iterator i = _threads.begin(); i != _threads.end(); ++i) {
- (*i)->join ();
+ if ((*i)->joinable ()) {
+ (*i)->join ();
+ }
delete *i;
}
}
}
if (remote_backoff > 0) {
- dvdomatic_sleep (remote_backoff);
+ dcpomatic_sleep (remote_backoff);
}
lock.lock ();