summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-06-15 17:05:58 +0100
committerCarl Hetherington <cth@carlh.net>2013-06-15 17:05:58 +0100
commita183c1776cfd020a37d028ebb0f641352f49697b (patch)
treedb2fdafe7fe071f2e50264317e2c4de6b6806f29 /src
parent11d0d8d07917543d6c40a6bb1fe5581ae216f5aa (diff)
parent4fe7c89e54205c56f0fba2da24db66734ce23674 (diff)
Merge master.
Diffstat (limited to 'src')
-rw-r--r--src/lib/ab_transcode_job.cc1
-rw-r--r--src/lib/cross.cc46
-rw-r--r--src/lib/cross.h1
-rw-r--r--src/lib/film.cc1
-rw-r--r--src/lib/image.cc14
-rw-r--r--src/lib/imagemagick_content.h4
-rw-r--r--src/lib/player.cc1
-rw-r--r--src/lib/util.cc32
-rw-r--r--src/lib/util.h1
-rw-r--r--src/tools/dcpomatic.cc38
-rw-r--r--src/tools/dcpomatic_batch.cc2
-rw-r--r--src/tools/po/es_ES.po6
-rw-r--r--src/wx/about_dialog.cc151
-rw-r--r--src/wx/about_dialog.h34
-rw-r--r--src/wx/po/es_ES.po2
-rw-r--r--src/wx/wscript1
16 files changed, 260 insertions, 75 deletions
diff --git a/src/lib/ab_transcode_job.cc b/src/lib/ab_transcode_job.cc
index bdde8a405..a29e78776 100644
--- a/src/lib/ab_transcode_job.cc
+++ b/src/lib/ab_transcode_job.cc
@@ -22,6 +22,7 @@
#include "film.h"
#include "ab_transcoder.h"
#include "config.h"
+#include "log.h"
#include "i18n.h"
diff --git a/src/lib/cross.cc b/src/lib/cross.cc
index f232f1779..ffd44eb02 100644
--- a/src/lib/cross.cc
+++ b/src/lib/cross.cc
@@ -17,6 +17,8 @@
*/
+#include <fstream>
+#include <boost/algorithm/string.hpp>
#include "cross.h"
#ifdef DCPOMATIC_POSIX
#include <unistd.h>
@@ -24,6 +26,13 @@
#ifdef DCPOMATIC_WINDOWS
#include "windows.h"
#endif
+#ifdef DCPOMATIC_OSX
+#include <sys/sysctl.h>
+#endif
+
+using std::pair;
+using std::ifstream;
+using std::string;
void
dcpomatic_sleep (int s)
@@ -35,3 +44,40 @@ dcpomatic_sleep (int s)
Sleep (s * 1000);
#endif
}
+
+/** @return A pair containing CPU model name and the number of processors */
+pair<string, int>
+cpu_info ()
+{
+ pair<string, int> info;
+ info.second = 0;
+
+#ifdef DCPOMATIC_LINUX
+ ifstream f ("/proc/cpuinfo");
+ while (f.good ()) {
+ string l;
+ getline (f, l);
+ if (boost::algorithm::starts_with (l, "model name")) {
+ string::size_type const c = l.find (':');
+ if (c != string::npos) {
+ info.first = l.substr (c + 2);
+ }
+ } else if (boost::algorithm::starts_with (l, "processor")) {
+ ++info.second;
+ }
+ }
+#endif
+
+#ifdef DCPOMATIC_OSX
+ size_t N = sizeof (info.second);
+ sysctlbyname ("hw.ncpu", &info.second, &N, 0, 0);
+ char buffer[64];
+ N = sizeof (buffer);
+ if (sysctlbyname ("machdep.cpu.brand_string", buffer, &N, 0, 0) == 0) {
+ info.first = buffer;
+ }
+#endif
+
+ return info;
+}
+
diff --git a/src/lib/cross.h b/src/lib/cross.h
index 00457c968..d185286b1 100644
--- a/src/lib/cross.h
+++ b/src/lib/cross.h
@@ -22,3 +22,4 @@
#endif
void dcpomatic_sleep (int);
+extern std::pair<std::string, int> cpu_info ();
diff --git a/src/lib/film.cc b/src/lib/film.cc
index ef29d35fd..75ec700e0 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -54,6 +54,7 @@
#include "sndfile_content.h"
#include "dcp_content_type.h"
#include "ratio.h"
+#include "cross.h"
#include "i18n.h"
diff --git a/src/lib/image.cc b/src/lib/image.cc
index bba7d6be5..17c969cf2 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -248,11 +248,11 @@ void
Image::make_black ()
{
/* U/V black value for 8-bit colour */
- static uint8_t const eight_bit_uv = (1 << 7) - 1;
+ static uint8_t const eight_bit_uv = (1 << 7) - 1;
/* U/V black value for 9-bit colour */
- static uint16_t const nine_bit_uv = (1 << 8) - 1;
+ static uint16_t const nine_bit_uv = (1 << 8) - 1;
/* U/V black value for 10-bit colour */
- static uint16_t const ten_bit_uv = (1 << 9) - 1;
+ static uint16_t const ten_bit_uv = (1 << 9) - 1;
/* U/V black value for 16-bit colour */
static uint16_t const sixteen_bit_uv = (1 << 15) - 1;
@@ -265,6 +265,14 @@ Image::make_black ()
memset (data()[2], eight_bit_uv, lines(2) * stride()[2]);
break;
+ case PIX_FMT_YUVJ420P:
+ case PIX_FMT_YUVJ422P:
+ case PIX_FMT_YUVJ444P:
+ memset (data()[0], 0, lines(0) * stride()[0]);
+ memset (data()[1], eight_bit_uv + 1, lines(1) * stride()[1]);
+ memset (data()[2], eight_bit_uv + 1, lines(2) * stride()[2]);
+ break;
+
case PIX_FMT_YUV422P9LE:
case PIX_FMT_YUV444P9LE:
yuv_16_black (nine_bit_uv);
diff --git a/src/lib/imagemagick_content.h b/src/lib/imagemagick_content.h
index 8ed6b0873..d7673d870 100644
--- a/src/lib/imagemagick_content.h
+++ b/src/lib/imagemagick_content.h
@@ -17,8 +17,8 @@
*/
-#ifndef DVDOMATIC_IMAGEMAGICK_CONTENT_H
-#define DVDOMATIC_IMAGEMAGICK_CONTENT_H
+#ifndef DCPOMATIC_IMAGEMAGICK_CONTENT_H
+#define DCPOMATIC_IMAGEMAGICK_CONTENT_H
#include <boost/enable_shared_from_this.hpp>
#include "video_content.h"
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 757f9bbce..85b4cbd4f 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -17,6 +17,7 @@
*/
+#include <stdint.h>
#include "player.h"
#include "film.h"
#include "ffmpeg_decoder.h"
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 71a21105b..eda0d0236 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -61,7 +61,7 @@ extern "C" {
#include "sound_processor.h"
#include "config.h"
#include "ratio.h"
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
#include "stack.hpp"
#endif
@@ -260,7 +260,7 @@ seconds (struct timeval t)
return t.tv_sec + (double (t.tv_usec) / 1e6);
}
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *)
{
dbg::stack s;
@@ -276,7 +276,7 @@ LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *)
void
dcpomatic_setup ()
{
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
backtrace_file /= g_get_user_config_dir ();
backtrace_file /= "backtrace.txt";
SetUnhandledExceptionFilter(exception_handler);
@@ -715,32 +715,6 @@ video_frames_to_audio_frames (ContentVideoFrame v, float audio_sample_rate, floa
return ((int64_t) v * audio_sample_rate / frames_per_second);
}
-/** @return A pair containing CPU model name and the number of processors */
-pair<string, int>
-cpu_info ()
-{
- pair<string, int> info;
- info.second = 0;
-
-#ifdef DCPOMATIC_POSIX
- ifstream f (N_("/proc/cpuinfo"));
- while (f.good ()) {
- string l;
- getline (f, l);
- if (boost::algorithm::starts_with (l, N_("model name"))) {
- string::size_type const c = l.find (':');
- if (c != string::npos) {
- info.first = l.substr (c + 2);
- }
- } else if (boost::algorithm::starts_with (l, N_("processor"))) {
- ++info.second;
- }
- }
-#endif
-
- return info;
-}
-
string
audio_channel_name (int c)
{
diff --git a/src/lib/util.h b/src/lib/util.h
index be70eb259..42514a12c 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -153,7 +153,6 @@ private:
};
extern int64_t video_frames_to_audio_frames (ContentVideoFrame v, float audio_sample_rate, float frames_per_second);
-extern std::pair<std::string, int> cpu_info ();
class LocaleGuard
{
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index ebd647861..77800b5fd 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -26,7 +26,7 @@
#ifdef __WXOSX__
#include <ApplicationServices/ApplicationServices.h>
#endif
-#include <wx/aboutdlg.h>
+#include <wx/generic/aboutdlgg.h>
#include <wx/stdpaths.h>
#include <wx/cmdline.h>
#include "wx/film_viewer.h"
@@ -38,6 +38,7 @@
#include "wx/new_film_dialog.h"
#include "wx/properties_dialog.h"
#include "wx/wx_ui_signaller.h"
+#include "wx/about_dialog.h"
#include "lib/film.h"
#include "lib/config.h"
#include "lib/util.h"
@@ -182,7 +183,7 @@ setup_menu (wxMenuBar* m)
wxMenu* help = new wxMenu;
#ifdef __WXOSX__
- add_item (help, _("About DVD-o-matic"), wxID_ABOUT, ALWAYS);
+ add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
#else
add_item (help, _("About"), wxID_ABOUT, ALWAYS);
#endif
@@ -405,34 +406,9 @@ private:
void help_about (wxCommandEvent &)
{
- wxAboutDialogInfo info;
- info.SetName (_("DCP-o-matic"));
- if (strcmp (dcpomatic_git_commit, "release") == 0) {
- info.SetVersion (std_to_wx (String::compose ("version %1", dcpomatic_version)));
- } else {
- info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
- }
- info.SetDescription (_("Free, open-source DCP generation from almost anything."));
- info.SetCopyright (_("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"));
-
- wxArrayString authors;
- authors.Add (wxT ("Carl Hetherington"));
- authors.Add (wxT ("Terrence Meiczinger"));
- authors.Add (wxT ("Paul Davis"));
- authors.Add (wxT ("Ole Laursen"));
- info.SetDevelopers (authors);
-
- wxArrayString translators;
- translators.Add (wxT ("Olivier Perriere"));
- translators.Add (wxT ("Lilian Lefranc"));
- translators.Add (wxT ("Thierry Journet"));
- translators.Add (wxT ("Massimiliano Broggi"));
- translators.Add (wxT ("Manuel AC"));
- translators.Add (wxT ("Adam Klotblixt"));
- info.SetTranslators (translators);
-
- info.SetWebSite (wxT ("http://carlh.net/software/dcpomatic"));
- wxAboutBox (info);
+ AboutDialog* d = new AboutDialog (this);
+ d->ShowModal ();
+ d->Destroy ();
}
};
@@ -460,7 +436,7 @@ class App : public wxApp
return false;
}
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
unsetenv ("UBUNTU_MENUPROXY");
#endif
diff --git a/src/tools/dcpomatic_batch.cc b/src/tools/dcpomatic_batch.cc
index 403c1c21b..b4ab054fd 100644
--- a/src/tools/dcpomatic_batch.cc
+++ b/src/tools/dcpomatic_batch.cc
@@ -198,7 +198,7 @@ class App : public wxApp
return false;
}
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
unsetenv ("UBUNTU_MENUPROXY");
#endif
diff --git a/src/tools/po/es_ES.po b/src/tools/po/es_ES.po
index 01d7c1ad2..43c9b12f1 100644
--- a/src/tools/po/es_ES.po
+++ b/src/tools/po/es_ES.po
@@ -99,12 +99,6 @@ msgstr "DCP-o-matic"
msgid "Film changed"
msgstr "PelĂ­cula cambiada"
-#: src/tools/dcpomatic.cc:416
-#: src/tools/dvdomatic.cc:288 src/tools/dvdomatic.cc:419
-#: src/tools/dvdomatic.cc:506
-msgid "DCP-o-matic"
-msgstr "DCP-o-matic"
-
#: src/tools/dvdomatic.cc:425
msgid "Free, open-source DCP generation from almost anything."
msgstr ""
diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc
new file mode 100644
index 000000000..7844180fa
--- /dev/null
+++ b/src/wx/about_dialog.cc
@@ -0,0 +1,151 @@
+/*
+ Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+
+ This program 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.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <wx/notebook.h>
+#include <wx/hyperlink.h>
+#include "lib/version.h"
+#include "lib/compose.hpp"
+#include "about_dialog.h"
+#include "wx_util.h"
+
+using std::vector;
+
+AboutDialog::AboutDialog (wxWindow* parent)
+ : wxDialog (parent, wxID_ANY, _("About DCP-o-matic"))
+{
+ wxBoxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+
+ wxFont title_font (*wxNORMAL_FONT);
+ title_font.SetPointSize (title_font.GetPointSize() + 4);
+ title_font.SetWeight (wxFONTWEIGHT_BOLD);
+
+ wxFont version_font (*wxNORMAL_FONT);
+ version_font.SetWeight (wxFONTWEIGHT_BOLD);
+
+ wxStaticText* t = new wxStaticText (this, wxID_ANY, _("DCP-o-matic"));
+ t->SetFont (title_font);
+ sizer->Add (t, wxSizerFlags().Centre().Border());
+
+ wxString s;
+ if (strcmp (dcpomatic_git_commit, "release") == 0) {
+ t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1", dcpomatic_version)));
+ } else {
+ t = new wxStaticText (this, wxID_ANY, std_to_wx (String::compose ("Version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
+ }
+ t->SetFont (version_font);
+ sizer->Add (t, wxSizerFlags().Centre().Border());
+ sizer->AddSpacer (12);
+
+ t = new wxStaticText (
+ this, wxID_ANY,
+ _("Free, open-source DCP generation from almost anything."),
+ wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
+ );
+
+ sizer->Add (t, wxSizerFlags().Centre().Border());
+
+ wxHyperlinkCtrl* h = new wxHyperlinkCtrl (
+ this, wxID_ANY,
+ wxT ("www.carlh.net/software/dcpomatic"),
+ wxT ("http://www.carlh.net/software/dcpomatic")
+ );
+
+ sizer->Add (h, wxSizerFlags().Centre().Border());
+
+ t = new wxStaticText (
+ this, wxID_ANY,
+ _("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"),
+ wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER
+ );
+
+ sizer->Add (t, wxSizerFlags().Centre().Border());
+
+ _notebook = new wxNotebook (this, wxID_ANY);
+
+ wxArrayString written_by;
+ written_by.Add (wxT ("Carl Hetherington"));
+ written_by.Add (wxT ("Terrence Meiczinger"));
+ written_by.Add (wxT ("Paul Davis"));
+ written_by.Add (wxT ("Ole Laursen"));
+ add_section (_("Written by"), written_by);
+
+ wxArrayString translated_by;
+ translated_by.Add (wxT ("Olivier Perriere"));
+ translated_by.Add (wxT ("Lilian Lefranc"));
+ translated_by.Add (wxT ("Thierry Journet"));
+ translated_by.Add (wxT ("Massimiliano Broggi"));
+ translated_by.Add (wxT ("Manuel AC"));
+ translated_by.Add (wxT ("Adam Klotblixt"));
+ add_section (_("Translated by"), translated_by);
+
+ wxArrayString supported_by;
+ supported_by.Add (wxT ("Carsten Kurz"));
+ supported_by.Add (wxT ("Wolfgang Woehl"));
+ supported_by.Add (wxT ("Manual AC"));
+ supported_by.Add (wxT ("Theo Lipfert"));
+ supported_by.Add (wxT ("Olivier Lemaire"));
+ supported_by.Add (wxT ("Andrä Steiner"));
+ supported_by.Add (wxT ("Jonathan Jensen"));
+ supported_by.Add (wxT ("Kjarten Michaelsen"));
+ supported_by.Add (wxT ("Jussi Siponen"));
+ supported_by.Add (wxT ("Cinema Clarici"));
+ supported_by.Add (wxT ("Evan Freeze"));
+ supported_by.Add (wxT ("Flor Guillaume"));
+ supported_by.Add (wxT ("Adam Klotblixt "));
+ supported_by.Add (wxT ("Lilian Lefranc"));
+ supported_by.Add (wxT ("Gavin Lewarne"));
+ supported_by.Add (wxT ("Lasse Salling"));
+ supported_by.Add (wxT ("Andres Fink"));
+ supported_by.Add (wxT ("Kieran Carroll"));
+ add_section (_("Supported by"), supported_by);
+
+ sizer->Add (_notebook, wxSizerFlags().Centre().Border().Expand());
+
+ SetSizerAndFit (sizer);
+}
+
+void
+AboutDialog::add_section (wxString name, wxArrayString credits)
+{
+ static bool first = true;
+ int const N = 3;
+
+ wxPanel* panel = new wxPanel (_notebook, wxID_ANY);
+ wxSizer* 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);
+ }
+
+ int c = 0;
+ for (size_t i = 0; i < credits.Count(); ++i) {
+ add_label_to_sizer (sizers[c], panel, credits[i]);
+ ++c;
+ if (c == N) {
+ c = 0;
+ }
+ }
+
+ panel->SetSizerAndFit (overall_sizer);
+ _notebook->AddPage (panel, name, first);
+ first = false;
+}
diff --git a/src/wx/about_dialog.h b/src/wx/about_dialog.h
new file mode 100644
index 000000000..a78abb93e
--- /dev/null
+++ b/src/wx/about_dialog.h
@@ -0,0 +1,34 @@
+/*
+ Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+
+ This program 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.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <wx/wx.h>
+
+class wxNotebook;
+
+class AboutDialog : public wxDialog
+{
+public:
+ AboutDialog (wxWindow *);
+
+private:
+ void add_section (wxString, wxArrayString);
+
+ wxNotebook* _notebook;
+};
+
diff --git a/src/wx/po/es_ES.po b/src/wx/po/es_ES.po
index 3ff32280d..34646c2b7 100644
--- a/src/wx/po/es_ES.po
+++ b/src/wx/po/es_ES.po
@@ -21,8 +21,6 @@ msgstr ""
msgid "%"
msgstr "%"
-msgid "(restart DCP-o-matic to see language changes)"
-
#: src/wx/film_editor.cc:1276
msgid "1 channel"
msgstr "1 canal"
diff --git a/src/wx/wscript b/src/wx/wscript
index d915f5899..992f31175 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -4,6 +4,7 @@ from waflib import Logs
import i18n
sources = """
+ about_dialog.cc
audio_dialog.cc
audio_mapping_view.cc
audio_plot.cc