#include "digester.h"
#include "audio_processor.h"
#include "compose.hpp"
+#include <dcp/locale_convert.h>
#include <dcp/util.h>
+#include <dcp/raw_convert.h>
#include <dcp/picture_asset.h>
#include <dcp/sound_asset.h>
#include <dcp/subtitle_asset.h>
using boost::bad_lexical_cast;
using dcp::Size;
using dcp::raw_convert;
+using dcp::locale_convert;
/** Path to our executable, required by the stacktrace stuff and filled
* in during App::onInit().
if (hours) {
if (m > 30 && !minutes) {
/// TRANSLATORS: h here is an abbreviation for hours
- ap += raw_convert<string>(h + 1) + _("h");
+ ap += locale_convert<string>(h + 1) + _("h");
} else {
/// TRANSLATORS: h here is an abbreviation for hours
- ap += raw_convert<string>(h) + _("h");
+ ap += locale_convert<string>(h) + _("h");
}
if (minutes || seconds) {
/* Minutes */
if (s > 30 && !seconds) {
/// TRANSLATORS: m here is an abbreviation for minutes
- ap += raw_convert<string>(m + 1) + _("m");
+ ap += locale_convert<string>(m + 1) + _("m");
} else {
/// TRANSLATORS: m here is an abbreviation for minutes
- ap += raw_convert<string>(m) + _("m");
+ ap += locale_convert<string>(m) + _("m");
}
if (seconds) {
if (seconds) {
/* Seconds */
/// TRANSLATORS: s here is an abbreviation for seconds
- ap += raw_convert<string>(s) + _("s");
+ ap += locale_convert<string>(s) + _("s");
}
return ap;
while (i < int64_t (files.size()) && to_do > 0) {
FILE* f = fopen_boost (files[i], "rb");
if (!f) {
- throw OpenFileError (files[i].string());
+ throw OpenFileError (files[i].string(), errno, true);
}
boost::uintmax_t this_time = min (to_do, boost::filesystem::file_size (files[i]));
while (i >= 0 && to_do > 0) {
FILE* f = fopen_boost (files[i], "rb");
if (!f) {
- throw OpenFileError (files[i].string());
+ throw OpenFileError (files[i].string(), errno, true);
}
boost::uintmax_t this_time = min (to_do, boost::filesystem::file_size (files[i]));
DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16);
/// TRANSLATORS: these are the names of audio channels; Lfe (sub) is the low-frequency
- /// enhancement channel (sub-woofer). HI is the hearing-impaired audio track and
- /// VI is the visually-impaired audio track (audio describe).
+ /// enhancement channel (sub-woofer).
string const channels[] = {
_("Left"),
_("Right"),
return channels[c];
}
+string
+short_audio_channel_name (int c)
+{
+ DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16);
+
+ /// TRANSLATORS: these are short names of audio channels; Lfe is the low-frequency
+ /// enhancement channel (sub-woofer). HI is the hearing-impaired audio track and
+ /// VI is the visually-impaired audio track (audio describe).
+ string const channels[] = {
+ _("L"),
+ _("R"),
+ _("C"),
+ _("Lfe"),
+ _("Ls"),
+ _("Rs"),
+ _("HI"),
+ _("VI"),
+ _("Lc"),
+ _("Rc"),
+ _("BsL"),
+ _("BsR"),
+ _("DBP"),
+ _("DBPS"),
+ _(""),
+ _("")
+ };
+
+ return channels[c];
+}
+
+
bool
valid_image_file (boost::filesystem::path f)
{
{
dcp::NameFormat::Map values;
values['t'] = "j2c";
- values['i'] = asset->id();
values['r'] = raw_convert<string> (reel_index + 1);
values['n'] = raw_convert<string> (reel_count);
if (summary) {
values['c'] = summary.get();
}
- return Config::instance()->dcp_asset_filename_format().get(values) + ".mxf";
+ return Config::instance()->dcp_asset_filename_format().get(values, "_" + asset->id() + ".mxf");
}
string
{
dcp::NameFormat::Map values;
values['t'] = "pcm";
- values['i'] = asset->id();
values['r'] = raw_convert<string> (reel_index + 1);
values['n'] = raw_convert<string> (reel_count);
if (summary) {
values['c'] = summary.get();
}
- return Config::instance()->dcp_asset_filename_format().get(values) + ".mxf";
+ return Config::instance()->dcp_asset_filename_format().get(values, "_" + asset->id() + ".mxf");
}
float