# Use distro-provided FFmpeg on Arch
deps = []
- deps.append(('libdcp', 'v1.8.99'))
- deps.append(('libsub', 'v1.6.47'))
+ deps.append(('libdcp', 'v1.8.100'))
+ deps.append(('libsub', 'v1.6.49'))
deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23'))
deps.append(('rtaudio', 'f619b76'))
# We get our OpenSSL libraries from the environment, but we
make_spec('dcpomatic2.spec', version, target, options, requires)
cmd = 'rpmbuild --define "_topdir %s" -bb dcpomatic2.spec' % topdir
+ # On Centos 7 we build and install boost ourselves, so we must look for it in the right place
+ target.set('LINKFLAGS', '-L/usr/local/lib')
target.command(cmd)
rpms = []
if target.platform == 'windows':
cmd = 'run\\tests '
else:
- cmd = 'run/tests --check --log_level=test_suite '
+ cmd = 'run/tests '
+ if target.environment_prefix:
+ cmd += '-e %s ' % target.environment_prefix
+ if target.platform != 'windows':
+ cmd += ' --check --log_level=test_suite '
if target.debug:
cmd += '--backtrace '
if test is not None:
if [[ $(readlink -f $DIR/..) =~ (.*build/[^/]*) ]]; then
export LD_LIBRARY_PATH=${BASH_REMATCH[1]}/lib:$LD_LIBRARY_PATH
fi
-export DYLD_LIBRARY_PATH=$build/src/lib:$build/src/wx:$build/src/asdcplib/src:/Users/ci/osx-environment/x86_64/10.10/lib:/Users/ci/workspace/lib
+export DYLD_LIBRARY_PATH=$build/src/lib:$build/src/wx:/Users/ci/workspace/lib
export DCPOMATIC_GRAPHICS=$DIR/../graphics
# e.g. --run_tests=foo
set -e
-PRIVATE_GIT="5298360d6bbae434fb4625fda1cc9dd6be101df3"
+PRIVATE_GIT="881c48805e352dfe150993814757ca974282be18"
-if [ "$1" == "--check" ]; then
- shift 1
- check=1
-else
- check=0
-fi
+type=""
+check=0
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -e)
+ environment=$2
+ shift
+ shift
+ ;;
+ --debug)
+ type="debug"
+ shift
+ ;;
+ --backtrace)
+ type="backtrace"
+ shift
+ ;;
+ --valgrind)
+ type="valgrind"
+ shift
+ ;;
+ --callgrind)
+ type="callgrind"
+ shift
+ ;;
+ --quiet)
+ type="quiet"
+ shift
+ ;;
+ --drd)
+ type="drd"
+ shift
+ ;;
+ --helgrind)
+ type="helgrind"
+ shift
+ ;;
+ --check)
+ check=1
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
if [ "$(uname)" == "Linux" ]; then
- export LD_LIBRARY_PATH=build/src/lib:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH=build/src/lib:../../lib:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
rm -f build/test/dcpomatic2_openssl
# This must be our patched openssl or tests will fail
if [ ! -f build/test/dcpomatic2_openssl ]; then
rm -f build/test/openssl
ln -s ../../../openssl/apps/openssl build/test/openssl
# SIP stops this being passed in from the caller's environment
- export DYLD_LIBRARY_PATH=/Users/ci/osx-environment/x86_64/10.10/lib:/Users/ci/workspace/lib
+ export DYLD_LIBRARY_PATH=$environment/x86_64/10.10/lib:$HOME/workspace/lib
# We need to find ffcmp in here
- export PATH=$PATH:/Users/ci/workspace/bin
+ export PATH=$PATH:$HOME/workspace/bin
fi
if [ "$check" == "1" ]; then
popd
fi
-if [ "$1" == "--debug" ]; then
- shift;
+if [ "$type" == "debug" ]; then
gdb --args build/test/unit-tests --catch_system_errors=no --log_level=test_suite $*
-elif [ "$1" == "--backtrace" ]; then
- shift;
+elif [ "$type" == "backtrace" ]; then
gdb -batch -ex "run" -ex "thread apply all bt" -return-child-result --args build/test/unit-tests --catch_system_errors=yes $*
-elif [ "$1" == "--valgrind" ]; then
- shift;
+elif [ "$type" == "valgrind" ]; then
# valgrind --tool="memcheck" --vgdb=yes --vgdb-error=0 build/test/unit-tests $*
valgrind --tool="memcheck" --suppressions=suppressions build/test/unit-tests $*
-elif [ "$1" == "--callgrind" ]; then
- shift;
+elif [ "$type" == "callgrind" ]; then
valgrind --tool="callgrind" build/test/unit-tests $*
-elif [ "$1" == "--quiet" ]; then
- shift;
+elif [ "$type" == "quiet" ]; then
build/test/unit-tests --catch_system_errors=no $*
-elif [ "$1" == "--drd" ]; then
- shift;
+elif [ "$type" == "drd" ]; then
valgrind --tool="drd" build/test/unit-tests $*
-elif [ "$1" == "--helgrind" ]; then
- shift;
+elif [ "$type" == "helgrind" ]; then
valgrind --tool="helgrind" build/test/unit-tests $*
else
ulimit -c unlimited
return (write_time_changed || calculate_digest() != digest());
}
+
+
+bool
+Content::has_mapped_audio() const
+{
+ return audio && !audio->mapping().mapped_output_channels().empty();
+}
+
return true;
}
+ bool has_mapped_audio() const;
+
/* ChangeType::PENDING and ChangeType::CANCELLED may be emitted from any thread; ChangeType::DONE always from GUI thread */
boost::signals2::signal<void (ChangeType, std::weak_ptr<Content>, int, bool)> Change;
/// TRANSLATORS: this string will follow "Cannot reference this DCP: "
return can_reference(
film, [](shared_ptr<const Content> c) {
- return static_cast<bool>(c->audio) && !c->audio->mapping().mapped_output_channels().empty();
+ return c->has_mapped_audio();
},
_("it overlaps other audio content; remove the other content."),
why_not
if (content->video) {
video = make_shared<VideoDecoder>(this, content);
}
- if (content->audio) {
+ if (content->has_mapped_audio()) {
audio = make_shared<AudioDecoder>(this, content->audio, fast);
}
for (auto i: content->text) {
_writer.write(_player.get_subtitle_fonts());
}
- while (!_player.pass()) {}
+ int passes = 0;
+ while (!_player.pass()) {
+ if ((++passes % 8) == 0) {
+ auto job = _job.lock();
+ DCPOMATIC_ASSERT(job);
+ job->set_progress(_player.progress());
+ }
+ }
for (auto i: get_referenced_reel_assets(_film, _film->playlist())) {
_writer.write(i);
DCPEncoder::audio (shared_ptr<AudioBuffers> data, DCPTime time)
{
_writer.write(data, time);
-
- auto job = _job.lock ();
- DCPOMATIC_ASSERT (job);
- job->set_progress (float(time.get()) / _film->length().get());
}
void
Frame
DCPEncoder::frames_done () const
{
- return _j2k_encoder.video_frames_enqueued();
+ return _player.frames_done();
}
if (reel->main_sound()) {
_has_audio = true;
- _audio_length += reel->main_sound()->actual_duration();
+ auto const edit_rate = reel->main_sound()->edit_rate();
if (!reel->main_sound()->asset_ref().resolved()) {
LOG_GENERAL("Main sound %1 of reel %2 is missing", reel->main_sound()->id(), reel->id());
}
_audio_language = try_to_parse_language (asset->language());
+ _audio_length += reel->main_sound()->actual_duration() * (asset->sampling_rate() * edit_rate.denominator / edit_rate.numerator);
}
}
_pts_offset = {};
}
- if (c->audio) {
+ if (c->has_mapped_audio()) {
audio = make_shared<AudioDecoder>(this, c->audio, fast);
}
decode_and_process_video_packet (packet);
} else if (fc->subtitle_stream() && fc->subtitle_stream()->uses_index(_format_context, si) && !only_text()->ignore()) {
decode_and_process_subtitle_packet (packet);
- } else {
+ } else if (audio) {
decode_and_process_audio_packet (packet);
}
map.set(dcp::Channel::CENTRE, 1, overall_gain * minus_3dB);
map.set(dcp::Channel::LS, 0, overall_gain);
break;
- case 6:
+ default:
map.set(dcp::Channel::LEFT, 0, overall_gain);
map.set(dcp::Channel::RIGHT, 1, overall_gain);
map.set(dcp::Channel::CENTRE, 0, overall_gain * minus_3dB);
map.set(dcp::Channel::RS, 1, overall_gain);
break;
}
- /* XXX: maybe we should do something better for >6 channel DCPs */
return map;
}
auto content = film()->content();
auto mapped_audio =
std::find_if(content.begin(), content.end(), [](shared_ptr<const Content> c) {
- return c->audio && !c->audio->mapping().mapped_output_channels().empty();
+ return c->has_mapped_audio();
});
if (mapped_audio != content.end() && !film()->audio_language()) {
{
_server_found_connection.disconnect();
+ /* One of our encoder threads may be waiting on Writer::write() to return, if that method
+ * is blocked with the writer queue full waiting for _full_condition. In that case, the
+ * attempt to terminate the encoder threads below (in terminate_threads()) will fail because
+ * the encoder thread waiting for ::write() will have interruption disabled.
+ *
+ * To work around that, make the writer into a zombie to unblock any pending write()s and
+ * not block on any future ones.
+ */
+ _writer.zombify();
+
boost::mutex::scoped_lock lm (_threads_mutex);
terminate_threads ();
}
bool
have_audio (shared_ptr<const Content> content)
{
- return static_cast<bool>(content->audio) && content->can_be_played();
+ return content->has_mapped_audio() && content->can_be_played();
}
_stream_states.clear ();
for (auto i: _pieces) {
- if (i->content->audio) {
+ if (i->content->has_mapped_audio()) {
for (auto j: i->content->audio->streams()) {
_stream_states[j] = StreamState(i);
}
}
+pair<shared_ptr<Piece>, optional<DCPTime>>
+Player::earliest_piece_and_time() const
+{
+ auto film = _film.lock();
+ DCPOMATIC_ASSERT(film);
+
+ shared_ptr<Piece> earliest_content;
+ optional<DCPTime> earliest_time;
+
+ for (auto const& piece: _pieces) {
+ if (piece->done) {
+ continue;
+ }
+
+ auto const t = content_time_to_dcp(piece, max(piece->decoder->position(), piece->content->trim_start()));
+ if (t > piece->content->end(film)) {
+ piece->done = true;
+ } else {
+
+ /* Given two choices at the same time, pick the one with texts so we see it before
+ the video.
+ */
+ if (!earliest_time || t < *earliest_time || (t == *earliest_time && !piece->decoder->text.empty())) {
+ earliest_time = t;
+ earliest_content = piece;
+ }
+ }
+ }
+
+ return { earliest_content, earliest_time };
+}
+
+
bool
Player::pass ()
{
shared_ptr<Piece> earliest_content;
optional<DCPTime> earliest_time;
-
- for (auto i: _pieces) {
- if (i->done) {
- continue;
- }
-
- auto const t = content_time_to_dcp (i, max(i->decoder->position(), i->content->trim_start()));
- if (t > i->content->end(film)) {
- i->done = true;
- } else {
-
- /* Given two choices at the same time, pick the one with texts so we see it before
- the video.
- */
- if (!earliest_time || t < *earliest_time || (t == *earliest_time && !i->decoder->text.empty())) {
- earliest_time = t;
- earliest_content = i;
- }
- }
- }
+ std::tie(earliest_content, earliest_time) = earliest_piece_and_time();
bool done = false;
_disable_audio_processor = true;
}
+
+Frame
+Player::frames_done() const
+{
+ auto film = _film.lock();
+ DCPOMATIC_ASSERT(film);
+
+ shared_ptr<Piece> earliest_content;
+ optional<DCPTime> earliest_time;
+ std::tie(earliest_content, earliest_time) = earliest_piece_and_time();
+
+ return earliest_time.get_value_or({}).frames_round(film->video_frame_rate());
+}
+
+
+float
+Player::progress() const
+{
+ auto film = _film.lock();
+ DCPOMATIC_ASSERT(film);
+
+ shared_ptr<Piece> earliest_content;
+ optional<DCPTime> earliest_time;
+ std::tie(earliest_content, earliest_time) = earliest_piece_and_time();
+
+ return static_cast<float>(earliest_time.get_value_or({}).get()) / film->length().get();
+}
bool pass ();
void seek (dcpomatic::DCPTime time, bool accurate);
+ Frame frames_done() const;
+ float progress() const;
std::vector<std::shared_ptr<dcpomatic::Font>> get_subtitle_fonts ();
dcpomatic::ContentTime dcp_to_content_time (std::shared_ptr<const Piece> piece, dcpomatic::DCPTime t) const;
dcpomatic::DCPTime content_time_to_dcp (std::shared_ptr<const Piece> piece, dcpomatic::ContentTime t) const;
std::shared_ptr<PlayerVideo> black_player_video_frame (Eyes eyes) const;
+ std::pair<std::shared_ptr<Piece>, boost::optional<dcpomatic::DCPTime>> earliest_piece_and_time() const;
void video (std::weak_ptr<Piece>, ContentVideo);
void audio (std::weak_ptr<Piece>, AudioStreamPtr, ContentAudio);
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-12 00:54+0100\n"
-"PO-Revision-Date: 2023-05-15 09:32+0200\n"
+"PO-Revision-Date: 2024-05-02 15:01+0200\n"
"Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n"
"Language-Team: \n"
"Language: cs_CZ\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.2.2\n"
+"X-Generator: Poedit 3.4.2\n"
#: src/lib/video_content.cc:503
#, c-format
"se, aby mezera mezi titulky byla alespoň 2 snímky."
#: src/lib/hints.cc:685
-#, fuzzy
msgid ""
"At least one piece of subtitle content has no specified language. It is "
"advisable to set the language for each piece of subtitle content in the "
"\"Content→Timed text\" or \"Content→Open subtitles\" tab."
msgstr ""
-"Jedna část titulků nebo skrytých titulků nemá zadaný jazyk. Je vhodné "
-"nastavit jazyk pro každý část titulků nebo skrytých titulků na kartě „Obsah "
-"→ Časovat text“, „Obsah → Otevřít titulky“ nebo „Obsah → Skryté titulky“."
+"Alespoň jedna část obsahu titulků nemá specifikovaný jazyk. Je vhodné "
+"nastavit jazyk pro každou část obsahu titulků v záložce „Obsah→Časovaný "
+"text“ nebo „Obsah→Otevřít titulky“."
#: src/lib/audio_content.cc:277
msgid "Audio will be resampled from %1Hz to %2Hz"
msgstr "Událost"
#: src/lib/hints.cc:397
-#, fuzzy
msgid "Examining audio"
-msgstr "Zkoumání titulků"
+msgstr "Zkoumání zvuku"
#: src/lib/hints.cc:399
msgid "Examining audio, subtitles and closed captions"
msgstr "Používáte-li 25fps, měli byste změnit váš standard DCP na SMPTE."
#: src/lib/hints.cc:249
-#, fuzzy
msgid ""
"In general it is now advisable to make SMPTE DCPs unless you have a "
"particular reason to use Interop. It is advisable to set your DCP to use "
"the SMPTE standard in the \"DCP\" tab."
msgstr ""
-"Obecně je nyní vhodné dělat SMPTE DCP, pokud nemáte konkrétní důvod používat "
-"Interop. Na kartě „DCP“ se doporučuje nastavit DCP tak, aby používalo "
-"standard SMPTE."
+"Obecně je nyní vhodné vytvořit SMPTE DCP, pokud nemáte konkrétní důvod "
+"používat Interop. Je vhodné nastavit váš DCP tak, aby používal standard "
+"SMPTE v záložce „DCP“."
#: src/lib/release_notes.cc:53
msgid ""
msgstr "V DCP nebyla nalezena žádná CPLs."
#: src/lib/kdm_with_metadata.cc:217
-#, fuzzy
msgid "No from address configured in the KDM Email tab of preferences"
-msgstr "Žádný KDM z adresy nakonfigurované v předvolbách"
+msgstr "Ne z adresy nakonfigurované na kartě E-mail KDM v předvolbách"
#: src/lib/kdm_with_metadata.cc:213 src/lib/send_notification_email_job.cc:70
-#, fuzzy
msgid "No outgoing mail server configured in the Email tab of preferences"
-msgstr "V konfiguraci není nastaven emailový server"
+msgstr ""
+"Na kartě E-mail v předvolbách není nakonfigurován žádný server odchozí pošty"
#: src/lib/image_content.cc:131
msgid "No valid image files were found in the folder."
#: src/lib/job.cc:607
msgid "OK"
-msgstr ""
+msgstr "OK"
#: src/lib/job.cc:612
-#, fuzzy
msgid "OK (ran for %1 from %2 to %3)"
-msgstr "OK (hotovo za %1)"
+msgstr "OK (spuštěno od %1 do %2 to %3)"
#: src/lib/job.cc:610
msgid "OK (ran for %1)"
#: src/lib/filter.cc:106
msgid "Premultiply alpha channel"
-msgstr ""
+msgstr "Předem násobit alfa kanál"
#: src/lib/content.cc:494
msgid "Prepared for video frame rate"
msgstr "Řetěz certifikátů pro podepisování je neplatný (%1)"
#: src/lib/hints.cc:721
-#, fuzzy
msgid ""
"The certificate chain that DCP-o-matic uses for signing DCPs and KDMs "
"contains a small error which will prevent DCPs from being validated "
"certificate chain by clicking the \"Re-make certificates and key...\" button "
"in the Keys page of Preferences."
msgstr ""
-"Řetězec certifikátů, který DCP-o-matic používá pro podepisování DCP a KDM, "
-"obsahuje malou chybu, která v některých systémech brání správnému ověření "
-"DCP. Doporučujeme vám znovu vytvořit řetězec podpisových certifikátů "
-"kliknutím na tlačítko „Re-make certificates and key…“ (Znovu vytvořit "
-"certifikáty a klíče…) na stránce Keys (Klíče) v Předvolbách."
+"Řetězec certifikátů, který DCP-o-matic používá k podepisování DCP a KDM, "
+"obsahuje malou chybu, která zabrání správnému ověření DCP na některých "
+"systémech. Je vhodné znovu vytvořit řetězec podpisových certifikátů "
+"kliknutím na tlačítko „Znovu vytvořit certifikáty a klíč…“ na stránce Klíče "
+"v Předvolbách."
#: src/lib/hints.cc:727
-#, fuzzy
msgid ""
"The certificate chain that DCP-o-matic uses for signing DCPs and KDMs has a "
"validity period that is too long. This will cause problems playing back "
"chain by clicking the \"Re-make certificates and key...\" button in the Keys "
"page of Preferences."
msgstr ""
-"Řetězec certifikátů, který DCP-o-matic používá pro podepisování DCP a KDM, "
-"má příliš dlouhou dobu platnosti. To způsobuje problémy s přehráváním DCP "
-"na některých systémech. Doporučujeme znovu vytvořit řetězec podpisových "
-"certifikátů kliknutím na tlačítko „Re-make certificates and key…“ (Znovu "
-"vytvořit certifikáty a klíč…) na stránce Keys (Klíče) v okně Preferences "
-"(Předvolby)."
+"Řetěz certifikátů, který DCP-o-matic používá k podepisování DCP a KDM, má "
+"příliš dlouhou dobu platnosti. To způsobí problémy s přehráváním DCP na "
+"některých systémech. Je vhodné znovu vytvořit řetězec podpisových "
+"certifikátů kliknutím na tlačítko „Znovu vytvořit certifikáty a klíč…“ na "
+"stránce Klíče v Předvolbách."
#: src/lib/video_decoder.cc:81
msgid ""
msgstr "Soubor %1 byl oříznut o %2 milisekund více."
#: src/lib/hints.cc:239
-#, fuzzy
msgid ""
"There is a large difference between the frame rate of your DCP and that of "
"some of your content. This will cause your audio to play back at a much "
"rate to one closer to your content, provided that your target projection "
"systems support your chosen DCP rate."
msgstr ""
-"Mezi rámcovou frekvencí vašeho DCP a některým z vašich obsahů je velký "
-"rozdíl. To způsobí, že se váš zvuk přehrává na mnohem nižším nebo vyšším "
-"rozstupu, než by měl. Doporučuje se, abyste nastavili frekvenci snímků DCP "
-"tak, aby se přiblížila vašemu obsahu za předpokladu, že vaše cílové "
-"projekční systémy podporují zvolenou rychlost DCP."
+"Mezi snímkovou frekvencí vašeho DCP a některého vašeho obsahu je velký "
+"rozdíl. To způsobí, že se váš zvuk bude přehrávat s mnohem nižší nebo vyšší "
+"výškou, než by měl. Je vhodné nastavit snímkovou frekvenci DCP na takovou, "
+"která je blíže vašemu obsahu, za předpokladu, že vaše cílové projekční "
+"systémy podporují vámi zvolenou rychlost DCP."
#: src/lib/dcp_content.cc:675
msgid "There is no video in this DCP"
msgstr "Ještě další deinterlacing filter"
#: src/lib/hints.cc:199
-#, fuzzy
msgid ""
"You are set up for a DCP at a frame rate of %1 fps. This frame rate is not "
"supported by all projectors. It is advisable to change the DCP frame rate "
"distributors to raise QC errors when they check your DCP. To avoid this, "
"set the DCP audio channels to 8 or 16."
msgstr ""
+"Váš DCP má %1 zvukových kanálů, spíše než 8 nebo 16. To může způsobit, že "
+"někteří distributoři při kontrole vašeho DCP zvýší chyby kontroly kvality. "
+"Abyste tomu zabránili, nastavte zvukové kanály DCP na 8 nebo 16."
#: src/lib/hints.cc:110
msgid ""
msgstr "stále"
#: src/lib/dcp_content.cc:779
-#, fuzzy
msgid "they overlap other text content; remove the other content."
msgstr "překrývá se s jiným textovým obsahem; odeberte další obsah."
case dcp::Channel::BSR:
++non_lfe;
break;
+ case dcp::Channel::LC:
+ case dcp::Channel::RC:
case dcp::Channel::HI:
case dcp::Channel::VI:
case dcp::Channel::MOTION_DATA:
{
boost::mutex::scoped_lock lock (_state_mutex);
+ if (_zombie) {
+ return;
+ }
+
while (_queued_full_in_memory > _maximum_frames_in_memory) {
/* There are too many full frames in memory; wake the main writer thread and
wait until it sorts everything out */
while (true)
{
boost::mutex::scoped_lock lock (_state_mutex);
+ if (_zombie) {
+ return;
+ }
while (true) {
}
_hanging_texts = new_hanging_texts;
}
+
+
+/** Set the writer so that it has no queue and drops any pending or future requests to write images */
+void
+Writer::zombify()
+{
+ boost::mutex::scoped_lock lock(_state_mutex);
+
+ _queue.clear();
+ _queued_full_in_memory = 0;
+ _zombie = true;
+ _full_condition.notify_all();
+}
+
#include "exception_store.h"
#include "font_id_map.h"
#include "player_text.h"
+#include "text_type.h"
+#include "types.h"
#include "weak_film.h"
#include <dcp/atmos_frame.h>
#include <boost/thread.hpp>
void set_encoder_threads (int threads);
+ void zombify();
+
private:
friend struct ::writer_disambiguate_font_ids1;
friend struct ::writer_disambiguate_font_ids2;
};
std::vector<HangingText> _hanging_texts;
+
+ bool _zombie = false;
};
obj.uselib = """
AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE
BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2 BOOST_REGEX
- SAMPLERATE POSTPROC TIFF SSH DCP CXML GLIB XML++
+ SAMPLERATE POSTPROC TIFF SSH DCP CXML GLIB LZMA XML++
CURL ZIP BZ2 FONTCONFIG PANGOMM CAIROMM XMLSEC SUB ICU NETTLE PNG JPEG LEQM_NRT
LIBZ
"""
#include "wx/report_problem_dialog.h"
#include "wx/save_template_dialog.h"
#include "wx/self_dkdm_dialog.h"
-#include "wx/send_i18n_dialog.h"
#include "wx/servers_list_dialog.h"
#include "wx/standard_controls.h"
#include "wx/system_information_dialog.h"
ID_tools_encoding_servers,
ID_tools_manage_templates,
ID_tools_check_for_updates,
- ID_tools_send_translations,
ID_tools_system_information,
ID_tools_restore_default_preferences,
ID_tools_export_preferences,
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_encoding_servers, this), ID_tools_encoding_servers);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_manage_templates, this), ID_tools_manage_templates);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_check_for_updates, this), ID_tools_check_for_updates);
- Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_send_translations, this), ID_tools_send_translations);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this),ID_tools_system_information);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_export_preferences, this), ID_tools_export_preferences);
UpdateChecker::instance()->run();
}
- void tools_send_translations ()
- {
- SendI18NDialog dialog(this);
- if (dialog.ShowModal() != wxID_OK) {
- return;
- }
-
- string body;
- body += dialog.name() + "\n";
- body += dialog.language() + "\n";
- body += string(dcpomatic_version) + " " + string(dcpomatic_git_commit) + "\n";
- body += "--\n";
- auto translations = I18NHook::translations ();
- for (auto i: translations) {
- body += i.first + "\n" + i.second + "\n\n";
- }
- if (dialog.email().find("@") == string::npos) {
- error_dialog (this, _("You must enter a valid email address when sending translations, "
- "otherwise the DCP-o-matic maintainers cannot credit you or contact you with questions."));
- } else {
- Email email(dialog.email(), { "carl@dcpomatic.com" }, "DCP-o-matic translations", body);
- try {
- email.send("main.carlh.net", 2525, EmailProtocol::STARTTLS);
- } catch (NetworkError& e) {
- error_dialog (this, _("Could not send translations"), std_to_wx(e.what()));
- }
- }
- }
-
void help_about ()
{
AboutDialog dialog(this);
add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0);
add_item (tools, _("Manage templates..."), ID_tools_manage_templates, 0);
add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0);
- add_item (tools, _("Send translations..."), ID_tools_send_translations, 0);
add_item (tools, _("System information..."), ID_tools_system_information, 0);
tools->AppendSeparator ();
add_item (tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS);
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-12 00:54+0100\n"
-"PO-Revision-Date: 2023-05-15 09:26+0200\n"
+"PO-Revision-Date: 2024-05-02 14:01+0200\n"
"Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n"
"Language-Team: \n"
"Language: cs_CZ\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.2.2\n"
+"X-Generator: Poedit 3.4.2\n"
#: src/tools/dcpomatic_combiner.cc:171
msgid "%1 already exists as a file, so you cannot use it for a DCP."
#: src/tools/dcpomatic_disk.cc:161
msgid "Copy DCP"
-msgstr ""
+msgstr "Kopírovat DCP"
#: src/tools/dcpomatic.cc:1339
msgid "Copy settings\tCtrl-C"
msgstr "Nelze dešifrovat DKDM. Možná nebylo vytvořeno správným certifikátem."
#: src/tools/dcpomatic.cc:632 src/tools/dcpomatic.cc:649
-#, fuzzy
msgid "Could not duplicate project."
-msgstr "Nemohu najít přehrávač."
+msgstr "Projekt nelze duplikovat."
#: src/tools/dcpomatic.cc:913
msgid "Could not find batch converter."
"Could not listen for new batch jobs. Perhaps another instance of the DCP-o-"
"matic Batch Converter is running."
msgstr ""
+"Nelze načíst nové dávkové úlohy. Možná běží další instance DCP-o-matic Batch "
+"Converter."
#: src/tools/dcpomatic_editor.cc:336
msgid "Could not load DCP"
#: src/tools/dcpomatic.cc:771
msgid "Could not remove existing preferences file"
-msgstr ""
+msgstr "Stávající soubor předvoleb nelze odstranit"
#: src/tools/dcpomatic.cc:605 src/tools/dcpomatic.cc:1278
-#, fuzzy
msgid "Could not save project."
-msgstr "Nemohu vytvořit DCP."
+msgstr "Projekt nelze uložit."
#: src/tools/dcpomatic.cc:616
-#, fuzzy
msgid "Could not save template."
-msgstr "Nemohu najít přehrávač."
+msgstr "Šablonu nelze uložit."
#: src/tools/dcpomatic.cc:1123
-#, fuzzy
msgid "Could not send translations"
-msgstr "Nemohu spustit nautilus"
+msgstr "Překlady se nepodařilo odeslat"
#: src/tools/dcpomatic.cc:1039
msgid "Could not show DCP."
#: src/tools/dcpomatic_editor.cc:208
msgid "Creator"
-msgstr ""
+msgstr "Tvůrce"
#: src/tools/dcpomatic_disk.cc:132 src/tools/dcpomatic_disk.cc:136
-#, fuzzy
msgid "DCP"
-msgstr "CPL"
+msgstr "DCP"
#: src/tools/dcpomatic.cc:1537 src/tools/dcpomatic.cc:1634
#: src/tools/dcpomatic.cc:1673
#: src/tools/dcpomatic_combiner.cc:178 src/tools/dcpomatic_combiner.cc:222
#: src/tools/dcpomatic_combiner.cc:256
-#, fuzzy
msgid "DCP-o-matic Combiner"
-msgstr "DCP-o-matic přehrávač"
+msgstr "DCP-o-matic Combiner"
#: src/tools/dcpomatic_disk.cc:315 src/tools/dcpomatic_disk.cc:323
#: src/tools/dcpomatic_disk.cc:356 src/tools/dcpomatic_disk.cc:444
#: src/tools/dcpomatic_disk.cc:490
-#, fuzzy
msgid "DCP-o-matic Disk Writer"
-msgstr "DCP-o-matic KDM Creator"
+msgstr "DCP-o-matic Disk Writer"
#: src/tools/dcpomatic_editor.cc:293 src/tools/dcpomatic_editor.cc:447
-#, fuzzy
msgid "DCP-o-matic Editor"
-msgstr "DCP-o-matic Playlist Editor"
+msgstr "DCP-o-matic Editor"
#: src/tools/dcpomatic_editor.cc:498
-#, fuzzy
msgid "DCP-o-matic Editor could not start."
-msgstr "DCP-o-matic nelze spustit"
+msgstr "DCP-o-matic Editor nelze spustit."
#: src/tools/dcpomatic_server.cc:152
msgid "DCP-o-matic Encode Server"
#: src/tools/dcpomatic_combiner.cc:188
msgid "DCPs combined successfully."
-msgstr ""
+msgstr "DCP se úspěšně spojily."
#: src/tools/dcpomatic_kdm.cc:170
msgid "DKDM"
#: src/tools/dcpomatic_kdm.cc:577
#, c-format
msgid "DKDM %s is already in the DKDM list and will not be added again."
-msgstr ""
+msgstr "DKDM %s je již v seznamu DKDM a nebude znovu přidán."
#: src/tools/dcpomatic_player.cc:599
msgid "Decode at full resolution"
"Did you install the DCP-o-matic Disk Writer.pkg from the .dmg? Please check "
"and try again."
msgstr ""
+"Nainstalovali jste DCP-o-matic Disk Writer.pkg z .dmg? Zkontrolujte prosím a "
+"zkuste to znovu."
#: src/tools/dcpomatic.cc:1874 src/tools/dcpomatic.cc:1889
#: src/tools/dcpomatic.cc:1931
"Do you see a 'User Account Control' dialogue asking about "
"dcpomatic2_disk_writer.exe? If so, click 'Yes', then try again."
msgstr ""
+"Vidíte dialog „Řízení uživatelských účtů“ s dotazem na "
+"dcpomatic2_disk_writer.exe? Pokud ano, klikněte na ‚Ano‘ a zkuste to znovu."
#: src/tools/dcpomatic.cc:819
#, c-format
#: src/tools/dcpomatic_disk.cc:148
msgid "Drive"
-msgstr ""
+msgstr "Disk"
#: src/tools/dcpomatic_player.cc:593
msgid "Dual screen\tShift+F11"
#: src/tools/dcpomatic_editor.cc:89
msgid "Duration"
-msgstr ""
+msgstr "Délka"
#: src/tools/dcpomatic_editor.cc:149
msgid "Edit reel"
-msgstr ""
+msgstr "Upravit reel"
#: src/tools/dcpomatic_batch.cc:100 src/tools/dcpomatic.cc:1388
msgid "Encoding servers..."
#: src/tools/dcpomatic_editor.cc:84
msgid "Entry point"
-msgstr ""
+msgstr "Vstupní bod"
#: src/tools/dcpomatic.cc:1396
-#, fuzzy
msgid "Export preferences..."
-msgstr "Obnovit původní nastavení"
+msgstr "Předvolby exportu…"
#: src/tools/dcpomatic.cc:1368
msgid "Export subtitles..."
msgstr "Film byl změněn"
#: src/tools/dcpomatic_kdm.cc:323
-#, fuzzy, c-format
+#, c-format
msgid "Folder %s already exists. Do you want to overwrite it?"
-msgstr "Soubor %s již existuje. Chcete soubor přepsat?"
+msgstr "Složka %s již existuje. Chcete jej přepsat?"
#: src/tools/dcpomatic_server.cc:163
msgid "Frames per second"
#: src/tools/dcpomatic_combiner.cc:101
msgid "Input DCP"
-msgstr ""
+msgstr "Vstup DCP"
#: src/tools/dcpomatic_editor.cc:94
msgid "Intrinsic duration"
-msgstr ""
+msgstr "Vnitřní doba trvání"
#: src/tools/dcpomatic_editor.cc:203
msgid "Issuer"
-msgstr ""
+msgstr "Vydavatel"
#: src/tools/dcpomatic.cc:483
msgid ""
"No ASSETMAP or ASSETMAP.xml found in this folder. Please choose a DCP "
"folder."
msgstr ""
+"V této složce nebyl nalezen žádný ASSETMAP nebo ASSETMAP.xml. Vyberte prosím "
+"složku DCP."
#: src/tools/dcpomatic_playlist.cc:245
msgid ""
#: src/tools/dcpomatic_editor.cc:281
msgid "Open a DCP using File -> Open"
-msgstr ""
+msgstr "Otevřete DCP pomocí Soubor -> Otevřít"
#: src/tools/dcpomatic_kdm.cc:222
msgid "Output"
#: src/tools/dcpomatic_combiner.cc:120
msgid "Output DCP folder"
-msgstr ""
+msgstr "Složka pro uložení DCP"
#: src/tools/dcpomatic.cc:1341
msgid "Paste settings...\tCtrl-V"
#: src/tools/dcpomatic_batch.cc:175
msgid "Pause or resume conversion"
-msgstr ""
+msgstr "Pozastavit nebo obnovit konverzi"
#: src/tools/dcpomatic_batch.cc:175
msgid "Pause/resume"
-msgstr ""
+msgstr "Pozastavit/obnovit"
#: src/tools/dcpomatic_editor.cc:167
msgid "Picture"
-msgstr ""
+msgstr "Obrázek"
#: src/tools/dcpomatic.cc:567
msgid ""
#: src/tools/dcpomatic_editor.cc:218
msgid "Reels"
-msgstr ""
+msgstr "Reels"
#: src/tools/dcpomatic_disk.cc:152
msgid "Refresh"
-msgstr ""
+msgstr "Obnovit"
#: src/tools/dcpomatic.cc:1720
msgid "Release notes"
-msgstr ""
+msgstr "Poznámky k vydání"
#: src/tools/dcpomatic_kdm.cc:213 src/tools/dcpomatic_playlist.cc:340
msgid "Remove"
msgstr "Zobrazit DCP ve Findieru"
#: src/tools/dcpomatic_playlist.cc:319
-#, fuzzy
msgid "Save"
-msgstr "&Speichern"
+msgstr "Uložit"
#: src/tools/dcpomatic.cc:1317
msgid "Save as &template..."
#: src/tools/dcpomatic_player.cc:732
msgid "Save frame to file"
-msgstr ""
+msgstr "Uložit snímek do souboru"
#: src/tools/dcpomatic_kdm.cc:157
msgid "Screens"
#: src/tools/dcpomatic_editor.cc:170
msgid "Sound"
-msgstr ""
+msgstr "Zvuk"
#: src/tools/dcpomatic.cc:761
msgid "Specify ZIP file"
-msgstr ""
+msgstr "Zadejte soubor ZIP"
#: src/tools/dcpomatic_editor.cc:173
msgid "Subtitle"
-msgstr ""
+msgstr "Titulky"
#: src/tools/dcpomatic.cc:1392 src/tools/dcpomatic_player.cc:608
msgid "System information..."
"certificates' validity period. Either use an earlier end time for this KDM "
"or re-create your signing certificates in the DCP-o-matic preferences window."
msgstr ""
+"Koncové období KDM je po (nebo blízko) konci doby platnosti podpisových "
+"certifikátů. Buď použijte dřívější čas ukončení tohoto KDM, nebo znovu "
+"vytvořte své podpisové certifikáty v okně předvoleb DCP-o-matic."
#: src/tools/dcpomatic_kdm.cc:461
msgid ""
"The KDM start period is before (or close to) the start of the signing "
"certificate's validity period. Use a later start time for this KDM."
msgstr ""
+"Počáteční období KDM je před (nebo blízko) začátku doby platnosti "
+"podpisového certifikátu. Použijte pozdější čas zahájení pro tento KDM."
#: src/tools/dcpomatic.cc:963
msgid "The certificate chain for signing is invalid"
-msgstr ""
+msgstr "Řetěz certifikátů pro podepisování je neplatný"
#: src/tools/dcpomatic.cc:1912
msgid ""
"řetězec certifikátů pro podepisování DCP a KDM?"
#: src/tools/dcpomatic.cc:1927
-#, fuzzy
msgid ""
"The certificate chain that DCP-o-matic uses for signing DCPs and KDMs "
"contains a small error\n"
"the certificate chain\n"
"for signing DCPs and KDMs?"
msgstr ""
-"Řetězec certifikátů, který DCP-o-matic používá pro podepisování DCP a KDM, "
+"Řetěz certifikátů, který DCP-o-matic používá k podepisování DCP a KDM, "
"obsahuje malou chybu\n"
-"což zabrání tomu, aby byly DCP v některých systémech správně ověřeny. Chcete "
-"znovu vytvořit\n"
-"řetězec certifikátů pro podepisování DCP a KDM?"
+"což zabrání správnému ověření DCP na některých systémech. Tato chyba byla "
+"způsobena\n"
+"chybou v DCP-o-matic, která byla nyní opravena. Chcete znovu vytvořit "
+"řetězec certifikátů\n"
+"pro podepisování DCP a KDM?"
#: src/tools/dcpomatic.cc:1886
-#, fuzzy
msgid ""
"The certificate chain that DCP-o-matic uses for signing DCPs and KDMs has a "
"validity period\n"
"systems.\n"
"Do you want to re-create the certificate chain for signing DCPs and KDMs?"
msgstr ""
-"Řetězec certifikátů, který DCP-o-matic používá pro podepisování DCP a KDM, "
-"obsahuje malou chybu\n"
-"což zabrání tomu, aby byly DCP v některých systémech správně ověřeny. Chcete "
-"znovu vytvořit\n"
-"řetězec certifikátů pro podepisování DCP a KDM?"
+"Řetěz certifikátů, který DCP-o-matic používá k podepisování DCP a KDM, má "
+"dobu platnosti\n"
+"to je příliš dlouhé. To způsobí problémy s přehráváním DCP na některých "
+"systémech.\n"
+"Chcete znovu vytvořit řetězec certifikátů pro podepisování DCP a KDM?"
#: src/tools/dcpomatic.cc:1898
msgid ""
#: src/tools/dcpomatic_disk.cc:279
msgid "The disk you selected is no longer available. Please choose another."
-msgstr ""
+msgstr "Vybraný disk již není k dispozici. Vyberte prosím jiný."
#: src/tools/dcpomatic_disk.cc:358
#, c-format
"The drive %s could not be unmounted.\n"
"Close any application that is using it, then try again. (%s)"
msgstr ""
+"Disk %s nelze odpojit.\n"
+"Zavřete všechny aplikace, které jej používají, a zkuste to znovu. (%s)"
#: src/tools/dcpomatic_disk.cc:531 src/tools/dcpomatic_player.cc:1364
msgid ""
"fungovat správně. Prosím, zkontrolujte nastavení filmu."
#: src/tools/dcpomatic_player.cc:414
-#, fuzzy
msgid ""
"This looks like a DCP-o-matic project folder, which cannot be loaded into "
"the player. Choose the DCP folder inside the DCP-o-matic project folder if "
"that's what you want to play."
msgstr ""
"Vypadá to jako složka projektu DCP-o-matic, kterou nelze načíst do "
-"přehrávače. Pokud chcete přehrávat, vyberte adresář DCP ve složce projektu "
+"přehrávače. Pokud jí chcete přehrát, vyberte složku DCP ve složce projektu "
"DCP-o-matic."
#: src/tools/dcpomatic_player.cc:607
msgstr "Časování…"
#: src/tools/dcpomatic_disk.cc:116
-#, fuzzy
msgid "Tools"
-msgstr "&Nástroje"
+msgstr "Nástroje"
#: src/tools/dcpomatic.cc:565
#, c-format
#: src/tools/dcpomatic_disk.cc:115
msgid "Uninstall..."
-msgstr ""
+msgstr "Odinstalovat…"
#: src/tools/dcpomatic_playlist.cc:337
msgid "Up"
"You did not correctly confirm that you read the warning that was just "
"shown. DCP-o-matic Disk Writer will close now. Please try again."
msgstr ""
+"Nepotvrdili jste správně, že jste si přečetli právě zobrazené varování. DCP-"
+"o-matic Disk Writer se nyní uzavře. Prosím zkuste to znovu."
#: src/tools/dcpomatic_disk.cc:374
msgid ""
"You did not correctly confirm that you read the warning that was just "
"shown. Please try again."
msgstr ""
+"Nepotvrdili jste správně, že jste si přečetli právě zobrazené varování. "
+"Prosím zkuste to znovu."
#: src/tools/dcpomatic_batch.cc:340 src/tools/dcpomatic.cc:589
#: src/tools/dcpomatic_editor.cc:381 src/tools/dcpomatic_player.cc:640
"You must enter a valid email address when sending translations, otherwise "
"the DCP-o-matic maintainers cannot credit you or contact you with questions."
msgstr ""
+"Při odesílání překladů musíte zadat platnou e-mailovou adresu, jinak vám "
+"správci DCP-o-matic nemohou připsat kredit ani vás kontaktovat s dotazy."
#, fuzzy
#~ msgid "DCP-o-matic DCP Combiner"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-12 00:54+0100\n"
-"PO-Revision-Date: 2023-05-15 09:25+0200\n"
+"PO-Revision-Date: 2024-05-02 14:12+0200\n"
"Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n"
"Language-Team: DCP-o-matic translators\n"
"Language: cs_CZ\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.2.2\n"
+"X-Generator: Poedit 3.4.2\n"
"X-Poedit-Bookmarks: -1,-1,-1,-1,369,-1,-1,-1,-1,-1\n"
#: src/wx/player_information.cc:112
msgstr "%s %s"
#: src/wx/about_dialog.cc:89
-#, fuzzy
msgid ""
"(C) 2012-2024 Carl Hetherington, Terrence Meiczinger\n"
" Ole Laursen"
msgstr ""
-"© 2012-2023 Carl Hetherington, Terrence Meiczinger\n"
+"© 2012-2024 Carl Hetherington, Terrence Meiczinger\n"
" Ole Laursen"
#: src/wx/file_picker_ctrl.cc:51 src/wx/file_picker_ctrl.cc:66
#: src/wx/verify_dcp_dialog.cc:417
#, c-format
msgid "<MainSoundConfiguration> describes incorrect number of channels (%n)"
-msgstr ""
+msgstr "<MainSoundConfiguration> popisuje nesprávný počet kanálů (%n)"
#: src/wx/subtitle_appearance_dialog.cc:118
msgid "<b>New colour</b>"
"A subtitle or closed caption refers to a font with ID %id that does not have "
"a corresponding <LoadFont> node."
msgstr ""
+"Titulky nebo skryté titulky odkazují na písmo s ID %id, které nemá "
+"odpovídající node <LoadFont>."
#: src/wx/config_dialog.cc:996
msgid "ALSA"
msgstr "Přidat adresáta"
#: src/wx/content_panel.cc:264
-#, fuzzy
msgid "Add video, image, sound or subtitle files to the film (Ctrl+A)."
-msgstr "Přidat video, obrázek zvuk nebo titulky do filmu."
+msgstr "Přidejte do filmu soubory videa, obrázků, zvuku nebo titulků (Ctrl+A)."
#: src/wx/config_dialog.cc:301 src/wx/recipients_panel.cc:69
#: src/wx/editable_list.h:141
msgstr "Certifikát stažen"
#: src/wx/invalid_certificate_period_dialog.cc:63
-#, fuzzy
msgid "Certificate end"
-msgstr "Řetěz certifikátoů"
+msgstr "Konec certifikátu"
#: src/wx/invalid_certificate_period_dialog.cc:55
-#, fuzzy
msgid "Certificate start"
-msgstr "Řetěz certifikátoů"
+msgstr "Začátek certifikátu"
#: src/wx/metadata_dialog.cc:298
msgid "Chain"
msgstr "Christie"
#: src/wx/invalid_certificate_period_dialog.cc:39
-#, fuzzy
msgid "Cinema"
-msgstr "kino"
+msgstr "Kino"
#: src/wx/full_config_dialog.cc:122
msgid "Cinema and screen database file"
msgstr "Nelze načíst certifikát (%s)"
#: src/wx/simple_video_view.cc:176
-#, fuzzy
msgid "Could not play content"
-msgstr "Nelze načíst KDM"
+msgstr "Obsah nelze přehrát"
#: src/wx/gl_video_view.cc:139
#, c-format
msgstr "Titulní stránka"
#: src/wx/invalid_certificate_period_dialog.cc:98
-#, fuzzy
msgid "Create KDMs anyway"
-msgstr "Přesto vytvořit DCP"
+msgstr "Přesto vytvořit KDM"
#: src/wx/film_name_location_dialog.cc:51
msgid "Create in folder"
"Frame %frame has an image component that is too large (component %component "
"is %size bytes in size)."
msgstr ""
+"Snímek %frame obsahuje komponentu obrázku, která je příliš velká (komponenta "
+"%component má velikost %size bytů)."
#: src/wx/dcp_panel.cc:827
msgid "Frame Rate"
msgstr "IP adresa / host name"
#: src/wx/full_config_dialog.cc:1551
-#, fuzzy
msgid "ISDCF name part length"
-msgstr "ISDCF název"
+msgstr "Délka části názvu ISDCF"
#: src/wx/full_config_dialog.cc:1387
msgid "Identifiers"
msgstr "Intermediate common name"
#: src/wx/metadata_dialog.cc:208
-#, fuzzy
msgid "International texted"
-msgstr "CPL anotace textu"
+msgstr "Mezinárodní textové zprávy"
#: src/wx/metadata_dialog.cc:209
msgid "International textless"
-msgstr ""
+msgstr "Mezinárodní bez textu"
#: src/wx/dcp_panel.cc:173 src/wx/full_config_dialog.cc:414
msgid "Interop"
msgstr "Neplatný soubor exportu DCP-o-matic"
#: src/wx/invalid_certificate_period_dialog.cc:33
-#, fuzzy
msgid "Invalid certificates"
-msgstr "Stáhnout certifikát"
+msgstr "Neplatné certifikáty"
#: src/wx/colour_conversion_editor.cc:215
msgid "Inverse 2.6 gamma correction on output"
msgstr "Otevřít okno s konzolou"
#: src/wx/content_panel.cc:288
-#, fuzzy
msgid "Open the timeline for the film (Ctrl+T)."
-msgstr "Otevřít časovou osu pro film."
+msgstr "Otevřete časovou osu filmu (Ctrl+T)."
#: src/wx/full_config_dialog.cc:1774 src/wx/player_config_dialog.cc:113
msgid "OpenGL (faster)"
msgstr "Odstranit obraz"
#: src/wx/content_panel.cc:276
-#, fuzzy
msgid "Remove the selected piece of content from the film (Delete)."
-msgstr "Odstranit vybranou část obsahu z filmu."
+msgstr "Odstraňte vybranou část obsahu z filmu (Smazat)."
#: src/wx/rename_template_dialog.cc:26
msgid "Rename template"
msgstr "Měřítko"
#: src/wx/invalid_certificate_period_dialog.cc:47
-#, fuzzy
msgid "Screen"
-msgstr "Obraz"
+msgstr "Obrazovka"
#: src/wx/kdm_dialog.cc:81
msgid "Screens"
msgstr "Nastavit DCP projekt z tohoto DCP"
#: src/wx/content_menu.cc:113
-#, fuzzy
msgid "Set project markers from this DCP"
-msgstr "Nastavit DCP projekt z tohoto DCP"
+msgstr "Nastavte značky projektu z tohoto DCP"
#: src/wx/custom_scale_dialog.cc:42
msgid "Set ratio and fit to DCP container"
#: src/wx/screens_panel.cc:763
#, c-format
msgid "Show only %d checked"
-msgstr ""
+msgstr "Zobrazit pouze %d zaškrtnutých"
#: src/wx/screens_panel.cc:65 src/wx/screens_panel.cc:761
msgid "Show only checked"
-msgstr ""
+msgstr "Zobrazit pouze zaškrtnuté"
#: src/wx/text_panel.cc:170
msgid "Show subtitle area"
msgstr "Přichytit k objektům"
#: src/wx/invalid_certificate_period_dialog.cc:83
-#, fuzzy
msgid ""
"Some KDMs would have validity periods which are outside the recipient "
"certificate validity periods. What do you want to do?"
msgstr ""
-"Některé KDM by měly doby platnosti, které jsou zcela mimo doby platnosti "
-"certifikátu příjemce. Je velmi nepravděpodobné, že by takové KDM fungovaly, "
-"a proto nebudou vytvořeny."
+"Některé KDM by měly doby platnosti, které jsou mimo období platnosti "
+"certifikátu příjemce. Co chceš dělat?"
#: src/wx/verify_dcp_dialog.cc:384
msgid ""
#: src/wx/verify_dcp_dialog.cc:414
msgid "Sound assets do not all have the same channel count."
-msgstr ""
+msgstr "Všechny zvuková assety nemají stejný počet kanálů."
#: src/wx/gain_calculator_dialog.cc:32
msgid "Sound processor"
msgstr "Zvukový procesor"
#: src/wx/metadata_dialog.cc:207
-#, fuzzy
msgid "Specific"
-msgstr "Nespecifikováno"
+msgstr "Specifický"
#: src/wx/dcp_panel.cc:150
msgid "Split by video content"
msgstr "Dočasočná verze"
#: src/wx/metadata_dialog.cc:205
-#, fuzzy
msgid "Territory type"
-msgstr "Území (např. SK)"
+msgstr "Typ území"
#: src/wx/full_config_dialog.cc:994 src/wx/full_config_dialog.cc:997
msgid "Test email sending failed."
#: src/wx/verify_dcp_dialog.cc:438
#, c-format
msgid "The <LabelText> in a <ContentVersion> in CPL %id is empty"
-msgstr ""
+msgstr "<LabelText> v <ContentVersion> v CPL %id je prázdný"
#: src/wx/verify_dcp_dialog.cc:399
msgid ""
"DCP je funkce, ale nemá žádnou značku FFMC (první snímek úvodních titulků)."
#: src/wx/dkdm_dialog.cc:173 src/wx/kdm_dialog.cc:206
-#, fuzzy
msgid ""
"The KDM end period is after (or close to) the end of the signing "
"certificates' validity period. Either use an earlier end time for this KDM "
"or re-create your signing certificates in the DCP-o-matic preferences window."
msgstr ""
-"Konec období KDM je po (nebo blízkém) konci doby platnosti podpisových "
-"certifikátů. Použijte pro tento KDM dřívější čas ukončení nebo znovu "
+"Koncové období KDM je po (nebo blízko) konci doby platnosti podpisových "
+"certifikátů. Buď použijte dřívější čas ukončení tohoto KDM, nebo znovu "
"vytvořte své podpisové certifikáty v okně předvoleb DCP-o-matic."
#: src/wx/dkdm_dialog.cc:171 src/wx/kdm_dialog.cc:204
#: src/wx/verify_dcp_dialog.cc:432
#, c-format
msgid "The SMPTE subtitle asset %id has <Text> nodes but no <LoadFont> node"
-msgstr ""
+msgstr "Titulky SMPTE %id má uzly <Text>, ale žádný uzel <LoadFont>"
#: src/wx/verify_dcp_dialog.cc:160
#, c-format
#, c-format
msgid ""
"The XML in the subtitle asset %n has more than one namespace declaration."
-msgstr ""
+msgstr "XML v aktivu titulků %n má více než jednu deklaraci jmenného prostoru."
#: src/wx/verify_dcp_dialog.cc:182
#, c-format
#: src/wx/verify_dcp_dialog.cc:435
#, c-format
msgid "The asset with ID %id in the asset map actually has an id of %other_id"
-msgstr ""
+msgstr "Dílo s ID %id v mapě aktiv má ve skutečnosti id %other_id"
#: src/wx/verify_dcp_dialog.cc:272
#, c-format
"The font file for font ID \"%n\" was not found, or was not referred to in "
"the ASSETMAP."
msgstr ""
+"Soubor fontu pro ID fontu „%n“ nebyl nalezen nebo na něj nebyl odkaz v "
+"ASSETMAP."
#: src/wx/verify_dcp_dialog.cc:209
#, c-format
msgstr "celá obrazovka"
#: src/wx/player_config_dialog.cc:99
-#, fuzzy
msgid "full screen with separate advanced controls"
-msgstr "celá obrazovka s ovládacími prvky na jiném monitoru"
+msgstr "celá obrazovka se samostatnými pokročilými ovládacími prvky"
#. TRANSLATORS: this is an abbreviation for "hours"
#: src/wx/timing_panel.cc:85
+++ /dev/null
-/*
- Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
-
- This file is part of DCP-o-matic.
-
- DCP-o-matic is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DCP-o-matic is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-
-#include "i18n_hook.h"
-#include "send_i18n_dialog.h"
-#include "wx_util.h"
-#include <dcp/warnings.h>
-LIBDCP_DISABLE_WARNINGS
-#include <wx/listctrl.h>
-LIBDCP_ENABLE_WARNINGS
-
-
-using std::string;
-using std::map;
-
-
-SendI18NDialog::SendI18NDialog (wxWindow* parent)
- : wxDialog (parent, wxID_ANY, _("Send translations"))
-{
- auto overall_sizer = new wxBoxSizer (wxVERTICAL);
-
- auto table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
- table->AddGrowableCol (1, 1);
-
- add_label_to_sizer (table, this, _("Your name"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
- _name = new wxTextCtrl (this, wxID_ANY);
- table->Add (_name, 0, wxEXPAND);
-
- add_label_to_sizer (table, this, _("Your email"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
- _email = new wxTextCtrl (this, wxID_ANY);
- table->Add (_email, 0, wxEXPAND);
-
- add_label_to_sizer (table, this, _("Language"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL);
- _language = new wxTextCtrl (this, wxID_ANY);
- table->Add (_language, 0, wxEXPAND);
-
- auto list = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxSize(800, -1), wxLC_REPORT | wxLC_NO_HEADER);
- list->AppendColumn(wxT(""), wxLIST_FORMAT_LEFT, 400);
- list->AppendColumn(wxT(""), wxLIST_FORMAT_LEFT, 400);
-
- auto translations = I18NHook::translations ();
- int N = 0;
- for (auto const& i: translations) {
- wxListItem it;
- it.SetId(N);
- it.SetColumn(0);
- it.SetText(std_to_wx(i.first));
- list->InsertItem(it);
- it.SetColumn(1);
- it.SetText(std_to_wx(i.second));
- list->SetItem(it);
- ++N;
- }
-
- overall_sizer->Add (table, 0, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP);
- overall_sizer->Add (list, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_GAP);
-
- auto buttons = CreateSeparatedButtonSizer (wxOK | wxCANCEL);
- if (buttons) {
- overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
- }
-
- SetSizerAndFit (overall_sizer);
-}
+++ /dev/null
-/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
-
- This file is part of DCP-o-matic.
-
- DCP-o-matic is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- DCP-o-matic is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-
-#include "wx_util.h"
-#include <dcp/warnings.h>
-LIBDCP_DISABLE_WARNINGS
-#include <wx/wx.h>
-LIBDCP_ENABLE_WARNINGS
-
-
-class SendI18NDialog : public wxDialog
-{
-public:
- SendI18NDialog (wxWindow* parent);
-
- std::string name () {
- return wx_to_std (_name->GetValue());
- }
-
- std::string email () {
- return wx_to_std (_email->GetValue());
- }
-
- std::string language () {
- return wx_to_std (_language->GetValue());
- }
-
-private:
- wxTextCtrl* _name;
- wxTextCtrl* _email;
- wxTextCtrl* _language;
-};
supported_by.Add (wxT ("Cristian Arias Arévalo"));
supported_by.Add (wxT ("Alex Argoitia"));
supported_by.Add (wxT ("Esteban Arrangoiz"));
+supported_by.Add (wxT ("The Boscov Theater at GoggleWorks Center for the Arts"));
supported_by.Add (wxT ("Gunnar Ásgeir Ásgeirsson"));
supported_by.Add (wxT ("Andrea Ashton"));
supported_by.Add (wxT ("Georges Asmar"));
supported_by.Add (wxT ("Mike Blakesley"));
supported_by.Add (wxT ("Cyrille Blanc"));
supported_by.Add (wxT ("Stijn De Blieck"));
+supported_by.Add (wxT ("Nathan Block"));
supported_by.Add (wxT ("Félix Blume"));
supported_by.Add (wxT ("Theodor Boder"));
supported_by.Add (wxT ("Thorsten Boehnke"));
supported_by.Add (wxT ("Diemiruaya Deniran"));
supported_by.Add (wxT ("Larin Denis"));
supported_by.Add (wxT ("Michael Denner"));
+supported_by.Add (wxT ("denverdisc.com"));
supported_by.Add (wxT ("Nicholas Deppe"));
supported_by.Add (wxT ("Alexey Derevyanko"));
supported_by.Add (wxT ("Olivier Dermine"));
supported_by.Add (wxT ("Simon Edwards"));
supported_by.Add (wxT ("Arthur Edwards"));
supported_by.Add (wxT ("Si Edwards"));
+supported_by.Add (wxT ("NEU-Deli Einbeck"));
supported_by.Add (wxT ("Thomas Eingartner"));
supported_by.Add (wxT ("Gabriel Eiriz"));
supported_by.Add (wxT ("Chris Eller"));
supported_by.Add (wxT ("Markus Hüsgen"));
supported_by.Add (wxT ("Maurice Huvelin"));
supported_by.Add (wxT ("Robin Hyden"));
+supported_by.Add (wxT ("IAFilm"));
supported_by.Add (wxT ("Dayton Movies Inc"));
supported_by.Add (wxT ("Buttons Sound Inc"));
supported_by.Add (wxT ("Paramount Twin Inc"));
supported_by.Add (wxT ("Filip Kovcin"));
supported_by.Add (wxT ("Alan Kraemer"));
supported_by.Add (wxT ("Joel Krantz"));
+supported_by.Add (wxT ("Oliver Krause"));
supported_by.Add (wxT ("Ralph-Raimund Krause"));
supported_by.Add (wxT ("Christian Kreil"));
supported_by.Add (wxT ("Sebastian Kreis"));
supported_by.Add (wxT ("Daniel Martinez Lara"));
supported_by.Add (wxT ("Gabriel Montagné Láscaris-Comneno"));
supported_by.Add (wxT ("Marga Laube"));
+supported_by.Add (wxT ("James Lauchlan"));
+supported_by.Add (wxT ("Luc Lavergne"));
supported_by.Add (wxT ("Nicholas Lavigne"));
supported_by.Add (wxT ("Philip Lawrence"));
supported_by.Add (wxT ("David Lawrence"));
supported_by.Add (wxT ("Pierre-Jean Moreau"));
supported_by.Add (wxT ("Stanislas Moreau"));
supported_by.Add (wxT ("Ted Morée"));
+supported_by.Add (wxT ("Daniel Morez"));
supported_by.Add (wxT ("Paolo Morini"));
supported_by.Add (wxT ("Lars Moritz"));
supported_by.Add (wxT ("Lindsay Morris"));
supported_by.Add (wxT ("John Phillips"));
supported_by.Add (wxT ("Nat Phong"));
supported_by.Add (wxT ("Phonotone"));
+supported_by.Add (wxT ("Kari Layland Photography"));
supported_by.Add (wxT ("MelRish Photos And Films"));
supported_by.Add (wxT ("Paolo Piccioli"));
supported_by.Add (wxT ("Peccadillo Pictures"));
_views.push_back (make_shared<TimelineVideoContentView>(*this, i));
}
- if (i->audio && !i->audio->mapping().mapped_output_channels().empty ()) {
+ if (i->has_mapped_audio()) {
_views.push_back (make_shared<TimelineAudioContentView>(*this, i));
}
s += wxString::Format (_(" advanced by %dms"), -ac->delay());
}
- list<int> mapped = ac->mapping().mapped_output_channels();
+ auto mapped = ac->mapping().mapped_output_channels();
if (!mapped.empty ()) {
s += wxString::FromUTF8(" → ");
for (auto i: mapped) {
int const link_height = 32;
#elif defined(DCPOMATIC_OSX)
int const crop_width = 56;
+#if wxCHECK_VERSION(3, 2, 0)
int const link_width = 8 + 15 / dpi_scale_factor(this);
+#else
+ int const link_width = 23;
+#endif
int const link_height = 28;
#else
int const crop_width = 56;
screen_dialog.cc
screens_panel.cc
self_dkdm_dialog.cc
- send_i18n_dialog.cc
send_test_email_dialog.cc
server_dialog.cc
servers_list_dialog.cc
#include "lib/audio_content.h"
+#include "lib/dcp_content.h"
#include "lib/content_factory.h"
+#include "lib/film.h"
#include "lib/maths_util.h"
#include "lib/video_content.h"
#include "test.h"
+#include <dcp/sound_asset.h>
+#include <dcp/sound_asset_reader.h>
#include <boost/test/unit_test.hpp>
BOOST_CHECK(content->audio->fade_out() == dcpomatic::ContentTime::from_frames(81 * 48000 / 24, 48000));
}
+
+
+BOOST_AUTO_TEST_CASE(fade_out_works_with_dcp_content)
+{
+ auto dcp = std::make_shared<DCPContent>(TestPaths::private_data() / "JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV");
+ auto film = new_test_film2("fade_out_works_with_dcp_content", { dcp });
+ dcp->audio->set_fade_out(dcpomatic::ContentTime::from_seconds(15));
+ make_and_verify_dcp(film);
+
+ int32_t max = 0;
+ dcp::SoundAsset sound(find_file(film->dir(film->dcp_name()), "pcm_"));
+ auto reader = sound.start_read();
+ for (auto i = 0; i < sound.intrinsic_duration(); ++i) {
+ auto frame = reader->get_frame(i);
+ for (auto j = 0; j < frame->channels(); ++j) {
+ for (auto k = 0; k < frame->samples(); ++k) {
+ max = std::max(max, frame->get(j, k));
+ }
+ }
+ }
+
+ BOOST_CHECK(max > 2000);
+}
+
--- /dev/null
+/*
+ Copyright (C) 2024 Carl Hetherington <cth@carlh.net>
+
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ DCP-o-matic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include "lib/config.h"
+#include "lib/cross.h"
+#include "lib/image.h"
+#include "lib/j2k_encoder.h"
+#include "lib/player_video.h"
+#include "lib/raw_image_proxy.h"
+#include "lib/writer.h"
+#include "test.h"
+extern "C" {
+#include <libavutil/pixfmt.h>
+}
+#include <boost/test/unit_test.hpp>
+
+
+using std::make_shared;
+using std::weak_ptr;
+using boost::optional;
+
+
+BOOST_AUTO_TEST_CASE(j2k_encoder_deadlock_test)
+{
+ ConfigRestorer cr;
+
+ auto film = new_test_film2("j2k_encoder_deadlock_test");
+
+ /* Don't call ::start() on this Writer, so it can never write anything */
+ Writer writer(film, {});
+ writer.set_encoder_threads(4);
+
+ /* We want to test the case where the writer queue fills, and this can't happen unless there
+ * are enough encoding threads (each of which will end up waiting for the writer to empty,
+ * which will never happen).
+ */
+ Config::instance()->set_master_encoding_threads(4);
+ J2KEncoder encoder(film, writer);
+ encoder.begin();
+
+ for (int i = 0; i < 26; ++i) {
+ auto image = make_shared<Image>(AV_PIX_FMT_RGB24, dcp::Size(1998, 1080), Image::Alignment::PADDED);
+ auto image_proxy = make_shared<RawImageProxy>(image);
+ encoder.encode(
+ std::make_shared<PlayerVideo>(
+ image_proxy,
+ Crop(),
+ optional<double>(),
+ dcp::Size(1998, 1080),
+ dcp::Size(1998, 1080),
+ Eyes::BOTH,
+ Part::WHOLE,
+ optional<ColourConversion>(),
+ VideoRange::VIDEO,
+ weak_ptr<Content>(),
+ optional<Frame>(),
+ false
+ ),
+ {}
+ );
+ }
+
+ dcpomatic_sleep_seconds(10);
+}
+
#include "lib/butler.h"
#include "lib/compose.hpp"
#include "lib/config.h"
+#include "lib/constants.h"
#include "lib/content_factory.h"
#include "lib/cross.h"
#include "lib/dcp_content.h"
while (!player->pass()) {}
}
+
+BOOST_AUTO_TEST_CASE(unmapped_audio_does_not_raise_buffer_error)
+{
+ auto content = content_factory(TestPaths::private_data() / "arrietty_JP-EN.mkv")[0];
+ auto film = new_test_film2("unmapped_audio_does_not_raise_buffer_error", { content });
+
+ content->audio->set_mapping(AudioMapping(6 * 2, MAX_DCP_AUDIO_CHANNELS));
+
+ Player player(film, Image::Alignment::COMPACT);
+ Butler butler(film, player, AudioMapping(), 2, bind(PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED);
+
+ /* Wait for the butler thread to run for a while; in the case under test it will throw an exception because
+ * the video buffers are filled but no audio comes.
+ */
+ dcpomatic_sleep_seconds(10);
+ butler.rethrow();
+}
+
interrupt_encoder_test.cc
isdcf_name_test.cc
j2k_bandwidth_test.cc
+ j2k_encoder_test.cc
job_manager_test.cc
kdm_cli_test.cc
kdm_naming_test.cc
from waflib import Logs, Context
APPNAME = 'dcpomatic'
-libdcp_version = '1.8.73'
+libdcp_version = '1.8.100'
libsub_version = '1.6.42'
-this_version = subprocess.Popen(shlex.split('git tag -l --points-at HEAD'), stdout=subprocess.PIPE).communicate()[0]
-last_version = subprocess.Popen(shlex.split('git describe --tags --match v* --abbrev=0'), stdout=subprocess.PIPE).communicate()[0]
+this_version = subprocess.Popen(['git', 'tag', '-l', '--points-at', 'HEAD'], stdout=subprocess.PIPE).communicate()[0]
+git_head = subprocess.Popen(['git', 'rev-parse', '--short=9', 'HEAD'], stdout=subprocess.PIPE).communicate()[0]
# Python 2/3 compatibility; I don't really understand what's going on here
if not isinstance(this_version, str):
this_version = this_version.decode('utf-8')
-if not isinstance(last_version, str):
- last_version = last_version.decode('utf-8')
+if not isinstance(git_head, str):
+ git_head = git_head.decode('utf-8')
-if this_version == '' or this_version == 'merged-to-main':
- VERSION = '%sdevel' % last_version[1:].strip()
+if this_version == '':
+ VERSION = git_head.strip()
else:
VERSION = this_version[1:].strip()
int main() { std::locale::global (boost::locale::generator().generate ("")); }\n
""",
msg='Checking for boost locale library',
- libpath='/usr/local/lib',
lib=['boost_locale%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix],
uselib_store='BOOST_LOCALE')
if conf.env.TARGET_OSX:
conf.env.append_value('CXXFLAGS', ['-DDCPOMATIC_OSX', '-DGL_SILENCE_DEPRECATION'])
conf.env.append_value('LINKFLAGS', '-headerpad_max_install_names')
- conf.env.append_value('LINKFLAGS', '-llzma')
#
# Dependencies.
mandatory=True,
msg='Checking for libicu',
okmsg='yes',
- libpath=['/usr/local/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu'],
+ libpath=['/usr/lib', '/usr/lib/x86_64-linux-gnu'],
lib=['icuio', 'icui18n', 'icudata', 'icuuc'],
uselib_store='ICU')
int main() { struct jpeg_compress_struct compress; jpeg_create_compress (&compress); return 0; }
""",
msg='Checking for libjpeg',
- libpath='/usr/local/lib',
lib=['jpeg'],
uselib_store='JPEG')
int main() { ext4_mount("ext4_fs", "/mp/", false); }\n
""",
msg='Checking for lwext4 library',
- libpath='/usr/local/lib',
lib=['lwext4', 'blockdev'],
uselib_store='LWEXT4')
int main() { boost::thread t; }\n
""",
msg='Checking for boost threading library',
- libpath='/usr/local/lib',
lib=[boost_thread, 'boost_system%s' % boost_lib_suffix],
uselib_store='BOOST_THREAD')
int main() { boost::filesystem::copy_file ("a", "b"); }\n
""",
msg='Checking for boost filesystem library',
- libpath='/usr/local/lib',
lib=['boost_filesystem%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix],
uselib_store='BOOST_FILESYSTEM')
int main() { boost::gregorian::day_clock::local_day(); }\n
""",
msg='Checking for boost datetime library',
- libpath='/usr/local/lib',
lib=['boost_date_time%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix],
uselib_store='BOOST_DATETIME')