summaryrefslogtreecommitdiff
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
parent11d0d8d07917543d6c40a6bb1fe5581ae216f5aa (diff)
parent4fe7c89e54205c56f0fba2da24db66734ce23674 (diff)
Merge master.
-rw-r--r--ChangeLog20
-rw-r--r--cscript2
-rwxr-xr-xicons/make_icns.sh2
-rw-r--r--platform/linux/dvdomatic.desktop.in10
-rw-r--r--platform/linux/dvdomatic_batch.desktop.in10
-rw-r--r--platform/linux/servomatic.desktop.in10
-rw-r--r--platform/linux/wscript14
-rw-r--r--platform/osx/Info.plist.in8
-rw-r--r--platform/osx/make_dmg.sh30
-rw-r--r--platform/windows/installer.nsi.32.in11
-rw-r--r--platform/windows/installer.nsi.64.in1
-rwxr-xr-xrun/dvdomatic-osx15
-rwxr-xr-xrun/dvdomatic_batch15
-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
-rw-r--r--test/make_black_test.cc6
-rw-r--r--test/test.cc1
-rw-r--r--wscript29
32 files changed, 345 insertions, 174 deletions
diff --git a/ChangeLog b/ChangeLog
index 0806da963..f412c2e90 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2013-06-13 Carl Hetherington <cth@carlh.net>
+
+ * Fix ffmpeg's pixel format 13.
+
+2013-06-13 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.99 released.
+
+2013-06-09 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.98 released.
+
+2013-06-07 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.97 released.
+
+2013-06-07 Carl Hetherington <cth@carlh.net>
+
+ * Version 0.96 released.
+
2013-06-05 Carl Hetherington <cth@carlh.net>
* Version 0.95 released.
diff --git a/cscript b/cscript
index 97e8dbd92..c51f3a033 100644
--- a/cscript
+++ b/cscript
@@ -15,7 +15,7 @@ def build(env, target):
cmd = './waf configure --prefix=%s' % env.work_dir_cscript()
if target.platform == 'windows':
cmd += ' --target-windows'
- else:
+ elif target.platform == 'linux':
cmd += ' --static'
env.command(cmd)
diff --git a/icons/make_icns.sh b/icons/make_icns.sh
index 983379ea4..522e907a6 100755
--- a/icons/make_icns.sh
+++ b/icons/make_icns.sh
@@ -1,4 +1,4 @@
#!/bin/bash
-iconutil --convert icns --output dvdomatic.icns dvdomatic.iconset/
+iconutil --convert icns --output dcpomatic.icns dcpomatic.iconset/
diff --git a/platform/linux/dvdomatic.desktop.in b/platform/linux/dvdomatic.desktop.in
deleted file mode 100644
index 65067eb3b..000000000
--- a/platform/linux/dvdomatic.desktop.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Type=Application
-Terminal=false
-Exec=@PREFIX@/bin/dvdomatic
-Name=DVD-o-matic
-Icon=dvdomatic
-Comment=DCP generator
-Categories=AudioVideo;Video
diff --git a/platform/linux/dvdomatic_batch.desktop.in b/platform/linux/dvdomatic_batch.desktop.in
deleted file mode 100644
index 8150fe849..000000000
--- a/platform/linux/dvdomatic_batch.desktop.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Type=Application
-Terminal=false
-Exec=@PREFIX@/bin/dvdomatic_batch
-Name=DVD-o-matic Batch Converter
-Icon=dvdomatic
-Comment=Batch DCP generator
-Categories=AudioVideo;Video
diff --git a/platform/linux/servomatic.desktop.in b/platform/linux/servomatic.desktop.in
deleted file mode 100644
index 572b4c64c..000000000
--- a/platform/linux/servomatic.desktop.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Type=Application
-Terminal=false
-Exec=@PREFIX@/bin/servomatic_gui
-Name=DVD-o-matic Encode Server
-Icon=dvdomatic
-Comment=DCP generator
-Categories=AudioVideo;Video
diff --git a/platform/linux/wscript b/platform/linux/wscript
index 1d9054b32..53a6efeac 100644
--- a/platform/linux/wscript
+++ b/platform/linux/wscript
@@ -2,18 +2,18 @@ def build(bld):
d = { 'PREFIX' : '${PREFIX' }
obj = bld(features = 'subst')
- obj.source = 'dvdomatic.desktop.in'
- obj.target = 'dvdomatic.desktop'
+ obj.source = 'dcpomatic.desktop.in'
+ obj.target = 'dcpomatic.desktop'
obj.dict = d
obj = bld(features = 'subst')
- obj.source = 'dvdomatic_batch.desktop.in'
- obj.target = 'dvdomatic_batch.desktop'
+ obj.source = 'dcpomatic_batch.desktop.in'
+ obj.target = 'dcpomatic_batch.desktop'
obj.dict = d
obj = bld(features = 'subst')
- obj.source = 'servomatic.desktop.in'
- obj.target = 'servomatic.desktop'
+ obj.source = 'dcpomatic_server.desktop.in'
+ obj.target = 'dcpomatic_server.desktop'
obj.dict = d
- bld.install_files('${PREFIX}/share/applications', ['dvdomatic.desktop', 'dvdomatic_batch.desktop', 'servomatic.desktop'])
+ bld.install_files('${PREFIX}/share/applications', ['dcpomatic.desktop', 'dcpomatic_batch.desktop', 'dcpomatic_server.desktop'])
diff --git a/platform/osx/Info.plist.in b/platform/osx/Info.plist.in
index c904d91dd..0f6774138 100644
--- a/platform/osx/Info.plist.in
+++ b/platform/osx/Info.plist.in
@@ -5,17 +5,17 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
- <string>dvdomatic</string>
+ <string>dcpomatic</string>
<key>CFBundleGetInfoString</key>
<string>DCP generator</string>
<key>CFBundleIconFile</key>
- <string>DVD-o-matic.icns</string>
+ <string>DCP-o-matic.icns</string>
<key>CFBundleIdentifier</key>
- <string>net.carlh.dvdomatic</string>
+ <string>net.carlh.dcpomatic</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
- <string>DVD-o-matic</string>
+ <string>DCP-o-matic</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersions</key>
diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh
index d9e36c390..1fcdc6d06 100644
--- a/platform/osx/make_dmg.sh
+++ b/platform/osx/make_dmg.sh
@@ -19,9 +19,9 @@ mkdir -p $WORK/$macos
mkdir -p $WORK/$libs
mkdir -p $WORK/$resources
-cp build/src/tools/dvdomatic $WORK/$macos/
-cp build/src/lib/libdvdomatic.dylib $WORK/$libs/
-cp build/src/wx/libdvdomatic-wx.dylib $WORK/$libs/
+cp build/src/tools/dcpomatic $WORK/$macos/
+cp build/src/lib/libdcpomatic.dylib $WORK/$libs/
+cp build/src/wx/libdcpomatic-wx.dylib $WORK/$libs/
cp $DEPS/lib/libdcp.dylib $WORK/$libs/
cp $DEPS/lib/libasdcp-libdcp.dylib $WORK/$libs/
cp $DEPS/lib/libkumu-libdcp.dylib $WORK/$libs/
@@ -58,7 +58,7 @@ cp $ENV/lib/libfontconfig*.dylib $WORK/$libs/
cp $ENV/lib/libfreetype*.dylib $WORK/$libs/
cp $ENV/lib/libexpat*.dylib $WORK/$libs/
-for obj in $WORK/$macos/dvdomatic $WORK/$libs/*.dylib; do
+for obj in $WORK/$macos/dcpomatic $WORK/$libs/*.dylib; do
deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh)"`
changes=""
for dep in $deps; do
@@ -70,13 +70,13 @@ for obj in $WORK/$macos/dvdomatic $WORK/$libs/*.dylib; do
fi
done
-
+pwd
cp build/platform/osx/Info.plist $WORK/$approot
-cp icons/dvdomatic.icns $WORK/$resources/DVD-o-matic.icns
+cp icons/dcpomatic.icns $WORK/$resources/DVD-o-matic.icns
-tmp_dmg=$WORK/dvdomatic_tmp.dmg
-dmg="$WORK/DVD-o-matic $version.dmg"
-vol_name=DVD-o-matic-$version
+tmp_dmg=$WORK/dcpomatic_tmp.dmg
+dmg="$WORK/DCP-o-matic $version.dmg"
+vol_name=DCP-o-matic-$version
mkdir -p $WORK/$vol_name
@@ -95,13 +95,13 @@ echo '
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
- set the bounds of container window to {400, 200, 800, 440}
+ set the bounds of container window to {400, 200, 790, 410}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 64
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
- set position of item "DVD-o-matic.app" of container window to {90, 100}
- set position of item "Applications" of container window to {310, 100}
+ set position of item "DCP-o-matic.app" of container window to {90, 80}
+ set position of item "Applications" of container window to {310, 80}
close
open
update without registering applications
@@ -117,8 +117,8 @@ sync
umount $device
hdiutil eject $device
hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
-sips -i $WORK/$resources/DVD-o-matic.icns
-DeRez -only icns $WORK/$resources/DVD-o-matic.icns > $WORK/$resources/DVD-o-matic.rsrc
-Rez -append $WORK/$resources/DVD-o-matic.rsrc -o "$dmg"
+sips -i $WORK/$resources/DCP-o-matic.icns
+DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
+Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"
SetFile -a C "$dmg"
diff --git a/platform/windows/installer.nsi.32.in b/platform/windows/installer.nsi.32.in
index 664904767..3a2cdb9e8 100644
--- a/platform/windows/installer.nsi.32.in
+++ b/platform/windows/installer.nsi.32.in
@@ -85,6 +85,7 @@ File "%binaries%/src/wx/dcpomatic-wx.dll"
File "%binaries%/src/lib/dcpomatic.dll"
File "%binaries%/src/tools/dcpomatic.exe"
File "%binaries%/src/tools/dcpomatic_batch.exe"
+File "%binaries%/src/tools/dcpomatic_cli.exe"
File "%binaries%/src/tools/dcpomatic_server_cli.exe"
File "%binaries%/src/tools/dcpomatic_server.exe"
@@ -134,6 +135,7 @@ Section "Uninstall"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
+<<<<<<< HEAD
Delete "$DESKTOP\DCP-o-matic.lnk"
Delete "$DESKTOP\DCP-o-matic batch converter.lnk"
Delete "$DESKTOP\DCP-o-matic encode server.lnk"
@@ -141,5 +143,14 @@ Delete "$SMPROGRAMS\DCP-o-matic\*.*"
RmDir "$SMPROGRAMS\DCP-o-matic"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\DCP-o-matic"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic"
+=======
+Delete "$DESKTOP\DVD-o-matic.lnk"
+Delete "$DESKTOP\DVD-o-matic batch converter.lnk"
+Delete "$DESKTOP\DVD-o-matic encode server.lnk"
+Delete "$SMPROGRAMS\DVD-o-matic\*.*"
+RmDir "$SMPROGRAMS\DVD-o-matic"
+DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\DVD-o-matic"
+DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic"
+>>>>>>> master
SectionEnd
diff --git a/platform/windows/installer.nsi.64.in b/platform/windows/installer.nsi.64.in
index fd1237727..f4f1e9068 100644
--- a/platform/windows/installer.nsi.64.in
+++ b/platform/windows/installer.nsi.64.in
@@ -95,6 +95,7 @@ File "%binaries%/src/wx/dcpomatic-wx.dll"
File "%binaries%/src/lib/dcpomatic.dll"
File "%binaries%/src/tools/dcpomatic.exe"
File "%binaries%/src/tools/dcpomatic_batch.exe"
+File "%binaries%/src/tools/dcpomatic_cli.exe"
File "%binaries%/src/tools/dcpomatic_server_cli.exe"
File "%binaries%/src/tools/dcpomatic_server.exe"
diff --git a/run/dvdomatic-osx b/run/dvdomatic-osx
deleted file mode 100755
index ac42c3186..000000000
--- a/run/dvdomatic-osx
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:build/src/lib:build/src:/Users/carl/Environments/osx/10.8/lib
-if [ "$1" == "--debug" ]; then
- shift
- gdb --args build/src/tools/dvdomatic "$*"
-elif [ "$1" == "--valgrind" ]; then
- shift
- valgrind --tool="memcheck" build/src/tools/dvdomatic $*
-elif [ "$1" == "--i18n" ]; then
- shift
- LANGUAGE=fr_FR.UTF8 LANG=fr_FR.UTF8 build/src/tools/dvdomatic "$*"
-else
- build/src/tools/dvdomatic "$*"
-fi
diff --git a/run/dvdomatic_batch b/run/dvdomatic_batch
deleted file mode 100755
index 7b6ef93ae..000000000
--- a/run/dvdomatic_batch
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-export LD_LIBRARY_PATH=build/src/lib:build/src/wx:build/src/asdcplib/src:$LD_LIBRARY_PATH
-if [ "$1" == "--debug" ]; then
- shift
- gdb --args build/src/tools/dvdomatic_batch "$*"
-elif [ "$1" == "--valgrind" ]; then
- shift
- valgrind --tool="memcheck" build/src/tools/dvdomatic_batch $*
-elif [ "$1" == "--i18n" ]; then
- shift
- LANGUAGE=fr_FR.UTF8 LANG=fr_FR.UTF8 build/src/tools/dvdomatic_batch "$*"
-else
- build/src/tools/dvdomatic_batch
-fi
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
diff --git a/test/make_black_test.cc b/test/make_black_test.cc
index c70870915..9bec00651 100644
--- a/test/make_black_test.cc
+++ b/test/make_black_test.cc
@@ -35,6 +35,9 @@ BOOST_AUTO_TEST_CASE (make_black_test)
pix_fmts.push_back (AV_PIX_FMT_YUV444P10LE);
pix_fmts.push_back (AV_PIX_FMT_YUV444P10BE);
pix_fmts.push_back (AV_PIX_FMT_UYVY422);
+ pix_fmts.push_back (AV_PIX_FMT_YUVJ420P);
+ pix_fmts.push_back (AV_PIX_FMT_YUVJ422P);
+ pix_fmts.push_back (AV_PIX_FMT_YUVJ444P);
int N = 0;
for (list<AVPixelFormat>::const_iterator i = pix_fmts.begin(); i != pix_fmts.end(); ++i) {
@@ -46,6 +49,9 @@ BOOST_AUTO_TEST_CASE (make_black_test)
for (int y = 0; y < bar->size().height; ++y) {
uint8_t* q = p;
for (int x = 0; x < bar->line_size()[0]; ++x) {
+ if (*q != 0) {
+ std::cerr << "x=" << x << ", (x%3)=" << (x%3) << "\n";
+ }
BOOST_CHECK_EQUAL (*q++, 0);
}
p += bar->stride()[0];
diff --git a/test/test.cc b/test/test.cc
index 89cfa56df..b33c06be4 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -164,3 +164,4 @@ check_dcp (string ref, string check)
#include "job_test.cc"
#include "client_server_test.cc"
#include "image_test.cc"
+
diff --git a/wscript b/wscript
index 21599e171..b1d7eafe2 100644
--- a/wscript
+++ b/wscript
@@ -15,17 +15,23 @@ def options(opt):
opt.add_option('--static', action='store_true', default=False, help='build statically, and link statically to libdcp and FFmpeg')
opt.add_option('--magickpp-config', action='store', default='Magick++-config', help='path to Magick++-config')
opt.add_option('--wx-config', action='store', default='wx-config', help='path to wx-config')
- opt.add_option('--osx', action='store_true', default=False, help='build on OS X')
def configure(conf):
conf.load('compiler_cxx')
if conf.options.target_windows:
conf.load('winres')
+ conf.env.TARGET_WINDOWS = conf.options.target_windows
+ conf.env.DISABLE_GUI = conf.options.disable_gui
+ conf.env.STATIC = conf.options.static
+ conf.env.VERSION = VERSION
+ conf.env.TARGET_OSX = sys.platform == 'darwin'
+ conf.env.TARGET_LINUX = not conf.env.TARGET_WINDOWS and not conf.env.TARGET_OSX
+
conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-D__STDC_LIMIT_MACROS', '-msse', '-mfpmath=sse', '-ffast-math', '-fno-strict-aliasing',
'-Wall', '-Wno-attributes', '-Wextra'])
- if conf.options.target_windows:
+ if conf.env.TARGET_WINDOWS:
conf.env.append_value('CXXFLAGS', ['-DDCPOMATIC_WINDOWS', '-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DUNICODE'])
wxrc = os.popen('wx-config --rescomp').read().split()[1:]
conf.env.append_value('WINRCFLAGS', wxrc)
@@ -45,15 +51,14 @@ def configure(conf):
boost_lib_suffix = ''
boost_thread = 'boost_thread'
conf.env.append_value('LINKFLAGS', '-pthread')
- # libxml2 seems to be linked against this on Ubuntu, but it doesn't mention it in its .pc file
+
+ if conf.env.TARGET_LINUX:
+ # libxml2 seems to be linked against this on Ubuntu but it doesn't mention it in its .pc file
conf.env.append_value('LIB', 'lzma')
+ conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_LINUX')
- conf.env.TARGET_WINDOWS = conf.options.target_windows
- conf.env.DISABLE_GUI = conf.options.disable_gui
- conf.env.STATIC = conf.options.static
- conf.env.VERSION = VERSION
- conf.env.TARGET_OSX = conf.options.osx
- conf.env.TARGET_LINUX = not conf.options.target_windows and not conf.options.osx
+ if conf.env.TARGET_OSX:
+ conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_OSX')
if conf.options.enable_debug:
conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG'])
@@ -100,8 +105,10 @@ def configure(conf):
conf.check_cfg(package = 'sndfile', args = '--cflags --libs', uselib_store = 'SNDFILE', mandatory = True)
conf.check_cfg(package = 'glib-2.0', args = '--cflags --libs', uselib_store = 'GLIB', mandatory = True)
- if conf.options.target_windows is False:
- conf.check_cfg(package = 'liblzma', args = '--cflags --libs', uselib_store = 'LZMA', mandatory = True)
+
+ if conf.env.TARGET_LINUX:
+ conf.check_cfg(package='liblzma', args='--cflags --libs', uselib_store='LZMA', mandatory=True)
+
conf.check_cfg(package = '', path = conf.options.magickpp_config, args = '--cppflags --cxxflags --libs', uselib_store = 'MAGICK', mandatory = True)
if conf.options.static: