#include "util.h"
#include "reel_writer.h"
#include <dcp/cpl.h>
+#include <dcp/locale_convert.h>
#include <boost/foreach.hpp>
#include <fstream>
#include <cerrno>
return;
}
- int32_t const this_time = min (
- audio->frames() - offset,
- (int32_t) (_audio_reel->period().duration().frames_floor(_film->audio_frame_rate()) - _audio_reel->total_written_audio_frames())
- );
+ int32_t const remaining = audio->frames() - offset;
+ int32_t const reel_space = _audio_reel->period().duration().frames_floor(_film->audio_frame_rate()) - _audio_reel->total_written_audio_frames();
- if (this_time == audio->frames()) {
+ if (remaining <= reel_space) {
/* Easy case: we can write all the audio to this reel */
_audio_reel->write (audio);
+ offset += remaining;
} else {
/* Write the part we can */
- shared_ptr<AudioBuffers> part (new AudioBuffers (audio->channels(), this_time));
- part->copy_from (audio.get(), this_time, offset, 0);
+ shared_ptr<AudioBuffers> part (new AudioBuffers (audio->channels(), reel_space));
+ part->copy_from (audio.get(), reel_space, offset, 0);
_audio_reel->write (part);
++_audio_reel;
+ offset += reel_space;
}
-
- offset += this_time;
}
}
string text = Config::instance()->cover_sheet ();
boost::algorithm::replace_all (text, "$CPL_NAME", _film->name());
boost::algorithm::replace_all (text, "$TYPE", _film->dcp_content_type()->pretty_name());
- boost::algorithm::replace_all (text, "$CONTAINER", _film->container()->nickname());
+ boost::algorithm::replace_all (text, "$CONTAINER", _film->container()->container_nickname());
+ boost::algorithm::replace_all (text, "$AUDIO_LANGUAGE", _film->isdcf_metadata().audio_language);
+ boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", _film->isdcf_metadata().subtitle_language);
+
+ boost::uintmax_t size = 0;
+ for (
+ boost::filesystem::recursive_directory_iterator i = boost::filesystem::recursive_directory_iterator(_film->dir(_film->dcp_name()));
+ i != boost::filesystem::recursive_directory_iterator();
+ ++i) {
+ if (boost::filesystem::is_regular_file (i->path ())) {
+ size += boost::filesystem::file_size (i->path ());
+ }
+ }
+
+ if (size > (1000000000L)) {
+ boost::algorithm::replace_all (text, "$SIZE", String::compose ("%1GB", dcp::locale_convert<string> (size / 1000000000.0, 1, true)));
+ } else {
+ boost::algorithm::replace_all (text, "$SIZE", String::compose ("%1MB", dcp::locale_convert<string> (size / 1000000.0, 1, true)));
+ }
pair<int, int> ch = audio_channel_types (_film->mapped_audio_channels(), _film->audio_channels());
string description = String::compose("%1.%2", ch.first, ch.second);