# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
-PROJECT_NAME = DVD-o-matic
+PROJECT_NAME = DCP-o-matic
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
-dvd-o-matic
+DCP-o-matic
-----------
Hello!
libsndfile
libssh
-and also the command line tool:
-
- vobcopy (if you want to rip DVDs straight into DVD-o-matic)
-
Documentation
-------------
-There is a manual available at http://carlh.net/software/dvdomatic
+There is a manual available at http://carlh.net/software/dcpomatic
The DocBook source for this is in doc/manual.
In a nutshell
-------------
-The `dvdomatic' program is a GTK front-end which is probably easiest
+The `dcpomatic' program is a GTK front-end which is probably easiest
to use. It will create a directory for a particular project, and write
its data to that directory. The basic approach is:
"File->New"; specify a directory.
-Choose "Jobs->Copy from DVD" to read a DVD from your drive, if you have one.
Fill in the fields in the window (most importantly the `content' field:
specify your video, and the `Name' field: give your project [and hence DCP]
a name.)
-------------
Running the `servomatic' program on a remote machine will make it
-listen on port 6192 (by default) and process requests from a dvdomatic
+listen on port 6192 (by default) and process requests from a dcpomatic
instance. This has been written with no thought to security, so don't
do it over the public internet! The connection will probably need to
be 1 Gb/s to make it worthwhile.
+++ /dev/null
-Make a DCP with subs using subtitle edit.
-
-Look at http://liblqr.wikidot.com/en:manual
-
-EC2
-
-Small instance $0.085 ph
-Sintel Trailer 1080p @ 200000 Mbps
-1247 frames @ 24fps ie 51.96s
-Took 1h20 to encode
-
-High-CPU medium $0.186 ph
-Sintel Trailer 1080p @ 200000 Mbps
-1247 frames @ 24fps ie 51.96s
-Took 23m to encode
-
-High-CPU extra-large $0.744 ph
-Sintel Trailer 1080p @ 200000 Mbps
-1247 frames @ 24fps ie 51.96s
-
-
-Transfer in free
-Transfer out $0.120 per GB
-
-
-Port DVD rip
-
-Write still j2ks straight to a MXF.
-md5_data to use openssl
-Write all j2ks straight to a MXF? Possible?
-
-Standardise j2c/j2k
-Format name in ~/.dvdomatic screws up with spaces; use ID or something
-Thumbnails are poorly named
-x-thread signaller
-Restartable jobs somehow
-More logging
-Nice error when trying to thumbnail with no content.
-Destroy _buffer_src_context / _buffer_sink_context
-Don't start later jobs when one breaks.
-Compute time remaining based on more recent information.
-Use lexical_cast more
-Do deps better
-
-options summary
-
-1: L
-2: R
-3: C
-4: Lfe
-5: Ls
-6: Rs
-
-City Screen
-
-Screen 1: "1.37" masking preset, projector only has DCI 133 preset.
-
-With 1480x1080 alignment in DCI 133: bottom you see purple, yellow; top purple; left and right no lines
-With 1480x1080 alignment in DCI Flat: outside masks, but you see bottom purple, yellow; left/right all; top purple
-
-
-Screen 2: no real masking preset, projector has DCI 133 and DCI 137
-
-1480x1080, DCI 133
-L yellow purple
-R none
-B purple
-T none
-1480x1080, DCI 137
-L all
-R all but blue
-T purple
-B purple
-
-
-Screen 3: projector has DCI 1.38
-
-1480x1080
-L, R, T none
-B purple + yellow
-
-
-films-0.6: Dolby Countdown looks as though it's 3D. THX Terminator 2 fucked
-(these on default settings)
-fq/gradfun --- no obvious effect
-hqdn3d --- pretty good denoising
-ow --- no obvious effect
-tn --- interesting; much noise reduction, bad artefacts on movement, colour tint even in black
-unsharp --- worse
-
-Benchmark SWS options: lanczos ?
-hqdn3d=0:0:6 ? (turn off chroma/luma blurring)
-
-Lanczos; no visible effect on Ghostbusters.
-
-
-THX_Monster with master Intel Core 2 Duo E4600 (2.4GHz), slave Intel Core i3 M350 (2.27GHz)
-1920 x 1080 original -> DCI Flat
-240 frames
-
-[Gbit: gigabit ethernet rather than 100Mbit]
-[im-mod: after modification to memcpy RGB data then to RGB -> XYZ in the encode thread
-[hack1]: after modification to pass YUV and to swscale in the encode thread (includes im-mod)
-[hack2]: modified hack1
- Time Seconds FPS Speedup relative to 1 local
-1 local: 20m57 1257 0.19 x 1
-2 local: 11m24 684 0.35 x 1.84
-2 local [im-mod]: 13m13
-2 local + 1 slave: 6m34 394 0.61 x 3.19
-2 local + 2 slave: 5m13 313 0.77 x 4.02
-2 local + 4 slave: 5m05 303 0.79 x 4.15
-2 local + 4 slave [Gbit]: 2m50 170 1.41 x 7.39
-2 local + 4 slave [Gbit,im-mod]:2m33
-2 local + 4 slave [Gbit,hack1]: 3m20
-2 local + 4 slave [Gbit,hack2]: 2m22
-1 local + 8 slave [Gbit]: 2m28 148 1.62 x 8.49
-2 local + 8 slave [Gbit]: 2m41 161 1.49 x 7.81
-2 local + 8 slave [Gbit,im-mod]:2m35
-
-
-
-Just encode 52s
-Encode + Image create 1m27
-Encode + Image create (memcpy, not convert) 53s.
-
-THX_Monster with master Intel Core i3 M350 (2.27GHz), slave Intel Core 2 Duo E4600 (2.4GHz)
-1920 x 1080 original -> DCI Flat
-240 frames
-
-
-4 local: 2m45
-4 local [im-mod]: 2m53
-4 local + 2 slave [Gbit]: 2m22
-4 local + 4 slave [Gbit]: 2m21
-4 local + 4 slave [Gbit,in-mod]:2m21
-
-
-Source: dvdomatic
+Source: dcpomatic
Section: video
Priority: extra
Maintainer: Carl Hetherington <cth@carlh.net>
Build-Depends: debhelper (>= 8.0.0), python (>= 2.7.3), g++ (>= 4:4.6.3), pkg-config (>= 0.26), libwxgtk2.8-dev (>= 2.8.12.1), libssh-dev (>= 0.5.2), libboost-filesystem-dev (>= 1.46.0), libboost-thread-dev (>= 1.46.0), libsndfile1-dev (>= 1.0.25), libmagick++-dev (>= 8:6.6.9.7)
Standards-Version: 3.9.3
-Homepage: http://carlh.net/software/dvdomatic
+Homepage: http://carlh.net/software/dcpomatic
-Package: dvdomatic
+Package: dcpomatic
Architecture: i386
Depends: libc6 (>= 2.15), libwxgtk2.8-0 (>= 2.8.12.1), libssh-4 (>= 0.5.2), libboost-filesystem1.46.1 (>= 1.46.1), libboost-thread1.46.1 (>= 1.46.1), libsndfile1 (>= 1.0.25), libmagick++4 (>= 8:6.6.9.7), libxml++2.6-2 (>= 2.34.1)
Description: Generator of Digital Cinema Packages (DCPs)
- DVD-o-matic generates Digital Cinema Packages (DCPs) from video and audio
+ DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
digital projectors.
-Source: dvdomatic
+Source: dcpomatic
Section: video
Priority: extra
Maintainer: Carl Hetherington <cth@carlh.net>
Build-Depends: debhelper (>= 8.0.0), python (>= 2.7.3), g++ (>= 4:4.6.3), pkg-config (>= 0.26), libwxgtk2.8-dev (>= 2.8.12.1), libssh-dev (>= 0.5.2), libboost-filesystem-dev (>= 1.46.0), libboost-thread-dev (>= 1.46.0), libsndfile1-dev (>= 1.0.25), libmagick++-dev (>= 8:6.6.9.7)
Standards-Version: 3.9.3
-Homepage: http://carlh.net/software/dvdomatic
+Homepage: http://carlh.net/software/dcpomatic
-Package: dvdomatic
+Package: dcpomatic
Architecture: amd64
Depends: libc6 (>= 2.15), libwxgtk2.8-0 (>= 2.8.12.1), libssh-4 (>= 0.5.2), libboost-filesystem1.46.1 (>= 1.46.1), libboost-thread1.46.1 (>= 1.46.1), libsndfile1 (>= 1.0.25), libmagick++4 (>= 8:6.6.9.7), libxml++2.6-2 (>= 2.34.1)
Description: Generator of Digital Cinema Packages (DCPs)
- DVD-o-matic generates Digital Cinema Packages (DCPs) from video and audio
+ DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
digital projectors.
-Source: dvdomatic
+Source: dcpomatic
Section: video
Priority: extra
Maintainer: Carl Hetherington <cth@carlh.net>
Build-Depends: debhelper (>= 8.0.0), python (>= 2.7.3), g++ (>= 4:4.6.3), pkg-config (>= 0.26), libwxgtk2.8-dev (>= 2.8.12.1), libssh-dev (>= 0.5.2), libboost-filesystem-dev (>= 1.46.0), libboost-thread-dev (>= 1.46.0), libsndfile1-dev (>= 1.0.25), libmagick++-dev (>= 8:6.6.9.7)
Standards-Version: 3.9.3
-Homepage: http://carlh.net/software/dvdomatic
+Homepage: http://carlh.net/software/dcpomatic
-Package: dvdomatic
+Package: dcpomatic
Architecture: i386
Depends: libc6 (>= 2.15), libwxgtk2.8-0 (>= 2.8.12.1), libssh-4 (>= 0.5.2), libboost-filesystem1.49.0 (>= 1.49.0), libboost-thread1.49.0 (>= 1.49.0), libsndfile1 (>= 1.0.25), libmagick++5 (>= 8:6.7.7.10), libxml++2.6-2 (>= 2.34.2)
Description: Generator of Digital Cinema Packages (DCPs)
- DVD-o-matic generates Digital Cinema Packages (DCPs) from video and audio
+ DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
digital projectors.
-Source: dvdomatic
+Source: dcpomatic
Section: video
Priority: extra
Maintainer: Carl Hetherington <cth@carlh.net>
Build-Depends: debhelper (>= 8.0.0), python (>= 2.7.3), g++ (>= 4:4.6.3), pkg-config (>= 0.26), libwxgtk2.8-dev (>= 2.8.12.1), libssh-dev (>= 0.5.2), libboost-filesystem-dev (>= 1.46.0), libboost-thread-dev (>= 1.46.0), libsndfile1-dev (>= 1.0.25), libmagick++-dev (>= 8:6.6.9.7)
Standards-Version: 3.9.3
-Homepage: http://carlh.net/software/dvdomatic
+Homepage: http://carlh.net/software/dcpomatic
-Package: dvdomatic
+Package: dcpomatic
Architecture: amd64
Depends: libc6 (>= 2.15), libwxgtk2.8-0 (>= 2.8.12.1), libssh-4 (>= 0.5.2), libboost-filesystem1.49.0 (>= 1.49.0), libboost-thread1.49.0 (>= 1.49.0), libsndfile1 (>= 1.0.25), libmagick++5 (>= 8:6.7.7.10), libxml++2.6-2 (>= 2.34.2)
Description: Generator of Digital Cinema Packages (DCPs)
- DVD-o-matic generates Digital Cinema Packages (DCPs) from video and audio
+ DCP-o-matic generates Digital Cinema Packages (DCPs) from video and audio
files (such as those from DVDs or Blu-Rays) for presentation on DCI-compliant
digital projectors.
shutil.copyfile(os.path.join('builds', 'control-%s' % variant), os.path.join('debian', 'control'))
command('./waf dist')
f = open(os.path.join('debian', 'files'), 'w')
- print >>f,'dvdomatic_%s-1_%s.deb video extra' % (version, cpu)
+ print >>f,'dcpomatic_%s-1_%s.deb video extra' % (version, cpu)
shutil.rmtree('build/deb', ignore_errors=True)
os.makedirs('build/deb')
os.chdir('build/deb')
- shutil.move('../../dvdomatic-%s.tar.bz2' % version, 'dvdomatic_%s.orig.tar.bz2' % version)
- command('tar xjf dvdomatic_%s.orig.tar.bz2' % version)
- os.chdir('dvdomatic-%s' % version)
+ shutil.move('../../dcpomatic-%s.tar.bz2' % version, 'dcpomatic_%s.orig.tar.bz2' % version)
+ command('tar xjf dcpomatic_%s.orig.tar.bz2' % version)
+ os.chdir('dcpomatic-%s' % version)
command('dch -b -v %s-1 "New upstream release."' % version)
command('dpkg-source -b .')
command('dpkg-buildpackage')
def make_pot():
command('./waf pot')
- return [os.path.abspath('build/src/lib/libdvdomatic.pot'),
- os.path.abspath('build/src/wx/libdvdomatic-wx.pot'),
- os.path.abspath('build/src/tools/dvdomatic.pot')]
+ return [os.path.abspath('build/src/lib/libdcpomatic.pot'),
+ os.path.abspath('build/src/wx/libdcpomatic-wx.pot'),
+ os.path.abspath('build/src/tools/dcpomatic.pot')]
def make_manual():
os.chdir('doc/manual')
+++ /dev/null
-import cdist
-
-def builds():
- return ['source']
-
-def build_source():
- cdist.build_source_waf()
-
-dvdomatic (0.83-1) UNRELEASED; urgency=low
+dcpomatic (0.83-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 10 Apr 2013 12:48:25 +0100
-dvdomatic (0.82-1) UNRELEASED; urgency=low
+dcpomatic (0.82-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 09 Apr 2013 23:43:35 +0100
-dvdomatic (0.82beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.82beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 09 Apr 2013 21:48:56 +0100
-dvdomatic (0.81-1) UNRELEASED; urgency=low
+dcpomatic (0.81-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 09 Apr 2013 19:48:04 +0100
-dvdomatic (0.81beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.81beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 09 Apr 2013 15:37:32 +0100
-dvdomatic (0.80-1) UNRELEASED; urgency=low
+dcpomatic (0.80-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 07 Apr 2013 23:48:12 +0100
-dvdomatic (0.80beta4-1) UNRELEASED; urgency=low
+dcpomatic (0.80beta4-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 07 Apr 2013 23:08:49 +0100
-dvdomatic (0.80beta3-1) UNRELEASED; urgency=low
+dcpomatic (0.80beta3-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 07 Apr 2013 22:44:29 +0100
-dvdomatic (0.80beta2-1) UNRELEASED; urgency=low
+dcpomatic (0.80beta2-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 07 Apr 2013 22:19:34 +0100
-dvdomatic (0.80beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.80beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 07 Apr 2013 18:21:33 +0100
-dvdomatic (0.79-1) UNRELEASED; urgency=low
+dcpomatic (0.79-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Mon, 01 Apr 2013 22:37:03 +0100
-dvdomatic (0.78-1) UNRELEASED; urgency=low
+dcpomatic (0.78-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 31 Mar 2013 02:43:03 +0100
-dvdomatic (0.78beta16-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta16-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 28 Mar 2013 16:28:05 +0000
-dvdomatic (0.78beta15-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta15-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 28 Mar 2013 14:25:56 +0000
-dvdomatic (0.78beta14-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta14-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 28 Mar 2013 10:38:07 +0000
-dvdomatic (0.78beta13-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta13-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 27 Mar 2013 12:26:55 +0000
-dvdomatic (0.78beta12-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta12-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 21:13:54 +0000
-dvdomatic (0.78beta11-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta11-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 17:34:49 +0000
-dvdomatic (0.78beta10-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta10-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 11:35:15 +0000
-dvdomatic (0.78beta9-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta9-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 10:36:05 +0000
-dvdomatic (0.78beta8-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta8-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 00:59:36 +0000
-dvdomatic (0.78beta7-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta7-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 26 Mar 2013 00:19:21 +0000
-dvdomatic (0.78beta6-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta6-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Mon, 25 Mar 2013 00:08:10 +0000
-dvdomatic (0.78beta5-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta5-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 21 Mar 2013 16:32:21 +0000
-dvdomatic (0.78beta4-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta4-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 20 Mar 2013 15:01:10 +0000
-dvdomatic (0.78beta3-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta3-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 20 Mar 2013 10:49:17 +0000
-dvdomatic (0.78beta2-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta2-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 19 Mar 2013 21:35:50 +0000
-dvdomatic (0.78beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.78beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 19 Mar 2013 20:50:54 +0000
-dvdomatic (0.77-1) UNRELEASED; urgency=low
+dcpomatic (0.77-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 14 Mar 2013 17:12:03 +0000
-dvdomatic (0.77beta2-1) UNRELEASED; urgency=low
+dcpomatic (0.77beta2-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 14 Mar 2013 15:50:43 +0000
-dvdomatic (0.77beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.77beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 14 Mar 2013 15:14:01 +0000
-dvdomatic (0.76-1) UNRELEASED; urgency=low
+dcpomatic (0.76-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 05 Mar 2013 13:30:28 +0000
-dvdomatic (0.76beta3-1) UNRELEASED; urgency=low
+dcpomatic (0.76beta3-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 05 Mar 2013 12:47:20 +0000
-dvdomatic (0.76beta2-1) UNRELEASED; urgency=low
+dcpomatic (0.76beta2-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Fri, 01 Mar 2013 18:32:16 +0000
-dvdomatic (0.76beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.76beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Fri, 01 Mar 2013 17:36:55 +0000
-dvdomatic (0.75-1) UNRELEASED; urgency=low
+dcpomatic (0.75-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 27 Feb 2013 11:03:07 +0000
-dvdomatic (0.75beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.75beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 27 Feb 2013 08:20:42 +0000
-dvdomatic (0.74-1) UNRELEASED; urgency=low
+dcpomatic (0.74-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sat, 23 Feb 2013 22:57:20 +0000
-dvdomatic (0.74beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.74beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sat, 23 Feb 2013 21:44:22 +0000
-dvdomatic (0.73-1) UNRELEASED; urgency=low
+dcpomatic (0.73-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 21 Feb 2013 00:43:40 +0000
-dvdomatic (0.73beta9-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta9-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 20 Feb 2013 23:40:24 +0000
-dvdomatic (0.73beta8-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta8-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Mon, 18 Feb 2013 22:35:51 +0000
-dvdomatic (0.73beta7-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta7-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Mon, 18 Feb 2013 20:38:51 +0000
-dvdomatic (0.73beta6-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta6-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 17 Feb 2013 23:05:56 +0000
-dvdomatic (0.73beta3-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta3-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 17 Feb 2013 23:05:05 +0000
-dvdomatic (0.73beta2-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta2-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sat, 16 Feb 2013 22:42:32 +0000
-dvdomatic (0.73beta1-1) UNRELEASED; urgency=low
+dcpomatic (0.73beta1-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sat, 16 Feb 2013 21:19:24 +0000
-dvdomatic (0.72-1) UNRELEASED; urgency=low
+dcpomatic (0.72-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 24 Jan 2013 15:31:57 +0000
-dvdomatic (0.71-1) UNRELEASED; urgency=low
+dcpomatic (0.71-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 24 Jan 2013 11:36:04 +0000
-dvdomatic (0.70-1) UNRELEASED; urgency=low
+dcpomatic (0.70-1) UNRELEASED; urgency=low
* New upstream release.
* New upstream release.
-- Carl Hetherington <cth@carlh.net> Sat, 12 Jan 2013 23:07:15 +0000
-dvdomatic (0.70beta3-1) UNRELEASED; urgency=low
+dcpomatic (0.70beta3-1) UNRELEASED; urgency=low
* New upstream release.
* New upstream release.
-- Carl Hetherington <cth@carlh.net> Sun, 06 Jan 2013 23:44:24 +0000
-dvdomatic (0.68-1) UNRELEASED; urgency=low
+dcpomatic (0.68-1) UNRELEASED; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 23 Dec 2012 01:43:44 +0000
-dvdomatic (0.68beta10-1) UNRELEASED; urgency=low
+dcpomatic (0.68beta10-1) UNRELEASED; urgency=low
* New upstream release.
* New upstream release.
-- Carl Hetherington <cth@carlh.net> Sat, 22 Dec 2012 13:27:27 +0000
-dvdomatic (0.68beta5-1) unstable; urgency=low
+dcpomatic (0.68beta5-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 20 Dec 2012 07:53:46 +0000
-dvdomatic (0.68beta4-1) unstable; urgency=low
+dcpomatic (0.68beta4-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 20 Dec 2012 07:48:45 +0000
-dvdomatic (0.68beta3-1) unstable; urgency=low
+dcpomatic (0.68beta3-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 20 Dec 2012 00:35:45 +0000
-dvdomatic (0.68beta2-1) unstable; urgency=low
+dcpomatic (0.68beta2-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 19 Dec 2012 11:22:58 +0000
-dvdomatic (0.68beta1-1) unstable; urgency=low
+dcpomatic (0.68beta1-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Wed, 19 Dec 2012 10:11:13 +0000
-dvdomatic (0.67-1) unstable; urgency=low
+dcpomatic (0.67-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 18 Dec 2012 23:49:27 +0000
-dvdomatic (0.66-1) unstable; urgency=low
+dcpomatic (0.66-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 18 Dec 2012 11:29:04 +0000
-dvdomatic (0.65-1) unstable; urgency=low
+dcpomatic (0.65-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 18 Dec 2012 09:24:56 +0000
-dvdomatic (0.64-1) unstable; urgency=low
+dcpomatic (0.64-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Thu, 13 Dec 2012 21:52:09 +0000
-dvdomatic (0.63pre-1) unstable; urgency=low
+dcpomatic (0.63pre-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 11 Dec 2012 23:15:52 +0000
-dvdomatic (0.60-1) unstable; urgency=low
+dcpomatic (0.60-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Tue, 11 Dec 2012 22:46:04 +0000
-dvdomatic (0.59-1) unstable; urgency=low
+dcpomatic (0.59-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Mon, 10 Dec 2012 20:58:19 +0000
-dvdomatic (0.59beta5-1) unstable; urgency=low
+dcpomatic (0.59beta5-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 09 Dec 2012 23:51:55 +0000
-dvdomatic (0.59beta4-1) unstable; urgency=low
+dcpomatic (0.59beta4-1) unstable; urgency=low
* New upstream release.
-- Carl Hetherington <carl@houllier.lan> Sun, 09 Dec 2012 21:38:00 +0000
-dvdomatic (0.59beta1-1) unstable; urgency=low
+dcpomatic (0.59beta1-1) unstable; urgency=low
* Initial release.
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: dvdomatic
-Source: <url://carlh.net/software/dvdomatic>
+Upstream-Name: dcpomatic
+Source: <url://carlh.net/software/dcpomatic>
Files: *
Copyright: 2012 Carl Hetherington <cth@carlh.net>
-dvdomatic_0.59beta1-1_i386.deb video extra
+dcpomatic_0.59beta1-1_i386.deb video extra
./waf --nocache build
override_dh_auto_install:
- ./waf --nocache install --destdir=debian/dvdomatic
+ ./waf --nocache install --destdir=debian/dcpomatic
-/** @mainpage DVD-o-matic
+/** @mainpage DCP-o-matic
*
- * DVD-o-matic is a tool to create digital cinema packages (DCPs) from
+ * DCP-o-matic is a tool to create digital cinema packages (DCPs) from
* video files, or from sets of TIFF image files. It is written in C++
* and distributed under the GPL.
*
* Video files are decoded using FFmpeg (http://ffmpeg.org), so any video
- * supported by FFmpeg should be usable with DVD-o-matic. DVD-o-matic's output has been
+ * supported by FFmpeg should be usable with DCP-o-matic. DCP-o-matic's output has been
* tested on numerous digital projectors.
*
- * DVD-o-matic allows you to crop black borders from movies, scale them to the correct
+ * DCP-o-matic allows you to crop black borders from movies, scale them to the correct
* aspect ratio and apply FFmpeg filters. The time-consuming encoding of JPEG2000 files
* can be parallelised amongst any number of processors on the local host and any number
* of servers over a network.
*
- * DVD-o-matic can also make DCPs from still images, for advertisements and such-like.
+ * DCP-o-matic can also make DCPs from still images, for advertisements and such-like.
*
- * Parts of DVD-o-matic are based on OpenDCP (http://code.google.com/p/opendcp),
+ * Parts of DCP-o-matic are based on OpenDCP (http://code.google.com/p/opendcp),
* written by Terrence Meiczinger.
*
- * DVD-o-matic uses libopenjpeg (http://code.google.com/p/openjpeg/) for JPEG2000 encoding
+ * DCP-o-matic uses libopenjpeg (http://code.google.com/p/openjpeg/) for JPEG2000 encoding
* and libsndfile (http://www.mega-nerd.com/libsndfile/) for WAV file manipulation. It
* also makes heavy use of the boost libraries (http://www.boost.org/). ImageMagick
* (http://www.imagemagick.org/) is used for still-image encoding and decoding, and the GUI is
* built using wxWidgets (http://wxwidgets.org/). It also uses libmhash (http://mhash.sourceforge.net/)
* for debugging purposes.
*
- * Thanks are due to the authors and communities of all DVD-o-matic's dependencies.
+ * Thanks are due to the authors and communities of all DCP-o-matic's dependencies.
*
- * DVD-o-matic is distributed in the hope that there are still cinemas with projectionists
+ * DCP-o-matic is distributed in the hope that there are still cinemas with projectionists
* who might want to use it. As Mark Kermode says, "if it doesn't have a projectionist
* it's not a cinema - it's a sweetshop with a video-screen."
*
* Email correspondance is welcome to cth@carlh.net
*
- * More details can be found at http://carlh.net/software/dvdomatic
+ * More details can be found at http://carlh.net/software/dcpomatic
*/
-# DVD-o-matic manual makefile
+# DCP-o-matic manual makefile
all: html pdf
still-select-content-file.png examine-thumbs.png \
calculate-audio-gain.png prefs.png making-dcp.png filters.png film-tab.png video-tab.png audio-tab.png subtitles-tab.png
-XML := dvdomatic.xml
+XML := dcpomatic.xml
GRAPHICS :=
# HTML
#
-html: $(XML) dvdomatic-html.xsl extensions-html.ent dvdomatic.css \
+html: $(XML) dcpomatic-html.xsl extensions-html.ent dcpomatic.css \
$(addprefix html/screenshots/,$(SCREENSHOTS)) \
$(subst .svg,.png,$(addprefix diagrams/,$(DIAGRAMS))) \
$(subst .svg,.png,$(addprefix graphics/,$(GRAPHICS))) \
cp extensions-html.ent extensions.ent
# DocBoox -> html
- xmlto html -m dvdomatic-html.xsl dvdomatic.xml --skip-validation -o html
+ xmlto html -m dcpomatic-html.xsl dcpomatic.xml --skip-validation -o html
# Copy graphics and CSS in
# mkdir -p html/diagrams html/graphics
# cp diagrams/*.png html/diagrams
# cp graphics/*.png html/graphics
- cp dvdomatic.css html
+ cp dcpomatic.css html
#
# PDF
#
-pdf: $(XML) dvdomatic-pdf.xsl extensions-pdf.ent screenshots/*.png $(subst .svg,.pdf,$(addprefix diagrams/,$(DIAGRAMS)))
+pdf: $(XML) dcpomatic-pdf.xsl extensions-pdf.ent screenshots/*.png $(subst .svg,.pdf,$(addprefix diagrams/,$(DIAGRAMS)))
# The DocBook needs to know what file extensions to look for
# for screenshots and diagrams; use the correct file to tell it.
mkdir -p pdf
- dblatex -p dvdomatic-pdf.xsl -s dvdomatic.sty -r pptex.py -T native dvdomatic.xml -t pdf -o pdf/dvdomatic.pdf
+ dblatex -p dcpomatic-pdf.xsl -s dcpomatic.sty -r pptex.py -T native dcpomatic.xml -t pdf -o pdf/dcpomatic.pdf
#
# LaTeX (handy for debugging)
#
-tex: $(XML) dvdomatic-pdf.xsl extensions-pdf.ent
+tex: $(XML) dcpomatic-pdf.xsl extensions-pdf.ent
# The DocBook needs to know what file extensions to look for
# for screenshots and diagrams; use the correct file to tell it.
mkdir -p tex
# -P <foo> removes the revhistory table
- dblatex -P doc.collab.show=0 -P latex.output.revhistory=0 -p dvdomatic-pdf.xsl -s dvdomatic.sty -r pptex.py -T native dvdomatic.xml -t tex -o tex/dvdomatic.tex
+ dblatex -P doc.collab.show=0 -P latex.output.revhistory=0 -p dcpomatic-pdf.xsl -s dcpomatic.sty -r pptex.py -T native dcpomatic.xml -t tex -o tex/dcpomatic.tex
-clean:; rm -rf html pdf diagrams/*.pdf diagrams/*.png graphics/*.png *.aux dvdomatic.cb dvdomatic.cb2 dvdomatic.glo dvdomatic.idx dvdomatic.ilg
- rm -rf dvdomatic.ind dvdomatic.lof dvdomatic.log dvdomatic.tex dvdomatic.toc extensions.ent dvdomatic.out
+clean:; rm -rf html pdf diagrams/*.pdf diagrams/*.png graphics/*.png *.aux dcpomatic.cb dcpomatic.cb2 dcpomatic.glo dcpomatic.idx dcpomatic.ilg
+ rm -rf dcpomatic.ind dcpomatic.lof dcpomatic.log dcpomatic.tex dcpomatic.toc extensions.ent dcpomatic.out
+++ /dev/null
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fo="http://www.w3.org/1999/XSL/Format"
- version="1.0">
-
-<!-- Our CSS -->
-<xsl:param name="html.stylesheet" select="'dvdomatic.css'"/>
-
-<!-- I can't fathom xmlto's logic with image scaling, so I've turned it off -->
-<xsl:param name="ignore.image.scaling" select="1"/>
-
-</xsl:stylesheet>
+++ /dev/null
-<?xml version='1.0' encoding="iso-8859-1"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
-
-<!-- colour links in black -->
-<xsl:param name="latex.hyperparam">colorlinks,linkcolor=black,urlcolor=black</xsl:param>
-
-<!-- no revhistory table -->
-<xsl:param name="doc.collab.show">0</xsl:param>
-<xsl:param name="latex.output.revhistory">0</xsl:param>
-
-<!-- hack images to vaguely the right size -->
-<xsl:param name="imagedata.default.scale">scale=0.6</xsl:param>
-
-<!-- don't make too-ridiculous section numbers -->
-<xsl:param name="doc.section.depth">3</xsl:param>
-
-</xsl:stylesheet>
+++ /dev/null
-body {
- font-family: luxi sans, sans-serif;
- margin-left: 4em;
- margin-right: 4em;
- margin-top: 1em;
- margin-bottom: 1em;
- background-color: #E2E8EE;
-}
-
-div.sidebar {
- margin-left: 1em;
- margin-right: 1em;
- padding-left: 1em;
- padding-right: 1em;
- border-color: #000000;
- border-width: 2px;
- border-style: solid;
- background-color: #E2E8EE;
-}
+++ /dev/null
-%%
-%% This style is derivated from the docbook one
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ardour}[2007/04/04 My DocBook Style]
-
-%% Just use the original package and pass the options
-\RequirePackageWithOptions{docbook}
-
-% Use a nice font
-\usepackage{lmodern}
-
-% Define \dbend as the dangerous bend sign
-\font\manual=manfnt
-\def\dbend{{\manual\char127}}
-
-% Redefine sidebar environment to use the dangerous bend style
-% Danger, Will Robinson!
-\def\sidebar{\begin{trivlist}\item[]\noindent%
-\begingroup\hangindent=2pc\hangafter=-2%\clubpenalty=10000%
-\def\par{\endgraf\endgroup}%
-\hbox to0pt{\hskip-\hangindent\dbend\hfill}\ignorespaces}
-\def\endsidebar{\par\end{trivlist}}
-
-
-% Futz with the title page; basically a copy of
-% /usr/share/texmf/tex/latex/dblatex/style/dbk_title.sty
-% with authors added.
-
-\def\DBKcover{
-\ifthenelse{\equal{\DBKedition}{}}{\def\edhead{}}{\def\edhead{Ed. \DBKedition}}
-
-\pagestyle{empty}
-
-% interligne double
-\setlength{\oldbaselineskip}{\baselineskip}
-\setlength{\baselineskip}{2\oldbaselineskip}
-\textsf{
-\vfill
-\vspace{2.5cm}
-\begin{center}
- \huge{\textbf{\DBKtitle}}\\ %
- \ \\ %
- \ \\ %
- \Large{\DBKauthor}\\ %
- \ifx\DBKsubtitle\relax\else%
- \underline{\ \ \ \ \ \ \ \ \ \ \ }\\ %
- \ \\ %
- \huge{\textbf{\DBKsubtitle}}\\ %
- \fi
-\end{center}
-\vfill
-\setlength{\baselineskip}{\oldbaselineskip}
-\hspace{1cm}
-\vspace{1cm}
-\begin{center}
-\begin{tabular}{p{7cm} p{7cm}}
-\Large{\DBKreference{} \edhead} & \\
-\end{tabular}
-\end{center}
-}
-
-% Format for the other pages
-\newpage
-\setlength{\baselineskip}{\oldbaselineskip}
-%\chead[]{\DBKcheadfront}
-\lfoot[]{}
-}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE book [
-<!ENTITY % sgml.features "IGNORE">
-<!ENTITY % xml.features "INCLUDE">
-<!ENTITY % dbcent PUBLIC "-//OASIS//ENTITIES DocBook Character Entities V4.5//EN"
- "/usr/share/xml/docbook/schema/dtd/4.5/dbcentx.mod">
-%dbcent;
-<!ENTITY % extensions SYSTEM "extensions.ent">
-%extensions;
-]>
-<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-
-<bookinfo>
-<title>DVD-o-matic</title>
-<author><firstname>Carl</firstname><surname>Hetherington</surname></author>
-</bookinfo>
-
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Introduction</title>
-
-<para>
-Hello, and welcome to DVD-o-matic!
-</para>
-
-<section>
-<title>What is DVD-o-matic?</title>
-
-<para>
-DVD-o-matic is a program to generate <ulink
-url="http://en.wikipedia.org/wiki/Digital_Cinema_Package">Digital
-Cinema Packages</ulink> (DCPs) from DVDs, Blu-Rays, video files such as MP4
-and AVI, or still images. The resulting DCPs will play on modern digital
-cinema projectors.
-</para>
-
-<para>
-You might find it useful to make DVDs easier to present, to encode
-independently-shot feature films, or to generate local advertising for
-your cinema.
-</para>
-
-</section>
-
-<section>
-<title>Licence</title>
-
-<para>
-DVD-o-matic is licensed under the <ulink url="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU GPL</ulink>.
-</para>
-
-</section>
-
-</chapter>
-
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Installation</title>
-
-<section>
-<title>Windows</title>
-
-<para>
-To install DVD-o-matic on Windows, simply download the installer from
-<ulink url="http://carlh.net/software/dvdomatic">http://carlh.net</ulink>
-and double-click it. Click through the installer wizard, and
-DVD-o-matic will be installed onto your machine.
-</para>
-
-<para>
-If you are using a 32-bit version of Windows, you will need the 32-bit
-installer. For 64-bit Windows, either installer will work, but I
-suggest you used the 64-bit version as it will allow DVD-o-matic to
-use more memory. You may find that DVD-o-matic crashes if you run
-many parallel encoding threads (more than 4) on the 32-bit
-version.
-</para>
-
-</section>
-
-<section>
-<title>Ubuntu Linux</title>
-
-<para>
-You can install DVD-o-matic on Ubuntu 12.04 (‘Precise
-Pangolin’) or 12.10 (‘Quantal Quetzal’) using
-<code>.deb</code> packages: download the appropriate package from
-<ulink
-url="http://carlh.net/software/dvdomatic">http://carlh.net</ulink> and
-double-click it. Ubuntu will install the necessary bits and pieces
-and set DVD-o-matic up for you.
-</para>
-
-</section>
-
-<section>
-<title>Other Linux distributions</title>
-
-<para>
-Installation on non-Ubuntu Linux is currently a little involved, as
-there are no packages available (yet); you will have to compile it
-from source. If you are using a non-Ubuntu distribution, do let me
-know via the <ulink url="mailto:dvdomatic@carlh.net">mailing
-list</ulink> and I will see about building some packages.
-</para>
-
-<para>
-The following dependencies are required:
-<itemizedlist>
-<listitem><ulink url="http://ffmpeg.org/">FFmpeg</ulink></listitem>
-<listitem><ulink url="http://www.mega-nerd.com/libsndfile/">libsndfile</ulink></listitem>
-<listitem><ulink url="http://www.openssl.org/">OpenSSL</ulink></listitem>
-<listitem><ulink url="http://www.openjpeg.org/">libopenjpeg</ulink></listitem>
-<listitem><ulink url="http://www.imagemagick.org/script/index.php">ImageMagick</ulink></listitem>
-<listitem><ulink url="http://www.boost.org/">Boost</ulink></listitem>
-<listitem><ulink url="http://www.libssh.org/">libssh</ulink></listitem>
-<listitem><ulink url="http://www.gtk.org/">GTK</ulink></listitem>
-<listitem><ulink url="http://www.wxwidgets.org/">wxWidgets</ulink></listitem>
-<listitem><ulink url="http://carlh.net/software/libdcp/">libdcp</ulink></listitem>
-</itemizedlist>
-</para>
-
-<para>
-Once you have installed the development packages for the dependencies,
-download the source code from <ulink
-url="http://carlh.net/software/dvdomatic">http://carlh.net</ulink>,
-unpack it and run the following commands from inside the source
-directory:
-</para>
-
-<programlisting>
-./waf configure
-./waf build
-sudo ./waf install
-</programlisting>
-
-<para>
-With any luck, this will build and install DVD-o-matic on your system. To run it, enter:
-</para>
-
-<programlisting>
-dvdomatic
-</programlisting>
-
-<para>
-in a shell.
-</para>
-
-</section>
-</chapter>
-
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Creating a video DCP</title>
-
-<para>
-In this chapter we will see how to create a video DCP using
-DVD-o-matic. We will gloss over some of the finer details, which are
-explained in later chapters.
-</para>
-
-<section>
-<title>Creating a new film</title>
-
-<para>
-Let's make a very simple DCP to see how DVD-o-matic works. First, we
-need some content. Download the low-resolution trailer for the open
-movie <ulink url="http://sintel.org/">Sintel</ulink> from <ulink
-url="http://ftp.nluug.nl/ftp/graphics/blender/apricot/trailer/Sintel_Trailer1.480p.DivX_Plus_HD.mkv">their
-website</ulink>. Generally, of course, one would want to use the
-highest-resolution material available, but for this test we will use
-the low-resolution version to save everyone's bandwidth bills.
-</para>
-
-<para>
-Now, start DVD-o-matic and its window will open. First, we will
-create a new ‘film’. A ‘film’ is how DVD-o-matic refers to
-a piece of content, along with some settings, which we will make into
-a DCP. DVD-o-matic stores its data in a folder on your disk while it
-creates the DCP. You can create a new film by selecting
-<guilabel>New</guilabel> from the <guilabel>File</guilabel> menu, as
-shown in <xref linkend="fig-file-new"/>.
-</para>
-
-<figure id="fig-file-new">
- <title>Creating a new film</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/file-new&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-This will open a dialogue box for the new film, as shown in <xref
-linkend="fig-video-new-film"/>.
-</para>
-
-<figure id="fig-video-new-film">
- <title>Dialogue box for creating a new film</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/video-new-film&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-In this dialogue box you can choose a name for the film. This will be
-used to name the folder to store its data in, and also as the initial
-name for the DCP itself. You can also choose whereabouts you want to create
-the film. In the example from the figure, DVD-o-matic will create a
-folder called ‘DCP Test’ inside my home folder (carl) into which it
-will write its working files.
-</para>
-
-<para>
-If you always create your DCPs in a particular folder, you can use
-DVD-o-matic's <guilabel>Preferences</guilabel> to make life a little
-easier by setting the default folder that DVD-o-matic will offer in this dialogue.
-See <xref linkend="ch-preferences"/>.
-</para>
-
-</section>
-
-<section>
-<title>Selecting content</title>
-
-<para>
-The next step is to set the content that you want to use. Click the
-content selector, as shown in <xref
-linkend="fig-click-content-selector"/>, and a file chooser will
-open for you to select the content file to use, as shown in <xref
-linkend="fig-video-select-content-file"/>.
-</para>
-
-<figure id="fig-click-content-selector">
- <title>Opening the content selector</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/click-content-selector&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<figure id="fig-video-select-content-file">
- <title>Selecting a video content file</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/video-select-content-file&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-Select your content file and click <guilabel>Open</guilabel>. In this
-case we are using the Sintel trailer that we downloaded earlier.
-</para>
-
-<para>
-When you do this, DVD-o-matic will take a look at your file. After a
-short while (when the progress bar at the bottom right of the window
-has finished), you can look through your content using the slider to
-the right of the window, as shown in <xref linkend="fig-examine-thumbs"/>.
-</para>
-
-<figure id="fig-examine-thumbs">
- <title>Examining the content</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/examine-thumbs&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-Dragging the slider will move through your video. You can also click
-the <guilabel>Play</guilabel> button to play the content back. Note
-that there will be no sound, and playback might not be entirely
-accurate (it may be slightly slower or faster than it should be, for
-example). This player is really only intended for brief inspection of
-content; if you need to check it more thoroughly, use another player
-such as <ulink url="http://projects.gnome.org/totem/index.html">Totem</ulink>, <ulink url="http://www.mplayerhq.hu/design7/news.html">mplayer</ulink> or <ulink url="http://www.videolan.org/vlc/index.html">VLC</ulink>.
-</para>
-
-</section>
-
-<section>
-<title>Setting up</title>
-
-<para>
-Now there are a few things to set up to describe how the DCP should be
-created. The settings are divided into four tabs: film, video, audio and subtitles.
-</para>
-
-<section>
-<title>Film tab</title>
-
-<para>
-The ‘film’ tab contains settings that pertain to the whole film, as shown in <xref linkend="fig-film-tab"/>.
-</para>
-
-<figure id="fig-film-tab">
- <title>Film settings tab</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/film-tab&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-The first thing here is the name. This is generally set to the title
-of the film that is being encoded. If <guilabel>Use DCI
-name</guilabel> is not ticked, the name that you specify will be used
-as-is for the name of the DCP. If <guilabel>Use DCI name</guilabel>
-is ticked, the name that you enter will be used as part of a
-DCI-compliant name.
-</para>
-
-<para>
-Underneath the name field is a preview of the name that the DCP will
-get. To use a DCI-compliant name, tick the <guilabel>Use DCI
-name</guilabel> checkbox. The DCI name will be composed using details
-of your content's soundtrack, the current date and other things that
-can be specified in the DCI name details dialogue box, which you can
-open by clicking on the <guilabel>Details</guilabel> button.
-</para>
-
-<para>
-If the DCP name is long, it may not all be visible. You can see the
-full name by hovering the mouse pointer over the partial name.
-</para>
-
-<para>
-The <guilabel>Trust content's header</guilabel> button starts off
-checked, and this means that DVD-o-matic will use the content's header
-information to determine its length. If, for some reason, this header
-length is wrong, uncheck the <guilabel>Trust content's
-header</guilabel> button and DVD-o-matic will run through the content
-to find its exact length. This may take a while for large pieces of content.
-</para>
-
-<para>
-Next up is the content type. This can be
-‘feature’, ‘trailer’ or whatever; select the
-required type from the drop-down list.
-</para>
-
-<para>
-The <guilabel>trim frames</guilabel> settings allow you to trim frames
-from the beginning and end of the content; any trimmed frames will not
-be included in the DCP.
-</para>
-
-</section>
-
-<section>
-<title>Video tab</title>
-
-<para>
-This tab contains settings related to the picture in your DCP, as shown in <xref linkend="fig-video-tab"/>.
-</para>
-
-<figure id="fig-video-tab">
- <title>Video settings tab</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/video-tab&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-The first option on this tab is the format. This will govern the
-shape that DVD-o-matic will make your image into. Select the aspect
-ratio that your content should be presented in. The ‘4:3 within
-Flat’ and ‘16:9 within Flat’ settings will put the
-image at the specified ratio within a Flat (1.85:1) frame, so that you
-can project the DCP using your projector's Flat preset.
-</para>
-
-<para>
-The remaining options can often be left alone, but may sometimes be
-useful. The ‘crop’ settings can be used to crop your
-content, which can be used to remove black borders from round the
-edges of DVD images, for example. The specified number of pixels will
-be trimmed from each edge, and the content image in the right of the
-window will be updated to show the effect of the crop.
-</para>
-
-<para>
-The ‘filters’ settings allow you to apply various video
-filters to the image. These may be useful to try to improve
-poor-quality sources like DVDs. We will discuss filtering later in the manual.
-<!-- XXX: link -->
-</para>
-
-<para>
-The ‘scaler’ is the method that will be used to scale up
-your content to the required size for the DCP, if required. We will
-discuss the options in more detail later; Bicubic is a fine choice in
-most situations.
-<!-- XXX: link -->
-</para>
-
-<para>
-The ‘colour look-up table’ specifies the colour space that
-your input content will be expected to be in. If in doubt, leave it
-set to ‘sRGB’.
-</para>
-
-<para>
-Finally, the ‘JPEG2000 bandwidth’ setting changes how big the final
-image files used within the DCP will be. Larger numbers will give
-better quality, but correspondingly larger DCPs. The bandwidth can be
-between 50 and 250 megabits per second (MBps).
-</para>
-
-</section>
-
-<section>
-<title>Audio tab</title>
-
-<para>
-This tab contains settings related to the sound in your DCP, as shown in <xref linkend="fig-audio-tab"/>.
-</para>
-
-<figure id="fig-audio-tab">
- <title>Audio settings tab</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/audio-tab&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-
-<para>
-‘Audio Gain’ is used to alter the volume of the
-soundtrack. The specified gain (in dB) will be applied to each sound
-channel before it is written to the DCP.
-</para>
-
-<para>
-If you use a sound processor that DVD-o-matic knows about, it can help
-you calculate changes in gain that you should apply. Say, for
-example, that you make a test DCP and find that you have to run it at
-volume 5 instead of volume 7 to get a good sound level in the screen.
-If this is the case, click the <guilabel>Calculate...</guilabel>
-button next to the audio gain entry, and the dialogue box in <xref
-linkend="fig-calculate-audio-gain"/> will open.
-</para>
-
-<figure id="fig-calculate-audio-gain">
- <title>Calculating audio gain</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/calculate-audio-gain&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-For our example, put 5 in the first box and 7 in the second and click
-<guilabel>OK</guilabel>. DVD-o-matic will calculate the audio gain
-that it should apply to make this happen. Then you can re-make the
-DCP (this will be reasonably fast, as the video data will already have
-been done) and it should play back at the correct volume with 7 on
-your sound-rack fader.
-</para>
-
-<para>
-Current versions of DVD-o-matic only know about the Dolby CP750. If
-you use a different sound processor, and know the gain curve of its
-volume control, <ulink url="mailto:cth@carlh.net">get in
-touch</ulink>.
-</para>
-
-<para>
-‘Audio Delay’ is used to adjust the synchronisation
-between audio and video. A positive delay will move the audio later
-with respect to the video, and a negative delay will move it earlier.
-</para>
-
-<para>
-By default the <guilabel>Use content‘s audio</guilabel> button
-will be selected. This means that the DCP will use one of the
-soundtracks from your content file; you can select the soundtrack that
-you wish to use from the drop-down box.
-</para>
-
-<para>
-Note that if your content's audio is mono, DVD-o-matic will place it
-in the centre channel in the DCP.
-</para>
-
-<para>
-Alternatively, you can supply different sound files by clicking the
-<guilabel>Use external audio</guilabel> button and choosing a WAV file
-for any channels that you want to appear in the DCP. These files can
-be any bit depth and sampling rate, and will be re-sampled and
-bit-depth converted if required.
-</para>
-
-</section>
-<section>
-<title>Subtitles tab</title>
-
-<para>
-This tab contains settings related to subtitles in your DCP, as shown in <xref linkend="fig-subtitles-tab"/>.
-</para>
-
-<figure id="fig-subtitles-tab">
- <title>Subtitle settings tab</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/subtitles-tab&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-DVD-o-matic will extract subtitles from the content, if present, and
-they can be ‘burnt into’ the DCP (that is, they are
-included in the image and not overlaid by the projector). Note that
-DVD and Blu-Ray subtitles are stored as bitmaps, so it is not possible
-(automatically) to use non-burnt-in subtitles with these sources.
-Select the <guilabel>With Subtitles</guilabel> checkbox to enable
-subtitles. The <guilabel>offset</guilabel> control moves the
-subtitles up and down the image, and the <guilabel>scale</guilabel>
-control changes their size.
-</para>
-
-<para>
-Future versions of DVD-o-matic will hopefully include the option to
-use text subtitles (as is the norm with most professionally-mastered
-DCPs).
-</para>
-
-</section>
-</section>
-
-<section>
-<title>Making the DCP</title>
-
-<para>
-Now that we have set everything up, choose <guilabel>Make
-DCP</guilabel> from the <guilabel>Jobs</guilabel> menu. DVD-o-matic
-will encode your DCP. This may take some time (many hours in some
-cases). While the job is in progress, DVD-o-matic will update you on
-how it is getting on with the progress bar in the bottom of its window, as shown in <xref linkend="fig-making-dcp"/>.
-</para>
-
-<figure id="fig-making-dcp">
- <title>Making the DCP</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/making-dcp&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-When it has finished, the DCP will end up on your disk inside the
-film's directory. You can then copy this to a projector via a USB
-stick, hard-drive or network connection.
-</para>
-
-<para>
-Alternatively, if you have a projector or TMS that is accessible via
-SCP across your network, you can upload the content directly from
-DVD-o-matic. See <xref linkend="sec-tms-upload"/>.
-</para>
-
-</section>
-</chapter>
-
-
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Creating a still-image DCP</title>
-
-<para>
-DVD-o-matic can also be used to create DCPs of a still image, perhaps
-for an advertisement or an on-screen announcement. This chapter shows you
-how to do it.
-</para>
-
-<para>
-As with video DCPs, the first step is to create a new
-‘Film’; select <guilabel>New</guilabel> from the
-<guilabel>File</guilabel> menu and the new film dialogue will open as
-shown in <xref linkend="fig-still-new-film"/>.
-</para>
-
-<figure id="fig-still-new-film">
- <title>Dialogue box for creating a new film</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/still-new-film&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-Enter a name and click <guilabel>OK</guilabel>. Then we set up the
-content; click the content selector as before, and this time we will
-choose an image file, as shown in <xref
-linkend="fig-still-select-content-file"/>.
-</para>
-
-<figure id="fig-still-select-content-file">
- <title>Selecting a still content file</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/still-select-content-file&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-Setting up for a still image DCP is somewhat simpler than for a video;
-the tabs are all the same, but many options are removed and a few are added.
-</para>
-
-<para>
-As with video, you can select a content type and the format (ratio)
-that your image should be presented in. It will be scaled and padded
-to fit the selected ratio, but in such a way that the pixel aspect
-ratio is preserved. In other words, the image will not be stretched,
-merely scaled; if you want to stretch your image, you will need to do
-so in a separate program before importing it into DVD-o-matic. You
-can also crop your image, if you so choose, and then set a duration
-(in seconds) that the image should appear on screen.
-</para>
-
-<para>
-Still-image DCPs can include sound; this can be added from the
-<guilabel>Audio</guilabel> tab. If your specified duration is shorter
-than the audio, the audio will be cut off at the duration; if it is
-longer, silence will be added after your audio.
-</para>
-
-<para>
-Finally, as with video, you can choose <guilabel>Make DCP</guilabel>
-from the <guilabel>Jobs</guilabel> menu to create your DCP. This will
-be much quicker than creating a video DCP, as DVD-o-matic only needs
-to encode a single frame which it can then repeat.
-</para>
-
-</chapter>
-
-
-<chapter xml:id="ch-preferences" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Preferences</title>
-
-<para>
-DVD-o-matic provides a few preferences which can be used to modify its
-behaviour. This chapter explains those options.
-</para>
-
-<section>
-<title>The preferences dialogue</title>
-
-<para>
-The preferences dialogue is opened by choosing
-<guilabel>Preferences...</guilabel> from the <guilabel>Edit</guilabel>
-menu. The dialogue is shown in <xref linkend="fig-prefs"/>.
-</para>
-
-<figure id="fig-prefs">
- <title>Preferences</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/prefs&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<section>
-<title>TMS setup</title>
-
-<para>
-The first part of the dialogue gives some options for specifying
-details about your TMS. If you do this, and your TMS accepts SSH
-connections, you can upload DCPs directly from DVD-o-matic to the TMS.
-This is discussed in <xref linkend="sec-tms-upload"/>.
-</para>
-
-<para>
-<guilabel>TMS IP address</guilabel> should be set to the IP address of
-your TMS, <guilabel>TMS target path</guilabel> to the place that DCPs
-should be uploaded to (which will be relative to the home directory of
-the SSH user). Finally, the user name and password are the
-credentials required to log into the TMS via SSH.
-</para>
-</section>
-
-<section>
-<title>Threads</title>
-
-<para>
-When DVD-o-matic is encoding DCPs it can use multiple parallel threads
-to speed things up. Set this value to the number of threads
-DVD-o-matic should use. This would typically be set to the number of
-processors (or processor cores) in your machine.
-</para>
-
-</section>
-
-<section>
-<title>Default directory for new films</title>
-
-<para>
-This is the directory which DVD-o-matic will suggest initially as a place to put new films.
-</para>
-
-</section>
-
-<section>
-<title>A/B options</title>
-
-<para>
-These options are for DVD-o-matic's special mode of making A/B
-comparison DCPs for checking the performance of video filters. Their
-use is described in <xref linkend="sec-ab"/>.
-</para>
-
-</section>
-
-<section>
-<title>Encoding servers</title>
-
-<para>
-If you have spare machines sitting around on your network not doing
-much, they can be pressed into service to speed up DCP encodes. This
-is done by running a small server program on the machine, which will
-encode video sent to it by the ‘master’ DVD-o-matic. This
-option is described in more detail in <xref linkend="sec-servers"/>.
-Use these preferences to specify the encoding servers that should be
-used.
-</para>
-
-</section>
-
-</section>
-</chapter>
-
-<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
-<title>Advanced topics</title>
-
-<para>This chapter describes some parts of DVD-o-matic that are
-probably not essential, but which you might find useful in some
-circumstances.
-</para>
-
-<section>
-<title>Filtering</title>
-
-<para>
-DVD-o-matic offers a variety of filters that can be applied to your
-video content. You can set up the filters by clicking the
-<guilabel>Edit</guilabel> button next to the filters entry in the
-setup area of the DVD-o-matic window; this opens the filters selector
-as shown in <xref linkend="fig-filters"/>.
-</para>
-
-<figure id="fig-filters">
- <title>Filters selector</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="screenshots/filters&scs;"/>
- </imageobject>
- </mediaobject>
-</figure>
-
-<para>
-After changing the filters setup, you will need to regenerate the DCP
-to see the effect on the cinema screen. The preview in DVD-o-matic
-will update itself whenever filters are changed, though of course this
-image is much smaller and of lower resolution than a projected image!
-</para>
-
-</section>
-
-<section>
-<title>Scaling</title>
-
-<para>
-If your source material is not of the DCI-specified size, or if it
-uses non-square pixels, DVD-o-matic will need to scale it. The
-algorithm used to scale is set up by the <guilabel>Scaler</guilabel>
-entry in the film setup area. We think ‘Bicubic’ is the
-best all-round option, but tests are ongoing.
-</para>
-
-</section>
-
-<section xml:id="sec-tms-upload">
-<title>TMS upload</title>
-
-<para>
-If you have configured details of a TMS in the preferences dialogue
-(<xref linkend="ch-preferences"/>) you can upload a completed DCP
-straight to your TMS buy choosing <guilabel>Send DCP to TMS</guilabel>
-from the <guilabel>Jobs</guilabel> menu.
-</para>
-
-</section>
-
-
-<section xml:id="sec-ab">
-<title>A/B comparison</title>
-
-<para>
-When evaluating the effects of different filters or scalers on the
-image quality, A/B mode might be useful. In this mode, DVD-o-matic
-will generate a DCP where the left half of the image uses some
-‘reference’ filtering and scaling, and the right half of
-the image uses a different set of filters and a different scaler.
-This DCP can then be played back on a projector and the image quality
-evaluated.
-</para>
-
-<para>
-To enable A/B mode, click the A/B checkbox in the setup area of the
-DVD-o-matic window. When you generate your DCP, the left half of the
-screen will use the filters and scaler specified in the <xref
-linkend="ch-preferences">preferences</xref> dialogue, and the right
-half will use the filters and scaler specified in the film setup.
-</para>
-
-</section>
-
-<section xml:id="sec-servers">
-<title>Encoding servers</title>
-
-<para>
-One way to increase the speed of DCP encoding is to use more
-than one machine at the same time. An instance of DVD-o-matic can
-offload some of the time-consuming JPEG2000 encoding to any number of
-other machines on a network. To do this, one ‘master’
-machine runs DVD-o-matic, and the ‘server’ machines run
-a small program called ‘servomatic’.
-</para>
-
-<section>
-<title>Running the servers</title>
-
-<para>
-There are two options for the encoding server;
-<code>servomatic_cli</code>, which runs on the command line, and
-<code>servomatic_gui</code>, which has a simple GUI. The command line
-version is well-suited to headless servers, especially on Linux, and
-the GUI version works best on Windows where it will put an icon in the
-system tray.
-</para>
-
-<para>
-To run the command line version, simply enter:
-</para>
-
-<programlisting>
-servomatic_cli
-</programlisting>
-
-<para>
-at a command prompt. If you are running the program on a machine with
-a multi-core processor, you can run multiple parallel encoding threads
-by doing something like:
-</para>
-
-<programlisting>
-servomatic_cli -t 4
-</programlisting>
-
-<para>
-to run 4 threads in parallel.
-</para>
-
-<para>
-To run the GUI version on windows, run the ‘DVD-o-matic encode
-server’ from the start menu. An icon will appear in the system
-tray; right-click it to open a menu from whence you can quit the
-server or open a window to show its status.
-</para>
-
-</section>
-<section>
-<title>Setting up DVD-o-matic</title>
-
-<para>
-Once your servers are running, you need to tell your master
-DVD-o-matic instance about them. Start DVD-o-matic and open the
-<guilabel>Preferences</guilabel> dialog from the
-<guilabel>Edit</guilabel> menu. At the bottom of this dialog is a
-section where you can add, edit and remove encoding servers. For each
-encoding server you need only specify its IP address and the number of
-threads that it is running, so that DVD-o-matic knows how many
-parallel encode jobs to send to the server.
-</para>
-
-<para>
-Once this is done, any encodes that you start will split the workload
-up between the master machine and the servers.
-</para>
-
-</section>
-<section>
-<title>Some notes about encode servers</title>
-
-<para>
-DVD-o-matic does not mind if servers come and go; if a server
-disappears, DVD-o-matic will stop sending work to it, and will check
-it every minute or so in case it has come back online.
-</para>
-
-<para>
-You will probably find that using a 1Gb/s or faster network will
-provide a significant speed-up compared to a 100Mb/s network.
-</para>
-
-<para>
-Making changes to the server configuration in the master DVD-o-matic
-will have no effect while an encode is running; the changes will only
-be noticed when a new encode is started.
-</para>
-
-</section>
-</section>
-
-</chapter>
-
-
-</book>
+++ /dev/null
-[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
+++ /dev/null
-
-LEFT_SCREEN_WIDTH = 1366
+++ /dev/null
-#!/usr/bin/python
-
-import os
-import operator
-import traceback
-import pygtk
-pygtk.require('2.0')
-import gtk
-import glib
-import gobject
-import film
-import film_view
-import player
-import screens
-import thumbs
-import ratio
-import util
-
-FILM_DIRECTORY = '/home/carl/DVD'
-
-current_player = None
-films = []
-inhibit_selection_update = False
-
-def find_films():
- global films
- films = []
- for root, dirs, files in os.walk(FILM_DIRECTORY):
- for name in files:
- if os.path.basename(name) == 'info':
- films.append(film.Film(os.path.join(root, os.path.dirname(name))))
-
- films.sort(key = operator.attrgetter('name'))
-
-def update_film_store():
- global film_store
- global films
- global inhibit_selection_update
- inhibit_selection_update = True
- film_store.clear()
- for f in films:
- film_store.append([f.name])
- inhibit_selection_update = False
-
-def update_screen_store(screen_store, screens):
- screen_store.clear()
- for s in screens.screens:
- screen_store.append([s.name])
-
-def create_film_tree_view(film_store):
- view = gtk.TreeView(film_store)
- column = gtk.TreeViewColumn()
- view.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell)
- column.add_attribute(cell, 'text', 0)
- view.get_selection().set_mode(gtk.SELECTION_SINGLE)
- return view
-
-def create_screen_view(screen_store):
- view = gtk.TreeView(screen_store)
- column = gtk.TreeViewColumn()
- view.append_column(column)
- cell = gtk.CellRendererText()
- column.pack_start(cell)
- column.add_attribute(cell, 'text', 0)
- view.get_selection().set_mode(gtk.SELECTION_SINGLE)
- return view
-
-def get_selected_film():
- (model, iter) = film_tree_view.get_selection().get_selected()
-
- for f in films:
- if f.name == model.get(iter, 0)[0]:
- return f
-
- return None
-
-# @return Selected screen name
-def get_selected_screen():
- (model, iter) = screen_view.get_selection().get_selected()
- return model.get(iter, 0)[0]
-
-def film_selected(selection):
- if inhibit_selection_update:
- return
-
- film_view.set(get_selected_film())
- check_for_playability()
-
-def screen_selected(selection):
- check_for_playability()
-
-def check_for_playability():
- f = get_selected_film()
- if screens.get_format(get_selected_screen(), f.ratio) is not None:
- play_button.set_label("Play")
- play_button.set_sensitive(True)
- else:
- play_button.set_label("Cannot play: no setting for %s on screen %s" % (ratio.find(f.ratio).name(), get_selected_screen()))
- play_button.set_sensitive(False)
-
-def update_status(s):
- global current_player
- if current_player is None:
- s.set_text("Not playing")
- return True
-
- position = current_player.time_pos
- if position is None:
- return True
- position_hms = util.s_to_hms(position)
-
- length = current_player.length
- if length is None:
- return True
-
- remaining = length - position
- remaining_hms = util.s_to_hms(remaining)
- s.set_text("Playing: %d:%02d:%02d, %d:%02d:%02d remaining" % (position_hms[0], position_hms[1], position_hms[2], remaining_hms[0], remaining_hms[1], remaining_hms[2]))
- return True
-
-def play_clicked(b):
- global current_player
- f = get_selected_film()
- current_player = player.get_player(f, screens.get_format(get_selected_screen(), f.ratio))
- print current_player.args
-
-def stop_clicked(b):
- global current_player
- if current_player is not None:
- current_player.stop()
- current_player = None
-
-def add_film_clicked(b):
- global films
- c = gtk.FileChooserDialog("New Film", main_window, gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER, (("Add", gtk.RESPONSE_OK)))
- c.set_current_folder(FILM_DIRECTORY)
- if c.run() == gtk.RESPONSE_OK:
- f = film.Film()
- f.data = c.get_filename()
- f.name = os.path.basename(c.get_filename())
- f.write()
- find_films()
- update_film_store()
- c.hide()
-
- for i in range(0, len(films)):
- if films[i].name == f.name:
- film_tree_view.get_selection().select_path((i, ))
-
-main_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
-main_window.set_title("DVD-o-matic")
-main_window.maximize()
-
-main_hbox = gtk.HBox()
-main_hbox.set_spacing(12)
-main_hbox.set_border_width(12)
-main_window.add(main_hbox)
-
-find_films()
-film_view = film_view.FilmView(main_window)
-screens = screens.Screens("screens")
-
-left_vbox = gtk.VBox()
-left_vbox.set_spacing(12)
-main_hbox.pack_start(left_vbox, False, False)
-right_vbox = gtk.VBox()
-right_vbox.set_spacing(12)
-main_hbox.pack_start(right_vbox)
-
-film_store = gtk.ListStore(gobject.TYPE_STRING)
-update_film_store()
-
-film_tree_view = create_film_tree_view(film_store)
-left_vbox.pack_start(film_tree_view, True, True)
-film_tree_view.get_selection().select_path((0, ))
-film_tree_view.get_selection().connect("changed", film_selected)
-
-add_film_button = gtk.Button(stock = gtk.STOCK_ADD)
-left_vbox.pack_start(add_film_button, False, False)
-add_film_button.connect("clicked", add_film_clicked)
-
-screen_store = gtk.ListStore(gobject.TYPE_STRING)
-update_screen_store(screen_store, screens)
-
-screen_view = create_screen_view(screen_store)
-left_vbox.pack_start(screen_view, False, False)
-screen_view.get_selection().select_path((0, ))
-screen_view.get_selection().connect("changed", screen_selected)
-
-right_vbox.pack_start(film_view, False, False)
-film_view.set(films[0])
-
-play_button = gtk.Button("Play")
-right_vbox.pack_start(play_button)
-play_button.connect("clicked", play_clicked)
-
-stop_button = gtk.Button("Stop")
-right_vbox.pack_start(stop_button)
-stop_button.connect("clicked", stop_clicked)
-
-status = gtk.Label()
-right_vbox.pack_start(status, False, False)
-glib.timeout_add_seconds(1, update_status, status)
-
-check_for_playability()
-main_window.show_all()
-gtk.main()
+++ /dev/null
-import os
-import subprocess
-import shlex
-import shutil
-import player
-
-class Film:
- def __init__(self, data = None):
- # File or directory containing content
- self.content = None
- # True if content is in DVD format
- self.dvd = False
- # DVD title number
- self.dvd_title = 1
- # Directory containing metadata
- self.data = None
- # Film name
- self.name = None
- # Number of pixels by which to crop the content from each edge
- self.left_crop = 0
- self.top_crop = 0
- self.right_crop = 0
- self.bottom_crop = 0
- # Use deinterlacing filter
- self.deinterlace = False
- # Target ratio
- self.ratio = 1.85
- # Audio stream ID to play
- self.aid = None
-
- self.width = None
- self.height = None
- self.fps = None
- self.length = None
-
- if data is not None:
- self.data = data
- f = open(os.path.join(self.data, 'info'), 'r')
- while 1:
- l = f.readline()
- if l == '':
- break
-
- d = l.strip()
-
- s = d.find(' ')
- if s != -1:
- key = d[:s]
- value = d[s+1:]
-
- if key == 'name':
- self.name = value
- elif key == 'content':
- self.content = value
- elif key == 'dvd':
- self.dvd = int(value) == 1
- elif key == 'dvd_title':
- self.dvd_title = int(value)
- elif key == 'left_crop':
- self.left_crop = int(value)
- elif key == 'top_crop':
- self.top_crop = int(value)
- elif key == 'right_crop':
- self.right_crop = int(value)
- elif key == 'bottom_crop':
- self.bottom_crop = int(value)
- elif key == 'deinterlace':
- self.deinterlace = int(value) == 1
- elif key == 'ratio':
- self.ratio = float(value)
- elif key == 'aid':
- self.aid = int(value)
- elif key == 'width':
- self.width = int(value)
- elif key == 'height':
- self.height = int(value)
- elif key == 'fps':
- self.fps = float(value)
- elif key == 'length':
- self.length = float(value)
-
- if self.width is None or self.height is None or self.fps is None or self.length is None:
- self.update_content_metadata()
-
- def write(self):
- try:
- os.mkdir(self.data)
- except OSError:
- pass
-
- f = open(os.path.join(self.data, 'info'), 'w')
- self.write_datum(f, 'name', self.name)
- self.write_datum(f, 'content', self.content)
- self.write_datum(f, 'dvd', int(self.dvd))
- self.write_datum(f, 'dvd_title', self.dvd_title)
- self.write_datum(f, 'left_crop', self.left_crop)
- self.write_datum(f, 'top_crop', self.top_crop)
- self.write_datum(f, 'right_crop', self.right_crop)
- self.write_datum(f, 'bottom_crop', self.bottom_crop)
- self.write_datum(f, 'deinterlace', int(self.deinterlace))
- self.write_datum(f, 'ratio', self.ratio)
- self.write_datum(f, 'aid', self.aid)
- self.write_datum(f, 'width', self.width)
- self.write_datum(f, 'height', self.height)
- self.write_datum(f, 'fps', self.fps)
- self.write_datum(f, 'length', self.length)
-
- def write_datum(self, f, key, value):
- if value is not None:
- print >>f,'%s %s' % (key, str(value))
-
- def thumbs_dir(self):
- t = os.path.join(self.data, 'thumbs')
-
- try:
- os.mkdir(t)
- except OSError:
- pass
-
- return t
-
- def thumb(self, n):
- return os.path.join(self.thumbs_dir(), str('%08d.png' % (n + 1)))
-
- def thumbs(self):
- return len(os.listdir(self.thumbs_dir()))
-
- def remove_thumbs(self):
- shutil.rmtree(self.thumbs_dir())
-
- def make_thumbs(self):
- num_thumbs = 128
- cl = self.player_command_line()
- if self.length is not None:
- sstep = self.length / num_thumbs
- else:
- sstep = 100
- cl.extra = '-vo png -frames %d -sstep %d -nosound' % (num_thumbs, sstep)
- os.chdir(self.thumbs_dir())
- os.system(cl.get(True))
-
- def set_dvd(self, d):
- self.dvd = d
- self.remove_thumbs()
-
- def set_dvd_title(self, t):
- self.dvd_title = t
- self.remove_thumbs()
-
- def set_content(self, c):
- if c == self.content:
- return
-
- self.content = c
- self.update_content_metadata()
-
- def player_command_line(self):
- cl = player.CommandLine()
- cl.dvd = self.dvd
- cl.dvd_title = self.dvd_title
- cl.content = self.content
- return cl
-
- def update_content_metadata(self):
- if self.content is None:
- return
-
- self.width = None
- self.height = None
- self.fps = None
- self.length = None
-
- cl = self.player_command_line()
- cl.extra = '-identify -vo null -ao null -frames 0'
- text = subprocess.check_output(shlex.split(cl.get(True))).decode('utf-8')
- lines = text.split('\n')
- for l in lines:
- s = l.strip()
- b = s.split('=')
- if len(b) == 2:
- if b[0] == 'ID_VIDEO_WIDTH':
- self.width = int(b[1])
- elif b[0] == 'ID_VIDEO_HEIGHT':
- self.height = int(b[1])
- elif b[0] == 'ID_VIDEO_FPS':
- self.fps = float(b[1])
- elif b[0] == 'ID_LENGTH':
- self.length = float(b[1])
+++ /dev/null
-import os
-import pygtk
-pygtk.require('2.0')
-import gtk
-import ratio
-import util
-import thumbs
-
-class FilmView(gtk.HBox):
- def __init__(self, parent):
- gtk.HBox.__init__(self)
-
- self.parent_window = parent
-
- self.inhibit_save = True
-
- self.table = gtk.Table()
- self.pack_start(self.table, True, True)
-
- self.table.set_row_spacings(4)
- self.table.set_col_spacings(12)
- self.film_name = gtk.Entry()
- self.ratio = gtk.combo_box_new_text()
- for r in ratio.ratios:
- self.ratio.append_text(r.name())
- self.content_file_radio = gtk.RadioButton()
- self.content_file_radio.set_label("File")
- self.content_file_chooser = gtk.FileChooserDialog("Content", self.parent_window, gtk.FILE_CHOOSER_ACTION_OPEN, (("Select", gtk.RESPONSE_OK)))
- self.content_file_button = gtk.FileChooserButton(self.content_file_chooser)
- self.content_folder_radio = gtk.RadioButton()
- self.content_folder_radio.set_label("Folder")
- self.content_folder_radio.set_group(self.content_file_radio)
- self.content_folder_chooser = gtk.FileChooserDialog("Content", self.parent_window, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, (("Select", gtk.RESPONSE_OK)))
- self.content_folder_button = gtk.FileChooserButton(self.content_folder_chooser)
- self.dvd = gtk.CheckButton("DVD")
- self.dvd_title = gtk.SpinButton()
- self.dvd_title.set_range(0, 32)
- self.dvd_title.set_increments(1, 4)
- self.deinterlace = gtk.CheckButton("Deinterlace")
- self.left_crop = self.crop_spinbutton()
- self.right_crop = self.crop_spinbutton()
- self.top_crop = self.crop_spinbutton()
- self.bottom_crop = self.crop_spinbutton()
-
- # Information about the content (immutable)
- self.source_size = self.label()
- self.fps = self.label()
- self.length = self.label()
-
- # Buttons
- self.thumbs_button = gtk.Button("Show Thumbnails")
-
- self.film_name.connect("changed", self.changed, self)
- self.ratio.connect("changed", self.changed, self)
- self.deinterlace.connect("toggled", self.changed, self)
- self.thumbs_button.connect("clicked", self.thumbs_clicked, self)
- self.content_file_radio.connect("toggled", self.content_radio_toggled, self)
- self.content_folder_radio.connect("toggled", self.content_radio_toggled, self)
- self.content_file_button.connect("file-set", self.content_file_chooser_file_set, self)
- self.content_folder_button.connect("file-set", self.content_folder_chooser_file_set, self)
- self.dvd.connect("toggled", self.changed, self)
- self.dvd_title.connect("value-changed", self.changed, self)
-
- n = 0
- self.table.attach(self.label("Film"), 0, 1, n, n + 1)
- self.table.attach(self.film_name, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Ratio"), 0, 1, n, n + 1)
- self.table.attach(self.ratio, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Content"), 0, 1, n, n + 1)
- b = gtk.HBox()
- b.set_spacing(4)
- b.pack_start(self.content_file_radio, False, False)
- b.pack_start(self.content_file_button, True, True)
- b.pack_start(self.content_folder_radio, False, False)
- b.pack_start(self.content_folder_button, True, True)
- self.table.attach(b, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.dvd, 0, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("DVD title"), 0, 1, n, n + 1)
- self.table.attach(self.dvd_title, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.deinterlace, 0, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Left Crop"), 0, 1, n, n + 1)
- self.table.attach(self.left_crop, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Right Crop"), 0, 1, n, n + 1)
- self.table.attach(self.right_crop, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Top Crop"), 0, 1, n, n + 1)
- self.table.attach(self.top_crop, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Bottom Crop"), 0, 1, n, n + 1)
- self.table.attach(self.bottom_crop, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Source size"), 0, 1, n, n + 1)
- self.table.attach(self.source_size, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Frames per second"), 0, 1, n, n + 1)
- self.table.attach(self.fps, 1, 2, n, n + 1)
- n += 1
- self.table.attach(self.label("Length"), 0, 1, n, n + 1)
- self.table.attach(self.length, 1, 2, n, n + 1)
-
- self.right_vbox = gtk.VBox()
- self.pack_start(self.right_vbox, False, False)
-
- self.right_vbox.pack_start(self.thumbs_button, False, False)
-
- self.inhibit_save = False
-
- def set(self, film):
- self.inhibit_save = True
-
- self.film = film
- self.film_name.set_text(film.name)
- self.ratio.set_active(ratio.ratio_to_index(film.ratio))
- if film.content is not None:
- if os.path.isfile(film.content):
- self.set_content_is_file(True)
- self.content_file_button.set_filename(film.content)
- else:
- self.set_content_is_file(False)
- self.content_folder_button.set_filename(film.content)
- self.dvd.set_active(film.dvd)
- self.dvd_title.set_value(film.dvd_title)
- self.dvd_title.set_sensitive(film.dvd)
- self.deinterlace.set_active(film.deinterlace)
- self.left_crop.set_value(film.left_crop)
- self.right_crop.set_value(film.right_crop)
- self.top_crop.set_value(film.top_crop)
- self.bottom_crop.set_value(film.bottom_crop)
-
- # Content information
- if film.width is not None and film.height is not None:
- self.source_size.set_text("%dx%d" % (film.width, film.height))
- else:
- self.source_size.set_text("Unknown")
- if film.fps is not None:
- self.fps.set_text(str(film.fps))
- if film.length is not None:
- self.length.set_text("%d:%02d:%02d" % util.s_to_hms(film.length))
-
- self.inhibit_save = False
-
- def set_content_is_file(self, f):
- self.content_file_button.set_sensitive(f)
- self.content_folder_button.set_sensitive(not f)
- self.content_file_radio.set_active(f)
- self.content_folder_radio.set_active(not f)
-
- def label(self, text = ""):
- l = gtk.Label(text)
- l.set_alignment(0, 0.5)
- return l
-
- def changed(self, a, b):
- self.dvd_title.set_sensitive(self.dvd.get_active())
- self.save_film()
-
- def crop_spinbutton(self):
- s = gtk.SpinButton()
- s.set_range(0, 1024)
- s.set_increments(1, 16)
- s.connect("value-changed", self.changed, self)
- return s
-
- def save_film(self):
- if self.inhibit_save:
- return
-
- self.film.name = self.film_name.get_text()
- self.film.ratio = ratio.index_to_ratio(self.ratio.get_active()).ratio
-
- if self.content_file_radio.get_active():
- self.film.set_content(self.content_file_button.get_filename())
- else:
- self.film.set_content(self.content_folder_button.get_filename())
- self.film.set_dvd(self.dvd.get_active())
- self.film.set_dvd_title(self.dvd_title.get_value_as_int())
- self.film.deinterlace = self.deinterlace.get_active()
- self.film.left_crop = self.left_crop.get_value_as_int()
- self.film.right_crop = self.right_crop.get_value_as_int()
- self.film.top_crop = self.top_crop.get_value_as_int()
- self.film.bottom_crop = self.bottom_crop.get_value_as_int()
- self.film.write()
-
- def thumbs_clicked(self, a, b):
- if self.film.thumbs() == 0:
- self.film.make_thumbs()
-
- t = thumbs.Thumbs(self.film)
- t.run()
- t.hide()
- self.left_crop.set_value(t.left_crop())
- self.right_crop.set_value(t.right_crop())
- self.top_crop.set_value(t.top_crop())
- self.bottom_crop.set_value(t.bottom_crop())
-
- def content_file_chooser_file_set(self, a, b):
- self.changed(a, b)
-
- def content_folder_chooser_file_set(self, a, b):
- self.changed(a, b)
-
- def content_radio_toggled(self, a, b):
- self.set_content_is_file(self.content_file_radio.get_active())
- self.changed(a, b)
-
+++ /dev/null
-import os
-import threading
-import subprocess
-import shlex
-import select
-import film
-import config
-import mplayer
-
-class CommandLine:
- def __init__(self):
- self.position_x = 0
- self.position_y = 0
- self.output_width = None
- self.output_height = None
- self.mov = False
- self.delay = None
- self.dvd = False
- self.dvd_title = 1
- self.content = None
- self.extra = ''
- self.crop_x = None
- self.crop_y = None
- self.crop_w = None
- self.crop_h = None
- self.deinterlace = False
- self.aid = None
-
- def get(self, with_binary):
- # hqdn3d?
- # nr, unsharp?
- # -vo x11 appears to be necessary to prevent unwanted hardware scaling
- # -noaspect stops mplayer rescaling to the movie's specified aspect ratio
- args = '-vo x11 -noaspect -ao pulse -noborder -noautosub -nosub -sws 10 '
- args += '-geometry %d:%d ' % (self.position_x, self.position_y)
-
- # Video filters (passed to -vf)
-
- filters = []
-
- if self.crop_x is not None or self.crop_y is not None or self.crop_w is not None or self.crop_h is not None:
- crop = 'crop='
- if self.crop_w is not None and self.crop_h is not None:
- crop += '%d:%d' % (self.crop_w, self.crop_h)
- if self.crop_x is not None and self.crop_x is not None:
- crop += ':%d:%d' % (self.crop_x, self.crop_y)
- filters.append(crop)
-
- if self.output_width is not None or self.output_height is not None:
- filters.append('scale=%d:%d' % (self.output_width, self.output_height))
-
- # Post processing
- pp = []
- if self.deinterlace:
- pp.append('lb')
-
- # Deringing filter
- pp.append('dr')
-
- if len(pp) > 0:
- pp_string = 'pp='
- for i in range(0, len(pp)):
- pp_string += pp[i]
- if i < len(pp) - 1:
- pp += ','
-
- filters.append(pp_string)
-
- if len(filters) > 0:
- args += '-vf '
- for i in range(0, len(filters)):
- args += filters[i]
- if i < len(filters) - 1:
- args += ','
- args += ' '
-
- if self.mov:
- args += '-demuxer mov '
- if self.delay is not None:
- args += '-delay %f ' % float(args.delay)
- if self.aid is not None:
- args += '-aid %s ' % self.aid
-
- args += self.extra
-
- if self.dvd:
- data_specifier = 'dvd://%d -dvd-device \"%s\"' % (self.dvd_title, self.content)
- else:
- data_specifier = '\"%s\"' % self.content
-
- if with_binary:
- return 'mplayer %s %s' % (args, data_specifier)
-
- return '%s %s' % (args, data_specifier)
-
-def get_player(film, format):
- cl = CommandLine()
- cl.dvd = film.dvd
- cl.dvd_title = film.dvd_title
- cl.content = film.content
- cl.crop_w = film.width - film.left_crop - film.right_crop
- cl.crop_h = film.height - film.top_crop - film.bottom_crop
- cl.position_x = format.x
- if format.external:
- cl.position_x = format.x + config.LEFT_SCREEN_WIDTH
- cl.position_y = format.y
- cl.output_width = format.width
- cl.output_height = format.height
- cl.deinterlace = film.deinterlace
- cl.aid = film.aid
- return mplayer.Player(cl.get(False))
-
+++ /dev/null
-# Class to describe a Ratio, and a collection of common
-# (and not-so-common) film ratios collected from Wikipedia.
-
-class Ratio:
- def __init__(self, ratio, nickname = None):
- self.nickname = nickname
- self.ratio = ratio
-
- # @return presentation name of this ratio
- def name(self):
- if self.nickname is not None:
- return "%.2f (%s)" % (self.ratio, self.nickname)
-
- return "%.2f" % self.ratio
-
-ratios = []
-ratios.append(Ratio(1.33, '4:3'))
-ratios.append(Ratio(1.37, 'Academy'))
-ratios.append(Ratio(1.78, '16:9'))
-ratios.append(Ratio(1.85, 'Flat / widescreen'))
-ratios.append(Ratio(2.39, 'CinemaScope / Panavision'))
-ratios.append(Ratio(1.15, 'Movietone'))
-ratios.append(Ratio(1.43, 'IMAX'))
-ratios.append(Ratio(1.5))
-ratios.append(Ratio(1.56, '14:9'))
-ratios.append(Ratio(1.6, '16:10'))
-ratios.append(Ratio(1.67))
-ratios.append(Ratio(2, 'SuperScope'))
-ratios.append(Ratio(2.2, 'Todd-AO'))
-ratios.append(Ratio(2.35, 'Early CinemaScope / Panavision'))
-ratios.append(Ratio(2.37, '21:9'))
-ratios.append(Ratio(2.55, 'CinemaScope 55'))
-ratios.append(Ratio(2.59, 'Cinerama'))
-ratios.append(Ratio(2.76, 'Ultra Panavision'))
-ratios.append(Ratio(2.93, 'MGM Camera 65'))
-ratios.append(Ratio(4, 'Polyvision'))
-
-# Find a Ratio object from a fractional ratio
-def find(ratio):
- for r in ratios:
- if r.ratio == ratio:
- return r
-
- return None
-
-# @return the ith ratio
-def index_to_ratio(i):
- return ratios[i]
-
-# @return the index within the ratios list of a given fractional ratio
-def ratio_to_index(r):
- for i in range(0, len(ratios)):
- if ratios[i].ratio == r:
- return i
-
- return None
+++ /dev/null
-# Screen 1 (untested)
-screen 1
-ratio 1.85
-x 175
-y 100
-width 1550
-height 950
-external 1
-ratio 2.39
-x 0
-y 200
-width 2000
-height 860
-external 1
-
-# Screen 2
-screen 2
-ratio 1.85
-x 175
-y 100
-width 1550
-height 950
-external 1
-ratio 2.39
-x 0
-y 200
-width 2000
-height 860
-external 1
-
-# Screen 3 (untested)
-screen 3
-ratio 1.85
-x 175
-y 100
-width 1550
-height 950
-external 1
-ratio 2.39
-x 0
-y 200
-width 2000
-height 860
-external 1
-
-# Carl's Laptop
-screen laptop
-ratio 1.85
-x 0
-y 0
-width 1366
-height 738
-ratio 2.39
-x 0
-y 0
-width 1366
-height 572
-ratio 1.78
-x 0
-y 0
-width 1366
-height 767
+++ /dev/null
-#!/usr/bin/python
-
-class Screen:
- def __init__(self):
- self.name = None
- self.formats = []
-
-class Format:
- def __init__(self):
- self.ratio = None
- self.x = None
- self.y = None
- self.width = None
- self.height = None
- self.external = False
-
-class Screens:
- def __init__(self, file):
-
- self.screens = []
-
- f = open(file, 'r')
- current_screen = None
- current_format = None
- while 1:
- l = f.readline()
- if l == '':
- break
- if len(l) > 0 and l[0] == '#':
- continue
-
- s = l.strip()
-
- if len(s) == 0:
- continue
-
- b = s.split()
-
- if len(b) != 2:
- print "WARNING: ignored line `%s' in screens file" % (s)
- continue
-
- if b[0] == 'screen':
- if current_format is not None:
- current_screen.formats.append(current_format)
- current_format = None
-
- if current_screen is not None:
- self.screens.append(current_screen)
- current_screen = None
-
- current_screen = Screen()
- current_screen.name = b[1]
- elif b[0] == 'ratio':
- if current_format is not None:
- current_screen.formats.append(current_format)
- current_format = None
-
- current_format = Format()
- current_format.ratio = float(b[1])
- elif b[0] == 'x':
- current_format.x = int(b[1])
- elif b[0] == 'y':
- current_format.y = int(b[1])
- elif b[0] == 'width':
- current_format.width = int(b[1])
- elif b[0] == 'height':
- current_format.height = int(b[1])
- elif b[0] == 'external':
- current_format.external = int(b[1]) == 1
-
- if current_format is not None:
- current_screen.formats.append(current_format)
-
- if current_screen is not None:
- self.screens.append(current_screen)
-
- def get_format(self, screen, ratio):
- for s in self.screens:
- if s.name == screen:
- for f in s.formats:
- if f.ratio == ratio:
- return f
-
- return None
+++ /dev/null
-# GUI to display thumbnails and allow cropping
-# to be set up
-
-import os
-import sys
-import pygtk
-pygtk.require('2.0')
-import gtk
-import film
-import player
-
-class Thumbs(gtk.Dialog):
- def __init__(self, film):
- gtk.Dialog.__init__(self)
- self.film = film
- self.controls = gtk.Table()
- self.controls.set_col_spacings(4)
- self.thumb_adj = gtk.Adjustment(0, 0, self.film.thumbs() - 1, 1, 10)
- self.add_control("Thumbnail", self.thumb_adj, 0)
- self.left_crop_adj = gtk.Adjustment(self.film.left_crop, 0, 1024, 1, 128)
- self.add_control("Left crop", self.left_crop_adj, 1)
- self.right_crop_adj = gtk.Adjustment(self.film.right_crop, 0, 1024, 1, 128)
- self.add_control("Right crop", self.right_crop_adj, 2)
- self.top_crop_adj = gtk.Adjustment(self.film.top_crop, 0, 1024, 1, 128)
- self.add_control("Top crop", self.top_crop_adj, 3)
- self.bottom_crop_adj = gtk.Adjustment(self.film.bottom_crop, 0, 1024, 1, 128)
- self.add_control("Bottom crop", self.bottom_crop_adj, 4)
- self.display_image = gtk.Image()
- self.update_display()
- window_box = gtk.HBox()
- window_box.set_spacing(12)
-
- controls_vbox = gtk.VBox()
- controls_vbox.set_spacing(4)
- controls_vbox.pack_start(self.controls, False, False)
-
- window_box.pack_start(controls_vbox, True, True)
- window_box.pack_start(self.display_image)
-
- self.set_title("%s Thumbnails" % film.name)
- self.get_content_area().add(window_box)
- self.add_button("Close", gtk.RESPONSE_ACCEPT)
- self.show_all()
-
- for a in [self.thumb_adj, self.left_crop_adj, self.right_crop_adj, self.top_crop_adj, self.bottom_crop_adj]:
- a.connect('value-changed', self.update_display, self)
-
- def add_control(self, name, adj, n):
- l = gtk.Label(name)
- l.set_alignment(1, 0.5)
- self.controls.attach(l, 0, 1, n, n + 1)
- s = gtk.SpinButton(adj)
- self.controls.attach(s, 1, 2, n, n + 1)
-
- def update_display(self, a = None, b = None):
- thumb_pixbuf = gtk.gdk.pixbuf_new_from_file(self.film.thumb(self.thumb_adj.get_value()))
- self.width = thumb_pixbuf.get_width()
- self.height = thumb_pixbuf.get_height()
- left = self.left_crop()
- right = self.right_crop()
- top = self.top_crop()
- bottom = self.bottom_crop()
- pixbuf = thumb_pixbuf.subpixbuf(left, top, self.width - left - right, self.height - top - bottom)
- self.display_image.set_from_pixbuf(pixbuf)
-
- def top_crop(self):
- return int(self.top_crop_adj.get_value())
-
- def bottom_crop(self):
- return int(self.bottom_crop_adj.get_value())
-
- def left_crop(self):
- return int(self.left_crop_adj.get_value())
-
- def right_crop(self):
- return int(self.right_crop_adj.get_value())
+++ /dev/null
-
-def s_to_hms(s):
- m = int(s / 60)
- s -= (m * 60)
- h = int(m / 60)
- m -= (h * 60)
- return (h, m, s)
+++ /dev/null
-Recommended 1680 x 1050, 60 fps
-xrandr --output HDMI1 --mode 0xbc
-
-List modes
-xrandr --verbose -q
-
-2048 x 1024, 24 fps
-xrandr --output HDMI1 --mode 0xd1
-
-cvt <xres> <yres> <fps>
-to give modeline, then
-xrandr --newmode modeline
-then add
-xrandr --verbose --addmode HDMI1 modename
-then activate
-xrandr --output HDMI1 --mode foo
-
+++ /dev/null
-#!/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 $*
-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
*/
-#ifndef DVDOMATIC_AUDIO_ANALYSIS_H
-#define DVDOMATIC_AUDIO_ANALYSIS_H
+#ifndef DCPOMATIC_AUDIO_ANALYSIS_H
+#define DCPOMATIC_AUDIO_ANALYSIS_H
#include <iostream>
#include <vector>
*/
-#ifndef DVDOMATIC_AUDIO_CONTENT_H
-#define DVDOMATIC_AUDIO_CONTENT_H
+#ifndef DCPOMATIC_AUDIO_CONTENT_H
+#define DCPOMATIC_AUDIO_CONTENT_H
#include "content.h"
#include "util.h"
* @brief Parent class for audio decoders.
*/
-#ifndef DVDOMATIC_AUDIO_DECODER_H
-#define DVDOMATIC_AUDIO_DECODER_H
+#ifndef DCPOMATIC_AUDIO_DECODER_H
+#define DCPOMATIC_AUDIO_DECODER_H
#include "audio_source.h"
#include "decoder.h"
*/
-#ifndef DVDOMATIC_AUDIO_MAPPING_H
-#define DVDOMATIC_AUDIO_MAPPING_H
+#ifndef DCPOMATIC_AUDIO_MAPPING_H
+#define DCPOMATIC_AUDIO_MAPPING_H
#include <list>
#include <string>
*/
-#ifndef DVDOMATIC_AUDIO_SINK_H
-#define DVDOMATIC_AUDIO_SINK_H
+#ifndef DCPOMATIC_AUDIO_SINK_H
+#define DCPOMATIC_AUDIO_SINK_H
class AudioSink
{
* @brief Parent class for classes which emit audio data.
*/
-#ifndef DVDOMATIC_AUDIO_SOURCE_H
-#define DVDOMATIC_AUDIO_SOURCE_H
+#ifndef DCPOMATIC_AUDIO_SOURCE_H
+#define DCPOMATIC_AUDIO_SOURCE_H
#include <boost/signals2.hpp>
boost::filesystem::path p;
p /= g_get_user_config_dir ();
if (old) {
- p /= ".dvdomatic";
+ p /= ".dcpomatic";
} else {
- p /= ".dvdomatic.xml";
+ p /= ".dcpomatic.xml";
}
return p.string ();
}
* @brief Class holding configuration.
*/
-#ifndef DVDOMATIC_CONFIG_H
-#define DVDOMATIC_CONFIG_H
+#ifndef DCPOMATIC_CONFIG_H
+#define DCPOMATIC_CONFIG_H
#include <vector>
#include <boost/shared_ptr.hpp>
*/
-#ifndef DVDOMATIC_CONTENT_H
-#define DVDOMATIC_CONTENT_H
+#ifndef DCPOMATIC_CONTENT_H
+#define DCPOMATIC_CONTENT_H
#include <boost/filesystem.hpp>
#include <boost/signals2.hpp>
*/
#include "cross.h"
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
#include <unistd.h>
#endif
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
#include "windows.h"
#endif
void
-dvdomatic_sleep (int s)
+dcpomatic_sleep (int s)
{
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
sleep (s);
#endif
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
Sleep (s * 1000);
#endif
}
*/
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
#define WEXITSTATUS(w) (w)
#endif
-void dvdomatic_sleep (int);
+void dcpomatic_sleep (int);
*/
-#ifndef DVDOMATIC_DCI_METADATA_H
-#define DVDOMATIC_DCI_METADATA_H
+#ifndef DCPOMATIC_DCI_METADATA_H
+#define DCPOMATIC_DCI_METADATA_H
#include <string>
#include <libxml++/libxml++.h>
*/
-#ifndef DVDOMATIC_DCP_CONTENT_TYPE_H
-#define DVDOMATIC_DCP_CONTENT_TYPE_H
+#ifndef DCPOMATIC_DCP_CONTENT_TYPE_H
+#define DCPOMATIC_DCP_CONTENT_TYPE_H
/** @file src/content_type.h
* @brief A description of the type of content for a DCP (e.g. feature, trailer etc.)
_parameters->tcp_numlayers++;
_parameters->cp_disto_alloc = 1;
_parameters->cp_rsiz = CINEMA2K;
- _parameters->cp_comment = strdup (N_("DVD-o-matic"));
+ _parameters->cp_comment = strdup (N_("DCP-o-matic"));
_parameters->cp_cinema = CINEMA2K_24;
/* 3 components, so use MCT */
* @brief Parent class for decoders of content.
*/
-#ifndef DVDOMATIC_DECODER_H
-#define DVDOMATIC_DECODER_H
+#ifndef DCPOMATIC_DECODER_H
+#define DCPOMATIC_DECODER_H
#include <vector>
#include <string>
}
if (remote_backoff > 0) {
- dvdomatic_sleep (remote_backoff);
+ dcpomatic_sleep (remote_backoff);
}
lock.lock ();
*/
-#ifndef DVDOMATIC_ENCODER_H
-#define DVDOMATIC_ENCODER_H
+#ifndef DCPOMATIC_ENCODER_H
+#define DCPOMATIC_ENCODER_H
/** @file src/encoder.h
* @brief Encoder to J2K and WAV for DCP.
*/
-#ifndef DVDOMATIC_EXCEPTIONS_H
-#define DVDOMATIC_EXCEPTIONS_H
+#ifndef DCPOMATIC_EXCEPTIONS_H
+#define DCPOMATIC_EXCEPTIONS_H
/** @file src/exceptions.h
* @brief Our exceptions.
*/
-#ifndef DVDOMATIC_FFMPEG_CONTENT_H
-#define DVDOMATIC_FFMPEG_CONTENT_H
+#ifndef DCPOMATIC_FFMPEG_CONTENT_H
+#define DCPOMATIC_FFMPEG_CONTENT_H
#include <boost/enable_shared_from_this.hpp>
#include "video_content.h"
throw BadSettingError (_("name"), _("cannot contain slashes"));
}
- log()->log (String::compose ("DVD-o-matic %1 git %2 using %3", dvdomatic_version, dvdomatic_git_commit, dependency_version_summary()));
+ log()->log (String::compose ("DCP-o-matic %1 git %2 using %3", dcpomatic_version, dcpomatic_git_commit, dependency_version_summary()));
{
char buffer[128];
// log()->log (String::compose ("Content at %1 fps, DCP at %2 fps", source_frame_rate(), dcp_frame_rate()));
log()->log (String::compose ("%1 threads", Config::instance()->num_local_encoding_threads()));
log()->log (String::compose ("J2K bandwidth %1", j2k_bandwidth()));
-#ifdef DVDOMATIC_DEBUG
- log()->log ("DVD-o-matic built in debug mode.");
+#ifdef DCPOMATIC_DEBUG
+ log()->log ("DCP-o-matic built in debug mode.");
#else
- log()->log ("DVD-o-matic built in optimised mode.");
+ log()->log ("DCP-o-matic built in optimised mode.");
#endif
#ifdef LIBDCP_DEBUG
log()->log ("libdcp built in debug mode.");
boost::mutex::scoped_lock lm (_state_mutex);
if (boost::filesystem::exists (file ("metadata")) && !boost::filesystem::exists (file ("metadata.xml"))) {
- throw StringError (_("This film was created with an older version of DVD-o-matic, and unfortunately it cannot be loaded into this version. You will need to create a new Film, re-add your content and set it up again. Sorry!"));
+ throw StringError (_("This film was created with an older version of DCP-o-matic, and unfortunately it cannot be loaded into this version. You will need to create a new Film, re-add your content and set it up again. Sorry!"));
}
cxml::File f (file ("metadata.xml"), "Metadata");
* how they should be presented in a DCP.
*/
-#ifndef DVDOMATIC_FILM_H
-#define DVDOMATIC_FILM_H
+#ifndef DCPOMATIC_FILM_H
+#define DCPOMATIC_FILM_H
#include <string>
#include <vector>
/** Mutex for _directory */
mutable boost::mutex _directory_mutex;
- /** Name for DVD-o-matic */
+ /** Name for DCP-o-matic */
std::string _name;
/** True if a auto-generated DCI-compliant name should be used for our DCP */
bool _use_dci_name;
* @brief A class to describe one of FFmpeg's video or post-processing filters.
*/
-#ifndef DVDOMATIC_FILTER_H
-#define DVDOMATIC_FILTER_H
+#ifndef DCPOMATIC_FILTER_H
+#define DCPOMATIC_FILTER_H
#include <string>
#include <vector>
* @brief A graph of FFmpeg filters.
*/
-#ifndef DVDOMATIC_FILTER_GRAPH_H
-#define DVDOMATIC_FILTER_GRAPH_H
+#ifndef DCPOMATIC_FILTER_GRAPH_H
+#define DCPOMATIC_FILTER_GRAPH_H
#include "util.h"
#include "ffmpeg_compatibility.h"
#include <libintl.h>
-#define _(x) dgettext ("libdvdomatic", x)
+#define _(x) dgettext ("libdcpomatic", x)
#define N_(x) x
* @brief A set of classes to describe video images.
*/
-#ifndef DVDOMATIC_IMAGE_H
-#define DVDOMATIC_IMAGE_H
+#ifndef DCPOMATIC_IMAGE_H
+#define DCPOMATIC_IMAGE_H
#include <string>
#include <boost/shared_ptr.hpp>
set_state (FINISHED_ERROR);
set_error (
e.what (),
- _("It is not known what caused this error. The best idea is to report the problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)")
);
} catch (...) {
set_state (FINISHED_ERROR);
set_error (
_("Unknown error"),
- _("It is not known what caused this error. The best idea is to report the problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)")
);
}
* @brief A parent class to represent long-running tasks which are run in their own thread.
*/
-#ifndef DVDOMATIC_JOB_H
-#define DVDOMATIC_JOB_H
+#ifndef DCPOMATIC_JOB_H
+#define DCPOMATIC_JOB_H
#include <string>
#include <boost/thread/mutex.hpp>
}
}
- dvdomatic_sleep (1);
+ dcpomatic_sleep (1);
}
}
*/
-#ifndef DVDOMATIC_LOG_H
-#define DVDOMATIC_LOG_H
+#ifndef DCPOMATIC_LOG_H
+#define DCPOMATIC_LOG_H
/** @file src/log.h
* @brief A very simple logging class.
*/
-#ifndef DVDOMATIC_PLAYER_H
-#define DVDOMATIC_PLAYER_H
+#ifndef DCPOMATIC_PLAYER_H
+#define DCPOMATIC_PLAYER_H
#include <list>
#include <boost/shared_ptr.hpp>
#
msgid ""
msgstr ""
-"Project-Id-Version: LIBDVDOMATIC\n"
+"Project-Id-Version: LIBDCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-04-02 19:10-0500\n"
#: src/lib/job.cc:92 src/lib/job.cc:101
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Error desconocido. La mejor idea es informar del problema a la lista de "
-"correo de DVD-O-matic (dvdomatic@carlh.net)"
+"correo de DCP-o-matic (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-03-20 00:39+0100\n"
#: src/lib/job.cc:92 src/lib/job.cc:101
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
-"Erreur indéterminée. Merci de rapporter le problème à la liste DVD-o-matic "
-"(dvdomatic@carlh.net)"
+"Erreur indéterminée. Merci de rapporter le problème à la liste DCP-o-matic "
+"(dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
#: src/lib/job.cc:92 src/lib/job.cc:101
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Non sappiamo cosa ha causato questo errore. La cosa migliore è inviare un "
-"report del problema alla mailing list di DVD-o-matic (dvdomatic@carlh.net)"
+"report del problema alla mailing list di DCP-o-matic (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-04-09 10:13+0100\n"
#: src/lib/job.cc:92 src/lib/job.cc:101
msgid ""
"It is not known what caused this error. The best idea is to report the "
-"problem to the DVD-o-matic mailing list (dvdomatic@carlh.net)"
+"problem to the DCP-o-matic mailing list (dcpomatic@carlh.net)"
msgstr ""
"Det är inte känt vad som orsakade detta fel. Bästa sättet att rapportera "
-"problemet är till DVD-o-matics mejl-lista (dvdomatic@carlh.net)"
+"problemet är till DCP-o-matics mejl-lista (dcpomatic@carlh.net)"
#: src/lib/filter.cc:82
msgid "Kernel deinterlacer"
* @brief Parent class for classes which accept and then emit video or audio data.
*/
-#ifndef DVDOMATIC_PROCESSOR_H
-#define DVDOMATIC_PROCESSOR_H
+#ifndef DCPOMATIC_PROCESSOR_H
+#define DCPOMATIC_PROCESSOR_H
#include "video_source.h"
#include "video_sink.h"
* @brief A class to describe one of FFmpeg's software scalers.
*/
-#ifndef DVDOMATIC_SCALER_H
-#define DVDOMATIC_SCALER_H
+#ifndef DCPOMATIC_SCALER_H
+#define DCPOMATIC_SCALER_H
#include <string>
#include <vector>
* @brief A class to describe a sound processor.
*/
-#ifndef DVDOMATIC_SOUND_PROCESSOR_H
-#define DVDOMATIC_SOUND_PROCESSOR_H
+#ifndef DCPOMATIC_SOUND_PROCESSOR_H
+#define DCPOMATIC_SOUND_PROCESSOR_H
#include <string>
#include <vector>
* @brief Some timing classes for debugging and profiling.
*/
-#ifndef DVDOMATIC_TIMER_H
-#define DVDOMATIC_TIMER_H
+#ifndef DCPOMATIC_TIMER_H
+#define DCPOMATIC_TIMER_H
#include <string>
#include <map>
*/
-#ifndef DVDOMATIC_TYPES_H
-#define DVDOMATIC_TYPES_H
+#ifndef DCPOMATIC_TYPES_H
+#define DCPOMATIC_TYPES_H
#include <vector>
#include <boost/shared_ptr.hpp>
*/
-#ifndef DVDOMATIC_UI_SIGNALLER_H
-#define DVDOMATIC_UI_SIGNALLER_H
+#ifndef DCPOMATIC_UI_SIGNALLER_H
+#define DCPOMATIC_UI_SIGNALLER_H
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <iostream>
#include <fstream>
#include <climits>
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
#include <execinfo.h>
#include <cxxabi.h>
#endif
return ap.str ();
}
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
/** @param l Mangled C++ identifier.
* @return Demangled version.
*/
return t.tv_sec + (double (t.tv_usec) / 1e6);
}
-/** Call the required functions to set up DVD-o-matic's static arrays, etc.
+/** Call the required functions to set up DCP-o-matic's static arrays, etc.
* Must be called from the UI thread, if there is one.
*/
void
-dvdomatic_setup ()
+dcpomatic_setup ()
{
avfilter_register_all ();
ui_thread = boost::this_thread::get_id ();
}
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
boost::filesystem::path
mo_path ()
{
#endif
void
-dvdomatic_setup_i18n (string lang)
+dcpomatic_setup_i18n (string lang)
{
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
lang += ".UTF8";
#endif
}
setlocale (LC_ALL, "");
- textdomain ("libdvdomatic");
+ textdomain ("libdcpomatic");
-#ifdef DVDOMATIC_WINDOWS
- bindtextdomain ("libdvdomatic", mo_path().string().c_str());
- bind_textdomain_codeset ("libdvdomatic", "UTF8");
+#ifdef DCPOMATIC_WINDOWS
+ bindtextdomain ("libdcpomatic", mo_path().string().c_str());
+ bind_textdomain_codeset ("libdcpomatic", "UTF8");
#endif
-#ifdef DVDOMATIC_POSIX
- bindtextdomain ("libdvdomatic", POSIX_LOCALE_PREFIX);
+#ifdef DCPOMATIC_POSIX
+ bindtextdomain ("libdcpomatic", POSIX_LOCALE_PREFIX);
#endif
}
pair<string, int> info;
info.second = 0;
-#ifdef DVDOMATIC_POSIX
+#ifdef DCPOMATIC_POSIX
ifstream f (N_("/proc/cpuinfo"));
while (f.good ()) {
string l;
* @brief Some utility functions and classes.
*/
-#ifndef DVDOMATIC_UTIL_H
-#define DVDOMATIC_UTIL_H
+#ifndef DCPOMATIC_UTIL_H
+#define DCPOMATIC_UTIL_H
#include <string>
#include <vector>
#include "compose.hpp"
#include "types.h"
-#ifdef DVDOMATIC_DEBUG
+#ifdef DCPOMATIC_DEBUG
#define TIMING(...) _film->log()->microsecond_log (String::compose (__VA_ARGS__), Log::TIMING);
#else
#define TIMING(...)
extern void stacktrace (std::ostream &, int);
extern std::string dependency_version_summary ();
extern double seconds (struct timeval);
-extern void dvdomatic_setup ();
-extern void dvdomatic_setup_i18n (std::string);
+extern void dcpomatic_setup ();
+extern void dcpomatic_setup_i18n (std::string);
extern std::vector<std::string> split_at_spaces_considering_quotes (std::string);
extern std::string md5_digest (boost::filesystem::path);
extern std::string md5_digest (void const *, int);
extern void ensure_ui_thread ();
extern std::string audio_channel_name (int);
-#ifdef DVDOMATIC_WINDOWS
+#ifdef DCPOMATIC_WINDOWS
extern boost::filesystem::path mo_path ();
#endif
/** @class Socket
* @brief A class to wrap a boost::asio::ip::tcp::socket with some things
- * that are useful for DVD-o-matic.
+ * that are useful for DCP-o-matic.
*
* This class wraps some things that I could not work out how to do with boost;
* most notably, sync read/write calls with timeouts.
-extern char const * dvdomatic_version;
-extern char const * dvdomatic_git_commit;
+extern char const * dcpomatic_version;
+extern char const * dcpomatic_git_commit;
*/
-#ifndef DVDOMATIC_VIDEO_CONTENT_H
-#define DVDOMATIC_VIDEO_CONTENT_H
+#ifndef DCPOMATIC_VIDEO_CONTENT_H
+#define DCPOMATIC_VIDEO_CONTENT_H
#include "content.h"
#include "util.h"
*/
-#ifndef DVDOMATIC_VIDEO_DECODER_H
-#define DVDOMATIC_VIDEO_DECODER_H
+#ifndef DCPOMATIC_VIDEO_DECODER_H
+#define DCPOMATIC_VIDEO_DECODER_H
#include "video_source.h"
#include "decoder.h"
*/
-#ifndef DVDOMATIC_VIDEO_SINK_H
-#define DVDOMATIC_VIDEO_SINK_H
+#ifndef DCPOMATIC_VIDEO_SINK_H
+#define DCPOMATIC_VIDEO_SINK_H
#include <boost/shared_ptr.hpp>
#include "util.h"
* @brief Parent class for classes which emit video data.
*/
-#ifndef DVDOMATIC_VIDEO_SOURCE_H
-#define DVDOMATIC_VIDEO_SOURCE_H
+#ifndef DCPOMATIC_VIDEO_SOURCE_H
+#define DCPOMATIC_VIDEO_SOURCE_H
#include <boost/shared_ptr.hpp>
#include <boost/signals2.hpp>
else:
obj = bld(features = 'cxx cxxshlib')
- obj.name = 'libdvdomatic'
+ obj.name = 'libdcpomatic'
obj.export_includes = ['.']
obj.uselib = """
AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE
if bld.env.STATIC:
obj.uselib += ' XML++'
obj.source = sources + " version.cc"
- obj.target = 'dvdomatic'
+ obj.target = 'dcpomatic'
- i18n.po_to_mo(os.path.join('src', 'lib'), 'libdvdomatic', bld)
+ i18n.po_to_mo(os.path.join('src', 'lib'), 'libdcpomatic', bld)
def pot(bld):
- i18n.pot(os.path.join('src', 'lib'), sources, 'libdvdomatic')
+ i18n.pot(os.path.join('src', 'lib'), sources, 'libdcpomatic')
def pot_merge(bld):
- i18n.pot_merge(os.path.join('src', 'lib'), 'libdvdomatic')
+ i18n.pot_merge(os.path.join('src', 'lib'), 'libdcpomatic')
+++ /dev/null
-/*
- Copyright (C) 2012 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 <iostream>
-#include <boost/filesystem.hpp>
-#ifdef __WXMSW__
-#include <shellapi.h>
-#endif
-#include <wx/aboutdlg.h>
-#include <wx/stdpaths.h>
-#include <wx/cmdline.h>
-#include "wx/film_viewer.h"
-#include "wx/film_editor.h"
-#include "wx/job_manager_view.h"
-#include "wx/config_dialog.h"
-#include "wx/job_wrapper.h"
-#include "wx/wx_util.h"
-#include "wx/new_film_dialog.h"
-#include "wx/properties_dialog.h"
-#include "wx/wx_ui_signaller.h"
-#include "lib/film.h"
-#include "lib/format.h"
-#include "lib/config.h"
-#include "lib/filter.h"
-#include "lib/util.h"
-#include "lib/scaler.h"
-#include "lib/exceptions.h"
-#include "lib/version.h"
-#include "lib/ui_signaller.h"
-#include "lib/log.h"
-
-using std::cout;
-using std::string;
-using std::wstring;
-using std::stringstream;
-using std::map;
-using std::make_pair;
-using std::exception;
-using boost::shared_ptr;
-
-static FilmEditor* film_editor = 0;
-static FilmViewer* film_viewer = 0;
-static shared_ptr<Film> film;
-static std::string log_level;
-static std::string film_to_load;
-static std::string film_to_create;
-static wxMenu* jobs_menu = 0;
-static wxLocale* locale = 0;
-
-static void set_menu_sensitivity ();
-
-class FilmChangedDialog
-{
-public:
- FilmChangedDialog ()
- {
- _dialog = new wxMessageDialog (
- 0,
- wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (film->name ()).data()),
- _("Film changed"),
- wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
- );
- }
-
- ~FilmChangedDialog ()
- {
- _dialog->Destroy ();
- }
-
- int run ()
- {
- return _dialog->ShowModal ();
- }
-
-private:
- wxMessageDialog* _dialog;
-};
-
-
-void
-maybe_save_then_delete_film ()
-{
- if (!film) {
- return;
- }
-
- if (film->dirty ()) {
- FilmChangedDialog d;
- switch (d.run ()) {
- case wxID_NO:
- break;
- case wxID_YES:
- film->write_metadata ();
- break;
- }
- }
-
- film.reset ();
-}
-
-enum Sensitivity {
- ALWAYS,
- NEEDS_FILM
-};
-
-map<wxMenuItem*, Sensitivity> menu_items;
-
-void
-add_item (wxMenu* menu, wxString text, int id, Sensitivity sens)
-{
- wxMenuItem* item = menu->Append (id, text);
- menu_items.insert (make_pair (item, sens));
-}
-
-void
-set_menu_sensitivity ()
-{
- for (map<wxMenuItem*, Sensitivity>::iterator i = menu_items.begin(); i != menu_items.end(); ++i) {
- if (i->second == NEEDS_FILM) {
- i->first->Enable (film != 0);
- } else {
- i->first->Enable (true);
- }
- }
-}
-
-enum {
- ID_file_new = 1,
- ID_file_open,
- ID_file_save,
- ID_file_properties,
- ID_file_quit,
- ID_edit_preferences,
- ID_jobs_make_dcp,
- ID_jobs_send_dcp_to_tms,
- ID_jobs_show_dcp,
- ID_jobs_analyse_audio,
- ID_help_about
-};
-
-void
-setup_menu (wxMenuBar* m)
-{
- wxMenu* file = new wxMenu;
- add_item (file, _("New..."), ID_file_new, ALWAYS);
- add_item (file, _("&Open..."), ID_file_open, ALWAYS);
- file->AppendSeparator ();
- add_item (file, _("&Save"), ID_file_save, NEEDS_FILM);
- file->AppendSeparator ();
- add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM);
- file->AppendSeparator ();
- add_item (file, _("&Quit"), ID_file_quit, ALWAYS);
-
- wxMenu* edit = new wxMenu;
- add_item (edit, _("&Preferences..."), ID_edit_preferences, ALWAYS);
-
- jobs_menu = new wxMenu;
- add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM);
- add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM);
- add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM);
- jobs_menu->AppendSeparator ();
- add_item (jobs_menu, _("&Analyse audio"), ID_jobs_analyse_audio, NEEDS_FILM);
-
- wxMenu* help = new wxMenu;
- add_item (help, _("About"), ID_help_about, ALWAYS);
-
- m->Append (file, _("&File"));
- m->Append (edit, _("&Edit"));
- m->Append (jobs_menu, _("&Jobs"));
- m->Append (help, _("&Help"));
-}
-
-bool
-window_closed (wxCommandEvent &)
-{
- maybe_save_then_delete_film ();
- return false;
-}
-
-class Frame : public wxFrame
-{
-public:
- Frame (wxString const & title)
- : wxFrame (NULL, -1, title)
- {
- wxMenuBar* bar = new wxMenuBar;
- setup_menu (bar);
- SetMenuBar (bar);
-
- Connect (ID_file_new, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_new));
- Connect (ID_file_open, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_open));
- Connect (ID_file_save, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_save));
- Connect (ID_file_properties, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_properties));
- Connect (ID_file_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_quit));
- Connect (ID_edit_preferences, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::edit_preferences));
- Connect (ID_jobs_make_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_make_dcp));
- Connect (ID_jobs_send_dcp_to_tms, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_send_dcp_to_tms));
- Connect (ID_jobs_show_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_show_dcp));
- Connect (ID_jobs_analyse_audio, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_analyse_audio));
- Connect (ID_help_about, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about));
-
- Connect (wxID_ANY, wxEVT_MENU_OPEN, wxMenuEventHandler (Frame::menu_opened));
-
- wxPanel* panel = new wxPanel (this);
- wxSizer* s = new wxBoxSizer (wxHORIZONTAL);
- s->Add (panel, 1, wxEXPAND);
- SetSizer (s);
-
- film_editor = new FilmEditor (film, panel);
- film_viewer = new FilmViewer (film, panel);
- JobManagerView* job_manager_view = new JobManagerView (panel);
-
- _top_sizer = new wxBoxSizer (wxHORIZONTAL);
- _top_sizer->Add (film_editor, 0, wxALL, 6);
- _top_sizer->Add (film_viewer, 1, wxEXPAND | wxALL, 6);
-
- wxBoxSizer* main_sizer = new wxBoxSizer (wxVERTICAL);
- main_sizer->Add (_top_sizer, 2, wxEXPAND | wxALL, 6);
- main_sizer->Add (job_manager_view, 1, wxEXPAND | wxALL, 6);
- panel->SetSizer (main_sizer);
-
- set_menu_sensitivity ();
-
- film_editor->FileChanged.connect (bind (&Frame::file_changed, this, _1));
- if (film) {
- file_changed (film->directory ());
- } else {
- file_changed ("");
- }
-
- set_film ();
-
- film_editor->Connect (wxID_ANY, wxEVT_SIZE, wxSizeEventHandler (Frame::film_editor_sized), 0, this);
- }
-
-private:
-
- void film_editor_sized (wxSizeEvent &)
- {
- static bool in_layout = false;
- if (!in_layout) {
- in_layout = true;
- _top_sizer->Layout ();
- in_layout = false;
- }
- }
-
- void menu_opened (wxMenuEvent& ev)
- {
- if (ev.GetMenu() != jobs_menu) {
- return;
- }
-
- bool const have_dcp = film && film->have_dcp();
- jobs_menu->Enable (ID_jobs_send_dcp_to_tms, have_dcp);
- jobs_menu->Enable (ID_jobs_show_dcp, have_dcp);
- }
-
- void set_film ()
- {
- film_viewer->set_film (film);
- film_editor->set_film (film);
- set_menu_sensitivity ();
- }
-
- void file_changed (string f)
- {
- stringstream s;
- s << wx_to_std (_("DVD-o-matic"));
- if (!f.empty ()) {
- s << " - " << f;
- }
-
- SetTitle (std_to_wx (s.str()));
- }
-
- void file_new (wxCommandEvent &)
- {
- NewFilmDialog* d = new NewFilmDialog (this);
- int const r = d->ShowModal ();
-
- if (r == wxID_OK) {
-
- if (boost::filesystem::exists (d->get_path())) {
- error_dialog (this, std_to_wx (String::compose (wx_to_std (_("The directory %1 already exists.")), d->get_path().c_str())));
- return;
- }
-
- maybe_save_then_delete_film ();
- film.reset (new Film (d->get_path (), false));
- film->log()->set_level (log_level);
- film->set_name (boost::filesystem::path (d->get_path()).filename().generic_string());
- set_film ();
- }
-
- d->Destroy ();
- }
-
- void file_open (wxCommandEvent &)
- {
- wxDirDialog* c = new wxDirDialog (this, _("Select film to open"), wxStandardPaths::Get().GetDocumentsDir(), wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST);
- int r;
- while (1) {
- r = c->ShowModal ();
- if (r == wxID_OK && c->GetPath() == wxStandardPaths::Get().GetDocumentsDir()) {
- error_dialog (this, _("You did not select a folder. Make sure that you select a folder before clicking Open."));
- } else {
- break;
- }
- }
-
- if (r == wxID_OK) {
- maybe_save_then_delete_film ();
- try {
- film.reset (new Film (wx_to_std (c->GetPath ())));
- film->log()->set_level (log_level);
- set_film ();
- } catch (std::exception& e) {
- wxString p = c->GetPath ();
- wxCharBuffer b = p.ToUTF8 ();
- error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data()));
- }
- }
-
- c->Destroy ();
- }
-
- void file_save (wxCommandEvent &)
- {
- film->write_metadata ();
- }
-
- void file_properties (wxCommandEvent &)
- {
- PropertiesDialog* d = new PropertiesDialog (this, film);
- d->ShowModal ();
- d->Destroy ();
- }
-
- void file_quit (wxCommandEvent &)
- {
- maybe_save_then_delete_film ();
- Close (true);
- }
-
- void edit_preferences (wxCommandEvent &)
- {
- ConfigDialog* d = new ConfigDialog (this);
- d->ShowModal ();
- d->Destroy ();
- Config::instance()->write ();
- }
-
- void jobs_make_dcp (wxCommandEvent &)
- {
- JobWrapper::make_dcp (this, film);
- }
-
- void jobs_send_dcp_to_tms (wxCommandEvent &)
- {
- film->send_dcp_to_tms ();
- }
-
- void jobs_show_dcp (wxCommandEvent &)
- {
-#ifdef __WXMSW__
- string d = film->directory();
- wstring w;
- w.assign (d.begin(), d.end());
- ShellExecute (0, L"open", w.c_str(), 0, 0, SW_SHOWDEFAULT);
-#else
- int r = system ("which nautilus");
- if (WEXITSTATUS (r) == 0) {
- system (string ("nautilus " + film->directory()).c_str ());
- } else {
- int r = system ("which konqueror");
- if (WEXITSTATUS (r) == 0) {
- system (string ("konqueror " + film->directory()).c_str ());
- }
- }
-#endif
- }
-
- void jobs_analyse_audio (wxCommandEvent &)
- {
- film->analyse_audio ();
- }
-
- void help_about (wxCommandEvent &)
- {
- wxAboutDialogInfo info;
- info.SetName (_("DVD-o-matic"));
- if (strcmp (dvdomatic_git_commit, "release") == 0) {
- info.SetVersion (std_to_wx (String::compose ("version %1", dvdomatic_version)));
- } else {
- info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dvdomatic_version, dvdomatic_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/dvdomatic"));
- wxAboutBox (info);
- }
-
- wxSizer* _top_sizer;
-};
-
-#if wxMINOR_VERSION == 9
-static const wxCmdLineEntryDesc command_line_description[] = {
- { wxCMD_LINE_OPTION, "l", "log", "set log level (silent, verbose or timing)", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_SWITCH, "n", "new", "create new film", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_PARAM, 0, 0, "film to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 }
-};
-#else
-static const wxCmdLineEntryDesc command_line_description[] = {
- { wxCMD_LINE_OPTION, wxT("l"), wxT("log"), wxT("set log level (silent, verbose or timing)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_SWITCH, wxT("n"), wxT("new"), wxT("create new film"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_PARAM, 0, 0, wxT("film to load or create"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_PARAM_OPTIONAL },
- { wxCMD_LINE_NONE, wxT(""), wxT(""), wxT(""), wxCmdLineParamType (0), 0 }
-};
-#endif
-
-void
-setup_i18n ()
-{
- int language = wxLANGUAGE_DEFAULT;
-
- if (Config::instance()->language()) {
- wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (Config::instance()->language().get()));
- if (li) {
- language = li->Language;
- }
- }
-
- if (wxLocale::IsAvailable (language)) {
- locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT);
-
-#ifdef DVDOMATIC_WINDOWS
- locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
-#endif
-
- locale->AddCatalog (wxT ("libdvdomatic-wx"));
- locale->AddCatalog (wxT ("dvdomatic"));
-
- if (!locale->IsOk()) {
- delete locale;
- locale = new wxLocale (wxLANGUAGE_ENGLISH);
- language = wxLANGUAGE_ENGLISH;
- }
- }
-
- if (locale) {
- dvdomatic_setup_i18n (wx_to_std (locale->GetCanonicalName ()));
- }
-}
-
-class App : public wxApp
-{
- bool OnInit ()
- {
- if (!wxApp::OnInit()) {
- return false;
- }
-
-#ifdef DVDOMATIC_POSIX
- unsetenv ("UBUNTU_MENUPROXY");
-#endif
-
- wxInitAllImageHandlers ();
-
- /* Enable i18n; this will create a Config object
- to look for a force-configured language. This Config
- object will be wrong, however, because dvdomatic_setup
- hasn't yet been called and there aren't any scalers, filters etc.
- set up yet.
- */
- setup_i18n ();
-
- /* Set things up, including scalers / filters etc.
- which will now be internationalised correctly.
- */
- dvdomatic_setup ();
-
- /* Force the configuration to be re-loaded correctly next
- time it is needed.
- */
- Config::drop ();
-
- if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) {
- try {
- film.reset (new Film (film_to_load));
- film->log()->set_level (log_level);
- } catch (exception& e) {
- error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), film_to_load, e.what())));
- }
- }
-
- if (!film_to_create.empty ()) {
- film.reset (new Film (film_to_create, false));
- film->log()->set_level (log_level);
- film->set_name (boost::filesystem::path (film_to_create).filename().generic_string ());
- }
-
- Frame* f = new Frame (_("DVD-o-matic"));
- SetTopWindow (f);
- f->Maximize ();
- f->Show ();
-
- ui_signaller = new wxUISignaller (this);
- this->Connect (-1, wxEVT_IDLE, wxIdleEventHandler (App::idle));
-
- return true;
- }
-
- void OnInitCmdLine (wxCmdLineParser& parser)
- {
- parser.SetDesc (command_line_description);
- parser.SetSwitchChars (wxT ("-"));
- }
-
- bool OnCmdLineParsed (wxCmdLineParser& parser)
- {
- if (parser.GetParamCount() > 0) {
- if (parser.Found (wxT ("new"))) {
- film_to_create = wx_to_std (parser.GetParam (0));
- } else {
- film_to_load = wx_to_std (parser.GetParam(0));
- }
- }
-
- wxString log;
- if (parser.Found (wxT ("log"), &log)) {
- log_level = wx_to_std (log);
- }
-
- return true;
- }
-
- void idle (wxIdleEvent &)
- {
- ui_signaller->ui_idle ();
- }
-};
-
-IMPLEMENT_APP (App)
help (string n)
{
cerr << "Syntax: " << n << " [OPTION] <FILM>\n"
- << " -v, --version show DVD-o-matic version\n"
+ << " -v, --version show DCP-o-matic version\n"
<< " -h, --help show this help\n"
- << " -d, --deps list DVD-o-matic dependency details and quit\n"
+ << " -d, --deps list DCP-o-matic dependency details and quit\n"
<< " -t, --test run in test mode (repeatable UUID generation, timestamps etc.)\n"
<< " -n, --no-progress do not print progress to stdout\n"
<< " -r, --no-remote do not use any remote servers\n"
switch (c) {
case 'v':
- cout << "dvdomatic version " << dvdomatic_version << " " << dvdomatic_git_commit << "\n";
+ cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n";
exit (EXIT_SUCCESS);
case 'h':
help (argv[0]);
film_dir = argv[optind];
- dvdomatic_setup ();
+ dcpomatic_setup ();
if (no_remote) {
Config::instance()->set_servers (vector<ServerDescription*> ());
}
- cout << "DVD-o-matic " << dvdomatic_version << " git " << dvdomatic_git_commit;
+ cout << "DCP-o-matic " << dcpomatic_version << " git " << dcpomatic_git_commit;
char buf[256];
if (gethostname (buf, 256) == 0) {
cout << " on " << buf;
bool error = false;
while (!should_stop) {
- dvdomatic_sleep (5);
+ dcpomatic_sleep (5);
list<shared_ptr<Job> > jobs = JobManager::instance()->get ();
#
msgid ""
msgstr ""
-"Project-Id-Version: DVDOMATIC\n"
+"Project-Id-Version: DCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-03-23 21:08-0500\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
-#: src/tools/dvdomatic.cc:177
+#: src/tools/dcpomatic.cc:177
msgid "&Analyse audio"
msgstr "&Analizar audio"
-#: src/tools/dvdomatic.cc:183
+#: src/tools/dcpomatic.cc:183
msgid "&Edit"
msgstr "&Editar"
-#: src/tools/dvdomatic.cc:182
+#: src/tools/dcpomatic.cc:182
msgid "&File"
msgstr "&Archivo"
-#: src/tools/dvdomatic.cc:185
+#: src/tools/dcpomatic.cc:185
msgid "&Help"
msgstr "&Ayuda"
-#: src/tools/dvdomatic.cc:184
+#: src/tools/dcpomatic.cc:184
msgid "&Jobs"
msgstr "&Tareas"
-#: src/tools/dvdomatic.cc:173
+#: src/tools/dcpomatic.cc:173
msgid "&Make DCP"
msgstr "&Crear DCP"
-#: src/tools/dvdomatic.cc:161
+#: src/tools/dcpomatic.cc:161
msgid "&Open..."
msgstr "&Abrir..."
-#: src/tools/dvdomatic.cc:170
+#: src/tools/dcpomatic.cc:170
msgid "&Preferences..."
msgstr "&Preferencias..."
-#: src/tools/dvdomatic.cc:165
+#: src/tools/dcpomatic.cc:165
msgid "&Properties..."
msgstr "&Propiedades..."
-#: src/tools/dvdomatic.cc:167
+#: src/tools/dcpomatic.cc:167
msgid "&Quit"
msgstr "&Salir"
-#: src/tools/dvdomatic.cc:163
+#: src/tools/dcpomatic.cc:163
msgid "&Save"
msgstr "&Guardar"
-#: src/tools/dvdomatic.cc:174
+#: src/tools/dcpomatic.cc:174
msgid "&Send DCP to TMS"
msgstr "&Enviar DCP al TMS"
-#: src/tools/dvdomatic.cc:417
+#: src/tools/dcpomatic.cc:417
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/tools/dvdomatic.cc:180
+#: src/tools/dcpomatic.cc:180
msgid "About"
msgstr "Acerca de"
-#: src/tools/dvdomatic.cc:527
+#: src/tools/dcpomatic.cc:527
#, fuzzy
msgid "Could not load film %1 (%2)"
msgstr "No se pudo cargar la pelÃcula %s (%s)"
-#: src/tools/dvdomatic.cc:339
+#: src/tools/dcpomatic.cc:339
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "No se pudo cargar la pelÃcula en %s (%s)"
-#: src/tools/dvdomatic.cc:287 src/tools/dvdomatic.cc:410
-#: src/tools/dvdomatic.cc:531
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
+#: src/tools/dcpomatic.cc:531
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/tools/dvdomatic.cc:75
+#: src/tools/dcpomatic.cc:75
msgid "Film changed"
msgstr "PelÃcula cambiada"
-#: src/tools/dvdomatic.cc:416
+#: src/tools/dcpomatic.cc:416
msgid "Free, open-source DCP generation from almost anything."
msgstr ""
"Generación de DCP a partir de casi cualquier fuente, libre y de código "
"abierto."
-#: src/tools/dvdomatic.cc:160
+#: src/tools/dcpomatic.cc:160
msgid "New..."
msgstr "Nuevo..."
-#: src/tools/dvdomatic.cc:175
+#: src/tools/dcpomatic.cc:175
msgid "S&how DCP"
msgstr "&Mostrar DCP"
-#: src/tools/dvdomatic.cc:74
+#: src/tools/dcpomatic.cc:74
msgid "Save changes to film \"%s\" before closing?"
msgstr ""
-#: src/tools/dvdomatic.cc:319
+#: src/tools/dcpomatic.cc:319
msgid "Select film to open"
msgstr "Selecciona la pelÃcula a abrir"
-#: src/tools/dvdomatic.cc:303
+#: src/tools/dcpomatic.cc:303
#, fuzzy
msgid "The directory %1 already exists."
msgstr "La carpeta %s ya existe."
-#: src/tools/dvdomatic.cc:324
+#: src/tools/dcpomatic.cc:324
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-03-13 22:33+0100\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/tools/dvdomatic.cc:177
+#: src/tools/dcpomatic.cc:177
msgid "&Analyse audio"
msgstr "&Analyser le son"
-#: src/tools/dvdomatic.cc:183
+#: src/tools/dcpomatic.cc:183
msgid "&Edit"
msgstr "&Edition"
-#: src/tools/dvdomatic.cc:182
+#: src/tools/dcpomatic.cc:182
msgid "&File"
msgstr "&Fichier"
-#: src/tools/dvdomatic.cc:185
+#: src/tools/dcpomatic.cc:185
msgid "&Help"
msgstr "&Aide"
-#: src/tools/dvdomatic.cc:184
+#: src/tools/dcpomatic.cc:184
msgid "&Jobs"
msgstr "&Travaux"
-#: src/tools/dvdomatic.cc:173
+#: src/tools/dcpomatic.cc:173
msgid "&Make DCP"
msgstr "&Créer le DCP"
-#: src/tools/dvdomatic.cc:161
+#: src/tools/dcpomatic.cc:161
msgid "&Open..."
msgstr "&Ouvrir..."
-#: src/tools/dvdomatic.cc:170
+#: src/tools/dcpomatic.cc:170
msgid "&Preferences..."
msgstr "&Préférences..."
-#: src/tools/dvdomatic.cc:165
+#: src/tools/dcpomatic.cc:165
msgid "&Properties..."
msgstr "&Propriétés..."
-#: src/tools/dvdomatic.cc:167
+#: src/tools/dcpomatic.cc:167
msgid "&Quit"
msgstr "&Quitter"
-#: src/tools/dvdomatic.cc:163
+#: src/tools/dcpomatic.cc:163
msgid "&Save"
msgstr "&Enregistrer"
-#: src/tools/dvdomatic.cc:174
+#: src/tools/dcpomatic.cc:174
msgid "&Send DCP to TMS"
msgstr "&Envoyer le DCP dans le TMS"
-#: src/tools/dvdomatic.cc:417
+#: src/tools/dcpomatic.cc:417
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/tools/dvdomatic.cc:180
+#: src/tools/dcpomatic.cc:180
msgid "About"
msgstr "A Propos"
-#: src/tools/dvdomatic.cc:527
+#: src/tools/dcpomatic.cc:527
#, fuzzy
msgid "Could not load film %1 (%2)"
msgstr "Impossible de charger le film %s (%s)"
-#: src/tools/dvdomatic.cc:339
+#: src/tools/dcpomatic.cc:339
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Impossible d'ouvrir le film à %s (%s)"
-#: src/tools/dvdomatic.cc:287 src/tools/dvdomatic.cc:410
-#: src/tools/dvdomatic.cc:531
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
+#: src/tools/dcpomatic.cc:531
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/tools/dvdomatic.cc:75
+#: src/tools/dcpomatic.cc:75
msgid "Film changed"
msgstr "Film changé"
-#: src/tools/dvdomatic.cc:416
+#: src/tools/dcpomatic.cc:416
msgid "Free, open-source DCP generation from almost anything."
msgstr "Création de DCP libre et open-source à partir de presque tout."
-#: src/tools/dvdomatic.cc:160
+#: src/tools/dcpomatic.cc:160
msgid "New..."
msgstr "Nouveau..."
-#: src/tools/dvdomatic.cc:175
+#: src/tools/dcpomatic.cc:175
msgid "S&how DCP"
msgstr "Voir le DCP"
-#: src/tools/dvdomatic.cc:74
+#: src/tools/dcpomatic.cc:74
msgid "Save changes to film \"%s\" before closing?"
msgstr ""
-#: src/tools/dvdomatic.cc:319
+#: src/tools/dcpomatic.cc:319
msgid "Select film to open"
msgstr "Sélectionner le film à ouvrir"
-#: src/tools/dvdomatic.cc:303
+#: src/tools/dcpomatic.cc:303
#, fuzzy
msgid "The directory %1 already exists."
msgstr "Le dossier %s existe déjà ."
-#: src/tools/dvdomatic.cc:324
+#: src/tools/dcpomatic.cc:324
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
-#: src/tools/dvdomatic.cc:177
+#: src/tools/dcpomatic.cc:177
msgid "&Analyse audio"
msgstr "&Analizza audio"
-#: src/tools/dvdomatic.cc:183
+#: src/tools/dcpomatic.cc:183
msgid "&Edit"
msgstr "&Modifica"
-#: src/tools/dvdomatic.cc:182
+#: src/tools/dcpomatic.cc:182
msgid "&File"
msgstr "&File"
-#: src/tools/dvdomatic.cc:185
+#: src/tools/dcpomatic.cc:185
msgid "&Help"
msgstr "&Aiuto"
-#: src/tools/dvdomatic.cc:184
+#: src/tools/dcpomatic.cc:184
msgid "&Jobs"
msgstr "&Lavori"
-#: src/tools/dvdomatic.cc:173
+#: src/tools/dcpomatic.cc:173
msgid "&Make DCP"
msgstr "&Crea DCP"
-#: src/tools/dvdomatic.cc:161
+#: src/tools/dcpomatic.cc:161
msgid "&Open..."
msgstr "&Apri..."
-#: src/tools/dvdomatic.cc:170
+#: src/tools/dcpomatic.cc:170
msgid "&Preferences..."
msgstr "&Preferenze..."
-#: src/tools/dvdomatic.cc:165
+#: src/tools/dcpomatic.cc:165
msgid "&Properties..."
msgstr "&Proprieta'..."
-#: src/tools/dvdomatic.cc:167
+#: src/tools/dcpomatic.cc:167
msgid "&Quit"
msgstr "&Esci"
-#: src/tools/dvdomatic.cc:163
+#: src/tools/dcpomatic.cc:163
msgid "&Save"
msgstr "&Salva"
-#: src/tools/dvdomatic.cc:174
+#: src/tools/dcpomatic.cc:174
msgid "&Send DCP to TMS"
msgstr "&Invia DCP a TMS"
-#: src/tools/dvdomatic.cc:417
+#: src/tools/dcpomatic.cc:417
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/tools/dvdomatic.cc:180
+#: src/tools/dcpomatic.cc:180
msgid "About"
msgstr "Informazioni"
-#: src/tools/dvdomatic.cc:527
+#: src/tools/dcpomatic.cc:527
msgid "Could not load film %1 (%2)"
msgstr "Non posso caricare il film %s (%s)"
-#: src/tools/dvdomatic.cc:339
+#: src/tools/dcpomatic.cc:339
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Non posso aprire il film in %s (%s)"
-#: src/tools/dvdomatic.cc:287 src/tools/dvdomatic.cc:410
-#: src/tools/dvdomatic.cc:531
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
+#: src/tools/dcpomatic.cc:531
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/tools/dvdomatic.cc:75
+#: src/tools/dcpomatic.cc:75
msgid "Film changed"
msgstr "Film modificato"
-#: src/tools/dvdomatic.cc:416
+#: src/tools/dcpomatic.cc:416
msgid "Free, open-source DCP generation from almost anything."
msgstr "Genera DCP da quasi tutto, free e open-source."
-#: src/tools/dvdomatic.cc:160
+#: src/tools/dcpomatic.cc:160
msgid "New..."
msgstr "Nuovo"
-#: src/tools/dvdomatic.cc:175
+#: src/tools/dcpomatic.cc:175
msgid "S&how DCP"
msgstr "&Mostra DCP"
-#: src/tools/dvdomatic.cc:74
+#: src/tools/dcpomatic.cc:74
msgid "Save changes to film \"%s\" before closing?"
msgstr "Salvare i cambiamenti del film \"%s\" prima di chiudere?"
-#: src/tools/dvdomatic.cc:319
+#: src/tools/dcpomatic.cc:319
msgid "Select film to open"
msgstr "Seleziona il film da aprire"
-#: src/tools/dvdomatic.cc:303
+#: src/tools/dcpomatic.cc:303
msgid "The directory %1 already exists."
msgstr "La directory %s esiste gia'."
-#: src/tools/dvdomatic.cc:324
+#: src/tools/dcpomatic.cc:324
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-04-09 10:12+0100\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
-#: src/tools/dvdomatic.cc:177
+#: src/tools/dcpomatic.cc:177
msgid "&Analyse audio"
msgstr "&Analysera audio"
-#: src/tools/dvdomatic.cc:183
+#: src/tools/dcpomatic.cc:183
msgid "&Edit"
msgstr "&Redigera"
-#: src/tools/dvdomatic.cc:182
+#: src/tools/dcpomatic.cc:182
msgid "&File"
msgstr "&Fil"
-#: src/tools/dvdomatic.cc:185
+#: src/tools/dcpomatic.cc:185
msgid "&Help"
msgstr "&Hjälp"
-#: src/tools/dvdomatic.cc:184
+#: src/tools/dcpomatic.cc:184
msgid "&Jobs"
msgstr "&Jobb"
-#: src/tools/dvdomatic.cc:173
+#: src/tools/dcpomatic.cc:173
msgid "&Make DCP"
msgstr "&Skapa DCP"
-#: src/tools/dvdomatic.cc:161
+#: src/tools/dcpomatic.cc:161
msgid "&Open..."
msgstr "&Öppna"
-#: src/tools/dvdomatic.cc:170
+#: src/tools/dcpomatic.cc:170
msgid "&Preferences..."
msgstr "&Inställningar"
-#: src/tools/dvdomatic.cc:165
+#: src/tools/dcpomatic.cc:165
msgid "&Properties..."
msgstr "&Egenskaper"
-#: src/tools/dvdomatic.cc:167
+#: src/tools/dcpomatic.cc:167
msgid "&Quit"
msgstr "&Avsluta"
-#: src/tools/dvdomatic.cc:163
+#: src/tools/dcpomatic.cc:163
msgid "&Save"
msgstr "&Spara"
-#: src/tools/dvdomatic.cc:174
+#: src/tools/dcpomatic.cc:174
msgid "&Send DCP to TMS"
msgstr "&Skicka DCP till TMS"
-#: src/tools/dvdomatic.cc:417
+#: src/tools/dcpomatic.cc:417
msgid ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/tools/dvdomatic.cc:180
+#: src/tools/dcpomatic.cc:180
msgid "About"
msgstr "Om"
-#: src/tools/dvdomatic.cc:527
+#: src/tools/dcpomatic.cc:527
msgid "Could not load film %1 (%2)"
msgstr "Kunde inte öppna filmen %1 (%2)"
-#: src/tools/dvdomatic.cc:339
+#: src/tools/dcpomatic.cc:339
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Kunde inte öppna filmen vid %s (%s)"
-#: src/tools/dvdomatic.cc:287 src/tools/dvdomatic.cc:410
-#: src/tools/dvdomatic.cc:531
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+#: src/tools/dcpomatic.cc:287 src/tools/dcpomatic.cc:410
+#: src/tools/dcpomatic.cc:531
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
-#: src/tools/dvdomatic.cc:75
+#: src/tools/dcpomatic.cc:75
msgid "Film changed"
msgstr "Film ändrad"
-#: src/tools/dvdomatic.cc:416
+#: src/tools/dcpomatic.cc:416
msgid "Free, open-source DCP generation from almost anything."
msgstr ""
"Fri, öppen-källkodsprogramvara för DCP-generering från nästan vad som helst."
-#: src/tools/dvdomatic.cc:160
+#: src/tools/dcpomatic.cc:160
msgid "New..."
msgstr "Ny..."
-#: src/tools/dvdomatic.cc:175
+#: src/tools/dcpomatic.cc:175
msgid "S&how DCP"
msgstr "&Visa DCP"
-#: src/tools/dvdomatic.cc:74
+#: src/tools/dcpomatic.cc:74
msgid "Save changes to film \"%s\" before closing?"
msgstr "Spara ändringarna till filmen \"%s\" före avslut?"
-#: src/tools/dvdomatic.cc:319
+#: src/tools/dcpomatic.cc:319
msgid "Select film to open"
msgstr "Välj film att öppna"
-#: src/tools/dvdomatic.cc:303
+#: src/tools/dcpomatic.cc:303
msgid "The directory %1 already exists."
msgstr "Katalogen %1 finns redan."
-#: src/tools/dvdomatic.cc:324
+#: src/tools/dcpomatic.cc:324
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
help (string n)
{
cerr << "Syntax: " << n << " [OPTION]\n"
- << " -v, --version show DVD-o-matic version\n"
+ << " -v, --version show DCP-o-matic version\n"
<< " -h, --help show this help\n"
<< " -t, --threads number of parallel encoding threads to use\n";
}
switch (c) {
case 'v':
- cout << "dvdomatic version " << dvdomatic_version << " " << dvdomatic_git_commit << "\n";
+ cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n";
exit (EXIT_SUCCESS);
case 'h':
help (argv[0]);
{
public:
StatusDialog ()
- : wxDialog (0, wxID_ANY, _("DVD-o-matic encode server"), wxDefaultPosition, wxSize (600, 80), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ : wxDialog (0, wxID_ANY, _("DCP-o-matic encode server"), wxDefaultPosition, wxSize (600, 80), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
, _timer (this, ID_timer)
{
_sizer = new wxFlexGridSizer (1, 6, 6);
wxIcon icon;
icon.CopyFromBitmap (bitmap);
#endif
- SetIcon (icon, std_to_wx ("DVD-o-matic encode server"));
+ SetIcon (icon, std_to_wx ("DCP-o-matic encode server"));
Connect (ID_status, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::status));
Connect (ID_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::quit));
return false;
}
- dvdomatic_setup ();
+ dcpomatic_setup ();
_icon = new TaskBarIcon;
_thread = new thread (bind (&App::main_thread, this));
exit (EXIT_FAILURE);
}
- dvdomatic_setup ();
+ dcpomatic_setup ();
server = new ServerDescription (server_host, 1);
shared_ptr<Film> film (new Film (film_dir, true));
obj = bld(features = 'cxx cxxprogram')
obj.uselib = 'BOOST_THREAD OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC'
obj.includes = ['..']
- obj.use = ['libdvdomatic']
+ obj.use = ['libdcpomatic']
obj.source = '%s.cc' % t
obj.target = t
if not bld.env.DISABLE_GUI:
- for t in ['dvdomatic', 'servomatic_gui']:
+ for t in ['dcpomatic', 'servomatic_gui']:
obj = bld(features = 'cxx cxxprogram')
obj.uselib = 'DCP CXML OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC'
obj.includes = ['..']
- obj.use = ['libdvdomatic', 'libdvdomatic-wx']
+ obj.use = ['libdcpomatic', 'libdcpomatic-wx']
obj.source = '%s.cc' % t
if bld.env.TARGET_WINDOWS:
- obj.source += ' ../../windows/dvdomatic.rc'
+ obj.source += ' ../../windows/dcpomatic.rc'
obj.target = t
- i18n.po_to_mo(os.path.join('src', 'tools'), 'dvdomatic', bld)
+ i18n.po_to_mo(os.path.join('src', 'tools'), 'dcpomatic', bld)
def pot(bld):
- i18n.pot(os.path.join('src', 'tools'), 'dvdomatic.cc', 'dvdomatic')
+ i18n.pot(os.path.join('src', 'tools'), 'dcpomatic.cc', 'dcpomatic')
def pot_merge(bld):
- i18n.pot_merge(os.path.join('src', 'tools'), 'dvdomatic')
+ i18n.pot_merge(os.path.join('src', 'tools'), 'dcpomatic')
_film_changed_connection = _film->Changed.connect (bind (&AudioDialog::film_changed, this, _1));
_film_audio_analysis_succeeded_connection = _film->AudioAnalysisSucceeded.connect (bind (&AudioDialog::try_to_load_analysis, this));
- SetTitle (wxString::Format (_("DVD-o-matic audio - %s"), std_to_wx(_film->name()).data()));
+ SetTitle (wxString::Format (_("DCP-o-matic audio - %s"), std_to_wx(_film->name()).data()));
}
*/
/** @file src/config_dialog.cc
- * @brief A dialogue to edit DVD-o-matic configuration.
+ * @brief A dialogue to edit DCP-o-matic configuration.
*/
#include <iostream>
using boost::bind;
ConfigDialog::ConfigDialog (wxWindow* parent)
- : wxDialog (parent, wxID_ANY, _("DVD-o-matic Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ : wxDialog (parent, wxID_ANY, _("DCP-o-matic Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
wxFlexGridSizer* table = new wxFlexGridSizer (3, 6, 6);
table->AddGrowableCol (1, 1);
table->AddSpacer (0);
table->AddSpacer (0);
- wxStaticText* restart = add_label_to_sizer (table, this, _("(restart DVD-o-matic to see language changes)"));
+ wxStaticText* restart = add_label_to_sizer (table, this, _("(restart DCP-o-matic to see language changes)"));
wxFont font = restart->GetFont();
font.SetStyle (wxFONTSTYLE_ITALIC);
font.SetPointSize (font.GetPointSize() - 1);
*/
/** @file src/config_dialog.h
- * @brief A dialogue to edit DVD-o-matic configuration.
+ * @brief A dialogue to edit DCP-o-matic configuration.
*/
#include <wx/wx.h>
class ServerDescription;
/** @class ConfigDialog
- * @brief A dialogue to edit DVD-o-matic configuration.
+ * @brief A dialogue to edit DCP-o-matic configuration.
*/
class ConfigDialog : public wxDialog
{
#
msgid ""
msgstr ""
-"Project-Id-Version: libdvdomatic-wx\n"
+"Project-Id-Version: libdcpomatic-wx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-04-02 19:08-0500\n"
msgstr "%"
#: src/wx/config_dialog.cc:61
-msgid "(restart DVD-o-matic to see language changes)"
+msgid "(restart DCP-o-matic to see language changes)"
msgstr ""
#: src/wx/film_editor.cc:1269
msgstr "Nombre DCP"
#: src/wx/wx_util.cc:61
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
#: src/wx/config_dialog.cc:44
-msgid "DVD-o-matic Preferences"
-msgstr "Preferencias DVD-o-matic"
+msgid "DCP-o-matic Preferences"
+msgstr "Preferencias DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, fuzzy, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Audio DVD-o-matic - %1"
+msgid "DCP-o-matic audio - %s"
+msgstr "Audio DCP-o-matic - %1"
#: src/wx/config_dialog.cc:102
msgid "Default DCI name details"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic FRENCH\n"
+"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-03-20 00:34+0100\n"
msgstr "%"
#: src/wx/config_dialog.cc:61
-msgid "(restart DVD-o-matic to see language changes)"
+msgid "(restart DCP-o-matic to see language changes)"
msgstr ""
#: src/wx/film_editor.cc:1269
msgstr "Nom du DCP"
#: src/wx/wx_util.cc:61
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
#: src/wx/config_dialog.cc:44
-msgid "DVD-o-matic Preferences"
-msgstr "Préférences DVD-o-matic"
+msgid "DCP-o-matic Preferences"
+msgstr "Préférences DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Son DVD-o-matic - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "Son DCP-o-matic - %s"
#: src/wx/config_dialog.cc:102
msgid "Default DCI name details"
msgstr "%"
#: src/wx/config_dialog.cc:61
-msgid "(restart DVD-o-matic to see language changes)"
-msgstr "(riavviare DVD-o-matic per vedere i cambiamenti di lingua)"
+msgid "(restart DCP-o-matic to see language changes)"
+msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
#: src/wx/film_editor.cc:1269
msgid "1 channel"
msgstr "Nome del DCP"
#: src/wx/wx_util.cc:61
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
#: src/wx/config_dialog.cc:44
-msgid "DVD-o-matic Preferences"
-msgstr "Preferenze DVD-o-matic"
+msgid "DCP-o-matic Preferences"
+msgstr "Preferenze DCP-o-matic"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "Audio DVD-o-matic - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "Audio DCP-o-matic - %s"
#: src/wx/config_dialog.cc:102
msgid "Default DCI name details"
#
msgid ""
msgstr ""
-"Project-Id-Version: DVD-o-matic\n"
+"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-09 11:14+0100\n"
"PO-Revision-Date: 2013-04-09 10:13+0100\n"
msgstr "%"
#: src/wx/config_dialog.cc:61
-msgid "(restart DVD-o-matic to see language changes)"
-msgstr "(starta om DVD-o-matic för att se språkändringar)"
+msgid "(restart DCP-o-matic to see language changes)"
+msgstr "(starta om DCP-o-matic för att se språkändringar)"
#: src/wx/film_editor.cc:1269
msgid "1 channel"
msgstr "DCP Namn"
#: src/wx/wx_util.cc:61
-msgid "DVD-o-matic"
-msgstr "DVD-o-matic"
+msgid "DCP-o-matic"
+msgstr "DCP-o-matic"
#: src/wx/config_dialog.cc:44
-msgid "DVD-o-matic Preferences"
-msgstr "DVD-o-matic Inställningar"
+msgid "DCP-o-matic Preferences"
+msgstr "DCP-o-matic Inställningar"
#: src/wx/audio_dialog.cc:101
#, c-format
-msgid "DVD-o-matic audio - %s"
-msgstr "DVD-o-matic audio - %s"
+msgid "DCP-o-matic audio - %s"
+msgstr "DCP-o-matic audio - %s"
#: src/wx/config_dialog.cc:102
msgid "Default DCI name details"
else:
obj = bld(features = 'cxx cxxshlib')
- obj.name = 'libdvdomatic-wx'
+ obj.name = 'libdcpomatic-wx'
obj.includes = [ '..' ]
obj.export_includes = ['.']
obj.uselib = 'WXWIDGETS'
- obj.use = 'libdvdomatic'
+ obj.use = 'libdcpomatic'
obj.source = sources
- obj.target = 'dvdomatic-wx'
+ obj.target = 'dcpomatic-wx'
- i18n.po_to_mo(os.path.join('src', 'wx'), 'libdvdomatic-wx', bld)
+ i18n.po_to_mo(os.path.join('src', 'wx'), 'libdcpomatic-wx', bld)
def pot(bld):
- i18n.pot(os.path.join('src', 'wx'), sources, 'libdvdomatic-wx')
+ i18n.pot(os.path.join('src', 'wx'), sources, 'libdcpomatic-wx')
def pot_merge(bld):
- i18n.pot_merge(os.path.join('src', 'wx'), 'libdvdomatic-wx')
+ i18n.pot_merge(os.path.join('src', 'wx'), 'libdcpomatic-wx')
void
error_dialog (wxWindow* parent, wxString m)
{
- wxMessageDialog* d = new wxMessageDialog (parent, m, _("DVD-o-matic"), wxOK);
+ wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK);
d->ShowModal ();
d->Destroy ();
}
#include "sndfile_decoder.h"
#include "dcp_content_type.h"
#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MODULE dvdomatic_test
+#define BOOST_TEST_MODULE dcpomatic_test
#include <boost/test/unit_test.hpp>
using std::string;
BOOST_AUTO_TEST_CASE (make_black_test)
{
/* This needs to happen in the first test */
- dvdomatic_setup ();
+ dcpomatic_setup ();
libdcp::Size in_size (512, 512);
libdcp::Size out_size (1024, 1024);
new thread (boost::bind (&Server::run, server, 2));
/* Let the server get itself ready */
- dvdomatic_sleep (1);
+ dcpomatic_sleep (1);
ServerDescription description ("localhost", 2);
film->write_metadata ();
while (JobManager::instance()->work_to_do ()) {
- dvdomatic_sleep (1);
+ dcpomatic_sleep (1);
}
BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false);
film->make_dcp ();
while (JobManager::instance()->work_to_do() && !JobManager::instance()->errors()) {
- dvdomatic_sleep (1);
+ dcpomatic_sleep (1);
}
BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false);
shared_ptr<TestJob> a (new TestJob (f));
JobManager::instance()->add (a);
- dvdomatic_sleep (1);
+ dcpomatic_sleep (1);
BOOST_CHECK_EQUAL (a->running (), true);
a->set_finished_ok ();
- dvdomatic_sleep (2);
+ dcpomatic_sleep (2);
BOOST_CHECK_EQUAL (a->finished_ok(), true);
}
obj = bld(features = 'cxx cxxprogram')
obj.name = 'unit-tests'
obj.uselib = 'BOOST_TEST CXML DCP OPENJPEG AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC'
- obj.use = 'libdvdomatic'
+ obj.use = 'libdcpomatic'
obj.source = 'test.cc'
obj.target = 'unit-tests'
obj.install_path = ''
+++ /dev/null
-id ICON "dvdomatic.ico"
-taskbar_icon ICON "dvdomatic_taskbar.ico"
-#include "wx-2.9/wx/msw/wx.rc"
!include "MUI2.nsh"
-Name "DVD-o-matic"
+Name "DCP-o-matic"
RequestExecutionLevel admin
-outFile "DVD-o-matic @version@ 32-bit Installer.exe"
-!define MUI_ICON "%resources%/dvdomatic.ico"
-!define MUI_UNICON "%resources%/dvdomatic.ico"
-!define MUI_SPECIALBITMAP "%resources%/dvdomatic.bmp"
+outFile "DCP-o-matic @version@ 32-bit Installer.exe"
+!define MUI_ICON "%resources%/dcpomatic.ico"
+!define MUI_UNICON "%resources%/dcpomatic.ico"
+!define MUI_SPECIALBITMAP "%resources%/dcpomatic.bmp"
-InstallDir "$PROGRAMFILES\DVD-o-matic"
+InstallDir "$PROGRAMFILES\DCP-o-matic"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "../../COPYING"
File "%deps%/bin/libbz2.dll"
File "%deps%/bin/cxml.dll"
-File "%binaries%/src/wx/dvdomatic-wx.dll"
-File "%binaries%/src/lib/dvdomatic.dll"
-File "%binaries%/src/tools/dvdomatic.exe"
+File "%binaries%/src/wx/dcpomatic-wx.dll"
+File "%binaries%/src/lib/dcpomatic.dll"
+File "%binaries%/src/tools/dcpomatic.exe"
File "%binaries%/src/tools/servomatic_cli.exe"
File "%binaries%/src/tools/servomatic_gui.exe"
File "%deps%/etc/ImageMagick/delegates.xml"
SetOutPath "$INSTDIR\locale\fr\LC_MESSAGES"
-File "%binaries%/src/lib/mo/fr_FR/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/fr_FR/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/fr_FR/dvdomatic.mo"
+File "%binaries%/src/lib/mo/fr_FR/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/fr_FR/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/fr_FR/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\it\LC_MESSAGES"
-File "%binaries%/src/lib/mo/it_IT/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/it_IT/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/it_IT/dvdomatic.mo"
+File "%binaries%/src/lib/mo/it_IT/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/it_IT/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/it_IT/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\es\LC_MESSAGES"
-File "%binaries%/src/lib/mo/es_ES/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/es_ES/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/es_ES/dvdomatic.mo"
+File "%binaries%/src/lib/mo/es_ES/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/es_ES/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/es_ES/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\sv\LC_MESSAGES"
-File "%binaries%/src/lib/mo/sv_SE/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/sv_SE/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/sv_SE/dvdomatic.mo"
+File "%binaries%/src/lib/mo/sv_SE/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
-CreateShortCut "$DESKTOP\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" ""
-CreateShortCut "$DESKTOP\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" ""
-CreateDirectory "$SMPROGRAMS\DVD-o-matic"
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\Uninstall DVD-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" "" "$INSTDIR\bin\dvdomatic.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" "" "$INSTDIR\bin\servomatic_gui.exe" 0
+CreateDirectory "$SMPROGRAMS\DCP-o-matic"
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\Uninstall DCP-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" "" "$INSTDIR\bin\servomatic_gui.exe" 0
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "DisplayName" "DVD-o-matic (remove only)"
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "UninstallString" "$INSTDIR\Uninstall.exe"
+WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
+WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "UninstallString" "$INSTDIR\Uninstall.exe"
WriteUninstaller "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
-Delete "$DESKTOP\DVD-o-matic.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"
+Delete "$DESKTOP\DCP-o-matic.lnk"
+Delete "$DESKTOP\DCP-o-matic encode server.lnk"
+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"
SectionEnd
!include "MUI2.nsh"
!include "x64.nsh"
-Name "DVD-o-matic"
+Name "DCP-o-matic"
RequestExecutionLevel admin
-outFile "DVD-o-matic @version@ 64-bit Installer.exe"
-!define MUI_ICON "%resources%/dvdomatic.ico"
-!define MUI_UNICON "%resources%/dvdomatic.ico"
-!define MUI_SPECIALBITMAP "%resources%/dvdomatic.bmp"
+outFile "DCP-o-matic @version@ 64-bit Installer.exe"
+!define MUI_ICON "%resources%/dcpomatic.ico"
+!define MUI_UNICON "%resources%/dcpomatic.ico"
+!define MUI_SPECIALBITMAP "%resources%/dcpomatic.bmp"
-InstallDir "$PROGRAMFILES\DVD-o-matic"
+InstallDir "$PROGRAMFILES\DCP-o-matic"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "../../COPYING"
; disable registry redirection (enable access to 64-bit portion of registry)
SetRegView 64
; change install dir
- StrCpy $INSTDIR "$PROGRAMFILES64\DVD-o-matic"
+ StrCpy $INSTDIR "$PROGRAMFILES64\DCP-o-matic"
${EndIf}
SetOutPath "$INSTDIR\bin"
File "%deps%/bin/libbz2.dll"
File "%deps%/bin/cxml.dll"
-File "%binaries%/src/wx/dvdomatic-wx.dll"
-File "%binaries%/src/lib/dvdomatic.dll"
-File "%binaries%/src/tools/dvdomatic.exe"
+File "%binaries%/src/wx/dcpomatic-wx.dll"
+File "%binaries%/src/lib/dcpomatic.dll"
+File "%binaries%/src/tools/dcpomatic.exe"
File "%binaries%/src/tools/servomatic_cli.exe"
File "%binaries%/src/tools/servomatic_gui.exe"
File "%deps%/etc/ImageMagick/delegates.xml"
SetOutPath "$INSTDIR\locale\fr\LC_MESSAGES"
-File "%binaries%/src/lib/mo/fr_FR/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/fr_FR/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/fr_FR/dvdomatic.mo"
+File "%binaries%/src/lib/mo/fr_FR/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/fr_FR/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/fr_FR/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\it\LC_MESSAGES"
-File "%binaries%/src/lib/mo/it_IT/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/it_IT/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/it_IT/dvdomatic.mo"
+File "%binaries%/src/lib/mo/it_IT/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/it_IT/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/it_IT/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\es\LC_MESSAGES"
-File "%binaries%/src/lib/mo/es_ES/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/es_ES/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/es_ES/dvdomatic.mo"
+File "%binaries%/src/lib/mo/es_ES/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/es_ES/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/es_ES/dcpomatic.mo"
SetOutPath "$INSTDIR\locale\sv\LC_MESSAGES"
-File "%binaries%/src/lib/mo/sv_SE/libdvdomatic.mo"
-File "%binaries%/src/wx/mo/sv_SE/libdvdomatic-wx.mo"
-File "%binaries%/src/tools/mo/sv_SE/dvdomatic.mo"
+File "%binaries%/src/lib/mo/sv_SE/libdcpomatic.mo"
+File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
+File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
-CreateShortCut "$DESKTOP\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" ""
-CreateShortCut "$DESKTOP\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" ""
+CreateShortCut "$DESKTOP\DCP-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" ""
-CreateDirectory "$SMPROGRAMS\DVD-o-matic"
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\Uninstall DVD-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" "" "$INSTDIR\bin\dvdomatic.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" "" "$INSTDIR\bin\servomatic_gui.exe" 0
+CreateDirectory "$SMPROGRAMS\DCP-o-matic"
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\Uninstall DCP-o-matic.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic.lnk" "$INSTDIR\bin\dcpomatic.exe" "" "$INSTDIR\bin\dcpomatic.exe" 0
+CreateShortCut "$SMPROGRAMS\DCP-o-matic\DCP-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" "" "$INSTDIR\bin\servomatic_gui.exe" 0
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "DisplayName" "DVD-o-matic (remove only)"
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "UninstallString" "$INSTDIR\Uninstall.exe"
+WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
+WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DCP-o-matic" "UninstallString" "$INSTDIR\Uninstall.exe"
WriteUninstaller "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
-Delete "$DESKTOP\DVD-o-matic.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"
+Delete "$DESKTOP\DCP-o-matic.lnk"
+Delete "$DESKTOP\DCP-o-matic encode server.lnk"
+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"
SectionEnd
import os
import sys
-APPNAME = 'dvdomatic'
+APPNAME = 'dcpomatic'
VERSION = '0.84pre'
def options(opt):
'-Wall', '-Wno-attributes', '-Wextra'])
if conf.options.target_windows:
- conf.env.append_value('CXXFLAGS', ['-DDVDOMATIC_WINDOWS', '-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DUNICODE'])
+ 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)
if conf.options.enable_debug:
boost_lib_suffix = '-mt'
boost_thread = 'boost_thread_win32-mt'
else:
- conf.env.append_value('CXXFLAGS', '-DDVDOMATIC_POSIX')
+ conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_POSIX')
conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['PREFIX'])
- conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dvdomatic"' % conf.env['PREFIX'])
+ conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['PREFIX'])
boost_lib_suffix = ''
boost_thread = 'boost_thread'
conf.env.append_value('LINKFLAGS', '-pthread')
conf.env.VERSION = VERSION
if conf.options.enable_debug:
- conf.env.append_value('CXXFLAGS', ['-g', '-DDVDOMATIC_DEBUG'])
+ conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG'])
else:
conf.env.append_value('CXXFLAGS', '-O2')
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
- bld.install_files('${PREFIX}/share/applications', 'dvdomatic.desktop')
+ bld.install_files('${PREFIX}/share/applications', 'dcpomatic.desktop')
for r in ['22x22', '32x32', '48x48', '64x64', '128x128']:
- bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dvdomatic.png' % r)
+ bld.install_files('${PREFIX}/share/icons/hicolor/%s/apps' % r, 'icons/%s/dcpomatic.png' % r)
if not bld.env.TARGET_WINDOWS:
- bld.install_files('${PREFIX}/share/dvdomatic', 'icons/taskbar_icon.png')
+ bld.install_files('${PREFIX}/share/dcpomatic', 'icons/taskbar_icon.png')
bld.add_post_fun(post)
try:
text = '#include "version.h"\n'
- text += 'char const * dvdomatic_git_commit = \"%s\";\n' % commit
- text += 'char const * dvdomatic_version = \"%s\";\n' % version
+ text += 'char const * dcpomatic_git_commit = \"%s\";\n' % commit
+ text += 'char const * dcpomatic_version = \"%s\";\n' % version
print('Writing version information to src/lib/version.cc')
o = open('src/lib/version.cc', 'w')
o.write(text)