diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-02-12 00:06:13 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-02-12 00:06:13 +0100 |
| commit | 6f9adc9f7215a362d23e45b861017638ec67c723 (patch) | |
| tree | 81c07fa6ddc8dca328c269bdfc8f2534c46ccd2c | |
| parent | eade5cc8657f51d1d768b705936e918f8d1f53ee (diff) | |
| parent | eb04ac87ccfa046dd342ca7b9e6478c3bdcabbba (diff) | |
Merge branch 'main' into v2.17.x
| -rw-r--r-- | cscript | 4 | ||||
| -rw-r--r-- | platform/osx/make_dmg.sh | 2 | ||||
| -rw-r--r-- | src/lib/analyse_audio_job.cc | 13 | ||||
| -rw-r--r-- | src/lib/analyse_audio_job.h | 3 | ||||
| -rw-r--r-- | src/lib/audio_analyser.cc | 10 | ||||
| -rw-r--r-- | src/lib/audio_analyser.h | 2 | ||||
| -rw-r--r-- | src/lib/dcp_examiner.cc | 3 | ||||
| -rw-r--r-- | src/lib/ecinema_kdm_data.h | 32 | ||||
| -rw-r--r-- | src/lib/player.cc | 12 | ||||
| -rw-r--r-- | src/lib/player.h | 2 | ||||
| -rw-r--r-- | src/lib/po/sl_SI.po | 68 | ||||
| -rw-r--r-- | src/lib/string_text_file.cc | 12 | ||||
| -rw-r--r-- | src/tools/dcpomatic.cc | 19 | ||||
| -rw-r--r-- | src/tools/po/sl_SI.po | 39 | ||||
| -rw-r--r-- | src/wx/about_dialog.cc | 20 | ||||
| -rw-r--r-- | src/wx/audio_dialog.h | 5 | ||||
| -rw-r--r-- | src/wx/po/sl_SI.po | 58 | ||||
| -rw-r--r-- | src/wx/recipient_dialog.cc | 5 | ||||
| -rw-r--r-- | src/wx/supporters.cc | 2 | ||||
| -rw-r--r-- | test/audio_analysis_test.cc | 25 | ||||
| -rw-r--r-- | test/audio_ring_buffers_test.cc | 2 | ||||
| m--------- | test/data | 0 | ||||
| -rw-r--r-- | test/subtitle_font_id_test.cc | 11 | ||||
| -rw-r--r-- | wscript | 17 |
24 files changed, 181 insertions, 185 deletions
@@ -507,8 +507,8 @@ def dependencies(target, options): # Use distro-provided FFmpeg on Arch deps = [] - deps.append(('libdcp', 'v1.8.94')) - deps.append(('libsub', 'v1.6.46')) + deps.append(('libdcp', 'v1.8.95')) + deps.append(('libsub', 'v1.6.47')) deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23')) deps.append(('rtaudio', 'f619b76')) # We get our OpenSSL libraries from the environment, but we diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index 91983438e..161261faa 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -62,6 +62,8 @@ cat <<EOF > entitlements.plist <true/> <key>com.apple.security.cs.allow-dyld-environment-variables</key> <true/> + <key>com.apple.security.cs.allow-unsigned-executable-memory</key> + <true/> </dict> </plist> EOF diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc index ca0f49f57..a6ce5dcc8 100644 --- a/src/lib/analyse_audio_job.cc +++ b/src/lib/analyse_audio_job.cc @@ -47,12 +47,16 @@ using namespace boost::placeholders; #endif -/** @param from_zero true to analyse audio from time 0 in the playlist, otherwise begin at Playlist::start */ -AnalyseAudioJob::AnalyseAudioJob (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool from_zero) +/** @param whole_film true to analyse the whole film' audio (i.e. start from time 0 and use processors), false + * to analyse just the single piece of content in the playlist (i.e. start from Playlist::start() and do not + * use processors. + */ +AnalyseAudioJob::AnalyseAudioJob (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool whole_film) : Job (film) - , _analyser (film, playlist, from_zero, boost::bind(&Job::set_progress, this, _1, false)) + , _analyser(film, playlist, whole_film, boost::bind(&Job::set_progress, this, _1, false)) , _playlist (playlist) , _path (film->audio_analysis_path(playlist)) + , _whole_film(whole_film) { LOG_DEBUG_AUDIO_ANALYSIS_NC("AnalyseAudioJob::AnalyseAudioJob"); } @@ -89,6 +93,9 @@ AnalyseAudioJob::run () player->set_fast (); player->set_play_referenced (); player->Audio.connect (bind(&AudioAnalyser::analyse, &_analyser, _1, _2)); + if (!_whole_film) { + player->set_disable_audio_processor(); + } bool has_any_audio = false; for (auto c: _playlist->content()) { diff --git a/src/lib/analyse_audio_job.h b/src/lib/analyse_audio_job.h index 2b749da6b..afd52c304 100644 --- a/src/lib/analyse_audio_job.h +++ b/src/lib/analyse_audio_job.h @@ -50,7 +50,7 @@ class Filter; class AnalyseAudioJob : public Job { public: - AnalyseAudioJob (std::shared_ptr<const Film>, std::shared_ptr<const Playlist>, bool from_zero); + AnalyseAudioJob(std::shared_ptr<const Film>, std::shared_ptr<const Playlist>, bool whole_film); ~AnalyseAudioJob (); std::string name () const override; @@ -70,6 +70,7 @@ private: std::shared_ptr<const Playlist> _playlist; /** playlist's audio analysis path when the job was created */ boost::filesystem::path _path; + bool _whole_film; static const int _num_points; }; diff --git a/src/lib/audio_analyser.cc b/src/lib/audio_analyser.cc index df76932de..6e7b9fa86 100644 --- a/src/lib/audio_analyser.cc +++ b/src/lib/audio_analyser.cc @@ -52,7 +52,7 @@ using namespace dcpomatic; static auto constexpr num_points = 1024; -AudioAnalyser::AudioAnalyser (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool from_zero, std::function<void (float)> set_progress) +AudioAnalyser::AudioAnalyser(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool whole_film, std::function<void (float)> set_progress) : _film (film) , _playlist (playlist) , _set_progress (set_progress) @@ -71,7 +71,7 @@ AudioAnalyser::AudioAnalyser (shared_ptr<const Film> film, shared_ptr<const Play _current = std::vector<AudioPoint>(_film->audio_channels()); - if (!from_zero) { + if (!whole_film) { _start = _playlist->start().get_value_or(DCPTime()); } @@ -87,7 +87,9 @@ AudioAnalyser::AudioAnalyser (shared_ptr<const Film> film, shared_ptr<const Play }; auto content = _playlist->content(); - if (content.size() == 1 && content[0]->audio) { + if (whole_film) { + _leqm_channels = film->audio_channels(); + } else { _leqm_channels = 0; for (auto channel: content[0]->audio->mapping().mapped_output_channels()) { /* This means that if, for example, a file only maps C we will @@ -96,8 +98,6 @@ AudioAnalyser::AudioAnalyser (shared_ptr<const Film> film, shared_ptr<const Play */ _leqm_channels = std::min(film->audio_channels(), channel + 1); } - } else { - _leqm_channels = film->audio_channels(); } /* XXX: is this right? Especially for more than 5.1? */ diff --git a/src/lib/audio_analyser.h b/src/lib/audio_analyser.h index 4708f517a..3d40f8026 100644 --- a/src/lib/audio_analyser.h +++ b/src/lib/audio_analyser.h @@ -39,7 +39,7 @@ class Playlist; class AudioAnalyser { public: - AudioAnalyser (std::shared_ptr<const Film> film, std::shared_ptr<const Playlist> playlist, bool from_zero, std::function<void (float)> set_progress); + AudioAnalyser(std::shared_ptr<const Film> film, std::shared_ptr<const Playlist> playlist, bool whole_film, std::function<void (float)> set_progress); AudioAnalyser (AudioAnalyser const&) = delete; AudioAnalyser& operator= (AudioAnalyser const&) = delete; diff --git a/src/lib/dcp_examiner.cc b/src/lib/dcp_examiner.cc index d9c904720..72eb82860 100644 --- a/src/lib/dcp_examiner.cc +++ b/src/lib/dcp_examiner.cc @@ -237,9 +237,6 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant) for (auto const& font: asset->font_data()) { _fonts.push_back({reel_index, asset->id(), make_shared<dcpomatic::Font>(font.first, font.second)}); } - if (asset->font_data().empty()) { - _fonts.push_back({reel_index, asset->id(), make_shared<dcpomatic::Font>("")}); - } } } diff --git a/src/lib/ecinema_kdm_data.h b/src/lib/ecinema_kdm_data.h deleted file mode 100644 index 9ca3b24d0..000000000 --- a/src/lib/ecinema_kdm_data.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (C) 2019 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/>. - -*/ - -/* ECinema KDM data block contains: - - key (16 bytes) - - (optional) not-valid-before time (25 bytes) - - (optional) not-valid-after time (25 bytes) -*/ - -#define ECINEMA_KDM_KEY 0 -#define ECINEMA_KDM_KEY_LENGTH 16 -#define ECINEMA_KDM_NOT_VALID_BEFORE (ECINEMA_KDM_KEY_LENGTH) -#define ECINEMA_KDM_NOT_VALID_BEFORE_LENGTH 25 -#define ECINEMA_KDM_NOT_VALID_AFTER (ECINEMA_KDM_NOT_VALID_BEFORE + ECINEMA_KDM_NOT_VALID_BEFORE_LENGTH) -#define ECINEMA_KDM_NOT_VALID_AFTER_LENGTH 25 diff --git a/src/lib/player.cc b/src/lib/player.cc index 888c56aec..3402cc12b 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -189,6 +189,7 @@ Player::Player(Player&& other) , _silent(std::move(other._silent)) , _active_texts(std::move(other._active_texts)) , _audio_processor(std::move(other._audio_processor)) + , _disable_audio_processor(other._disable_audio_processor) , _playback_length(other._playback_length.load()) , _subtitle_alignment(other._subtitle_alignment) { @@ -228,6 +229,7 @@ Player::operator=(Player&& other) _silent = std::move(other._silent); _active_texts = std::move(other._active_texts); _audio_processor = std::move(other._audio_processor); + _disable_audio_processor = other._disable_audio_processor; _playback_length = other._playback_length.load(); _subtitle_alignment = other._subtitle_alignment; @@ -1191,7 +1193,7 @@ Player::audio (weak_ptr<Piece> weak_piece, AudioStreamPtr stream, ContentAudio c /* Process */ - if (_audio_processor) { + if (_audio_processor && !_disable_audio_processor) { content_audio.audio = _audio_processor->run(content_audio.audio, film->audio_channels()); } @@ -1589,3 +1591,11 @@ Player::signal_change(ChangeType type, int property) Change(type, property, false); } + +/** Must be called from the same thread that calls ::pass() */ +void +Player::set_disable_audio_processor() +{ + _disable_audio_processor = true; +} + diff --git a/src/lib/player.h b/src/lib/player.h index d4fae9fc4..2502ae536 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -105,6 +105,7 @@ public: void set_fast (); void set_play_referenced (); void set_dcp_decode_reduction (boost::optional<int> reduction); + void set_disable_audio_processor(); boost::optional<dcpomatic::DCPTime> content_time_to_dcp (std::shared_ptr<const Content> content, dcpomatic::ContentTime t) const; boost::optional<dcpomatic::ContentTime> dcp_to_content_time (std::shared_ptr<const Content> content, dcpomatic::DCPTime t) const; @@ -242,6 +243,7 @@ private: EnumIndexedVector<ActiveText, TextType> _active_texts; std::shared_ptr<AudioProcessor> _audio_processor; + bool _disable_audio_processor = false; boost::atomic<dcpomatic::DCPTime> _playback_length; diff --git a/src/lib/po/sl_SI.po b/src/lib/po/sl_SI.po index 7a1cec1ca..82888f76b 100644 --- a/src/lib/po/sl_SI.po +++ b/src/lib/po/sl_SI.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-12 00:54+0100\n" -"PO-Revision-Date: 2023-09-14 22:18+0200\n" +"PO-Revision-Date: 2024-02-10 16:15+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" "Language: sl_SI\n" @@ -208,17 +208,17 @@ msgstr "; %1 preostalo; zaključevanje ob %2%3" #: src/lib/analytics.cc:65 msgid "" -"<h2>You have made %1 DCPs with DCP-o-matic!</h2><img width=\"20%%\" " -"src=\"memory:me.jpg\" align=\"center\"><p>Hello. I'm Carl and I'm the " -"developer of DCP-o-matic. I work on it in my spare time (with the help of a " -"fine volunteer team of testers and translators) and I release it as free " -"software.<p>If you find DCP-o-matic useful, please consider a donation to " -"the project. Financial support will help me to spend more time developing " -"DCP-o-matic and making it better!<p><ul><li><a href=\"https://dcpomatic.com/" -"donate_amount?amount=40\">Go to Paypal to donate €40</a><li><a " -"href=\"https://dcpomatic.com/donate_amount?amount=20\">Go to Paypal to " -"donate €20</a><li><a href=\"https://dcpomatic.com/donate_amount?" -"amount=10\">Go to Paypal to donate €10</a></ul><p>Thank you!" +"<h2>You have made %1 DCPs with DCP-o-matic!</h2><img width=\"20%%\" src=" +"\"memory:me.jpg\" align=\"center\"><p>Hello. I'm Carl and I'm the developer " +"of DCP-o-matic. I work on it in my spare time (with the help of a fine " +"volunteer team of testers and translators) and I release it as free software." +"<p>If you find DCP-o-matic useful, please consider a donation to the " +"project. Financial support will help me to spend more time developing DCP-o-" +"matic and making it better!<p><ul><li><a href=\"https://dcpomatic.com/" +"donate_amount?amount=40\">Go to Paypal to donate €40</a><li><a href=" +"\"https://dcpomatic.com/donate_amount?amount=20\">Go to Paypal to donate " +"€20</a><li><a href=\"https://dcpomatic.com/donate_amount?amount=10\">Go to " +"Paypal to donate €10</a></ul><p>Thank you!" msgstr "" "<h2>%1 DCP ste izdelali z DCP-o-matic!</h2><img width=\"20%%\" src=\"memory:" "me.jpg\" align=\"center\"><p>Pozdravljeni. Jaz sem Carl in sem razvijalec " @@ -929,9 +929,8 @@ msgid "Event" msgstr "Dogodek" #: src/lib/hints.cc:397 -#, fuzzy msgid "Examining audio" -msgstr "Preučevanje podnaslovov" +msgstr "Preučevanje zvoka" #: src/lib/hints.cc:399 msgid "Examining audio, subtitles and closed captions" @@ -1078,7 +1077,6 @@ msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Če uporabljate 25 sl/s, morate spremeniti standard DCP v 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 " @@ -1086,7 +1084,7 @@ msgid "" msgstr "" "Na splošno je zdaj priporočljivo, da izdelujete DCP-je SMPTE, razen če imate " "poseben razlog za uporabo Interop. Svetujemo, da vaš DCP uporablja standard " -"SMPTE, ki ga določite na zavihku »DCP«." +"SMPTE, kar določite na zavihku »DCP«." #: src/lib/release_notes.cc:53 msgid "" @@ -1231,14 +1229,13 @@ msgid "No CPLs found in DCP." msgstr "V DCP-ju ni CPL-jev." #: src/lib/kdm_with_metadata.cc:217 -#, fuzzy msgid "No from address configured in the KDM Email tab of preferences" -msgstr "Noben KDM iz naslova ni določen v nastavitvah" +msgstr "Noben dohodni naslov ni določen v nastavitvah na zavihku e-naslova KDM" #: 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 "Noben poštni strežnik ni določen v nastavitvah" +msgstr "" +"Noben odhodni poštni strežnik ni določen v nastavitvah na zavihku e-pošte" #: src/lib/image_content.cc:131 msgid "No valid image files were found in the folder." @@ -1309,7 +1306,7 @@ msgstr "Politika" #: src/lib/filter.cc:106 msgid "Premultiply alpha channel" -msgstr "" +msgstr "Vnaprej pomnoži kanal alfa" #: src/lib/content.cc:494 msgid "Prepared for video frame rate" @@ -1578,7 +1575,6 @@ msgid "The certificate chain for signing is invalid (%1)" msgstr "Veriga potrdil za podpisovanje ni veljavna (%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 " @@ -1586,14 +1582,13 @@ msgid "" "certificate chain by clicking the \"Re-make certificates and key...\" button " "in the Keys page of Preferences." msgstr "" -"Veriga potrdil, ki jo DCP-o-matic uporablja za podpisovanje DCP in KDM-jev, " -"vsebuje majhno napako, ki bo preprečila pravilno preverjanje veljavnosti DCP " -"v nekaterih sistemih. Svetujemo vam, da znova ustvarite verigo potrdil za " -"podpisovanje s klikom gumba »Ponovno izdelaj potrdila in ključ …« na strani " -"Ključi v Nastavitvah." +"Veriga potrdil, ki jo DCP-o-matic uporablja za podpisovanje DCP-jev in KDM-" +"jev, vsebuje majhno napako, ki bo preprečila pravilno preverjanje " +"veljavnosti DCP v nekaterih sistemih. Svetujemo vam, da znova ustvarite " +"verigo potrdil za podpisovanje s klikom gumba »Ponovno izdelaj potrdila in " +"ključ …« na strani Ključi v Nastavitvah." #: 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 " @@ -1642,7 +1637,6 @@ msgid "The file %1 has been trimmed by %2 milliseconds more." msgstr "Datoteka %1 je bila obrezana za %2 milisekund več." #: 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 " @@ -1651,7 +1645,7 @@ msgid "" "systems support your chosen DCP rate." msgstr "" "Velika razlika je med hitrostjo sličic vašega DCP-ja in nekaterih vaših " -"vsebin. To bo povzročilo predvajanje zvoka na precej nižjem ali višjem " +"vsebin. To bo povzročilo predvajanje zvoka pri precej nižji ali višji " "frekvenci, kot bi bilo potrebno. Svetujemo vam, da nastavite hitrost sličic " "DCP na takšno, ki je bližje vaši vsebini, pod pogojem, da ciljni sistemi " "projekcije podpirajo izbrano hitrost DCP." @@ -1840,15 +1834,14 @@ msgid "Yet Another Deinterlacing Filter" msgstr "Še en filter za razpletanje" #: 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 " "to %2 fps." msgstr "" "Nastavljeno imate za DCP s hitrostjo %1 sl/s. Te hitrosti sličic ne " -"podpirajo vsi projektorji. Svetujemo vam, da spremenite hitrost sličic DCP " -"na %2 sl/s." +"podpirajo vsi projektorji. Svetujemo vam, da spremenite hitrost predvajanja " +"DCP na %2 sl/s." #: src/lib/hints.cc:183 msgid "" @@ -2181,12 +2174,3 @@ msgstr "neznano" #: src/lib/video_content.cc:516 msgid "video frames" msgstr "video sličice" - -#~ msgid "it does not have closed captions in all its reels." -#~ msgstr "nima zaprtih napisov v vseh svojih kolutih." - -#~ msgid "it does not have open subtitles in all its reels." -#~ msgstr "nima odprtih podnaslovov v vseh svojih kolutih." - -#~ msgid "it does not have sound in all its reels." -#~ msgstr "nima zvoka v vseh svojih kolutih." diff --git a/src/lib/string_text_file.cc b/src/lib/string_text_file.cc index 348ccd1d5..9b43b35a6 100644 --- a/src/lib/string_text_file.cc +++ b/src/lib/string_text_file.cc @@ -25,6 +25,7 @@ #include "string_text_file_content.h" #include <dcp/file.h> #include <sub/collect.h> +#include <sub/exceptions.h> #include <sub/ssa_reader.h> #include <sub/stl_binary_reader.h> #include <sub/subrip_reader.h> @@ -105,9 +106,14 @@ StringTextFile::StringTextFile (shared_ptr<const StringTextFileContent> content) if (ext == ".srt") { try { reader.reset(new sub::SubripReader(utf8.get())); - } catch (...) { - /* Sometimes files are have the .srt extension but are really WEBVTT */ - reader.reset(new sub::WebVTTReader(utf8.get())); + } catch (sub::SubripError& subrip_error) { + /* Sometimes files are have the .srt extension but are really WEBVTT... */ + try { + reader.reset(new sub::WebVTTReader(utf8.get())); + } catch (sub::WebVTTHeaderError&) { + /* ...but in this case there isn't even a WebVTT error */ + throw subrip_error; + } } } else if (ext == ".ssa" || ext == ".ass") { reader.reset(new sub::SSAReader(utf8.get())); diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 024422965..5333f34ae 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -1446,7 +1446,8 @@ private: void config_changed (Config::Property what) { /* Instantly save any config changes when using the DCP-o-matic GUI */ - if (what == Config::CINEMAS) { + switch (what) { + case Config::CINEMAS: try { Config::instance()->write_cinemas(); } catch (exception& e) { @@ -1458,7 +1459,21 @@ private: ) ); } - } else { + break; + case Config::DKDM_RECIPIENTS: + try { + Config::instance()->write_dkdm_recipients(); + } catch (exception& e) { + error_dialog ( + this, + wxString::Format ( + _("Could not write to DKDM recipients file at %s. Your changes have not been saved."), + std_to_wx(Config::instance()->dkdm_recipients_file().string()).data() + ) + ); + } + break; + default: try { Config::instance()->write_config(); } catch (exception& e) { diff --git a/src/tools/po/sl_SI.po b/src/tools/po/sl_SI.po index f649c071a..1ae1b2aed 100644 --- a/src/tools/po/sl_SI.po +++ b/src/tools/po/sl_SI.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-12 00:54+0100\n" -"PO-Revision-Date: 2023-09-14 22:47+0200\n" +"PO-Revision-Date: 2024-02-10 16:05+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" "Language: sl_SI\n" @@ -381,7 +381,7 @@ msgstr "" #: src/tools/dcpomatic.cc:771 msgid "Could not remove existing preferences file" -msgstr "" +msgstr "Obstoječe datoteke z nastavitvami ni bilo mogoče odstraniti" #: src/tools/dcpomatic.cc:605 src/tools/dcpomatic.cc:1278 msgid "Could not save project." @@ -1028,7 +1028,6 @@ msgstr "" "verigo potrdil za podpisovanje DCP-jev in KDM-jev?" #: 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" @@ -1041,8 +1040,10 @@ msgstr "" "Veriga potrdil, ki jo DCP-o-matic uporablja za podpisovanje DCP-jev in KDM-" "jev, vsebuje majhno\n" "napako, ki bo preprečila pravilno validacijo DCP-jev v nekaterih sistemih. " -"Ali želite ponovno ustvariti\n" -"verigo potrdil za podpisovanje DCP-jev in KDM-jev?" +"To napako je povzročila\n" +"napaka v DCP-o-matic, ki pa je že odpravljena. Ali želite ponovno ustvariti " +"verigo potrdil\n" +"za podpisovanje DCP-jev in KDM-jev?" #: src/tools/dcpomatic.cc:1886 msgid "" @@ -1193,9 +1194,9 @@ msgstr "" "\n" "<tt>%s</tt>\n" "\n" -"<span weight=\"bold\" size=\"larger\">POMEMBNO JE,</span> da <span " -"weight=\"bold\" size=\"larger\">DA VARNOSTNO KOPIRATE TO DATOTEKO</span>, " -"ker če izgubite DKDM (in DCP-ji, ki jih ščitijo), bodo postali neuporabni." +"<span weight=\"bold\" size=\"larger\">POMEMBNO JE,</span> da <span weight=" +"\"bold\" size=\"larger\">DA VARNOSTNO KOPIRATE TO DATOTEKO</span>, ker če " +"izgubite DKDM (in DCP-ji, ki jih ščitijo), bodo postali neuporabni." #: src/tools/dcpomatic.cc:809 msgid "" @@ -1203,8 +1204,8 @@ msgid "" "this DCP unless you have copies of the <tt>metadata.xml</tt> file within the " "film and the metadata files within the DCP.\n" "\n" -"You should ensure that these files are <span weight=\"bold\" " -"size=\"larger\">BACKED UP</span> if you want to make KDMs for this film." +"You should ensure that these files are <span weight=\"bold\" size=\"larger" +"\">BACKED UP</span> if you want to make KDMs for this film." msgstr "" "Izdelujete šifriran DCP. KDM-jev za ta DCP ne bo mogoče izdelati, razen če " "imate kopije datoteke <tt>metadata.xml</tt> znotraj filma in datotek " @@ -1259,21 +1260,3 @@ msgstr "" "Pri pošiljanju prevodov morate vnesti veljaven e-poštni naslov, sicer vam " "vzdrževalci DCP-o-matic ne morejo pripisati zaslug ali se obrniti na vas z " "vprašanji." - -#~ msgid "" -#~ "For some of these KDMs the recipient certificate's validity period will " -#~ "not cover the whole of the KDM validity period. This might cause " -#~ "problems with the KDMs." -#~ msgstr "" -#~ "Pri nekaterih od teh KDM-jev obdobje veljavnosti prejemnikovega potrdila " -#~ "ne pokriva celotnega obdobja veljavnosti KDM. To lahko povzroči težave s " -#~ "KDM-ji." - -#~ msgid "" -#~ "Some KDMs would have validity periods which are completely outside the " -#~ "recipient certificate periods. Such KDMs are very unlikely to work, so " -#~ "will not be created." -#~ msgstr "" -#~ "Nekateri KDM bi imeli obdobja veljavnosti, ki so povsem zunaj obdobij " -#~ "veljavnosti prejemnikovega potrdila. Takšni KDM najverjetneje ne bodo " -#~ "delovali, zato ne bodo ustvarjeni." diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc index 59760be98..8b1f8a038 100644 --- a/src/wx/about_dialog.cc +++ b/src/wx/about_dialog.cc @@ -232,6 +232,7 @@ AboutDialog::AboutDialog (wxWindow* parent) tested_by.Add (wxT ("Andreas Weiss")); tested_by.Add (wxT ("Paul Willmott")); tested_by.Add (wxT ("Wolfgang Woehl")); + tested_by.Add (wxT ("Benno Zwanenburg")); tested_by.Add (wxT ("Дима Агатов")); add_section (_("Tested by"), tested_by); @@ -255,7 +256,7 @@ void AboutDialog::add_section (wxString name, wxArrayString credits) { static auto first = true; - int const N = 4; + int const N = 3; auto panel = new wxScrolledWindow (_notebook); panel->SetMaxSize (wxSize (-1, 380)); @@ -263,22 +264,23 @@ AboutDialog::add_section (wxString name, wxArrayString credits) panel->SetScrollRate (0, 32); auto overall_sizer = new wxBoxSizer (wxHORIZONTAL); - vector<wxSizer*> sizers; - - for (int i = 0; i < N; ++i) { - sizers.push_back (new wxBoxSizer (wxVERTICAL)); - overall_sizer->Add (sizers.back (), 1, wxEXPAND | wxALL, 6); - } - + vector<wxString> strings(N); int c = 0; for (size_t i = 0; i < credits.Count(); ++i) { - add_label_to_sizer (sizers[c], panel, credits[i], false); + strings[c] += credits[i] + wxT("\n"); ++c; if (c == N) { c = 0; } } + for (int i = 0; i < N; ++i) { + auto label = new wxStaticText(panel, wxID_ANY, strings[i]); + auto sizer = new wxBoxSizer(wxVERTICAL); + sizer->Add(label); + overall_sizer->Add(sizer, 1, wxEXPAND | wxALL, 6); + } + panel->SetSizerAndFit (overall_sizer); _notebook->AddPage (panel, name, first); first = false; diff --git a/src/wx/audio_dialog.h b/src/wx/audio_dialog.h index f144fb485..8c2001c17 100644 --- a/src/wx/audio_dialog.h +++ b/src/wx/audio_dialog.h @@ -36,6 +36,11 @@ class FilmViewer; class Film; +/** @class AudioDialog + * @brief Dialog to display audio analysis. + * + * This can be used for the whole DCP, or a specific piece of content if one is passed into the constructor. + */ class AudioDialog : public wxDialog { public: diff --git a/src/wx/po/sl_SI.po b/src/wx/po/sl_SI.po index 43a894668..6a9291fc3 100644 --- a/src/wx/po/sl_SI.po +++ b/src/wx/po/sl_SI.po @@ -3,13 +3,12 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # -#: src/wx/custom_scale_dialog.cc:45 msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-01-12 00:54+0100\n" -"PO-Revision-Date: 2023-09-14 22:45+0200\n" +"PO-Revision-Date: 2024-02-10 16:17+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" "Language: sl_SI\n" @@ -78,12 +77,11 @@ msgid "%s %s" msgstr "%s %s" #: src/wx/about_dialog.cc:89 -#, fuzzy msgid "" "(C) 2012-2024 Carl Hetherington, Terrence Meiczinger\n" " Ole Laursen" msgstr "" -"(C) 2012-2023 Carl Hetherington, Terrence Meiczinger\n" +"(C) 2012-2024 Carl Hetherington, Terrence Meiczinger\n" " Ole Laursen" #: src/wx/file_picker_ctrl.cc:51 src/wx/file_picker_ctrl.cc:66 @@ -719,14 +717,12 @@ msgid "Certificate downloaded" msgstr "Preneseno potrdilo" #: src/wx/invalid_certificate_period_dialog.cc:63 -#, fuzzy msgid "Certificate end" -msgstr "Veriga potrdil" +msgstr "Konec potrdila" #: src/wx/invalid_certificate_period_dialog.cc:55 -#, fuzzy msgid "Certificate start" -msgstr "Veriga potrdil" +msgstr "Začetek potrdila" #: src/wx/metadata_dialog.cc:298 msgid "Chain" @@ -785,9 +781,8 @@ msgid "Christie" 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" @@ -961,7 +956,7 @@ msgstr "Naslovnica" #: src/wx/invalid_certificate_period_dialog.cc:98 msgid "Create KDMs anyway" -msgstr "" +msgstr "Vseeno ustvari KDM-je" #: src/wx/film_name_location_dialog.cc:51 msgid "Create in folder" @@ -1737,13 +1732,12 @@ msgid "Intermediate common name" msgstr "Skupno ime vmesne kopije (intermediata)" #: src/wx/metadata_dialog.cc:208 -#, fuzzy msgid "International texted" -msgstr "Besedilo pripombe CPL" +msgstr "Mednarodno, z besedilom" #: src/wx/metadata_dialog.cc:209 msgid "International textless" -msgstr "" +msgstr "Mednarodno, brez besedila" #: src/wx/dcp_panel.cc:173 src/wx/full_config_dialog.cc:414 msgid "Interop" @@ -1754,9 +1748,8 @@ msgid "Invalid DCP-o-matic export file" msgstr "Neveljavna izvozna datoteka DCP-o-matic" #: src/wx/invalid_certificate_period_dialog.cc:33 -#, fuzzy msgid "Invalid certificates" -msgstr "Prenesi potrdilo" +msgstr "Neveljavna potrdila" #: src/wx/colour_conversion_editor.cc:215 msgid "Inverse 2.6 gamma correction on output" @@ -2673,9 +2666,8 @@ msgid "Scale" msgstr "Umeri" #: src/wx/invalid_certificate_period_dialog.cc:47 -#, fuzzy msgid "Screen" -msgstr "Platna" +msgstr "Zaslon" #: src/wx/kdm_dialog.cc:81 msgid "Screens" @@ -2816,9 +2808,8 @@ msgid "Set project DCP settings from this DCP" msgstr "Nastavi DCP-nastavitve projekta iz tega DCP" #: src/wx/content_menu.cc:113 -#, fuzzy msgid "Set project markers from this DCP" -msgstr "Nastavi DCP-nastavitve projekta iz tega DCP" +msgstr "Nastavi oznake projekta iz tega DCP" #: src/wx/custom_scale_dialog.cc:42 msgid "Set ratio and fit to DCP container" @@ -2855,11 +2846,11 @@ msgstr "Pokaži grafikon ravni zvoka ..." #: src/wx/screens_panel.cc:763 #, c-format msgid "Show only %d checked" -msgstr "" +msgstr "Pokaži le %d potrjenih" #: src/wx/screens_panel.cc:65 src/wx/screens_panel.cc:761 msgid "Show only checked" -msgstr "" +msgstr "Pokaži le potrjene" #: src/wx/text_panel.cc:170 msgid "Show subtitle area" @@ -2903,14 +2894,12 @@ msgid "Snap" msgstr "Pripni" #: 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 "" -"Nekateri KDM bi imeli obdobja veljavnosti, ki so povsem zunaj obdobij " -"veljavnosti prejemnikovega potrdila. Takšni KDM najverjetneje ne bodo " -"delovali, zato ne bodo ustvarjeni." +"Nekateri KDM bi imeli obdobja veljavnosti, ki so zunaj obdobij veljavnosti " +"prejemnikovega potrdila. Kaj želite storiti?" #: src/wx/verify_dcp_dialog.cc:384 msgid "" @@ -2940,9 +2929,8 @@ msgid "Sound processor" msgstr "Zvočni procesor" #: src/wx/metadata_dialog.cc:207 -#, fuzzy msgid "Specific" -msgstr "Nedoločeno" +msgstr "Posebno" #: src/wx/dcp_panel.cc:150 msgid "Split by video content" @@ -3069,7 +3057,7 @@ msgstr "Začasna različica" #: src/wx/metadata_dialog.cc:205 msgid "Territory type" -msgstr "" +msgstr "Vrsta ozemlja" #: src/wx/full_config_dialog.cc:994 src/wx/full_config_dialog.cc:997 msgid "Test email sending failed." @@ -4239,9 +4227,8 @@ msgid "full screen" msgstr "celozaslonsko" #: src/wx/player_config_dialog.cc:99 -#, fuzzy msgid "full screen with separate advanced controls" -msgstr "celozaslonsko s kontrolniki na drugem zaslonu" +msgstr "celozaslonsko z ločenimi naprednimi kontrolniki" #. TRANSLATORS: this is an abbreviation for "hours" #: src/wx/timing_panel.cc:85 @@ -4365,12 +4352,3 @@ msgstr "let" #: src/wx/drive_wipe_warning_dialog.cc:61 msgid "yes" msgstr "da" - -#~ msgid "" -#~ "For some of these KDMs the recipient certificate's validity period will " -#~ "not cover the whole of the KDM validity period. This might cause " -#~ "problems with the KDMs." -#~ msgstr "" -#~ "Pri nekaterih od teh KDM-jev obdobje veljavnosti prejemnikovega potrdila " -#~ "ne pokriva celotnega obdobja veljavnosti KDM. To lahko povzroči težave s " -#~ "KDM-ji." diff --git a/src/wx/recipient_dialog.cc b/src/wx/recipient_dialog.cc index 1b38ea2d1..992c88362 100644 --- a/src/wx/recipient_dialog.cc +++ b/src/wx/recipient_dialog.cc @@ -82,7 +82,7 @@ RecipientDialog::RecipientDialog ( copy (emails.begin(), emails.end(), back_inserter (_emails)); vector<EditableListColumn> columns; - columns.push_back (EditableListColumn(_("Address"))); + columns.push_back(EditableListColumn(_("Address"), 400, true)); _email_list = new EditableList<string, EmailDialog> ( this, columns, bind(&RecipientDialog::get_emails, this), bind(&RecipientDialog::set_emails, this, _1), bind(&column, _1), EditableListTitle::VISIBLE, @@ -110,9 +110,6 @@ RecipientDialog::RecipientDialog ( _sizer->Add (s, wxGBPosition (r, 1)); ++r; - add_label_to_sizer (_sizer, this, _("Other trusted devices"), true, wxGBPosition (r, 0)); - ++r; - _name->Bind (wxEVT_TEXT, boost::bind (&RecipientDialog::setup_sensitivity, this)); _get_recipient_from_file->Bind (wxEVT_BUTTON, boost::bind (&RecipientDialog::get_recipient_from_file, this)); diff --git a/src/wx/supporters.cc b/src/wx/supporters.cc index beb4d967a..fdbedde69 100644 --- a/src/wx/supporters.cc +++ b/src/wx/supporters.cc @@ -70,6 +70,7 @@ supported_by.Add (wxT ("Tahirih Association")); supported_by.Add (wxT ("Cine Trianon Athens")); supported_by.Add (wxT ("Kirk Attard")); supported_by.Add (wxT ("Eric Audurier")); +supported_by.Add (wxT ("Francesco De Augustinis")); supported_by.Add (wxT ("Dylan Avery")); supported_by.Add (wxT ("Christian Bachmayer")); supported_by.Add (wxT ("John Bacon")); @@ -558,6 +559,7 @@ supported_by.Add (wxT ("Inskino")); supported_by.Add (wxT ("Bryn Mawr Film Institute")); supported_by.Add (wxT ("IntergalacticFM")); supported_by.Add (wxT ("20minmax International Short Film Festival")); +supported_by.Add (wxT ("Shinya Isobe")); supported_by.Add (wxT ("Theodore Ivanov")); supported_by.Add (wxT ("Julien Ivanowich")); supported_by.Add (wxT ("Denis Ivashvkevych")); diff --git a/test/audio_analysis_test.cc b/test/audio_analysis_test.cc index 8bdca4c32..8ded9eda9 100644 --- a/test/audio_analysis_test.cc +++ b/test/audio_analysis_test.cc @@ -41,6 +41,7 @@ #include "lib/ratio.h" #include "test.h" #include <boost/test/unit_test.hpp> +#include <numeric> using std::make_shared; @@ -283,3 +284,27 @@ BOOST_AUTO_TEST_CASE(analyse_audio_with_more_channels_than_film) BOOST_CHECK(!wait_for_jobs()); } + +BOOST_AUTO_TEST_CASE(analyse_audio_uses_processor_when_analysing_whole_film) +{ + auto sound = content_factory(TestPaths::private_data() / "betty_stereo.wav")[0]; + auto film = new_test_film2("analyse_audio_uses_processor_when_analysing_whole_film", { sound }); + + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), true); + JobManager::instance()->add(job); + BOOST_REQUIRE(!wait_for_jobs()); + + AudioAnalysis analysis(job->path()); + + BOOST_REQUIRE(analysis.channels() > 2); + bool centre_non_zero = false; + /* Make sure there's something from the mid-side decoder on the centre channel */ + for (auto point = 0; point < analysis.points(2); ++point) { + if (std::abs(analysis.get_point(2, point)[AudioPoint::Type::PEAK]) > 0) { + centre_non_zero = true; + } + } + + BOOST_CHECK(centre_non_zero); +} + diff --git a/test/audio_ring_buffers_test.cc b/test/audio_ring_buffers_test.cc index ef64f5fba..265142d53 100644 --- a/test/audio_ring_buffers_test.cc +++ b/test/audio_ring_buffers_test.cc @@ -30,8 +30,6 @@ using namespace dcpomatic; #define CANARY 9999 -/* XXX: these tests don't check the timestamping in AudioRingBuffers */ - /** Basic tests fetching the same number of channels as went in */ BOOST_AUTO_TEST_CASE (audio_ring_buffers_test1) { diff --git a/test/data b/test/data -Subproject a5b12872bf034712039414fad58e7e68c068b77 +Subproject ddf878730354cdec8a802a59543591f6f943f5c diff --git a/test/subtitle_font_id_test.cc b/test/subtitle_font_id_test.cc index 9575868a1..bc09a9cf1 100644 --- a/test/subtitle_font_id_test.cc +++ b/test/subtitle_font_id_test.cc @@ -23,6 +23,7 @@ #include "lib/dcp_content.h" #include "lib/film.h" #include "lib/font.h" +#include "lib/player.h" #include "lib/text_content.h" #include "lib/util.h" #include <dcp/cpl.h> @@ -291,3 +292,13 @@ BOOST_AUTO_TEST_CASE(use_first_loadfont_as_default) BOOST_REQUIRE_EQUAL(subtitle->font_data().size(), 1U); BOOST_CHECK(subtitle->font_data().begin()->second == dcp::ArrayData("test/data/Inconsolata-VF.ttf")); } + + +BOOST_AUTO_TEST_CASE(no_error_with_ccap_that_mentions_no_font) +{ + auto dcp = make_shared<DCPContent>("test/data/ccap_only"); + auto film = new_test_film2("no_error_with_ccap_that_mentions_no_font", { dcp }); + auto player = Player(film, film->playlist()); + while (!player.pass()) {} +} + @@ -80,6 +80,7 @@ def options(opt): opt.add_option('--warnings-are-errors', action='store_true', default=False, help='build with -Werror') opt.add_option('--wx-config', help='path to wx-config') opt.add_option('--enable-asan', action='store_true', help='build with asan') + opt.add_option('--disable-more-warnings', action='store_true', default=False, help='disable some warnings raised by Xcode 15 with the 2.16 branch') def configure(conf): conf.load('compiler_cxx') @@ -114,19 +115,21 @@ def configure(conf): '-Wwrite-strings', # getMessengerLogger() in the grok code triggers these warnings '-Wno-nonnull', - # These next 5 are for Xcode 15.0.1 with the v2.16.x-era - # dependencies; maybe they aren't necessary when building - # v2.1{7,8}.x '-Wno-error=deprecated', - '-Wno-deprecated-builtins', - '-Wno-deprecated-declarations', - '-Wno-enum-constexpr-conversion', - '-Wno-deprecated-copy', # I tried and failed to ignore these with _Pragma '-Wno-ignored-qualifiers', '-D_FILE_OFFSET_BITS=64', '-std=c++11']) + if conf.options.disable_more_warnings: + # These are for Xcode 15.0.1 with the v2.16.x-era + # dependencies; maybe they aren't necessary when building + # v2.1{7,8}.x + conf.env.append_value('CXXFLAGS', ['-Wno-deprecated-builtins', + '-Wno-deprecated-declarations', + '-Wno-enum-constexpr-conversion', + '-Wno-deprecated-copy']) + if conf.options.warnings_are_errors: conf.env.append_value('CXXFLAGS', '-Werror') |
