summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsr55 <[email protected]>2013-02-02 15:12:19 +0000
committersr55 <[email protected]>2013-02-02 15:12:19 +0000
commita7dfaa518ce3aaf73a64ecc3c61a88c9427aef81 (patch)
tree8efccea1be99fb4aca2fe1ad028c395095500675
parentbc3b56381c6ac214b7736a00972c9d0902902453 (diff)
Merging trunk to cl branch.
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/opencl@5234 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--contrib/a52dec/A03-automake.patch12
-rw-r--r--contrib/automake/module.defs2
-rw-r--r--contrib/ffmpeg/A02-channel-layout-order.patch41
-rw-r--r--contrib/ffmpeg/A02-truehd-channel-order.patch207
-rw-r--r--contrib/ffmpeg/A04-dca-resync.patch16
-rw-r--r--contrib/libbluray/A00-automake.patch12
-rw-r--r--contrib/libdvdread/P01-mingw-bitfields.patch19
-rw-r--r--contrib/libogg/A00-automake.patch12
-rw-r--r--contrib/libvorbis/A00-automake.patch12
-rw-r--r--contrib/x264/module.defs2
-rw-r--r--contrib/yasm/module.defs2
-rw-r--r--doc/BUILD-Linux20
-rw-r--r--doc/BUILD-Mac12
-rw-r--r--doc/BUILD-MinGW15
-rw-r--r--doc/texi/Building.linux.texi12
-rw-r--r--doc/texi/Building.mingw.texi6
-rw-r--r--doc/texi/Building.osx.texi3
-rw-r--r--gtk/src/audiohandler.c17
-rw-r--r--gtk/src/callbacks.c30
-rw-r--r--gtk/src/ghb.ui101
-rw-r--r--gtk/src/hb-backend.c53
-rw-r--r--gtk/src/main.c10
-rw-r--r--gtk/src/subtitlehandler.c23
-rw-r--r--libhb/common.c10
-rw-r--r--libhb/common.h14
-rw-r--r--libhb/decmpeg2.c26
-rw-r--r--libhb/dvdnav.c2
-rw-r--r--libhb/encx264.c200
-rw-r--r--libhb/encx264.h14
-rw-r--r--libhb/hb.c4
-rw-r--r--libhb/sync.c25
-rw-r--r--libhb/work.c4
-rw-r--r--macosx/Controller.h4
-rw-r--r--macosx/Controller.m210
-rw-r--r--macosx/English.lproj/MainMenu.xib703
-rw-r--r--macosx/English.lproj/PicturePreview.xib2403
-rw-r--r--macosx/HBPresets.h18
-rw-r--r--macosx/HBPresets.m653
-rw-r--r--macosx/HBPreviewController.h57
-rw-r--r--macosx/HBPreviewController.m1063
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj22
-rw-r--r--macosx/icons/next-p.pdfbin0 -> 2357 bytes
-rw-r--r--macosx/icons/pause-p.pdfbin0 -> 2314 bytes
-rw-r--r--macosx/icons/play-p.pdfbin0 -> 2316 bytes
-rw-r--r--macosx/icons/prev-p.pdfbin0 -> 2356 bytes
-rw-r--r--macosx/main.mm80
-rw-r--r--make/configure.py105
-rwxr-xr-xmake/xcodemake2
-rw-r--r--pkg/linux/debian/control.quantal4
-rwxr-xr-xpkg/linux/debian/rules.natty85
-rwxr-xr-xpkg/linux/debian/rules.oneiric85
-rwxr-xr-xpkg/linux/debian/rules.precise85
-rwxr-xr-xpkg/linux/debian/rules.quantal85
-rw-r--r--pkg/linux/module.rules4
-rwxr-xr-xscripts/manicure.rb180
-rw-r--r--test/test.c108
-rw-r--r--win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs27
-rw-r--r--win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj1
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs34
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs14
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs69
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs33
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Title.cs3
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs134
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/Encode.cs187
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs4
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs18
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs20
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs13
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs23
-rw-r--r--win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs39
-rw-r--r--win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs2
-rw-r--r--win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs17
-rw-r--r--win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml175
-rw-r--r--win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs721
-rw-r--r--win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs81
-rw-r--r--win/CS/HandBrakeWPF/HandBrakeWPF.csproj18
-rw-r--r--win/CS/HandBrakeWPF/Model/SelectionTitle.cs88
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.Designer.cs15
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.resx9
-rw-r--r--win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs2
-rw-r--r--win/CS/HandBrakeWPF/UserSettingConstants.cs5
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs40
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs2
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs40
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs144
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs4
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs198
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs55
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs68
-rw-r--r--win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs4
-rw-r--r--win/CS/HandBrakeWPF/Views/AdvancedView.xaml10
-rw-r--r--win/CS/HandBrakeWPF/Views/AudioView.xaml2
-rw-r--r--win/CS/HandBrakeWPF/Views/ChaptersView.xaml3
-rw-r--r--win/CS/HandBrakeWPF/Views/MainView.xaml31
-rw-r--r--win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml140
-rw-r--r--win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs27
-rw-r--r--win/CS/HandBrakeWPF/Views/QueueView.xaml21
-rw-r--r--win/CS/HandBrakeWPF/Views/SubtitlesView.xaml13
-rw-r--r--win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml10
-rw-r--r--win/CS/HandBrakeWPF/Views/VideoView.xaml87
-rw-r--r--win/CS/HandBrakeWPF/defaultsettings.xml8
-rw-r--r--win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML78
-rw-r--r--win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dllbin31232 -> 34304 bytes
-rw-r--r--win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdbbin69120 -> 81408 bytes
-rw-r--r--win/CS/libraries/WPFDragDrop/SourceModifications.zipbin21697 -> 28597 bytes
106 files changed, 6122 insertions, 3509 deletions
diff --git a/contrib/a52dec/A03-automake.patch b/contrib/a52dec/A03-automake.patch
new file mode 100644
index 000000000..142091dc6
--- /dev/null
+++ b/contrib/a52dec/A03-automake.patch
@@ -0,0 +1,12 @@
+diff -Naur a52dec.orig/configure.in a52dec/configure.in
+--- a52dec.orig/configure.in 2002-07-27 23:50:20.000000000 -0400
++++ a52dec/configure.in 2013-01-28 21:06:27.000000000 -0500
+@@ -6,7 +6,7 @@
+ AC_CONFIG_FILES([Makefile autotools/Makefile include/Makefile test/Makefile
+ doc/Makefile src/Makefile liba52/Makefile libao/Makefile vc++/Makefile])
+ AM_INIT_AUTOMAKE([a52dec],[0.7.4])
+-AM_CONFIG_HEADER(include/config.h)
++AC_CONFIG_HEADER(include/config.h)
+ AM_MAINTAINER_MODE
+ AC_CANONICAL_HOST
+
diff --git a/contrib/automake/module.defs b/contrib/automake/module.defs
index e553257da..72d39e6b0 100644
--- a/contrib/automake/module.defs
+++ b/contrib/automake/module.defs
@@ -1,4 +1,4 @@
$(eval $(call import.MODULE.defs,AUTOMAKE,automake,AUTOCONF))
$(eval $(call import.CONTRIB.defs,AUTOMAKE))
-AUTOMAKE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/automake-1.12.3.tar.bz2
+AUTOMAKE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/automake-1.13.1.tar.bz2
diff --git a/contrib/ffmpeg/A02-channel-layout-order.patch b/contrib/ffmpeg/A02-channel-layout-order.patch
deleted file mode 100644
index ce57af038..000000000
--- a/contrib/ffmpeg/A02-channel-layout-order.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
-index 3852f6e..c7217c8 100644
---- a/libavcodec/mlpdec.c
-+++ b/libavcodec/mlpdec.c
-@@ -28,6 +28,7 @@
-
- #include "avcodec.h"
- #include "libavutil/intreadwrite.h"
-+#include "libavutil/channel_layout.h"
- #include "get_bits.h"
- #include "internal.h"
- #include "libavutil/crc.h"
-@@ -435,6 +436,28 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
- s->ch_assign[ch_assign] = ch;
- }
-
-+ if (m->avctx->codec_id == AV_CODEC_ID_TRUEHD) {
-+ switch (m->avctx->channel_layout) {
-+ case AV_CH_LAYOUT_6POINT1:
-+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_CENTER):
-+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_FRONT_CENTER):
-+ {
-+ int i = s->ch_assign[6];
-+ s->ch_assign[6] = s->ch_assign[5];
-+ s->ch_assign[5] = s->ch_assign[4];
-+ s->ch_assign[4] = i;
-+ break;
-+ }
-+ case AV_CH_LAYOUT_7POINT1:
-+ case (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER):
-+ FFSWAP(int, s->ch_assign[4], s->ch_assign[6]);
-+ FFSWAP(int, s->ch_assign[5], s->ch_assign[7]);
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+
- checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count);
-
- if (checksum != get_bits(gbp, 8))
diff --git a/contrib/ffmpeg/A02-truehd-channel-order.patch b/contrib/ffmpeg/A02-truehd-channel-order.patch
new file mode 100644
index 000000000..a3d767755
--- /dev/null
+++ b/contrib/ffmpeg/A02-truehd-channel-order.patch
@@ -0,0 +1,207 @@
+diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c
+index d1a3dc1..31c79c9 100644
+--- a/libavcodec/mlp_parser.c
++++ b/libavcodec/mlp_parser.c
+@@ -126,7 +126,7 @@ static uint64_t truehd_layout(int chanmap)
+
+ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb)
+ {
+- int ratebits;
++ int ratebits, channel_arrangement;
+ uint16_t checksum;
+
+ assert(get_bits_count(gb) == 0);
+@@ -157,7 +157,9 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb)
+
+ skip_bits(gb, 11);
+
+- mh->channels_mlp = get_bits(gb, 5);
++ channel_arrangement = get_bits(gb, 5);
++ mh->channels_mlp = mlp_channels[channel_arrangement];
++ mh->channel_layout_mlp = mlp_layout[channel_arrangement];
+ } else if (mh->stream_type == 0xba) {
+ mh->group1_bits = 24; // TODO: Is this information actually conveyed anywhere?
+ mh->group2_bits = 0;
+@@ -168,11 +170,15 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb)
+
+ skip_bits(gb, 8);
+
+- mh->channels_thd_stream1 = get_bits(gb, 5);
++ channel_arrangement = get_bits(gb, 5);
++ mh->channels_thd_stream1 = truehd_channels(channel_arrangement);
++ mh->channel_layout_thd_stream1 = truehd_layout(channel_arrangement);
+
+ skip_bits(gb, 2);
+
+- mh->channels_thd_stream2 = get_bits(gb, 13);
++ channel_arrangement = get_bits(gb, 13);
++ mh->channels_thd_stream2 = truehd_channels(channel_arrangement);
++ mh->channel_layout_thd_stream2 = truehd_layout(channel_arrangement);
+ } else
+ return AVERROR_INVALIDDATA;
+
+@@ -316,16 +322,16 @@ static int mlp_parse(AVCodecParserContext *s,
+
+ if (mh.stream_type == 0xbb) {
+ /* MLP stream */
+- avctx->channels = mlp_channels[mh.channels_mlp];
+- avctx->channel_layout = mlp_layout[mh.channels_mlp];
++ avctx->channels = mh.channels_mlp;
++ avctx->channel_layout = mh.channel_layout_mlp;
+ } else { /* mh.stream_type == 0xba */
+ /* TrueHD stream */
+ if (mh.channels_thd_stream2) {
+- avctx->channels = truehd_channels(mh.channels_thd_stream2);
+- avctx->channel_layout = truehd_layout(mh.channels_thd_stream2);
++ avctx->channels = mh.channels_thd_stream2;
++ avctx->channel_layout = mh.channel_layout_thd_stream2;
+ } else {
+- avctx->channels = truehd_channels(mh.channels_thd_stream1);
+- avctx->channel_layout = truehd_layout(mh.channels_thd_stream1);
++ avctx->channels = mh.channels_thd_stream1;
++ avctx->channel_layout = mh.channel_layout_thd_stream1;
+ }
+ }
+
+diff --git a/libavcodec/mlp_parser.h b/libavcodec/mlp_parser.h
+index 35bb312..e874426 100644
+--- a/libavcodec/mlp_parser.h
++++ b/libavcodec/mlp_parser.h
+@@ -31,25 +31,28 @@
+
+ typedef struct MLPHeaderInfo
+ {
+- int stream_type; ///< 0xBB for MLP, 0xBA for TrueHD
++ int stream_type; ///< 0xBB for MLP, 0xBA for TrueHD
+
+- int group1_bits; ///< The bit depth of the first substream
+- int group2_bits; ///< Bit depth of the second substream (MLP only)
++ int group1_bits; ///< The bit depth of the first substream
++ int group2_bits; ///< Bit depth of the second substream (MLP only)
+
+- int group1_samplerate; ///< Sample rate of first substream
+- int group2_samplerate; ///< Sample rate of second substream (MLP only)
++ int group1_samplerate; ///< Sample rate of first substream
++ int group2_samplerate; ///< Sample rate of second substream (MLP only)
+
+- int channels_mlp; ///< Channel arrangement for MLP streams
+- int channels_thd_stream1; ///< Channel arrangement for substream 1 of TrueHD streams (5.1)
+- int channels_thd_stream2; ///< Channel arrangement for substream 2 of TrueHD streams (7.1)
++ int channels_mlp; ///< Channel count for MLP streams
++ int channels_thd_stream1; ///< Channel count for substream 1 of TrueHD streams ("6-channel presentation")
++ int channels_thd_stream2; ///< Channel count for substream 2 of TrueHD streams ("8-channel presentation")
++ uint64_t channel_layout_mlp; ///< Channel layout for MLP streams
++ uint64_t channel_layout_thd_stream1; ///< Channel layout for substream 1 of TrueHD streams ("6-channel presentation")
++ uint64_t channel_layout_thd_stream2; ///< Channel layout for substream 2 of TrueHD streams ("8-channel presentation")
+
+- int access_unit_size; ///< Number of samples per coded frame
+- int access_unit_size_pow2; ///< Next power of two above number of samples per frame
++ int access_unit_size; ///< Number of samples per coded frame
++ int access_unit_size_pow2; ///< Next power of two above number of samples per frame
+
+- int is_vbr; ///< Stream is VBR instead of CBR
+- int peak_bitrate; ///< Peak bitrate for VBR, actual bitrate (==peak) for CBR
++ int is_vbr; ///< Stream is VBR instead of CBR
++ int peak_bitrate; ///< Peak bitrate for VBR, actual bitrate (==peak) for CBR
+
+- int num_substreams; ///< Number of substreams within stream
++ int num_substreams; ///< Number of substreams within stream
+ } MLPHeaderInfo;
+
+
+diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c
+index 3852f6e..f8c647a 100644
+--- a/libavcodec/mlpdec.c
++++ b/libavcodec/mlpdec.c
+@@ -28,6 +28,7 @@
+
+ #include "avcodec.h"
+ #include "libavutil/intreadwrite.h"
++#include "libavutil/channel_layout.h"
+ #include "get_bits.h"
+ #include "internal.h"
+ #include "libavutil/crc.h"
+@@ -56,6 +57,8 @@ typedef struct SubStream {
+ uint8_t max_matrix_channel;
+ /// For each channel output by the matrix, the output channel to map it to
+ uint8_t ch_assign[MAX_CHANNELS];
++ /// The channel layout for this substream
++ uint64_t ch_layout;
+
+ /// Channel coding parameters for channels in the substream
+ ChannelParams channel_params[MAX_CHANNELS];
+@@ -146,6 +149,36 @@ typedef struct MLPDecodeContext {
+ MLPDSPContext dsp;
+ } MLPDecodeContext;
+
++static const uint64_t thd_channel_order[] = {
++ AV_CH_FRONT_LEFT, AV_CH_FRONT_RIGHT, // LR
++ AV_CH_FRONT_CENTER, // C
++ AV_CH_LOW_FREQUENCY, // LFE
++ AV_CH_SIDE_LEFT, AV_CH_SIDE_RIGHT, // LRs
++ AV_CH_TOP_FRONT_LEFT, AV_CH_TOP_FRONT_RIGHT, // LRvh
++ AV_CH_FRONT_LEFT_OF_CENTER, AV_CH_FRONT_RIGHT_OF_CENTER, // LRc
++ AV_CH_BACK_LEFT, AV_CH_BACK_RIGHT, // LRrs
++ AV_CH_BACK_CENTER, // Cs
++ AV_CH_TOP_CENTER, // Ts
++ AV_CH_SURROUND_DIRECT_LEFT, AV_CH_SURROUND_DIRECT_RIGHT, // LRsd
++ AV_CH_WIDE_LEFT, AV_CH_WIDE_RIGHT, // LRw
++ AV_CH_TOP_FRONT_CENTER, // Cvh
++ AV_CH_LOW_FREQUENCY_2, // LFE2
++};
++
++static uint64_t thd_channel_layout_extract_channel(uint64_t channel_layout,
++ int index)
++{
++ int i;
++
++ if (av_get_channel_layout_nb_channels(channel_layout) <= index)
++ return 0;
++
++ for (i = 0; i < FF_ARRAY_ELEMS(thd_channel_order); i++)
++ if (channel_layout & thd_channel_order[i] && !index--)
++ return thd_channel_order[i];
++ return 0;
++}
++
+ static VLC huff_vlc[3];
+
+ /** Initialize static data, constant between all invocations of the codec. */
+@@ -325,6 +358,24 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb)
+ for (substr = 0; substr < MAX_SUBSTREAMS; substr++)
+ m->substream[substr].restart_seen = 0;
+
++ /* Set the layout for each substream. When there's more than one, the first
++ * substream is Stereo. Subsequent substreams' layouts are indicated in the
++ * major sync. */
++ if (m->avctx->codec_id == AV_CODEC_ID_MLP) {
++ if ((substr = (mh.num_substreams > 1)))
++ m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO;
++ m->substream[substr].ch_layout = mh.channel_layout_mlp;
++ } else {
++ if ((substr = (mh.num_substreams > 1)))
++ m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO;
++ if (mh.num_substreams > 2)
++ if (mh.channel_layout_thd_stream2)
++ m->substream[2].ch_layout = mh.channel_layout_thd_stream2;
++ else
++ m->substream[2].ch_layout = mh.channel_layout_thd_stream1;
++ m->substream[substr].ch_layout = mh.channel_layout_thd_stream1;
++ }
++
+ return 0;
+ }
+
+@@ -426,6 +477,12 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
+
+ for (ch = 0; ch <= s->max_matrix_channel; ch++) {
+ int ch_assign = get_bits(gbp, 6);
++ if (m->avctx->codec_id == AV_CODEC_ID_TRUEHD) {
++ uint64_t channel = thd_channel_layout_extract_channel(s->ch_layout,
++ ch_assign);
++ ch_assign = av_get_channel_layout_channel_index(s->ch_layout,
++ channel);
++ }
+ if (ch_assign > s->max_matrix_channel) {
+ av_log_ask_for_sample(m->avctx,
+ "Assignment of matrix channel %d to invalid output channel %d.\n",
diff --git a/contrib/ffmpeg/A04-dca-resync.patch b/contrib/ffmpeg/A04-dca-resync.patch
index 3e32c7a74..bbd9ad7ed 100644
--- a/contrib/ffmpeg/A04-dca-resync.patch
+++ b/contrib/ffmpeg/A04-dca-resync.patch
@@ -1,17 +1,17 @@
-From 021a7700ff839b295b5776d4552563de1a448df6 Mon Sep 17 00:00:00 2001
+From 9922584ba3b5b02d913e629ea74d72e994870873 Mon Sep 17 00:00:00 2001
From: John Stebbins <[email protected]>
-Date: Sat, 5 Jan 2013 16:57:06 -0800
+Date: Thu, 17 Jan 2013 19:57:26 +0100
Subject: [PATCH] dca_parser: Handle changes in dca frame size
A change in framesize caused a perpetual loss of synchronization.
So read (and use) the frame size from the frame header instead of
setting it only once.
---
- libavcodec/dca_parser.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
+ libavcodec/dca_parser.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c
-index ab235cf..75e9321 100644
+index ab235cf..12180f3 100644
--- a/libavcodec/dca_parser.c
+++ b/libavcodec/dca_parser.c
@@ -62,10 +62,12 @@ static int dca_find_frame_end(DCAParseContext * pc1, const uint8_t * buf,
@@ -46,17 +46,19 @@ index ab235cf..75e9321 100644
{
GetBitContext gb;
uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 };
-@@ -159,6 +158,10 @@ static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration,
+@@ -159,7 +158,11 @@ static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration,
return AVERROR_INVALIDDATA;
*duration = 256 * (sample_blocks / 8);
+- skip_bits(&gb, 20);
+ *framesize = get_bits(&gb, 14) + 1;
+ if (*framesize < 95)
+ return AVERROR_INVALIDDATA;
+
- skip_bits(&gb, 20);
++ skip_bits(&gb, 6);
sr_code = get_bits(&gb, 4);
*sample_rate = avpriv_dca_sample_rates[sr_code];
+ if (*sample_rate == 0)
@@ -190,7 +193,7 @@ static int dca_parse(AVCodecParserContext * s,
}
diff --git a/contrib/libbluray/A00-automake.patch b/contrib/libbluray/A00-automake.patch
new file mode 100644
index 000000000..20f7d8805
--- /dev/null
+++ b/contrib/libbluray/A00-automake.patch
@@ -0,0 +1,12 @@
+diff -Naur libbluray-0.2.3.orig/configure.ac libbluray-0.2.3/configure.ac
+--- libbluray-0.2.3.orig/configure.ac 2012-08-17 07:27:32.000000000 -0400
++++ libbluray-0.2.3/configure.ac 2013-01-28 23:52:04.000000000 -0500
+@@ -22,7 +22,7 @@
+ AC_CONFIG_MACRO_DIR([m4])
+ AC_CANONICAL_SYSTEM
+ AM_INIT_AUTOMAKE([foreign tar-ustar])
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+
+ case "${host_os}" in
+ "")
diff --git a/contrib/libdvdread/P01-mingw-bitfields.patch b/contrib/libdvdread/P01-mingw-bitfields.patch
new file mode 100644
index 000000000..ae852134a
--- /dev/null
+++ b/contrib/libdvdread/P01-mingw-bitfields.patch
@@ -0,0 +1,19 @@
+diff -Naur libdvdread.orig/configure.ac libdvdread/configure.ac
+--- libdvdread.orig/configure.ac 2009-01-08 14:57:10.000000000 -0800
++++ libdvdread/configure.ac 2013-01-26 10:35:21.366836184 -0800
+@@ -141,6 +141,15 @@
+ *mingw32*)
+ CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS"
+ LDFLAGS="-no-undefined $LDFLAGS"
++ if test "$GCC" = "yes" ; then
++ gcc_version="`$CC -dumpversion`"
++ gcc_version_major=$(echo $gcc_version | cut -d"." -f1)
++ gcc_version_minor=$(echo $gcc_version | cut -d"." -f2)
++ gcc_version_patch=$(echo $gcc_version | cut -d"." -f3)
++ if test $gcc_version_major -ge 4 -a $gcc_version_minor -ge 7 ; then
++ CFLAGS="-mno-ms-bitfields $CFLAGS"
++ fi
++ fi
+ ;;
+ *cygwin*)
+ LDFLAGS="-no-undefined $LDFLAGS"
diff --git a/contrib/libogg/A00-automake.patch b/contrib/libogg/A00-automake.patch
new file mode 100644
index 000000000..69a3f198f
--- /dev/null
+++ b/contrib/libogg/A00-automake.patch
@@ -0,0 +1,12 @@
+diff -Naur libogg-1.3.0.orig/configure.in libogg-1.3.0/configure.in
+--- libogg-1.3.0.orig/configure.in 2011-08-04 13:11:08.000000000 -0400
++++ libogg-1.3.0/configure.in 2013-01-28 23:40:03.000000000 -0500
+@@ -19,7 +19,7 @@
+ AM_PROG_CC_C_O
+
+ dnl config.h
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+
+ dnl Set some options based on environment
+
diff --git a/contrib/libvorbis/A00-automake.patch b/contrib/libvorbis/A00-automake.patch
new file mode 100644
index 000000000..8c98fde69
--- /dev/null
+++ b/contrib/libvorbis/A00-automake.patch
@@ -0,0 +1,12 @@
+diff -Naur aotuv-b6.03_20110424.orig/configure.ac aotuv-b6.03_20110424/configure.ac
+--- aotuv-b6.03_20110424.orig/configure.ac 2010-11-01 15:27:12.000000000 -0400
++++ aotuv-b6.03_20110424/configure.ac 2013-01-28 23:43:26.000000000 -0500
+@@ -13,7 +13,7 @@
+
+ AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION)
+ AM_MAINTAINER_MODE
+-AM_CONFIG_HEADER([config.h])
++AC_CONFIG_HEADER([config.h])
+
+ dnl Add parameters for aclocal
+ AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
diff --git a/contrib/x264/module.defs b/contrib/x264/module.defs
index 141c64cad..7b4f62805 100644
--- a/contrib/x264/module.defs
+++ b/contrib/x264/module.defs
@@ -1,7 +1,7 @@
$(eval $(call import.MODULE.defs,X264,x264,YASM PTHREADW32))
$(eval $(call import.CONTRIB.defs,X264))
-X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2216-198a7ea.tar.gz
+X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2245-bc13772.tar.gz
X264.EXTRACT.tarbase = x264
X264.CONFIGURE.deps =
diff --git a/contrib/yasm/module.defs b/contrib/yasm/module.defs
index 90215575f..b5f3ee788 100644
--- a/contrib/yasm/module.defs
+++ b/contrib/yasm/module.defs
@@ -1,5 +1,5 @@
$(eval $(call import.MODULE.defs,YASM,yasm))
$(eval $(call import.CONTRIB.defs,YASM))
-YASM.FETCH.url = http://download.handbrake.fr/handbrake/contrib/yasm-1.1.0.tar.gz
+YASM.FETCH.url = http://download.handbrake.fr/handbrake/contrib/yasm-1.2.0.tar.gz
diff --git a/doc/BUILD-Linux b/doc/BUILD-Linux
index e4f70486d..26572e0e2 100644
--- a/doc/BUILD-Linux
+++ b/doc/BUILD-Linux
@@ -1,4 +1,4 @@
-Guide to Building HandBrake svn4981 (2012092601) on Linux
+Guide to Building HandBrake svn5208 (2013012701) on Linux
*********************************************************
Table of Contents
@@ -38,11 +38,11 @@ Linux; but is not necessarily the only configuration that is possible:
* Intel 32-bit or 64-bit kernel
- * Ubuntu 10.04, gcc 4.4.3, yasm 0.8.0
+ * Ubuntu 12.04, gcc 4.5, yasm 1.2.x
- * Fedora 14, gcc 4.5.1, yasm 1.0.1
+ * Fedora 17 and 18, gcc 4.5, yasm 1.2.x
- * gcc 4.0.0 or higher is reported to work
+ * gcc 4.5 or higher is reported to work
Note: It is recommended to use the platform distribution's
standard compiler for maximum C++ compatibility. If you build with
@@ -75,7 +75,7 @@ The GTK UI introduces some significant extra build requirements. If you
intend to disable building the GUI with `configure --disable-gtk' you
will not need many of these packages installed:
-Ubuntu 10.04 - 10.10 packages:
+Ubuntu 12+ packages:
* subversion (cli/gui)
* yasm (cli/gui)
@@ -126,7 +126,7 @@ Ubuntu 10.04 - 10.10 packages:
* libgstreamer-plugins-base0.10-dev (gui)
-Ubuntu 11.04 - 11.10 packages:
+Ubuntu 12+ packages:
* libappindicator-dev (gui)
To install these packages:
@@ -137,7 +137,7 @@ To install these packages:
libgtk2.0-dev libgudev-1.0-dev libwebkit-dev libnotify-dev \
libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libappindicator-dev
-Fedora 12 - 13 package groups:
+Fedora 17+ package groups:
* Development Tools
* Development Libraries
@@ -200,7 +200,7 @@ To install these packages:
This chapter is for building from a terminal/shell environment in as
few commands as possible. Upon completion of the following commands you
should have a fresh build of HandBrake. Further instructions are
-available beginning with *note overview:: which describes procedures
+available beginning with *Note overview:: which describes procedures
suitable for repeating builds. This chapter should be skipped by those
seeking more than a minimalist build.
@@ -590,7 +590,7 @@ Appendix A Project Repository Details
root: svn://svn.handbrake.fr/HandBrake
branch: trunk
uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5
- rev: 4981
- date: 2012-09-25 09:52:53 -0700
+ rev: 5208
+ date: 2013-01-26 18:47:13 +0000
type: developer
diff --git a/doc/BUILD-Mac b/doc/BUILD-Mac
index 07f56df84..118109581 100644
--- a/doc/BUILD-Mac
+++ b/doc/BUILD-Mac
@@ -1,4 +1,4 @@
-Build Guide for HandBrake 4394svn on Mac OS X
+Build Guide for HandBrake 5208svn on Mac OS X
*********************************************
Table of Contents
@@ -55,7 +55,9 @@ possible:
* llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658)
- * yasm 1.1.0.2352
+ * yasm 1.2.x
+
+ * xquartz (http://xquartz.macosforge.org/landing/)
Note: It is recommended to use the platform distribution's
standard compiler for maximum C++ compatibility. If you build with
@@ -90,7 +92,7 @@ recommended you use these versions or similar:
This chapter is for building from a terminal/shell environment in as
few commands as possible. Upon completion of the following commands you
should have a fresh build of HandBrake. Further instructions are
-available beginning with *note overview:: which describes procedures
+available beginning with *Note overview:: which describes procedures
suitable for repeating builds. This chapter should be skipped by those
seeking more than a minimalist build.
@@ -699,7 +701,7 @@ Appendix A Project Repository Details
root: svn://svn.handbrake.fr/HandBrake
branch: trunk
uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5
- rev: 4394
- date: 2011-12-30 17:21:44 -0500
+ rev: 5208
+ date: 2013-01-26 18:47:13 +0000
type: developer
diff --git a/doc/BUILD-MinGW b/doc/BUILD-MinGW
index 2fa752d1a..f4b0ed98c 100644
--- a/doc/BUILD-MinGW
+++ b/doc/BUILD-MinGW
@@ -1,4 +1,4 @@
-Guide to Building HandBrake svn4891 (2012080501) on MinGW
+Guide to Building HandBrake svn5208 (2013012701) on MinGW
*********************************************************
Table of Contents
@@ -38,9 +38,9 @@ MinGW; but is not necessarily the only configuration that is possible:
* Intel 32-bit or 64-bit hardware
- * MinGW on Fedora 16, Ubuntu or Debian, gcc 4.5+
+ * MinGW on Fedora 17+, Ubuntu 12+ or Debian, gcc 4.5+
- * yasm 1.1.x.x (for i386 or x86_64 architectures)
+ * yasm 1.2.x (for i386 or x86_64 architectures)
Note: It is recommended to use the platform distribution's
standard compiler for maximum C++ compatibility. If you build with
@@ -62,7 +62,7 @@ MinGW; but is not necessarily the only configuration that is possible:
`g++-4' respectively and you must indicate to configure the
desired versions. The following syntax should do the trick:
- ../configure --cross=i686-pc-mingw32 --gcc=gcc-4
+ ../configure --cross=i686-w64-mingw32 --gcc=gcc-4
The following general tools are used on various platforms and it is
recommended you use these versions or similar:
@@ -89,7 +89,7 @@ recommended you use these versions or similar:
This chapter is for building from a terminal/shell environment in as
few commands as possible. Upon completion of the following commands you
should have a fresh build of HandBrake. Further instructions are
-available beginning with *note overview:: which describes procedures
+available beginning with *Note overview:: which describes procedures
suitable for repeating builds. This chapter should be skipped by those
seeking more than a minimalist build.
@@ -479,6 +479,7 @@ Appendix A Project Repository Details
root: svn://svn.handbrake.fr/HandBrake
branch: trunk
uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5
- rev: 4891
- date: 2012-08-05 17:23:19 +0100
+ rev: 5208
+ date: 2013-01-26 18:47:13 +0000
type: developer
+
diff --git a/doc/texi/Building.linux.texi b/doc/texi/Building.linux.texi
index 0f6ff3876..6d1daa1ea 100644
--- a/doc/texi/Building.linux.texi
+++ b/doc/texi/Building.linux.texi
@@ -19,9 +19,9 @@ The following are the recommended specifications for building on @value{OS.linux
@itemize @bullet
@item Intel 32-bit or 64-bit kernel
-@item Ubuntu 10.04, gcc 4.4.3, yasm 0.8.0
-@item Fedora 14, gcc 4.5.1, yasm 1.0.1
-@item gcc 4.0.0 or higher is reported to work
+@item Ubuntu 12.04, gcc 4.5, yasm 1.2.x
+@item Fedora 17 and 18, gcc 4.5, yasm 1.2.x
+@item gcc 4.5 or higher is reported to work
@end itemize
@include building/prerequisites.bundled.texi
@@ -30,7 +30,7 @@ The following are the recommended specifications for building on @value{OS.linux
The @b{GTK UI} introduces some significant extra build requirements. If you intend to disable building the GUI with @command{configure --disable-gtk} you will not need many of these packages installed:
-Ubuntu 10.04 - 10.10 packages:
+Ubuntu 12+ packages:
@itemize @bullet
@item subversion (cli/gui)
@item yasm (cli/gui)
@@ -59,7 +59,7 @@ Ubuntu 10.04 - 10.10 packages:
@item libgstreamer-plugins-base0.10-dev (gui)
@end itemize
-Ubuntu 11.04 - 11.10 packages:
+Ubuntu 12+ packages:
@itemize @bullet
@item libappindicator-dev (gui)
@end itemize
@@ -74,7 +74,7 @@ libgtk2.0-dev libgudev-1.0-dev libwebkit-dev libnotify-dev \
libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libappindicator-dev
@end example
-Fedora 12 - 13 package groups:
+Fedora 17+ package groups:
@itemize @bullet
@item Development Tools
@item Development Libraries
diff --git a/doc/texi/Building.mingw.texi b/doc/texi/Building.mingw.texi
index 572940ddb..9a1f86ebc 100644
--- a/doc/texi/Building.mingw.texi
+++ b/doc/texi/Building.mingw.texi
@@ -19,8 +19,8 @@ The following are the recommended specifications for building on @value{OS.mingw
@itemize @bullet
@item Intel 32-bit or 64-bit hardware
-@item @value{OS.mingw} on Fedora 16, Ubuntu or Debian, gcc 4.5+
-@item yasm 1.1.x.x (for i386 or x86_64 architectures)
+@item @value{OS.mingw} on Fedora 17+, Ubuntu 12+ or Debian, gcc 4.5+
+@item yasm 1.2.x (for i386 or x86_64 architectures)
@end itemize
@include building/prerequisites.bundled.texi
@@ -33,7 +33,7 @@ As of this writing, @value{OS.mingw} has available to it several versions of gcc
@end quotation
@example
-../configure --cross=i686-pc-mingw32 --gcc=gcc-4
+../configure --cross=i686-w64-mingw32 --gcc=gcc-4
@end example
@include building/prerequisites.common.texi
diff --git a/doc/texi/Building.osx.texi b/doc/texi/Building.osx.texi
index 5c661c5eb..f9aa3fe2c 100644
--- a/doc/texi/Building.osx.texi
+++ b/doc/texi/Building.osx.texi
@@ -23,7 +23,8 @@ Building on @value{OS.osx} is well supported. It is the reference platform for @
@item @value{OS.osx} 10.7.2
@item Xcode 4.2.1 (Build version 4D502)
@item llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658)
-@item yasm 1.1.0.2352
+@item yasm 1.2.x
+@item xquartz (http://xquartz.macosforge.org/landing/)
@end itemize
@include building/prerequisites.bundled.texi
diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c
index d7171c3d4..e09e7fcbf 100644
--- a/gtk/src/audiohandler.c
+++ b/gtk/src/audiohandler.c
@@ -1206,18 +1206,25 @@ audio_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud)
indices = gtk_tree_path_get_indices (treepath);
row = indices[0];
gtk_tree_path_free(treepath);
- // Remove the selected item
- gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
- // remove from audio settings list
if (row < 0) return;
- widget = GHB_WIDGET (ud->builder, "audio_add");
- gtk_widget_set_sensitive(widget, TRUE);
+
audio_list = ghb_settings_get_value(ud->settings, "audio_list");
if (row >= ghb_array_len(audio_list))
return;
+
+ // Update our settings list before removing the row from the
+ // treeview. Removing from the treeview sometimes provokes an
+ // immediate selection change, so the list needs to be up to date
+ // when this happens.
GValue *old = ghb_array_get_nth(audio_list, row);
ghb_value_free(old);
ghb_array_remove(audio_list, row);
+
+ // Remove the selected item
+ gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
+ // remove from audio settings list
+ widget = GHB_WIDGET (ud->builder, "audio_add");
+ gtk_widget_set_sensitive(widget, TRUE);
}
}
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c
index 42fd3fa03..eb98553e3 100644
--- a/gtk/src/callbacks.c
+++ b/gtk/src/callbacks.c
@@ -833,12 +833,16 @@ dvd_device_changed_cb(GtkComboBoxText *combo, signal_user_data_t *ud)
gchar *name;
dialog = GHB_WIDGET(ud->builder, "source_dialog");
- device = gtk_combo_box_text_get_active_text (combo);
- name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog));
- if (name == NULL || strcmp(name, device) != 0)
- gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(dialog), device);
- if (name != NULL)
- g_free(name);
+ device = gtk_combo_box_text_get_active_text(combo);
+ // Protext against unexpected NULL return value
+ if (device != NULL)
+ {
+ name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog));
+ if (name == NULL || strcmp(name, device) != 0)
+ gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(dialog), device);
+ if (name != NULL)
+ g_free(name);
+ }
}
}
@@ -992,7 +996,21 @@ do_source_dialog(GtkButton *button, gboolean single, signal_user_data_t *ud)
dialog = GHB_WIDGET(ud->builder, "source_dialog");
source_dialog_extra_widgets(ud, dialog);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ // gtk3 has a STUPID BUG! If you select the "same_path" it ends
+ // up selecting the "Recent Files" shortcut instead of taking you
+ // to the directory and file THAT YOU ASKED FOR!!! FUUUUK!!!
+ //
+ // So instead, I am just setting the current folder. It's not
+ // optimal because if you are processing several files in the same
+ // folder, you want the selection to return to where you were last
+ // in the list, but there's not much else I can do at this point.
+ gchar *dirname = g_path_get_dirname(sourcename);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), dirname);
+ g_free(dirname);
+#else
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), sourcename);
+#endif
response = gtk_dialog_run(GTK_DIALOG (dialog));
gtk_widget_hide(dialog);
if (response == GTK_RESPONSE_NO)
diff --git a/gtk/src/ghb.ui b/gtk/src/ghb.ui
index dfe7cf908..c697849fa 100644
--- a/gtk/src/ghb.ui
+++ b/gtk/src/ghb.ui
@@ -1,6 +1,64 @@
<?xml version="1.0"?>
<!--*- mode: xml -*-->
<interface>
+ <object class="GtkLabel" id="SubTrackLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Track&lt;/b&gt;</property>
+ <property name="tooltip-text" translatable="yes">The source subtitle track
+
+You can choose any of the subtitles
+recognized in your source file.
+
+In addition, there is a special track option
+"Foreign Audio Search". This option will add
+an extra pass to the encode that searches for
+subtitles that may correspond to a foreign
+language scene. This option is best used in
+conjunction with the "Forced" option.</property>
+ <property name="use_markup">True</property>
+ </object>
+ <object class="GtkLabel" id="SubForcedLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Forced Only&lt;/b&gt;</property>
+ <property name="tooltip-text" translatable="yes">Use only subtitles that have been flagged
+as forced in the source subtitle track
+
+"Forced" subtitles are usually used to show
+subtitles during scenes where someone is speaking
+a foreign language.</property>
+ <property name="use_markup">True</property>
+ </object>
+ <object class="GtkLabel" id="SubBurnedLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Burned In&lt;/b&gt;</property>
+ <property name="tooltip-text" translatable="yes">Render the subtitle over the video.
+
+The subtitle will be part of the video and can not be disabled.</property>
+ <property name="use_markup">True</property>
+ </object>
+ <object class="GtkLabel" id="SubDefaultLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Default&lt;/b&gt;</property>
+ <property name="tooltip-text" translatable="yes">Set the default output subtitle track.
+
+Most players will automatically display this
+subtitle track whenever the video is played.
+
+This is usefule for creating a "forced" track
+in your output.</property>
+ <property name="use_markup">True</property>
+ </object>
+ <object class="GtkLabel" id="SubSRTOffsetLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;SRT Offset&lt;/b&gt;</property>
+ <property name="tooltip-text" translatable="yes">Add (or subtract) an offset (in milliseconds)
+to the start of the SRT subtitle track.
+
+Often, the start of an external SRT file
+does not coincide with the start of the video.
+This setting allows you to synchronize the files.</property>
+ <property name="use_markup">True</property>
+ </object>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="lower">1</property>
@@ -542,12 +600,6 @@
</popup>
</ui>
</object>
- <object class="GtkListStore" id="device_list">
- <columns>
- <!-- column-name device -->
- <column type="gchararray"/>
- </columns>
- </object>
<object class="GtkMenu" id="presets_menu">
<child>
@@ -1679,27 +1731,20 @@
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <object class="GtkFrame" id="frame8">
+ <object class="GtkAlignment" id="alignment19">
<property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
+ <property name="bottom_padding">4</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <property name="yalign">1</property>
<child>
- <object class="GtkAlignment" id="alignment19">
+ <object class="GtkImage" id="preview_button_image">
+ <property name="width_request">448</property>
+ <property name="height_request">200</property>
<property name="visible">True</property>
- <property name="bottom_padding">4</property>
- <property name="left_padding">4</property>
- <property name="right_padding">4</property>
- <property name="yalign">1</property>
- <child>
- <object class="GtkImage" id="preview_button_image">
- <property name="width_request">448</property>
- <property name="height_request">200</property>
- <property name="visible">True</property>
- <property name="icon_name">hb-icon</property>
- <property name="pixel-size">128</property>
- <signal name="size_allocate" handler="preview_button_size_allocate_cb"/>
- </object>
- </child>
+ <property name="icon_name">hb-icon</property>
+ <property name="pixel-size">128</property>
+ <signal name="size_allocate" handler="preview_button_size_allocate_cb"/>
</object>
</child>
</object>
@@ -8443,14 +8488,8 @@ libx264 authors:
<child>
<object class="GtkComboBoxText" id="source_device">
<property name="visible">True</property>
- <property name="model">device_list</property>
+ <property name="entry-text-column">0</property>
<signal handler="dvd_device_changed_cb" name="changed"/>
- <child>
- <object class="GtkCellRendererText" id="cellrenderertext1"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
</object>
</child>
</object>
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index 3426e5adc..bdd53c959 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -2085,53 +2085,35 @@ x264_tune_opts_set(GtkBuilder *builder, const gchar *name)
}
static void
-x264_profile_opts_set(GtkBuilder *builder, const gchar *name)
+h264_profile_opts_set(GtkBuilder *builder, const gchar *name)
{
GtkTreeIter iter;
GtkListStore *store;
gint ii, count = 0;
const char * const *profiles;
- profiles = hb_x264_profiles();
+ profiles = hb_h264_profiles();
while (profiles && profiles[count]) count++;
- g_debug("x264_profile_opts_set ()\n");
+ g_debug("h264_profile_opts_set ()\n");
store = get_combo_box_store(builder, name);
gtk_list_store_clear(store);
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- 0, "Auto",
- 1, TRUE,
- 2, "auto",
- 3, (gdouble)0,
- 4, "auto",
- -1);
-
for (ii = 0; ii < count; ii++)
{
- // HandBrake doesn't support high10 (10 bit encoding)
- // or high422 (YUV422)
- if (!strcasecmp("high10", profiles[ii]) ||
- !strcasecmp("high422", profiles[ii]) ||
- !strcasecmp("high444", profiles[ii]))
- {
- continue;
- }
-
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
0, profiles[ii],
1, TRUE,
2, profiles[ii],
- 3, (gdouble)ii + 1,
+ 3, (gdouble)ii,
4, profiles[ii],
-1);
}
}
static void
-x264_level_opts_set(GtkBuilder *builder, const gchar *name)
+h264_level_opts_set(GtkBuilder *builder, const gchar *name)
{
GtkTreeIter iter;
GtkListStore *store;
@@ -2141,19 +2123,10 @@ x264_level_opts_set(GtkBuilder *builder, const gchar *name)
levels = hb_h264_levels();
while (levels && levels[count]) count++;
- g_debug("x264_level_opts_set ()\n");
+ g_debug("h264_level_opts_set ()\n");
store = get_combo_box_store(builder, name);
gtk_list_store_clear(store);
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- 0, "Auto",
- 1, TRUE,
- 2, "auto",
- 3, (gdouble)0,
- 4, "auto",
- -1);
-
for (ii = 0; ii < count; ii++)
{
gtk_list_store_append(store, &iter);
@@ -2161,7 +2134,7 @@ x264_level_opts_set(GtkBuilder *builder, const gchar *name)
0, levels[ii],
1, TRUE,
2, levels[ii],
- 3, (gdouble)ii + 1,
+ 3, (gdouble)ii,
4, levels[ii],
-1);
}
@@ -3040,8 +3013,8 @@ ghb_update_ui_combo_box(
small_opts_set(ud->builder, "x264_analyse", &analyse_opts);
small_opts_set(ud->builder, "x264_trellis", &trellis_opts);
x264_tune_opts_set(ud->builder, "x264Tune");
- x264_profile_opts_set(ud->builder, "h264Profile");
- x264_level_opts_set(ud->builder, "h264Level");
+ h264_profile_opts_set(ud->builder, "h264Profile");
+ h264_level_opts_set(ud->builder, "h264Level");
}
else
{
@@ -3074,9 +3047,9 @@ ghb_update_ui_combo_box(
else if (strcmp(name, "x264Tune") == 0)
x264_tune_opts_set(ud->builder, "x264Tune");
else if (strcmp(name, "h264Profile") == 0)
- x264_profile_opts_set(ud->builder, "h264Profile");
+ h264_profile_opts_set(ud->builder, "h264Profile");
else if (strcmp(name, "h264Level") == 0)
- x264_level_opts_set(ud->builder, "h264Level");
+ h264_level_opts_set(ud->builder, "h264Level");
else
generic_opts_set(ud->builder, name, find_combo_table(name));
}
@@ -3200,10 +3173,10 @@ void ghb_set_video_encoder_opts(hb_job_t *job, GValue *js)
hb_job_set_x264_tune(job, tunes);
if (profile != NULL && strcasecmp(profile, "auto"))
- hb_job_set_x264_profile(job, profile);
+ hb_job_set_h264_profile(job, profile);
if (level != NULL && strcasecmp(level, "auto"))
- hb_job_set_x264_level(job, level);
+ hb_job_set_h264_level(job, level);
hb_job_set_advanced_opts(job, opts);
diff --git a/gtk/src/main.c b/gtk/src/main.c
index 891abd088..9f3dc8b24 100644
--- a/gtk/src/main.c
+++ b/gtk/src/main.c
@@ -419,6 +419,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud)
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Track"), cell, "text", 0, NULL);
+ widget = GHB_WIDGET(ud->builder, "SubTrackLabel");
+ gtk_tree_view_column_set_widget(column, widget);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
gtk_tree_view_column_set_min_width(column, 350);
gtk_tree_view_column_set_max_width(column, 350);
@@ -426,6 +428,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud)
cell = gtk_cell_renderer_toggle_new();
column = gtk_tree_view_column_new_with_attributes(
_("Forced Only"), cell, "active", 1, "visible", 7, NULL);
+ widget = GHB_WIDGET(ud->builder, "SubForcedLabel");
+ gtk_tree_view_column_set_widget(column, widget);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
g_signal_connect(cell, "toggled", subtitle_forced_toggled_cb, ud);
@@ -433,6 +437,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud)
gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE);
column = gtk_tree_view_column_new_with_attributes(
_("Burned In"), cell, "active", 2, "visible", 8, NULL);
+ widget = GHB_WIDGET(ud->builder, "SubBurnedLabel");
+ gtk_tree_view_column_set_widget(column, widget);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
g_signal_connect(cell, "toggled", subtitle_burned_toggled_cb, ud);
@@ -440,12 +446,16 @@ bind_subtitle_tree_model(signal_user_data_t *ud)
gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE);
column = gtk_tree_view_column_new_with_attributes(
_("Default"), cell, "active", 3, NULL);
+ widget = GHB_WIDGET(ud->builder, "SubDefaultLabel");
+ gtk_tree_view_column_set_widget(column, widget);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
g_signal_connect(cell, "toggled", subtitle_default_toggled_cb, ud);
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Srt Offset"), cell, "text", 4, "visible", 9, NULL);
+ widget = GHB_WIDGET(ud->builder, "SubSRTOffsetLabel");
+ gtk_tree_view_column_set_widget(column, widget);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
diff --git a/gtk/src/subtitlehandler.c b/gtk/src/subtitlehandler.c
index 5a6ca8864..121654ac5 100644
--- a/gtk/src/subtitlehandler.c
+++ b/gtk/src/subtitlehandler.c
@@ -1348,25 +1348,34 @@ subtitle_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud)
{
gtk_tree_selection_select_iter (selection, &nextIter);
}
+
// Get the row number
treepath = gtk_tree_model_get_path (store, &iter);
indices = gtk_tree_path_get_indices (treepath);
row = indices[0];
gtk_tree_path_free(treepath);
- // Remove the selected item
- gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
- // remove from subtitle settings list
if (row < 0) return;
- widget = GHB_WIDGET (ud->builder, "subtitle_add");
- gtk_widget_set_sensitive(widget, TRUE);
- widget = GHB_WIDGET (ud->builder, "srt_add");
- gtk_widget_set_sensitive(widget, TRUE);
+
subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
if (row >= ghb_array_len(subtitle_list))
return;
+
+ // Update our settings list before removing the row from the
+ // treeview. Removing from the treeview sometimes provokes an
+ // immediate selection change, so the list needs to be up to date
+ // when this happens.
GValue *old = ghb_array_get_nth(subtitle_list, row);
ghb_value_free(old);
ghb_array_remove(subtitle_list, row);
+
+ // Remove the selected item
+ gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
+ // remove from subtitle settings list
+ widget = GHB_WIDGET (ud->builder, "subtitle_add");
+ gtk_widget_set_sensitive(widget, TRUE);
+ widget = GHB_WIDGET (ud->builder, "srt_add");
+ gtk_widget_set_sensitive(widget, TRUE);
+
ghb_live_reset(ud);
}
}
diff --git a/libhb/common.c b/libhb/common.c
index c10eae93d..bf2da46b6 100644
--- a/libhb/common.c
+++ b/libhb/common.c
@@ -1760,8 +1760,8 @@ static void job_clean( hb_job_t * job )
job->x264_preset = NULL;
free(job->x264_tune);
job->x264_tune = NULL;
- free(job->x264_profile);
- job->x264_profile = NULL;
+ free(job->h264_profile);
+ job->h264_profile = NULL;
free(job->h264_level);
job->h264_level = NULL;
@@ -1901,15 +1901,15 @@ void hb_job_set_x264_tune( hb_job_t *job, const char *tune )
}
}
-void hb_job_set_x264_profile( hb_job_t *job, const char *profile )
+void hb_job_set_h264_profile( hb_job_t *job, const char *profile )
{
if ( job )
{
- hb_update_str( &job->x264_profile, profile );
+ hb_update_str( &job->h264_profile, profile );
}
}
-void hb_job_set_x264_level( hb_job_t *job, const char *level )
+void hb_job_set_h264_level( hb_job_t *job, const char *level )
{
if ( job )
{
diff --git a/libhb/common.h b/libhb/common.h
index 8586d2a6b..3fc4b22aa 100644
--- a/libhb/common.h
+++ b/libhb/common.h
@@ -125,8 +125,8 @@ void hb_fix_aspect( hb_job_t * job, int keep );
void hb_job_set_advanced_opts( hb_job_t *job, const char *advanced_opts );
void hb_job_set_x264_preset( hb_job_t *job, const char *preset );
void hb_job_set_x264_tune( hb_job_t *job, const char *tune );
-void hb_job_set_x264_profile( hb_job_t *job, const char *profile );
-void hb_job_set_x264_level( hb_job_t *job, const char *level );
+void hb_job_set_h264_profile( hb_job_t *job, const char *profile );
+void hb_job_set_h264_level( hb_job_t *job, const char *level );
void hb_job_set_file( hb_job_t *job, const char *file );
hb_audio_t *hb_audio_copy(const hb_audio_t *src);
@@ -368,10 +368,10 @@ struct hb_job_s
int cfr;
int pass;
int fastfirstpass;
- char *advanced_opts;
- char *x264_profile;
char *x264_preset;
char *x264_tune;
+ char *advanced_opts;
+ char *h264_profile;
char *h264_level;
int areBframes;
@@ -1112,13 +1112,13 @@ const char * hb_subsource_name( int source );
// unparse a set of x264 settings to an HB encopts string
char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune,
- const char *x264_encopts, const char *x264_profile,
+ const char *x264_encopts, const char *h264_profile,
const char *h264_level, int width, int height);
-// x264 preset/tune/profile & h264 level helpers
+// x264 preset/tune & h264 profile/level helpers
const char * const * hb_x264_presets();
const char * const * hb_x264_tunes();
-const char * const * hb_x264_profiles();
+const char * const * hb_h264_profiles();
const char * const * hb_h264_levels();
// x264 option name/synonym helper
diff --git a/libhb/decmpeg2.c b/libhb/decmpeg2.c
index 15c0d21d5..0e1d78eda 100644
--- a/libhb/decmpeg2.c
+++ b/libhb/decmpeg2.c
@@ -60,6 +60,7 @@ typedef struct hb_libmpeg2_s
int64_t start; // start time of this frame
hb_buffer_t * cc_buf; // captions for this frame
} tags[NTAGS];
+ uint8_t cc_tag_pending;
struct SwsContext *sws_context; // if we have to rescale or convert color space
int sws_width;
@@ -84,7 +85,7 @@ static hb_libmpeg2_t * hb_libmpeg2_init()
int i;
for ( i = 0; i < NTAGS; ++i )
{
- m->tags[i].start = -1;
+ m->tags[i].start = -2;
}
return m;
@@ -258,7 +259,7 @@ static void next_tag( hb_libmpeg2_t *m, hb_buffer_t *buf_es )
{
if ( m->tags[m->cur_tag].start < 0 ||
( m->got_iframe && m->tags[m->cur_tag].start >= m->first_pts ) )
- hb_log("mpeg2 tag botch: pts %"PRId64", tag pts %"PRId64" buf 0x%p",
+ hb_log("mpeg2 tag botch: pts %"PRId64", tag pts %"PRId64" buf %p",
buf_es->s.start, m->tags[m->cur_tag].start, m->tags[m->cur_tag].cc_buf);
if ( m->tags[m->cur_tag].cc_buf )
hb_buffer_close( &m->tags[m->cur_tag].cc_buf );
@@ -363,6 +364,7 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es,
if( buf_es->s.start >= 0 )
{
next_tag( m, buf_es );
+ m->cc_tag_pending = 1;
}
mpeg2_buffer( m->libmpeg2, buf_es->data, buf_es->data + buf_es->size );
}
@@ -385,22 +387,32 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es,
// if we don't have a tag for the captions, make one
if ( m->last_cc1_buf && m->tags[m->cur_tag].cc_buf != m->last_cc1_buf )
{
- if (m->tags[m->cur_tag].cc_buf)
+ // If we have not set a CC tag for the picture and
+ // we have a new CC buffer, make a new tag.
+ if (!m->cc_tag_pending && m->tags[m->cur_tag].cc_buf != NULL)
{
- hb_log("mpeg2 tag botch2: pts %"PRId64", tag pts %"PRId64" buf 0x%p",
+ next_tag( m, buf_es );
+ }
+ else if (m->tags[m->cur_tag].cc_buf)
+ {
+ hb_log("mpeg2 tag botch2: pts %"PRId64", tag pts %"PRId64" buf %p",
buf_es->s.start, m->tags[m->cur_tag].start, m->tags[m->cur_tag].cc_buf);
hb_buffer_close( &m->tags[m->cur_tag].cc_buf );
}
// see if we already made a tag for the timestamp. If so we
// can just use it, otherwise make a new tag.
- if (m->tags[m->cur_tag].start < 0)
+ if (m->tags[m->cur_tag].start == -2)
{
next_tag( m, buf_es );
}
m->tags[m->cur_tag].cc_buf = m->last_cc1_buf;
}
}
- if( state == STATE_SEQUENCE )
+ if( state == STATE_PICTURE )
+ {
+ m->cc_tag_pending = 0;
+ }
+ else if( state == STATE_SEQUENCE )
{
if( !( m->width && m->height && m->rate ) )
{
@@ -463,7 +475,7 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es,
int t = m->info->display_picture->tag;
buf->s.start = m->tags[t].start;
cc_buf = m->tags[t].cc_buf;
- m->tags[t].start = -1;
+ m->tags[t].start = -2;
m->tags[t].cc_buf = NULL;
}
if( buf->s.start < 0 && m->last_pts >= 0 )
diff --git a/libhb/dvdnav.c b/libhb/dvdnav.c
index e9cd44053..14d8100c6 100644
--- a/libhb/dvdnav.c
+++ b/libhb/dvdnav.c
@@ -992,7 +992,7 @@ static int try_button( dvdnav_t * dvdnav, int button, hb_list_t * list_title )
cur_title = title;
- for (jj = 0; jj < 5; jj++)
+ for (jj = 0; jj < 10; jj++)
{
for (ii = 0; ii < 2000; ii++)
{
diff --git a/libhb/encx264.c b/libhb/encx264.c
index f5808963f..b52832416 100644
--- a/libhb/encx264.c
+++ b/libhb/encx264.c
@@ -275,9 +275,9 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job )
}
/* Apply profile and level settings last, if present. */
- if (job->x264_profile != NULL && *job->x264_profile)
+ if (job->h264_profile != NULL && *job->h264_profile)
{
- if (x264_param_apply_profile(&param, job->x264_profile))
+ if (hb_apply_h264_profile(&param, job->h264_profile, 1))
{
free(pv);
pv = NULL;
@@ -287,7 +287,7 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job )
if (job->h264_level != NULL && *job->h264_level)
{
if (hb_apply_h264_level(&param, job->h264_level,
- job->x264_profile, 1) < 0)
+ job->h264_profile, 1) < 0)
{
free(pv);
pv = NULL;
@@ -629,6 +629,60 @@ int encx264Work( hb_work_object_t * w, hb_buffer_t ** buf_in,
return HB_WORK_OK;
}
+int hb_apply_h264_profile(x264_param_t *param, const char *h264_profile,
+ int verbose)
+{
+ if (h264_profile != NULL &&
+ strcasecmp(h264_profile, hb_h264_profile_names[0]) != 0)
+ {
+ /*
+ * baseline profile doesn't support interlacing
+ */
+ if ((param->b_interlaced ||
+ param->b_fake_interlaced) &&
+ !strcasecmp(h264_profile, "baseline"))
+ {
+ if (verbose)
+ {
+ hb_log("hb_apply_h264_profile [warning]: baseline profile doesn't support interlacing, disabling");
+ }
+ param->b_interlaced = param->b_fake_interlaced = 0;
+ }
+ /*
+ * lossless requires High 4:4:4 Predictive profile
+ */
+ if (param->rc.f_rf_constant < 1.0 &&
+ param->rc.i_rc_method == X264_RC_CRF &&
+ strcasecmp(h264_profile, "high444") != 0)
+ {
+ if (verbose)
+ {
+ hb_log("hb_apply_h264_profile [warning]: lossless requires high444 profile, disabling");
+ }
+ param->rc.f_rf_constant = 1.0;
+ }
+ if (!strcasecmp(h264_profile, "high10") ||
+ !strcasecmp(h264_profile, "high422"))
+ {
+ // arbitrary profile names may be specified via the CLI
+ // map unsupported high10 and high422 profiles to high
+ return x264_param_apply_profile(param, "high");
+ }
+ return x264_param_apply_profile(param, h264_profile);
+ }
+ else if (!strcasecmp(h264_profile, hb_h264_profile_names[0]))
+ {
+ // "auto", do nothing
+ return 0;
+ }
+ else
+ {
+ // error (profile not a string), abort
+ hb_error("hb_apply_h264_profile: no profile specified");
+ return -1;
+ }
+}
+
int hb_check_h264_level(const char *h264_level, int width, int height,
int fps_num, int fps_den, int interlaced,
int fake_interlaced)
@@ -645,24 +699,65 @@ int hb_check_h264_level(const char *h264_level, int width, int height,
}
int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
- const char *x264_profile, int verbose)
+ const char *h264_profile, int verbose)
{
float f_framerate;
const x264_level_t *x264_level = NULL;
int i, i_mb_size, i_mb_rate, i_mb_width, i_mb_height, max_mb_side, ret;
/*
+ * find the x264_level_t corresponding to the requested level
+ */
+ if (h264_level != NULL &&
+ strcasecmp(h264_level, hb_h264_level_names[0]) != 0)
+ {
+ for (i = 0; hb_h264_level_values[i]; i++)
+ {
+ if (!strcmp(hb_h264_level_names[i], h264_level))
+ {
+ int val = hb_h264_level_values[i];
+ for (i = 0; x264_levels[i].level_idc; i++)
+ {
+ if (x264_levels[i].level_idc == val)
+ {
+ x264_level = &x264_levels[i];
+ break;
+ }
+ }
+ break;
+ }
+ }
+ if (x264_level == NULL)
+ {
+ // error (invalid or unsupported level), abort
+ hb_error("hb_apply_h264_level: invalid level %s", h264_level);
+ return -1;
+ }
+ }
+ else if(!strcasecmp(h264_level, hb_h264_level_names[0]))
+ {
+ // "auto", do nothing
+ return 0;
+ }
+ else
+ {
+ // error (level not a string), abort
+ hb_error("hb_apply_h264_level: no level specified");
+ return -1;
+ }
+
+ /*
* the H.264 profile determines VBV constraints
*/
enum
{
// Main or Baseline (equivalent)
- HB_H264_PROFILE_MAIN,
+ HB_ENCX264_PROFILE_MAIN,
// High (no 4:2:2 or 10-bit support, so anything lossy is equivalent)
- HB_H264_PROFILE_HIGH,
+ HB_ENCX264_PROFILE_HIGH,
// Lossless (4:2:0 8-bit for now)
- HB_H264_PROFILE_HIGH444,
- } h264_profile;
+ HB_ENCX264_PROFILE_HIGH444,
+ } hb_encx264_profile;
/*
* H.264 profile
@@ -674,21 +769,21 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
* re-enabled.
*/
#if 0
- if (x264_profile != NULL && *x264_profile)
+ if (h264_profile != NULL && *h264_profile)
{
// if the user explicitly specified a profile, don't guess it
- if (!strcasecmp(x264_profile, "high444"))
+ if (!strcasecmp(h264_profile, "high444"))
{
- h264_profile = HB_H264_PROFILE_HIGH444;
+ hb_encx264_profile = HB_ENCX264_PROFILE_HIGH444;
}
- else if (!strcasecmp(x264_profile, "main") ||
- !strcasecmp(x264_profile, "baseline"))
+ else if (!strcasecmp(h264_profile, "main") ||
+ !strcasecmp(h264_profile, "baseline"))
{
- h264_profile = HB_H264_PROFILE_MAIN;
+ hb_encx264_profile = HB_ENCX264_PROFILE_MAIN;
}
else
{
- h264_profile = HB_H264_PROFILE_HIGH;
+ hb_encx264_profile = HB_ENCX264_PROFILE_HIGH;
}
}
else
@@ -698,53 +793,18 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
if (param->rc.i_rc_method == X264_RC_CRF &&
param->rc.f_rf_constant < 1.0)
{
- h264_profile = HB_H264_PROFILE_HIGH444;
+ hb_encx264_profile = HB_ENCX264_PROFILE_HIGH444;
}
else if (param->analyse.b_transform_8x8 ||
param->i_cqm_preset != X264_CQM_FLAT)
{
- h264_profile = HB_H264_PROFILE_HIGH;
+ hb_encx264_profile = HB_ENCX264_PROFILE_HIGH;
}
else
{
- h264_profile = HB_H264_PROFILE_MAIN;
- }
- }
-
- /*
- * find the x264_level_t corresponding to the requested level
- */
- if (h264_level != NULL && *h264_level)
- {
- for (i = 0; hb_h264_level_values[i]; i++)
- {
- if (!strcmp(hb_h264_level_names[i], h264_level))
- {
- int val = hb_h264_level_values[i];
- for (i = 0; x264_levels[i].level_idc; i++)
- {
- if (x264_levels[i].level_idc == val)
- {
- x264_level = &x264_levels[i];
- break;
- }
- }
- break;
- }
- }
- if (x264_level == NULL)
- {
- // error (invalid or unsupported level), abort
- hb_error("hb_apply_h264_level: invalid level %s", h264_level);
- return -1;
+ hb_encx264_profile = HB_ENCX264_PROFILE_MAIN;
}
}
- else
- {
- // error (level not a string), abort
- hb_error("hb_apply_h264_level: no level specified");
- return -1;
- }
/*
* we need at least width and height in order to apply a level correctly
@@ -805,7 +865,7 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
if (param->i_keyint_max != 1)
{
int i_max_dec_frame_buffering =
- MAX(MIN(x264_level->dpb / (384 * i_mb_size), 16), 1);
+ MAX(MIN(x264_level->dpb / i_mb_size, 16), 1);
param->i_frame_reference =
MIN(i_max_dec_frame_buffering, param->i_frame_reference);
/*
@@ -825,10 +885,10 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
/*
* set and/or sanitize the VBV (if not lossless)
*/
- if (h264_profile != HB_H264_PROFILE_HIGH444)
+ if (hb_encx264_profile != HB_ENCX264_PROFILE_HIGH444)
{
// High profile allows for higher VBV bufsize/maxrate
- int cbp_factor = h264_profile == HB_H264_PROFILE_HIGH ? 5 : 4;
+ int cbp_factor = hb_encx264_profile == HB_ENCX264_PROFILE_HIGH ? 5 : 4;
if (!param->rc.i_vbv_max_bitrate)
{
param->rc.i_vbv_max_bitrate = (x264_level->bitrate * cbp_factor) / 4;
@@ -918,7 +978,7 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
}
char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune,
- const char *x264_encopts, const char *x264_profile,
+ const char *x264_encopts, const char *h264_profile,
const char *h264_level, int width, int height)
{
int i;
@@ -979,24 +1039,10 @@ char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune,
/*
* apply the x264 profile, if specified
*/
- if (x264_profile != NULL && *x264_profile)
+ if (h264_profile != NULL && *h264_profile)
{
- if (x264_param_apply_profile(&param, x264_profile) < 0)
- {
- /*
- * Note: x264_param_apply_profile can bail even when the specified
- * profile is valid; examples:
- *
- * 1) when profile is baseline and interlaced is set
- * 2) when profile is not high444 and lossless is set
- *
- * So this can happen even when calling hb_x264_param_unparse from a
- * GUI - maybe we should sanitize settings before calling
- * x264_param_apply_profile()?
- */
- hb_dict_free(&x264_opts);
- return strdup("hb_x264_param_unparse: could not apply x264 profile");
- }
+ // be quiet so at to not pollute GUI logs
+ hb_apply_h264_profile(&param, h264_profile, 0);
}
/*
@@ -1008,7 +1054,7 @@ char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune,
param.i_width = width;
param.i_height = height;
// be quiet so at to not pollute GUI logs
- hb_apply_h264_level(&param, h264_level, x264_profile, 0);
+ hb_apply_h264_level(&param, h264_level, h264_profile, 0);
}
/*
@@ -1590,9 +1636,9 @@ const char * const * hb_x264_tunes()
return x264_tune_names;
}
-const char * const * hb_x264_profiles()
+const char * const * hb_h264_profiles()
{
- return x264_profile_names;
+ return hb_h264_profile_names;
}
const char * const * hb_h264_levels()
diff --git a/libhb/encx264.h b/libhb/encx264.h
index b989c6281..963797afe 100644
--- a/libhb/encx264.h
+++ b/libhb/encx264.h
@@ -9,8 +9,9 @@
#include "x264.h"
-static const char * const hb_h264_level_names[] = { "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL };
-static const int const hb_h264_level_values[] = { 10, 9, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 0 };
+static const char * const hb_h264_profile_names[] = { "auto", "high", "main", "baseline", NULL, };
+static const char * const hb_h264_level_names[] = { "auto", "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL, };
+static const int const hb_h264_level_values[] = { -1, 10, 9, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 0, };
/* x264 preferred option names (left) and synonyms (right).
* The "preferred" names match names used in x264's param2string function more
@@ -68,3 +69,12 @@ int hb_check_h264_level(const char *h264_level, int width, int height,
*/
int hb_apply_h264_level(x264_param_t *param, const char *h264_level,
const char *x264_profile, int verbose);
+
+/*
+ * Applies the restrictions of the requested H.264 profile to an x264_param_t.
+ *
+ * x264_param_apply_profile wrapper designed to always succeed when a valid
+ * H.264 profile is specified (unlike x264's function).
+ */
+int hb_apply_h264_profile(x264_param_t *param, const char *h264_profile,
+ int verbose);
diff --git a/libhb/hb.c b/libhb/hb.c
index c1188caa2..0dbe8f528 100644
--- a/libhb/hb.c
+++ b/libhb/hb.c
@@ -1484,8 +1484,8 @@ void hb_add( hb_handle_t * h, hb_job_t * job )
job_copy->x264_preset = strdup( job->x264_preset );
if ( job->x264_tune )
job_copy->x264_tune = strdup( job->x264_tune );
- if ( job->x264_profile )
- job_copy->x264_profile = strdup( job->x264_profile );
+ if ( job->h264_profile )
+ job_copy->h264_profile = strdup( job->h264_profile );
if ( job->h264_level )
job_copy->h264_level = strdup( job->h264_level );
diff --git a/libhb/sync.c b/libhb/sync.c
index 5ad5bfedb..444f2f98b 100644
--- a/libhb/sync.c
+++ b/libhb/sync.c
@@ -1162,7 +1162,7 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration )
hb_sync_audio_t *sync = &pv->type.audio;
hb_buffer_t *buf;
hb_fifo_t *fifo;
- int frame_dur, frame_count;
+ int frame_dur;
// to keep pass-thru and regular audio in sync we generate silence in
// frame-sized units. If the silence duration isn't an integer multiple
@@ -1178,9 +1178,8 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration )
frame_dur = ( 90000 * w->audio->config.out.samples_per_frame ) /
w->audio->config.in.samplerate;
}
- frame_count = ( duration + (frame_dur >> 1) ) / frame_dur;
- while ( --frame_count >= 0 )
+ while (duration >= frame_dur >> 2)
{
if( w->audio->config.out.codec & HB_ACODEC_PASS_FLAG )
{
@@ -1189,15 +1188,31 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration )
buf->s.stop = buf->s.start + frame_dur;
memcpy( buf->data, sync->silence_buf, buf->size );
fifo = w->audio->priv.fifo_out;
+ duration -= frame_dur;
}
else
{
- buf = hb_buffer_init( sizeof( float ) * w->audio->config.out.samples_per_frame *
- hb_mixdown_get_discrete_channel_count( w->audio->config.out.mixdown ) );
+ int channel_count = hb_mixdown_get_discrete_channel_count( w->audio->config.out.mixdown );
+ int size = sizeof( float ) *
+ w->audio->config.out.samples_per_frame *
+ channel_count;
+ if (frame_dur > duration)
+ {
+ int samples = duration * w->audio->config.in.samplerate / 90000;
+ if (samples == 0)
+ {
+ break;
+ }
+ size = sizeof(float) * samples * channel_count;
+ frame_dur = (90000 * samples) / w->audio->config.in.samplerate;
+ }
+ buf = hb_buffer_init(size);
buf->s.start = sync->next_start;
+ buf->s.duration = frame_dur;
buf->s.stop = buf->s.start + frame_dur;
memset( buf->data, 0, buf->size );
fifo = w->audio->priv.fifo_sync;
+ duration -= frame_dur;
}
buf = OutputAudioFrame( w->audio, buf, sync );
hb_fifo_push( fifo, buf );
diff --git a/libhb/work.c b/libhb/work.c
index 6625d5ff7..4791c7dfd 100644
--- a/libhb/work.c
+++ b/libhb/work.c
@@ -354,10 +354,10 @@ void hb_display_job_info( hb_job_t * job )
{
hb_log( " + options: %s", job->advanced_opts );
}
- if( job->x264_profile && *job->x264_profile &&
+ if( job->h264_profile && *job->h264_profile &&
job->vcodec == HB_VCODEC_X264 )
{
- hb_log( " + x264 profile: %s", job->x264_profile );
+ hb_log( " + h264 profile: %s", job->h264_profile );
}
if( job->h264_level && *job->h264_level &&
job->vcodec == HB_VCODEC_X264 )
diff --git a/macosx/Controller.h b/macosx/Controller.h
index c7667a620..5182ac6fe 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -93,10 +93,12 @@ BOOL fIsDragging;
IBOutlet NSTextField * fQueueStatus;
/* Output panel */
- HBOutputPanelController *outputPanel;
+ HBOutputPanelController * outputPanel;
/* Source box */
IBOutlet NSProgressIndicator * fScanIndicator;
+ IBOutlet NSBox * fScanHorizontalLine;
+
NSString * sourceDisplayName;
IBOutlet NSTextField * fSrcDVD2Field;
IBOutlet NSTextField * fSrcTitleField;
diff --git a/macosx/Controller.m b/macosx/Controller.m
index d19f7f754..1a4b1fa8d 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -846,6 +846,8 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fScanIndicator setIndeterminate: NO];
[fScanIndicator setDoubleValue: 0.0];
[fScanIndicator setHidden: YES];
+ [fScanHorizontalLine setHidden: NO];
+
[self showNewScan:nil];
}
@@ -863,6 +865,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
NSLocalizedString( @"Scanning title %d of %d…", @"" ),
p.title_cur, p.title_count]];
[fScanIndicator setHidden: NO];
+ [fScanHorizontalLine setHidden: YES];
[fScanIndicator setDoubleValue: 100.0 * ((double)( p.title_cur - 1 ) / p.title_count)];
break;
}
@@ -874,6 +877,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fScanIndicator setIndeterminate: NO];
[fScanIndicator setDoubleValue: 0.0];
[fScanIndicator setHidden: YES];
+ [fScanHorizontalLine setHidden: NO];
[self writeToActivityLog:"ScanDone state received from fHandle"];
[self showNewScan:nil];
[[fWindow toolbar] validateVisibleItems];
@@ -1025,7 +1029,15 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
pass_desc = @"";
}
- string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d %@ of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, pass_desc, p.job_count, 100.0 * p.progress];
+
+ if ([pass_desc length])
+ {
+ string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d %@ of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, pass_desc, p.job_count, 100.0 * p.progress];
+ }
+ else
+ {
+ string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, p.job_count, 100.0 * p.progress];
+ }
if( p.seconds > -1 )
{
@@ -1868,6 +1880,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
/* We setup the scan status in the main window to indicate a source title scan */
[fSrcDVD2Field setStringValue: @"Opening a new source title…"];
[fScanIndicator setHidden: NO];
+ [fScanHorizontalLine setHidden: YES];
[fScanIndicator setIndeterminate: YES];
[fScanIndicator startAnimation: nil];
@@ -1884,7 +1897,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
{
/* use a bool to determine whether or not we can decrypt using vlc */
BOOL cancelScanDecrypt = 0;
- BOOL vlcFound = 0;
NSString *path = scanPath;
HBDVDDetector *detector = [HBDVDDetector detectorForPath:path];
@@ -1913,16 +1925,23 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
path = [detector devicePath];
[self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
- /* lets check for vlc here to make sure we have a dylib available to use for decrypting */
+
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ NSInteger suppressWarning = [prefs integerForKey:@"suppresslibdvdcss"];
+
+ /* Notify the user that we don't support removal of copy proteciton. */
void *dvdcss = dlopen("libdvdcss.2.dylib", RTLD_LAZY);
- if (dvdcss == NULL)
+ if (dvdcss == NULL && suppressWarning != 1)
{
+ /* Only show the user this warning once. They may be using a solution we don't know about. Notifying them each time is annoying. */
+ [prefs setInteger:1 forKey:@"suppresslibdvdcss"];
+
/*compatible vlc not found, so we set the bool to cancel scanning to 1 */
cancelScanDecrypt = 1;
[self writeToActivityLog: "libdvdcss.2.dylib not found for decrypting physical dvd"];
int status;
- status = NSRunAlertPanel(@"HandBrake could not find a compatible version of libdvdcss (32-bit libdvdcss is not compatible with 64-bit HandBrake and vice-versa).",
- @"Please download and install libdvdcss.pkg if you wish to read encrypted DVDs.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway");
+ status = NSRunAlertPanel(@"Please note that HandBrake does not support the removal of copy-protection from DVD Discs. You can if you wish install libdvdcss or any other 3rd party software for this function.",
+ @"Videolan.org provides libdvdcss if you are not currently using another solution.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway");
[NSApp requestUserAttention:NSCriticalRequest];
if (status == NSAlertDefaultReturn)
@@ -1933,13 +1952,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
else if (status == NSAlertAlternateReturn)
{
/* User chose to cancel the scan */
- [self writeToActivityLog: "cannot open physical dvd, scan cancelled"];
+ [self writeToActivityLog: "Cannot open physical dvd, scan cancelled"];
}
else
{
/* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */
cancelScanDecrypt = 0;
- [self writeToActivityLog: "user overrode dvdcss warning - trying to open physical dvd without decryption"];
+ [self writeToActivityLog: "User overrode copy-proteciton warning - trying to open physical dvd without decryption"];
}
}
@@ -1947,7 +1966,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
{
/* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */
[self writeToActivityLog: "libdvdcss.2.dylib found for decrypting physical dvd"];
- vlcFound = 1;
dlclose(dvdcss);
}
}
@@ -2792,50 +2810,6 @@ fWorkingCount = 0;
*/
NSString *path = scanPath;
HBDVDDetector *detector = [HBDVDDetector detectorForPath:path];
-
- if( [detector isVideoDVD] )
- {
- // The chosen path was actually on a DVD, so use the raw block
- // device path instead.
- path = [detector devicePath];
- [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
-
- /* lets check for vlc here to make sure we have a dylib available to use for decrypting */
- void *dvdcss = dlopen("libdvdcss.2.dylib", RTLD_LAZY);
- if (dvdcss == NULL)
- {
- /*vlc not found in /Applications so we set the bool to cancel scanning to 1 */
- cancelScanDecrypt = 1;
- [self writeToActivityLog: "VLC app not found for decrypting physical dvd"];
- int status;
- status = NSRunAlertPanel(@"HandBrake could not find VLC.",@"Please download and install VLC media player in your /Applications folder if you wish to read encrypted DVDs.", @"Get VLC", @"Cancel Scan", @"Attempt Scan Anyway");
- [NSApp requestUserAttention:NSCriticalRequest];
-
- if (status == NSAlertDefaultReturn)
- {
- /* User chose to go download vlc (as they rightfully should) so we send them to the vlc site */
- [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.videolan.org/"]];
- }
- else if (status == NSAlertAlternateReturn)
- {
- /* User chose to cancel the scan */
- [self writeToActivityLog: "cannot open physical dvd , scan cancelled"];
- }
- else
- {
- /* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */
- cancelScanDecrypt = 0;
- [self writeToActivityLog: "user overrode vlc warning -trying to open physical dvd without decryption"];
- }
-
- }
- else
- {
- /* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */
- dlclose(dvdcss);
- [self writeToActivityLog: "VLC app found for decrypting physical dvd"];
- }
- }
if (cancelScanDecrypt == 0)
{
@@ -2879,11 +2853,11 @@ fWorkingCount = 0;
*/
if (job->indepth_scan == 1)
{
- char *x264_preset_tmp = job->x264_preset != NULL ? strdup(job->x264_preset) : NULL;
- char *x264_tune_tmp = job->x264_tune != NULL ? strdup(job->x264_tune) : NULL;
- char *advanced_opts_tmp = job->advanced_opts != NULL ? job->advanced_opts : NULL;
- char *h264_profile_tmp = job->x264_profile != NULL ? strdup(job->x264_profile) : NULL;
- char *h264_level_tmp = job->h264_level != NULL ? strdup(job->h264_level) : NULL;
+ char *x264_preset_tmp = job->x264_preset != NULL ? strdup(job->x264_preset) : NULL;
+ char *x264_tune_tmp = job->x264_tune != NULL ? strdup(job->x264_tune) : NULL;
+ char *advanced_opts_tmp = job->advanced_opts != NULL ? strdup(job->advanced_opts) : NULL;
+ char *h264_profile_tmp = job->h264_profile != NULL ? strdup(job->h264_profile) : NULL;
+ char *h264_level_tmp = job->h264_level != NULL ? strdup(job->h264_level) : NULL;
/*
* When subtitle scan is enabled do a fast pre-scan job
* which will determine which subtitles to enable, if any.
@@ -2891,8 +2865,8 @@ fWorkingCount = 0;
hb_job_set_x264_preset (job, NULL);
hb_job_set_x264_tune (job, NULL);
hb_job_set_advanced_opts(job, NULL);
- hb_job_set_x264_profile (job, NULL);
- hb_job_set_x264_level (job, NULL);
+ hb_job_set_h264_profile (job, NULL);
+ hb_job_set_h264_level (job, NULL);
job->pass = -1;
hb_add(fQueueEncodeLibhb, job);
/*
@@ -2901,8 +2875,8 @@ fWorkingCount = 0;
hb_job_set_x264_preset (job, x264_preset_tmp);
hb_job_set_x264_tune (job, x264_tune_tmp);
hb_job_set_advanced_opts(job, advanced_opts_tmp);
- hb_job_set_x264_profile (job, h264_profile_tmp);
- hb_job_set_x264_level (job, h264_level_tmp);
+ hb_job_set_h264_profile (job, h264_profile_tmp);
+ hb_job_set_h264_level (job, h264_level_tmp);
free(x264_preset_tmp);
free(x264_tune_tmp);
free(advanced_opts_tmp);
@@ -3102,19 +3076,30 @@ fWorkingCount = 0;
job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue];
- /* we check to make sure the presets width/height does not exceed the sources width/height */
- if (fTitle->width < [[queueToApply objectForKey:@"PictureWidth"] intValue] || fTitle->height < [[queueToApply objectForKey:@"PictureHeight"] intValue])
- {
- /* if so, then we use the sources height and width to avoid scaling up */
- //job->width = fTitle->width;
- //job->height = fTitle->height;
+ /*
+ * if the preset specifies neither max. width nor height
+ * (both are 0), use the max. picture size
+ *
+ * if the specified non-zero dimensions exceed those of the
+ * source, also use the max. picture size (no upscaling)
+ */
+ if (([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 &&
+ [[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0) ||
+ ([[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width &&
+ [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height) ||
+ ([[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0 &&
+ [[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width) ||
+ ([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 &&
+ [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height))
+ {
+ /* use the source's width/height to avoid upscaling */
[self revertPictureSizeToMax:nil];
}
- else // source width/height is >= the preset height/width
+ else // source width/height is >= preset width/height
{
- /* we can go ahead and use the presets values for height and width */
- job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue];
- job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue];
+ /* use the preset values for width/height */
+ job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue];
+ job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue];
}
job->keep_ratio = [[queueToApply objectForKey:@"PictureKeepRatio"] intValue];
if (job->keep_ratio == 1)
@@ -3321,8 +3306,8 @@ fWorkingCount = 0;
hb_job_set_x264_preset (job, x264_preset);
hb_job_set_x264_tune (job, x264_tune);
hb_job_set_advanced_opts(job, advanced_opts);
- hb_job_set_x264_profile (job, h264_profile);
- hb_job_set_x264_level (job, h264_level);
+ hb_job_set_h264_profile (job, h264_profile);
+ hb_job_set_h264_level (job, h264_level);
}
else if (job->vcodec & HB_VCODEC_FFMPEG_MASK)
{
@@ -3846,8 +3831,8 @@ bool one_burned = FALSE;
hb_job_set_x264_preset (job, x264_preset);
hb_job_set_x264_tune (job, x264_tune);
hb_job_set_advanced_opts(job, advanced_opts);
- hb_job_set_x264_profile (job, h264_profile);
- hb_job_set_x264_level (job, h264_level);
+ hb_job_set_h264_profile (job, h264_profile);
+ hb_job_set_h264_level (job, h264_level);
}
else if (job->vcodec & HB_VCODEC_FFMPEG_MASK)
{
@@ -5291,9 +5276,8 @@ the user is using "Custom" settings by determining the sender*/
NSUInteger i;
/*
* now we populate the x264 system widgets via hb_x264_presets(),
- * hb_x264_tunes(), hb_x264_profiles(), hb_h264_levels()
+ * hb_x264_tunes(), hb_h264_profiles(), hb_h264_levels()
*/
-
// store x264 preset names
const char * const * x264_presets = hb_x264_presets();
NSMutableArray *tmp_array = [[NSMutableArray alloc] init];
@@ -5320,9 +5304,9 @@ the user is using "Custom" settings by determining the sender*/
[fX264TunePopUp addItemWithTitle: @"none"];
const char * const * x264_tunes = hb_x264_tunes();
for (int i = 0; x264_tunes[i] != NULL; i++)
- {
+ {
// we filter out "fastdecode" as we have a dedicated checkbox for it
- if (strcasecmp(x264_tunes[i], "fastdecode"))
+ if (strcasecmp(x264_tunes[i], "fastdecode") != 0)
{
[fX264TunePopUp addItemWithTitle: [NSString stringWithUTF8String:x264_tunes[i]]];
}
@@ -5331,18 +5315,16 @@ the user is using "Custom" settings by determining the sender*/
[fX264FastDecodeCheck setState: NSOffState];
// setup the h264 profile popup
[fX264ProfilePopUp removeAllItems];
- [fX264ProfilePopUp addItemWithTitle: @"auto"];
- const char * const * x264_profiles = hb_x264_profiles();
- for (int i = 0; x264_profiles[i] != NULL; i++)
- {
- [fX264ProfilePopUp addItemWithTitle: [NSString stringWithUTF8String:x264_profiles[i]]];
+ const char * const * h264_profiles = hb_h264_profiles();
+ for (int i = 0; h264_profiles[i] != NULL; i++)
+ {
+ [fX264ProfilePopUp addItemWithTitle: [NSString stringWithUTF8String:h264_profiles[i]]];
}
// setup the h264 level popup
[fX264LevelPopUp removeAllItems];
- [fX264LevelPopUp addItemWithTitle: @"auto"];
const char * const * h264_levels = hb_h264_levels();
for (int i = 0; h264_levels[i] != NULL; i++)
- {
+ {
[fX264LevelPopUp addItemWithTitle: [NSString stringWithUTF8String:h264_levels[i]]];
}
// clear the additional x264 options
@@ -5569,7 +5551,7 @@ the user is using "Custom" settings by determining the sender*/
* char * hb_x264_param_unparse(const char *x264_preset,
* const char *x264_tune,
* const char *x264_encopts,
- * const char *x264_profile,
+ * const char *h264_profile,
* const char *h264_level,
* int width, int height);
*/
@@ -5614,9 +5596,16 @@ the user is using "Custom" settings by determining the sender*/
h264_level,
width, height);
// update the text field
- [fDisplayX264PresetsUnparseTextField setStringValue:
- [NSString stringWithFormat:@"x264 Unparse: %s",
- fX264PresetsUnparsedUTF8String]];
+ if (fX264PresetsUnparsedUTF8String != NULL)
+ {
+ [fDisplayX264PresetsUnparseTextField setStringValue:
+ [NSString stringWithFormat:@"x264 Unparse: %s",
+ fX264PresetsUnparsedUTF8String]];
+ }
+ else
+ {
+ [fDisplayX264PresetsUnparseTextField setStringValue:@"x264 Unparse:"];
+ }
}
#pragma mark -
@@ -6523,8 +6512,10 @@ return YES;
job->modulus = 16;
}
- /* Check to see if the objectForKey:@"UsesPictureSettings is 2 which is "Use Max for the source */
- if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 || [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1)
+ /* Check to see if the objectForKey:@"UsesPictureSettings" is 2,
+ * which means "Use max. picture size for the source" */
+ if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 ||
+ [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1)
{
/* Use Max Picture settings for whatever the dvd is.*/
[self revertPictureSizeToMax:nil];
@@ -6540,21 +6531,34 @@ return YES;
}
job->anamorphic.mode = [[chosenPreset objectForKey:@"PicturePAR"] intValue];
}
- else // /* If not 0 or 2 we assume objectForKey:@"UsesPictureSettings is 1 which is "Use picture sizing from when the preset was set" */
+ /* If not 0 or 2 we assume objectForKey:@"UsesPictureSettings" is 1,
+ * which means "Use the picture size specified in the preset" */
+ else
{
- /* we check to make sure the presets width/height does not exceed the sources width/height */
- if (fTitle->width < [[chosenPreset objectForKey:@"PictureWidth"] intValue] || fTitle->height < [[chosenPreset objectForKey:@"PictureHeight"] intValue])
+ /*
+ * if the preset specifies neither max. width nor height
+ * (both are 0), use the max. picture size
+ *
+ * if the specified non-zero dimensions exceed those of the
+ * source, also use the max. picture size (no upscaling)
+ */
+ if (([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 &&
+ [[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0) ||
+ ([[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width &&
+ [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height) ||
+ ([[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0 &&
+ [[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width) ||
+ ([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 &&
+ [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height))
{
- /* if so, then we use the sources height and width to avoid scaling up */
- //job->width = fTitle->width;
- //job->height = fTitle->height;
+ /* use the source's width/height to avoid upscaling */
[self revertPictureSizeToMax:nil];
}
- else // source width/height is >= the preset height/width
+ else // source width/height is >= preset width/height
{
- /* we can go ahead and use the presets values for height and width */
- job->width = [[chosenPreset objectForKey:@"PictureWidth"] intValue];
- job->height = [[chosenPreset objectForKey:@"PictureHeight"] intValue];
+ /* use the preset values for width/height */
+ job->width = [[chosenPreset objectForKey:@"PictureWidth"] intValue];
+ job->height = [[chosenPreset objectForKey:@"PictureHeight"] intValue];
}
job->keep_ratio = [[chosenPreset objectForKey:@"PictureKeepRatio"] intValue];
if (job->keep_ratio == 1)
diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib
index e4b943f72..a77f08d63 100644
--- a/macosx/English.lproj/MainMenu.xib
+++ b/macosx/English.lproj/MainMenu.xib
@@ -2,47 +2,47 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">11G63</string>
- <string key="IBDocument.InterfaceBuilderVersion">1938</string>
- <string key="IBDocument.AppKitVersion">1138.51</string>
- <string key="IBDocument.HIToolboxVersion">569.00</string>
+ <string key="IBDocument.SystemVersion">12C60</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+ <string key="IBDocument.AppKitVersion">1187.34</string>
+ <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1938</string>
+ <string key="NS.object.0">2844</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSTabView</string>
- <string>NSScroller</string>
- <string>NSMenu</string>
- <string>NSSliderCell</string>
+ <string>NSArrayController</string>
+ <string>NSBox</string>
<string>NSButton</string>
- <string>NSTableHeaderView</string>
- <string>NSMatrix</string>
+ <string>NSButtonCell</string>
<string>NSCustomObject</string>
- <string>NSArrayController</string>
- <string>NSImageView</string>
- <string>NSTableView</string>
<string>NSCustomView</string>
- <string>NSSlider</string>
+ <string>NSDrawer</string>
<string>NSImageCell</string>
- <string>NSTextField</string>
+ <string>NSImageView</string>
+ <string>NSMatrix</string>
+ <string>NSMenu</string>
+ <string>NSMenuItem</string>
<string>NSNumberFormatter</string>
- <string>NSWindowTemplate</string>
- <string>NSTextFieldCell</string>
- <string>NSButtonCell</string>
- <string>NSTableColumn</string>
- <string>NSBox</string>
- <string>NSView</string>
<string>NSOutlineView</string>
+ <string>NSPopUpButton</string>
<string>NSPopUpButtonCell</string>
+ <string>NSProgressIndicator</string>
<string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSSlider</string>
+ <string>NSSliderCell</string>
+ <string>NSTabView</string>
<string>NSTabViewItem</string>
- <string>NSProgressIndicator</string>
+ <string>NSTableColumn</string>
+ <string>NSTableHeaderView</string>
+ <string>NSTableView</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
<string>NSUserDefaultsController</string>
- <string>NSPopUpButton</string>
- <string>NSMenuItem</string>
- <string>NSDrawer</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -91,7 +91,7 @@
<reference key="NSNextKeyView" ref="1007421233"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="10523918">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4325376</int>
<string type="base64-UTF8" key="NSContents">RE8gTk9UIFRSQU5TTEFURSBUSElTIE5JQiBGSUxFLAo</string>
<object class="NSFont" key="NSSupport" id="26">
@@ -119,11 +119,11 @@
</object>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSProgressIndicator" id="222334056">
<reference key="NSNextResponder" ref="168918359"/>
<int key="NSvFlags">1288</int>
- <object class="NSPSMatrix" key="NSDrawMatrix"/>
<string key="NSFrame">{{18, -26}, {930, 20}}</string>
<reference key="NSSuperview" ref="168918359"/>
<reference key="NSWindow"/>
@@ -156,7 +156,7 @@
<reference key="NSNextKeyView" ref="888819828"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="200565868">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Video Quality:</string>
<reference key="NSSupport" ref="26"/>
@@ -164,6 +164,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="783405221">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -174,7 +175,7 @@
<reference key="NSNextKeyView" ref="1000247853"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="351953267">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">4326400</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -196,6 +197,7 @@
<reference key="NSColor" ref="544409939"/>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSSlider" id="239657287">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -206,7 +208,7 @@
<reference key="NSNextKeyView" ref="783405221"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSliderCell" key="NSCell" id="160453387">
- <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags">67371264</int>
<int key="NSCellFlags2">262144</int>
<object class="NSMutableString" key="NSContents">
<characters key="NS.bytes"/>
@@ -226,6 +228,7 @@
<bool key="NSAllowsTickMarkValuesOnly">YES</bool>
<bool key="NSVertical">NO</bool>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="987137669">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -236,7 +239,7 @@
<reference key="NSNextKeyView" ref="690364175"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="537000521">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Picture Size: </string>
<reference key="NSSupport" ref="26"/>
@@ -244,6 +247,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="690304958">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -254,7 +258,7 @@
<reference key="NSNextKeyView" ref="239657287"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="923732752">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">-2143158272</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -272,7 +276,7 @@
<string>numberStyle</string>
<string>positiveInfinitySymbol</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<boolean value="YES"/>
<integer value="1040"/>
@@ -329,6 +333,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="323705695">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -339,7 +344,7 @@
<reference key="NSNextKeyView" ref="690304958"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="936221726">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4325376</int>
<string key="NSContents">RF:</string>
<reference key="NSSupport" ref="26"/>
@@ -347,17 +352,18 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="690364175">
<reference key="NSNextResponder" ref="1053078401"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{14, 15}, {892, 14}}</string>
+ <string key="NSFrame">{{14, 17}, {892, 14}}</string>
<reference key="NSSuperview" ref="1053078401"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="503933842"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="508148739">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Picture Cropping:</string>
<reference key="NSSupport" ref="26"/>
@@ -365,17 +371,18 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="503933842">
<reference key="NSNextResponder" ref="1053078401"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{14, 2}, {892, 14}}</string>
+ <string key="NSFrame">{{14, 3}, {892, 14}}</string>
<reference key="NSSuperview" ref="1053078401"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="794651271"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="109092334">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Video Filters:</string>
<reference key="NSSupport" ref="26"/>
@@ -383,6 +390,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="222980245">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -393,11 +401,11 @@
<reference key="NSNextKeyView" ref="521019277"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="343952154">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">132096</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="222980245"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="26"/>
<string key="NSAlternateContents"/>
@@ -439,6 +447,7 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="1000247853">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -449,12 +458,12 @@
<reference key="NSNextKeyView" ref="447003158"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="860863090">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">2-pass encoding</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1000247853"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSButtonImageSource" key="NSAlternateImage" id="624832340">
<string key="NSImageName">NSSwitch</string>
@@ -464,6 +473,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="447003158">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -474,12 +484,12 @@
<reference key="NSNextKeyView" ref="954159030"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1070893195">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Turbo first pass</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="447003158"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSCustomResource" key="NSNormalImage" id="887198214">
<string key="NSClassName">NSImage</string>
@@ -491,6 +501,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="12330413">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -501,11 +512,11 @@
<reference key="NSNextKeyView" ref="463960465"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="1018849574">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">132096</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="12330413"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="26"/>
<string key="NSAlternateContents"/>
@@ -541,6 +552,7 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="463960465">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -551,7 +563,7 @@
<reference key="NSNextKeyView" ref="222980245"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="509250281">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Framerate (FPS):</string>
<reference key="NSSupport" ref="26"/>
@@ -559,6 +571,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1064150725">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -569,7 +582,7 @@
<reference key="NSNextKeyView" ref="12330413"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="451922400">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Video Codec:</string>
<reference key="NSSupport" ref="26"/>
@@ -577,6 +590,7 @@
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSMatrix" id="1036976683">
<reference key="NSNextResponder" ref="1053078401"/>
@@ -586,18 +600,19 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="323705695"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSNumRows">2</int>
<int key="NSNumCols">1</int>
<object class="NSMutableArray" key="NSCells">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSButtonCell" id="613962178">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Constant Quality</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1036976683"/>
<int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<object class="NSButtonImageSource" key="NSAlternateImage" id="860784734">
<string key="NSImageName">NSRadioButton</string>
@@ -608,12 +623,12 @@
<int key="NSPeriodicInterval">25</int>
</object>
<object class="NSButtonCell" id="878990764">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Average Bitrate (kbps):</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1036976683"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">549453824</int>
@@ -721,7 +736,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSMatrixFlags">1151868928</int>
<string key="NSCellClass">NSActionCell</string>
<object class="NSButtonCell" key="NSProtoCell" id="121093497">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Radio</string>
<object class="NSFont" key="NSSupport" id="273283760">
@@ -729,7 +744,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">549453824</int>
@@ -789,18 +804,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1036976683"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSNumRows">2</int>
<int key="NSNumCols">1</int>
<object class="NSMutableArray" key="NSCells">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSButtonCell" id="329026312">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Variable Framerate</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="888819828"/>
<int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<reference key="NSAlternateImage" ref="860784734"/>
<string key="NSAlternateContents"/>
@@ -809,12 +825,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicInterval">25</int>
</object>
<object class="NSButtonCell" id="995154792">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Constant Framerate</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="888819828"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">549453824</int>
@@ -919,11 +935,11 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSMatrixFlags">1151868928</int>
<string key="NSCellClass">NSActionCell</string>
<object class="NSButtonCell" key="NSProtoCell" id="217044635">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Radio</string>
<reference key="NSSupport" ref="273283760"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">549453824</int>
@@ -988,14 +1004,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSSlider" id="480823072">
<reference key="NSNextResponder" ref="443817184"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{212, 105}, {660, 16}}</string>
+ <string key="NSFrame">{{243, 105}, {629, 16}}</string>
<reference key="NSSuperview" ref="443817184"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1031662534"/>
<string key="NSReuseIdentifierKey">_NS:779</string>
<bool key="NSEnabled">YES</bool>
<object class="NSSliderCell" key="NSCell" id="690637620">
- <int key="NSCellFlags">-2079981824</int>
+ <int key="NSCellFlags">-2080112384</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents"/>
<string key="NSCellIdentifier">_NS:779</string>
@@ -1009,6 +1025,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAllowsTickMarkValuesOnly">YES</bool>
<bool key="NSVertical">NO</bool>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="139432403">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1019,7 +1036,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="527737261"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="367754591">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">x264 Preset:</string>
<reference key="NSSupport" ref="26"/>
@@ -1027,6 +1044,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1031662534">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1037,7 +1055,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="610425389"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="444043003">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">x264 Tune:</string>
<reference key="NSSupport" ref="26"/>
@@ -1045,6 +1063,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="102651997">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1055,14 +1074,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="112458239"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="858212432">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
- <string key="NSContents">x264 Profile:</string>
+ <string key="NSContents">h264 Profile:</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="102651997"/>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="8023338">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1073,14 +1093,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="144142005"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="248169798">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
- <string key="NSContents">x264 Level:</string>
+ <string key="NSContents">h264 Level:</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="8023338"/>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="610425389">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1092,12 +1113,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:868</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="1050851477">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">264192</int>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:868</string>
<reference key="NSControlView" ref="610425389"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1151,6 +1172,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="112458239">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1162,12 +1184,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:868</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="1012707648">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">264192</int>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:868</string>
<reference key="NSControlView" ref="112458239"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1221,6 +1243,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="144142005">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1232,12 +1255,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:868</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="379682863">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">264192</int>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:868</string>
<reference key="NSControlView" ref="144142005"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -1291,6 +1314,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="884471415">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1302,13 +1326,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="140128742">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Fast Decode</string>
<reference key="NSSupport" ref="26"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="884471415"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -1317,6 +1341,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="796460997">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1327,7 +1352,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="8023338"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="934066385">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Additional Options:</string>
<reference key="NSSupport" ref="26"/>
@@ -1335,6 +1360,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="487526549">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1347,7 +1373,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSAntiCompressionPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="284269747">
- <int key="NSCellFlags">-1805517311</int>
+ <int key="NSCellFlags">-1805647871</int>
<int key="NSCellFlags2">272760832</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -1357,24 +1383,26 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="527737261">
<reference key="NSNextResponder" ref="443817184"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{96, 107}, {95, 13}}</string>
+ <string key="NSFrame">{{96, 107}, {129, 13}}</string>
<reference key="NSSuperview" ref="443817184"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="480823072"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="513519725">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">138412032</int>
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">4194304</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="527737261"/>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="902460295">
<reference key="NSNextResponder" ref="443817184"/>
@@ -1386,13 +1414,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="191360965">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Use x264 Advanced Options Panel</string>
<reference key="NSSupport" ref="26"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="902460295"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -1401,17 +1429,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="349581420">
<reference key="NSNextResponder" ref="443817184"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{22, 6}, {853, 29}}</string>
+ <string key="NSFrame">{{12, 6}, {863, 29}}</string>
<reference key="NSSuperview" ref="443817184"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="987137669"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="812860538">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">x264 Unparse:</string>
<reference key="NSSupport" ref="26"/>
@@ -1419,6 +1448,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrame">{{1, 1}, {890, 155}}</string>
@@ -1435,7 +1465,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:18</string>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">x264 Presets</string>
<reference key="NSSupport" ref="26"/>
@@ -1490,6 +1520,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="528259747"/>
<reference key="NSNextKeyView" ref="496546489"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="146611085">
<reference key="NSNextResponder" ref="230332532"/>
<int key="NSvFlags">256</int>
@@ -1513,7 +1545,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Track</string>
<reference key="NSSupport" ref="26"/>
@@ -1529,11 +1561,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="871837653">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="792464451"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<object class="NSFont" key="NSAlternateImage" id="995413175">
<string key="NSName">LucidaGrande</string>
@@ -1579,7 +1611,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Codec</string>
<reference key="NSSupport" ref="26"/>
@@ -1592,11 +1624,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="4014313">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="792464451"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -1639,7 +1671,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Mixdown</string>
<reference key="NSSupport" ref="26"/>
@@ -1647,11 +1679,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="1037917692">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="792464451"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -1694,7 +1726,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Samplerate</string>
<reference key="NSSupport" ref="26"/>
@@ -1702,11 +1734,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="257530638">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="792464451"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -1749,7 +1781,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Bitrate</string>
<reference key="NSSupport" ref="26"/>
@@ -1757,11 +1789,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="238248766">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="792464451"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -1804,7 +1836,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028234663852886e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">134219776</int>
<string key="NSContents">Gain</string>
<reference key="NSSupport" ref="26"/>
@@ -1812,7 +1844,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSSliderCell" key="NSDataCell" id="723141526">
- <int key="NSCellFlags">-2079981824</int>
+ <int key="NSCellFlags">-2080112384</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents"/>
<reference key="NSControlView" ref="792464451"/>
@@ -1837,7 +1869,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028234663852886e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -1845,7 +1877,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="718953459">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">133120</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
@@ -1869,7 +1901,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">134219776</int>
<string key="NSContents">DRC</string>
<reference key="NSSupport" ref="26"/>
@@ -1877,7 +1909,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSSliderCell" key="NSDataCell" id="852982078">
- <int key="NSCellFlags">-2079981824</int>
+ <int key="NSCellFlags">-2080112384</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents"/>
<reference key="NSControlView" ref="792464451"/>
@@ -1902,7 +1934,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -1910,7 +1942,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="750418243">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">272761856</int>
<string key="NSContents">Text</string>
<reference key="NSSupport" ref="26"/>
@@ -1960,6 +1992,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSFrame">{{-100, -100}, {15, 206}}</string>
<reference key="NSSuperview" ref="933946879"/>
<reference key="NSNextKeyView" ref="821562152"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="933946879"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">37</double>
@@ -1971,6 +2004,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSFrame">{{-100, -100}, {685, 15}}</string>
<reference key="NSSuperview" ref="933946879"/>
<reference key="NSNextKeyView" ref="727606062"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="933946879"/>
<string key="NSAction">_doScroller:</string>
@@ -2001,6 +2035,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSContentView" ref="528259747"/>
<reference key="NSHeaderClipView" ref="230332532"/>
<bytes key="NSScrollAmts">QSAAAEEgAABB2AAAQdgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="883603583">
<reference key="NSNextResponder" ref="577274772"/>
@@ -2010,18 +2047,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="334448622"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="327570663">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134479872</int>
<string key="NSContents">Add All Tracks</string>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="883603583"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="334448622">
<reference key="NSNextResponder" ref="577274772"/>
@@ -2042,13 +2080,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="707344957">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents">MP3</string>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="162512199"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2057,6 +2095,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="354328979">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2067,13 +2106,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="243873688">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents">AAC</string>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="354328979"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2082,6 +2121,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="453548414">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2092,13 +2132,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="368344404">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents">AC3</string>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="453548414"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2107,6 +2147,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="485809563">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2117,13 +2158,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="118300837">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents">DTS</string>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="485809563"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2132,6 +2173,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="1024961404">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2142,13 +2184,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:771</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="735750065">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">262144</int>
<string key="NSContents">DTS-HD</string>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:771</string>
<reference key="NSControlView" ref="1024961404"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2157,6 +2199,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="586044455">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2167,12 +2210,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:868</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="141259846">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">264192</int>
<reference key="NSSupport" ref="22"/>
<string key="NSCellIdentifier">_NS:868</string>
<reference key="NSControlView" ref="586044455"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -2226,6 +2269,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1010907474">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2235,7 +2279,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="162512199"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="935575109">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71565312</int>
<string key="NSContents">Auto Passthru:</string>
<reference key="NSSupport" ref="22"/>
@@ -2243,6 +2287,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="431725280">
<reference key="NSNextResponder" ref="754802956"/>
@@ -2252,7 +2297,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="586044455"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="121164790">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71565312</int>
<string key="NSContents">Passthru Fallback:</string>
<reference key="NSSupport" ref="22"/>
@@ -2260,6 +2305,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrame">{{1, 1}, {552, 29}}</string>
@@ -2274,7 +2320,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSReuseIdentifierKey">_NS:18</string>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Auto Passthru</string>
<reference key="NSSupport" ref="26"/>
@@ -2326,6 +2372,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSFrameSize">{884, 241}</string>
<reference key="NSSuperview" ref="705918581"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="569585004">
<reference key="NSNextResponder" ref="139191276"/>
<int key="NSvFlags">256</int>
@@ -2347,7 +2395,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Track</string>
<reference key="NSSupport" ref="26"/>
@@ -2358,11 +2406,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="426946554">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">264192</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">100679935</int>
+ <int key="NSButtonFlags">100679680</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -2402,7 +2450,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">134219776</int>
<string key="NSContents">Forced Only</string>
<reference key="NSSupport" ref="26"/>
@@ -2410,12 +2458,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSButtonCell" key="NSDataCell" id="13236417">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Check</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags">1215582464</int>
<int key="NSButtonFlags2">130</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2435,7 +2483,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">134219776</int>
<string key="NSContents">Burned In</string>
<reference key="NSSupport" ref="26"/>
@@ -2443,12 +2491,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSButtonCell" key="NSDataCell" id="704907857">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Check</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags">1215582464</int>
<int key="NSButtonFlags2">130</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2468,7 +2516,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">134219776</int>
<string key="NSContents">Default</string>
<reference key="NSSupport" ref="26"/>
@@ -2476,12 +2524,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSButtonCell" key="NSDataCell" id="299034685">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Check</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags">1215582464</int>
<int key="NSButtonFlags2">130</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -2501,7 +2549,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Srt Language</string>
<reference key="NSSupport" ref="26"/>
@@ -2509,11 +2557,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="688461412">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">100679935</int>
+ <int key="NSButtonFlags">100679680</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -2555,7 +2603,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Srt Char Code</string>
<reference key="NSSupport" ref="26"/>
@@ -2563,11 +2611,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSPopUpButtonCell" key="NSDataCell" id="483232645">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="587237088"/>
- <int key="NSButtonFlags">100679935</int>
+ <int key="NSButtonFlags">100679680</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -2609,7 +2657,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028229999999999e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Srt Offset</string>
<reference key="NSSupport" ref="26"/>
@@ -2617,7 +2665,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="43785715">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Text</string>
<reference key="NSSupport" ref="273283760"/>
@@ -2659,6 +2707,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {15, 206}}</string>
<reference key="NSSuperview" ref="596256174"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="596256174"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">37</double>
@@ -2669,6 +2718,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {685, 15}}</string>
<reference key="NSSuperview" ref="596256174"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="596256174"/>
<string key="NSAction">_doScroller:</string>
@@ -2699,6 +2749,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSContentView" ref="705918581"/>
<reference key="NSHeaderClipView" ref="139191276"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="377401502">
<reference key="NSNextResponder" ref="756255803"/>
@@ -2707,18 +2760,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="756255803"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="206924163">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134479872</int>
<string key="NSContents">Add External SRT ...</string>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="377401502"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrame">{{10, 25}, {920, 305}}</string>
@@ -2751,7 +2805,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="815869140"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="26"/>
@@ -2799,6 +2853,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="272816362"/>
<reference key="NSNextKeyView" ref="1033243513"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="928480858">
<reference key="NSNextResponder" ref="814110287"/>
<int key="NSvFlags">256</int>
@@ -2822,7 +2878,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Chapter</string>
<reference key="NSSupport" ref="26"/>
@@ -2833,7 +2889,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="686068440">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="995413175"/>
@@ -2851,7 +2907,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">77.217290000000006</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Chapter Title</string>
<reference key="NSSupport" ref="26"/>
@@ -2859,7 +2915,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="237660698">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="995413175"/>
@@ -2901,6 +2957,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{870, 17}, {15, 242}}</string>
<reference key="NSSuperview" ref="307620967"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="307620967"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.9736842</double>
@@ -2911,6 +2968,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSFrame">{{-100, -100}, {488, 15}}</string>
<reference key="NSSuperview" ref="307620967"/>
<reference key="NSNextKeyView" ref="814110287"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="307620967"/>
<string key="NSAction">_doScroller:</string>
@@ -2941,6 +2999,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSContentView" ref="272816362"/>
<reference key="NSHeaderClipView" ref="814110287"/>
<bytes key="NSScrollAmts">AAAAAAAAAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="262106913">
<reference key="NSNextResponder" ref="440990725"/>
@@ -2950,12 +3011,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="307620967"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="719511430">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Create chapter markers</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="262106913"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSAlternateImage" ref="624832340"/>
<string key="NSAlternateContents"/>
@@ -2963,6 +3024,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="959722284">
<reference key="NSNextResponder" ref="440990725"/>
@@ -2971,18 +3033,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="440990725"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="100898939">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134479872</int>
<string key="NSContents">Import Chapters ...</string>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="959722284"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="931485910">
<reference key="NSNextResponder" ref="440990725"/>
@@ -2991,18 +3054,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="440990725"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="843416672">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134479872</int>
<string key="NSContents">Export Chapters ...</string>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="931485910"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrame">{{10, 25}, {920, 305}}</string>
@@ -3032,7 +3096,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="854767306"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="121574898">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4325376</int>
<string key="NSContents">Source:</string>
<object class="NSFont" key="NSSupport" id="27">
@@ -3044,6 +3108,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="806469067">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3054,7 +3119,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="766125203"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="177567437">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Title:</string>
<reference key="NSSupport" ref="26"/>
@@ -3062,6 +3127,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="766125203">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3072,11 +3138,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="303369850"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="821198683">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">263168</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="766125203"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage" id="1010451086">
<string key="NSName">LucidaGrande</string>
@@ -3116,6 +3182,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="482831442">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3126,11 +3193,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="971754180"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="266952854">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">263168</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="482831442"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="1010451086"/>
<string key="NSAlternateContents"/>
@@ -3155,6 +3222,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="303369850">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3165,7 +3233,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="460320725"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="677126774">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Angle:</string>
<reference key="NSSupport" ref="26"/>
@@ -3173,6 +3241,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="460320725">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3183,11 +3252,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="482831442"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="567459641">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">263168</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="460320725"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="1010451086"/>
<string key="NSAlternateContents"/>
@@ -3223,6 +3292,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1023408378">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3233,7 +3303,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="186223550"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="834340599">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">File:</string>
<reference key="NSSupport" ref="26"/>
@@ -3241,6 +3311,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="713493964">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3251,7 +3322,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="955053416"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1038625481">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Duration:</string>
<reference key="NSSupport" ref="26"/>
@@ -3259,6 +3330,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="955053416">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3269,7 +3341,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="138115732"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="362196160">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -3280,6 +3352,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="138115732">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3290,7 +3363,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="104002862"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="510160694">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4325376</int>
<string key="NSContents">Destination</string>
<reference key="NSSupport" ref="27"/>
@@ -3298,6 +3371,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="732193996">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3308,11 +3382,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="553453876"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="264217237">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">132096</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="732193996"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="26"/>
<string key="NSAlternateContents"/>
@@ -3346,6 +3420,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="210289606">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3356,12 +3431,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="35106907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="295879492">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Browse…</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="210289606"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -3371,6 +3446,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="10346684">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3381,7 +3457,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="1023408378"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="273283760"/>
@@ -3405,7 +3481,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="519699512"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="689580100">
- <int key="NSCellFlags">69336641</int>
+ <int key="NSCellFlags">69206081</int>
<int key="NSCellFlags2">4327936</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -3416,6 +3492,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="186223550">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3426,7 +3503,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="210289606"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="988599137">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">4326400</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -3435,6 +3512,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="104002862">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3445,7 +3523,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="978025076"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="371961838">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">71566336</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -3454,6 +3532,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="398989741">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3464,7 +3543,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="453345136"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="506346481">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">71566336</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -3473,6 +3552,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="19055068">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3483,7 +3563,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="164276139"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="778187711">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">4457472</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -3492,6 +3572,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="164276139">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3502,7 +3583,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="10346684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1039518079">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">4457472</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -3511,6 +3592,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="35106907">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3521,7 +3603,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="574185541"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="293028864">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4325376</int>
<string key="NSContents">Output Settings:</string>
<reference key="NSSupport" ref="27"/>
@@ -3529,6 +3611,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="151388399">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3539,7 +3622,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="87961628"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="273283760"/>
@@ -3563,7 +3646,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="151388399"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="488791842">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="27"/>
@@ -3571,6 +3654,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1007421233">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3581,7 +3665,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="222334056"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="224806210">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71434240</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -3589,6 +3673,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="87961628">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3599,7 +3684,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="732193996"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="51600927">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Format:</string>
<reference key="NSSupport" ref="26"/>
@@ -3607,6 +3692,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="454206717">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3617,7 +3703,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="806469067"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="273283760"/>
@@ -3634,8 +3720,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<object class="NSProgressIndicator" id="519699512">
<reference key="NSNextResponder" ref="168918359"/>
- <int key="NSvFlags">-2147482356</int>
- <object class="NSPSMatrix" key="NSDrawMatrix"/>
+ <int key="NSvFlags">-2147483380</int>
<string key="NSFrame">{{385, 532}, {562, 12}}</string>
<reference key="NSSuperview" ref="168918359"/>
<reference key="NSWindow"/>
@@ -3652,12 +3737,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="921877174"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="832863281">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Web optimized</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="581806074"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -3666,6 +3751,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="553453876">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3676,12 +3762,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="581806074"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="294332300">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Large file size</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="553453876"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -3690,6 +3776,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="921877174">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3700,12 +3787,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="712502892"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="547085070">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">iPod 5G support</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="921877174"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -3714,6 +3801,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="978025076">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3724,7 +3812,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="398989741"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="138681808">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">138412032</int>
<string key="NSContents">through</string>
<reference key="NSSupport" ref="26"/>
@@ -3732,6 +3820,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="971754180">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3742,11 +3831,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="713493964"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="286887304">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">263168</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="971754180"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="1010451086"/>
<string key="NSAlternateContents"/>
@@ -3782,6 +3871,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="453345136">
<reference key="NSNextResponder" ref="168918359"/>
@@ -3792,11 +3882,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSNextKeyView" ref="19055068"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="564669343">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">263168</int>
<reference key="NSSupport" ref="22"/>
<reference key="NSControlView" ref="453345136"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="1010451086"/>
<string key="NSAlternateContents"/>
@@ -3832,6 +3922,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{959, 558}</string>
@@ -3839,7 +3930,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="586321835"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -4594,7 +4685,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="168254512"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="72412547">
- <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
@@ -4605,6 +4696,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSStyle">0</int>
<bool key="NSAnimates">NO</bool>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSButton" id="764659803">
@@ -4614,12 +4706,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="168254512"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="938246142">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">137887744</int>
<string key="NSContents">Ahuh !</string>
<reference key="NSSupport" ref="273283760"/>
<reference key="NSControlView" ref="764659803"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage">
<string key="NSName">Helvetica</string>
@@ -4631,6 +4723,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="640205151">
<reference key="NSNextResponder" ref="168254512"/>
@@ -4639,7 +4732,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="168254512"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="160092001">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">138412032</int>
<string key="NSContents">Rip done !</string>
<reference key="NSSupport" ref="273283760"/>
@@ -4647,11 +4740,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{300, 233}</string>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -4688,6 +4782,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSFrameSize">{247, 506}</string>
<reference key="NSSuperview" ref="421228634"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -4701,7 +4797,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Presets</string>
<reference key="NSSupport" ref="26"/>
@@ -4712,7 +4808,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="384895213">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="995413175"/>
@@ -4760,6 +4856,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{248, 1}, {11, 506}}</string>
<reference key="NSSuperview" ref="33643505"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">256</int>
<reference key="NSTarget" ref="33643505"/>
<string key="NSAction">_doScroller:</string>
@@ -4770,6 +4867,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {183, 15}}</string>
<reference key="NSSuperview" ref="33643505"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="33643505"/>
<string key="NSAction">_doScroller:</string>
@@ -4784,6 +4882,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSHScroller" ref="573337548"/>
<reference key="NSContentView" ref="421228634"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBgAAAQYAAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="241719587">
<reference key="NSNextResponder" ref="621751818"/>
@@ -4792,7 +4893,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="621751818"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="501219161">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents"/>
<object class="NSFont" key="NSSupport" id="575851035">
@@ -4801,7 +4902,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSfFlags">2072</int>
</object>
<reference key="NSControlView" ref="241719587"/>
- <int key="NSButtonFlags">-2030804737</int>
+ <int key="NSButtonFlags">-2030804992</int>
<int key="NSButtonFlags2">34</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
@@ -4812,6 +4913,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="699919504">
<reference key="NSNextResponder" ref="621751818"/>
@@ -4820,12 +4922,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="621751818"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="489159603">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="575851035"/>
<reference key="NSControlView" ref="699919504"/>
- <int key="NSButtonFlags">-2032901889</int>
+ <int key="NSButtonFlags">-2032902144</int>
<int key="NSButtonFlags2">34</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
@@ -4836,6 +4938,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="886184281">
<reference key="NSNextResponder" ref="621751818"/>
@@ -4844,11 +4947,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="621751818"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="492120702">
- <int key="NSCellFlags">71433792</int>
+ <int key="NSCellFlags">71303232</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="273283760"/>
<reference key="NSControlView" ref="886184281"/>
- <int key="NSButtonFlags">-2031075073</int>
+ <int key="NSButtonFlags">-2031075328</int>
<int key="NSButtonFlags2">162</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -4907,6 +5010,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{270, 550}</string>
@@ -4937,12 +5041,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="107603394">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Add</string>
<reference key="NSSupport" ref="273283760"/>
<reference key="NSControlView" ref="636581183"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage" id="212993004">
<string key="NSName">LucidaGrande</string>
@@ -4954,6 +5058,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="586136427">
<reference key="NSNextResponder" ref="69290042"/>
@@ -4962,12 +5067,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="231870318">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Cancel</string>
<reference key="NSSupport" ref="273283760"/>
<reference key="NSControlView" ref="586136427"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="212993004"/>
<string key="NSAlternateContents"/>
@@ -4975,6 +5080,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="978853241">
<reference key="NSNextResponder" ref="69290042"/>
@@ -4983,7 +5089,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="479246832">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">272761856</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -4992,6 +5098,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="167356719">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5000,11 +5107,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="17688962">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">133120</int>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="167356719"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -5062,6 +5169,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="343391844">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5070,7 +5178,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="658438349">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272760832</int>
<string type="base64-UTF8" key="NSContents">UHJlc2V0IE5hbWU6Cg</string>
<reference key="NSSupport" ref="26"/>
@@ -5078,6 +5186,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="340554114">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5086,7 +5195,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="70981869">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272760832</int>
<string key="NSContents">Picture Settings:</string>
<reference key="NSSupport" ref="26"/>
@@ -5094,6 +5203,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="384547934">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5102,7 +5212,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="207651610">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272760832</int>
<string key="NSContents">Description:</string>
<reference key="NSSupport" ref="26"/>
@@ -5110,6 +5220,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="511645357">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5118,7 +5229,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="855042909">
- <int key="NSCellFlags">-1805517311</int>
+ <int key="NSCellFlags">-1805647871</int>
<int key="NSCellFlags2">272760832</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -5127,6 +5238,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="31472093">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5135,7 +5247,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="31665321">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71434240</int>
<string key="NSContents">Use Picture Size:</string>
<reference key="NSSupport" ref="26"/>
@@ -5143,6 +5255,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="1024752086">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5151,12 +5264,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="625635488">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1024752086"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -5165,6 +5278,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="786415813">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5173,12 +5287,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="977106207">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Preset Folder ( if checked disregard below )</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="786415813"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="887198214"/>
<reference key="NSAlternateImage" ref="624832340"/>
@@ -5187,6 +5301,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="5085381">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5195,7 +5310,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="273283760"/>
@@ -5217,7 +5332,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="273283760"/>
@@ -5239,7 +5354,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="155469085">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71434240</int>
<string key="NSContents">Use Picture Filters:</string>
<reference key="NSSupport" ref="26"/>
@@ -5247,6 +5362,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSBox" id="277759901">
<reference key="NSNextResponder" ref="69290042"/>
@@ -5265,7 +5381,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="956968044"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="862361869">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">71566336</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -5274,6 +5390,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="358179065">
<reference key="NSNextResponder" ref="956968044"/>
@@ -5282,7 +5399,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="956968044"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="14541127">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">138543104</int>
<string key="NSContents">X</string>
<reference key="NSSupport" ref="26"/>
@@ -5290,6 +5407,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="525081109">
<reference key="NSNextResponder" ref="956968044"/>
@@ -5298,7 +5416,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="956968044"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="945554305">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">4457472</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="22"/>
@@ -5307,6 +5425,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{155, 32}</string>
@@ -5317,7 +5436,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="69290042"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Box</string>
<reference key="NSSupport" ref="26"/>
@@ -5336,7 +5455,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrameSize">{338, 318}</string>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{338, 254}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -5367,7 +5486,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="874724779">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Source Path Here</string>
<reference key="NSSupport" ref="26"/>
@@ -5375,6 +5494,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="293908248">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5383,7 +5503,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="290236859">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">for</string>
<reference key="NSSupport" ref="26"/>
@@ -5391,6 +5511,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="535532677">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5399,7 +5520,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1026393301">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">71303168</int>
<string key="NSContents">Scan title number</string>
<reference key="NSSupport" ref="26"/>
@@ -5407,6 +5528,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="290568055">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5415,7 +5537,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="412266408">
- <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">138544128</int>
<string key="NSContents">0</string>
<reference key="NSSupport" ref="26"/>
@@ -5424,6 +5546,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="138233214"/>
<reference key="NSTextColor" ref="378140636"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="35126402">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5432,12 +5555,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="935162329">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Cancel</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="35126402"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -5447,6 +5570,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="1029080172">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5455,12 +5579,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1020926636">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Open Title</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1029080172"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="995413175"/>
<string key="NSAlternateContents"/>
@@ -5468,6 +5592,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="1010749064">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5476,7 +5601,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="938406174">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">4194304</int>
<string key="NSContents">Note: (entering 0 or leaving blank will result in a full source scan)</string>
<reference key="NSSupport" ref="26"/>
@@ -5484,6 +5609,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="610976437">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5492,7 +5618,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="802225466">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Source Path:</string>
<reference key="NSSupport" ref="26"/>
@@ -5500,6 +5626,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="655257851">
<reference key="NSNextResponder" ref="867624722"/>
@@ -5508,7 +5635,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="867624722"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="19595360">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Small System Font Text</string>
<reference key="NSSupport" ref="26"/>
@@ -5516,11 +5643,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSBackgroundColor" ref="242973447"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{392, 144}</string>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -7151,6 +7279,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
+ <string key="label">fScanHorizontalLine</string>
+ <reference key="source" ref="2258723"/>
+ <reference key="destination" ref="454206717"/>
+ </object>
+ <int key="connectionID">6004</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
<string key="label">parentWindow</string>
<reference key="source" ref="972647787"/>
<reference key="destination" ref="192660081"/>
@@ -7283,7 +7419,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSCreatesSortDescriptor</string>
<string>NSValidatesImmediately</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<boolean value="NO"/>
<boolean value="YES"/>
@@ -7662,7 +7798,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSCreatesSortDescriptor</string>
<string>NSValidatesImmediately</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<boolean value="NO"/>
<boolean value="YES"/>
@@ -10772,10 +10908,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference ref="112458239"/>
<reference ref="796460997"/>
<reference ref="487526549"/>
- <reference ref="884471415"/>
<reference ref="527737261"/>
<reference ref="902460295"/>
<reference ref="349581420"/>
+ <reference ref="884471415"/>
</object>
<reference key="parent" ref="1053078401"/>
</object>
@@ -11533,7 +11669,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>971.IBPluginDependency</string>
<string>973.IBPluginDependency</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -11739,7 +11875,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="581806074"/>
- <string key="toolTip">Mixed</string>
+ <string key="toolTip">This rearranges the header of the MP4 file to optimize it for streaming across the web.</string>
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -11820,7 +11956,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="921877174"/>
- <string key="toolTip">Mixed</string>
+ <string key="toolTip">This option adds an atom to the MP4 file which allows older iPods (5th Generation classic style) to play the file.</string>
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -12038,7 +12174,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">6003</int>
+ <int key="maxID">6004</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -12085,7 +12221,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>customSettingUsed:</string>
<string>deleteFactoryPresets:</string>
<string>deletePreset:</string>
- <string>updateX264Widgets:</string>
<string>encodeStartStopPopUpChanged:</string>
<string>formatPopUpChanged:</string>
<string>getDefaultPresets:</string>
@@ -12099,7 +12234,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>selectDefaultPreset:</string>
<string>selectPreset:</string>
<string>setDefaultPreset:</string>
- <string>setupX264PresetsWidgets:</string>
<string>showAboutPanel:</string>
<string>showAddPresetPanel:</string>
<string>showDebugOutputPanel:</string>
@@ -12113,14 +12247,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>startEndSecValueChanged:</string>
<string>titlePopUpChanged:</string>
<string>twoPassCheckboxChanged:</string>
+ <string>updateX264Widgets:</string>
<string>videoEncoderPopUpChanged:</string>
<string>videoFrameRateChanged:</string>
<string>videoMatrixChanged:</string>
<string>x264PresetsChangedDisplayExpandedOptions:</string>
- <string>x264PresetsSetJobVariables:</string>
<string>x264PresetsSliderChanged:</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
@@ -12181,8 +12315,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
- <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -12216,7 +12348,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>customSettingUsed:</string>
<string>deleteFactoryPresets:</string>
<string>deletePreset:</string>
- <string>updateX264Widgets:</string>
<string>encodeStartStopPopUpChanged:</string>
<string>formatPopUpChanged:</string>
<string>getDefaultPresets:</string>
@@ -12230,7 +12361,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>selectDefaultPreset:</string>
<string>selectPreset:</string>
<string>setDefaultPreset:</string>
- <string>setupX264PresetsWidgets:</string>
<string>showAboutPanel:</string>
<string>showAddPresetPanel:</string>
<string>showDebugOutputPanel:</string>
@@ -12244,14 +12374,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>startEndSecValueChanged:</string>
<string>titlePopUpChanged:</string>
<string>twoPassCheckboxChanged:</string>
+ <string>updateX264Widgets:</string>
<string>videoEncoderPopUpChanged:</string>
<string>videoFrameRateChanged:</string>
<string>videoMatrixChanged:</string>
<string>x264PresetsChangedDisplayExpandedOptions:</string>
- <string>x264PresetsSetJobVariables:</string>
<string>x264PresetsSliderChanged:</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">Cancel:</string>
@@ -12362,10 +12492,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
- <string key="name">updateX264Widgets:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
<string key="name">encodeStartStopPopUpChanged:</string>
<string key="candidateClassName">id</string>
</object>
@@ -12418,10 +12544,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
- <string key="name">setupX264PresetsWidgets:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
<string key="name">showAboutPanel:</string>
<string key="candidateClassName">id</string>
</object>
@@ -12474,6 +12596,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">updateX264Widgets:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">videoEncoderPopUpChanged:</string>
<string key="candidateClassName">id</string>
</object>
@@ -12490,10 +12616,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
- <string key="name">x264PresetsSetJobVariables:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
<string key="name">x264PresetsSliderChanged:</string>
<string key="candidateClassName">id</string>
</object>
@@ -12552,6 +12674,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>fQueueStatus</string>
<string>fRipIndicator</string>
<string>fSaveChaptersButton</string>
+ <string>fScanHorizontalLine</string>
<string>fScanIndicator</string>
<string>fScanSrcTitleCancelButton</string>
<string>fScanSrcTitleNumField</string>
@@ -12608,7 +12731,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>fX264TunePopUpLabel</string>
<string>fx264UseAdvancedOptionsCheck</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSPanel</string>
<string>NSBox</string>
@@ -12619,7 +12742,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSButton</string>
<string>NSBox</string>
<string>HBAudioController</string>
- <string>NSButton</string>
+ <string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSTableView</string>
<string>NSTableColumn</string>
@@ -12659,6 +12782,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSTextField</string>
<string>NSProgressIndicator</string>
<string>NSButton</string>
+ <string>NSBox</string>
<string>NSProgressIndicator</string>
<string>NSButton</string>
<string>NSTextField</string>
@@ -12769,6 +12893,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>fQueueStatus</string>
<string>fRipIndicator</string>
<string>fSaveChaptersButton</string>
+ <string>fScanHorizontalLine</string>
<string>fScanIndicator</string>
<string>fScanSrcTitleCancelButton</string>
<string>fScanSrcTitleNumField</string>
@@ -12825,7 +12950,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>fX264TunePopUpLabel</string>
<string>fx264UseAdvancedOptionsCheck</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">fAddPresetPanel</string>
@@ -12865,7 +12990,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">fAudioFallbackPopUp</string>
- <string key="candidateClassName">NSButton</string>
+ <string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">fBrowseSrtFileButton</string>
@@ -13024,6 +13149,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">fScanHorizontalLine</string>
+ <string key="candidateClassName">NSBox</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">fScanIndicator</string>
<string key="candidateClassName">NSProgressIndicator</string>
</object>
@@ -13314,7 +13443,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>NSRemoveTemplate</string>
<string>NSSwitch</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{128, 128}</string>
<string>{15, 15}</string>
diff --git a/macosx/English.lproj/PicturePreview.xib b/macosx/English.lproj/PicturePreview.xib
index 397307a3f..460057859 100644
--- a/macosx/English.lproj/PicturePreview.xib
+++ b/macosx/English.lproj/PicturePreview.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">11C74</string>
- <string key="IBDocument.InterfaceBuilderVersion">1938</string>
- <string key="IBDocument.AppKitVersion">1138.23</string>
- <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <string key="IBDocument.SystemVersion">12D61</string>
+ <string key="IBDocument.InterfaceBuilderVersion">3084</string>
+ <string key="IBDocument.AppKitVersion">1187.37</string>
+ <string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -13,32 +13,30 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.QTKitIBPlugin</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>1938</string>
- <string>822</string>
+ <string>3084</string>
+ <string>2053</string>
</object>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSPopUpButton</string>
+ <string>NSBox</string>
<string>NSButton</string>
+ <string>NSButtonCell</string>
+ <string>NSCustomObject</string>
<string>NSMenu</string>
- <string>NSTextFieldCell</string>
<string>NSMenuItem</string>
- <string>NSButtonCell</string>
- <string>NSBox</string>
+ <string>NSPopUpButton</string>
+ <string>NSPopUpButtonCell</string>
<string>NSProgressIndicator</string>
- <string>NSImageView</string>
- <string>NSImageCell</string>
- <string>QTMovieView</string>
<string>NSSlider</string>
<string>NSSliderCell</string>
- <string>NSCustomObject</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
- <string>NSTextField</string>
- <string>NSPopUpButtonCell</string>
+ <string>QTMovieView</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -76,782 +74,779 @@
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="289177107">
+ <object class="QTMovieView" id="48693112">
<reference key="NSNextResponder" ref="49161063"/>
- <int key="NSvFlags">18</int>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple URL pasteboard type</string>
+ <string>CorePasteboardFlavorType 0x6D6F6F76</string>
+ <string>NSFilenamesPboardType</string>
+ <string>QTMoviePasteboardType</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 360}</string>
+ <reference key="NSSuperview" ref="49161063"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="768906858"/>
+ <object class="NSColor" key="kCoderFillColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes>
+ </object>
+ <boolean value="YES" key="kCoderControllerVisible"/>
+ <boolean value="YES" key="kCoderPreservesAspectRatio"/>
+ <nil key="kCoderMovie"/>
+ <boolean value="NO" key="kCoderEditable"/>
+ </object>
+ <object class="NSBox" id="92351498">
+ <reference key="NSNextResponder" ref="49161063"/>
+ <int key="NSvFlags">-2147483611</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="353606868">
- <reference key="NSNextResponder" ref="289177107"/>
+ <object class="NSView" id="385854969">
+ <reference key="NSNextResponder" ref="92351498"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSImageView" id="844127024">
- <reference key="NSNextResponder" ref="353606868"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableSet" key="NSDragTypes">
+ <object class="NSButton" id="798240356">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">292</int>
+ <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>Apple PDF pasteboard type</string>
- <string>Apple PICT pasteboard type</string>
- <string>Apple PNG pasteboard type</string>
- <string>NSFilenamesPboardType</string>
- <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
- <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ <string key="NSFrame">{{17, 11}, {77, 16}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="66510867"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <string key="NSFrame">{{-3, -3}, {488, 368}}</string>
- <reference key="NSSuperview" ref="353606868"/>
- <reference key="NSNextKeyView" ref="48693112"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSImageCell" key="NSCell" id="955430771">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">33554432</int>
- <int key="NSAlign">0</int>
- <int key="NSScale">1</int>
- <int key="NSStyle">3</int>
- <bool key="NSAnimates">NO</bool>
+ <object class="NSButtonCell" key="NSCell" id="975305481">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents">Live Preview</string>
+ <object class="NSFont" key="NSSupport" id="22">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">9</double>
+ <int key="NSfFlags">3614</int>
+ </object>
+ <reference key="NSControlView" ref="798240356"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="22"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
- <bool key="NSEditable">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
- <object class="QTMovieView" id="48693112">
- <reference key="NSNextResponder" ref="353606868"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableSet" key="NSDragTypes">
+ <object class="NSButton" id="141370142">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">289</int>
+ <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>Apple URL pasteboard type</string>
- <string>CorePasteboardFlavorType 0x6D6F6F76</string>
- <string>NSFilenamesPboardType</string>
- <string>QTMoviePasteboardType</string>
+ </object>
+ <string key="NSFrame">{{370, 11}, {59, 16}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="700607930"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <string key="NSFrameSize">{482, 362}</string>
- <reference key="NSSuperview" ref="353606868"/>
- <reference key="NSNextKeyView" ref="768906858"/>
- <object class="NSColor" key="kCoderFillColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="606007744">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents">Settings</string>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="141370142"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="22"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
- <boolean value="YES" key="kCoderControllerVisible"/>
- <boolean value="YES" key="kCoderPreservesAspectRatio"/>
- <nil key="kCoderMovie"/>
- <boolean value="NO" key="kCoderEditable"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
- <object class="NSBox" id="92351498">
- <reference key="NSNextResponder" ref="353606868"/>
- <int key="NSvFlags">-2147483611</int>
+ <object class="NSButton" id="81685190">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">289</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="385854969">
- <reference key="NSNextResponder" ref="92351498"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="798240356">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 9}, {77, 16}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="66510867"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="975305481">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">Live Preview</string>
- <object class="NSFont" key="NSSupport" id="22">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">9</double>
- <int key="NSfFlags">3614</int>
- </object>
- <reference key="NSControlView" ref="798240356"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <reference key="NSAlternateImage" ref="22"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="141370142">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{357, 10}, {59, 16}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="700607930"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="606007744">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">Settings</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="141370142"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <reference key="NSAlternateImage" ref="22"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="81685190">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{259, 10}, {92, 16}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="141370142"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="847033897">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">Scale To Screen</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="81685190"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <object class="NSFont" key="NSAlternateImage" id="354866114">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">9</double>
- <int key="NSfFlags">16</int>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTextField" id="66510867">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{101, 14}, {75, 11}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="598619000"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="567286013">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">71566336</int>
- <string key="NSContents">Duration (sec):</string>
- <object class="NSFont" key="NSSupport" id="811969608">
- <string key="NSName">LucidaGrande-Bold</string>
- <double key="NSSize">9</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="66510867"/>
- <object class="NSColor" key="NSBackgroundColor" id="407686733">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes>
- </object>
- </object>
- </object>
- <object class="NSPopUpButton" id="598619000">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{184, 11}, {58, 15}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="81685190"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSPopUpButtonCell" key="NSCell" id="953108737">
- <int key="NSCellFlags">-2076049856</int>
- <int key="NSCellFlags2">264192</int>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="598619000"/>
- <int key="NSButtonFlags">109199615</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- <object class="NSMenuItem" key="NSMenuItem" id="372655630">
- <reference key="NSMenu" ref="501672847"/>
- <string key="NSTitle">Item 1</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <int key="NSState">1</int>
- <object class="NSCustomResource" key="NSOnImage" id="858043985">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="700487240">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="953108737"/>
- </object>
- <bool key="NSMenuItemRespectAlignment">YES</bool>
- <object class="NSMenu" key="NSMenu" id="501672847">
- <string key="NSTitle">OtherViews</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="372655630"/>
- <object class="NSMenuItem" id="607756368">
- <reference key="NSMenu" ref="501672847"/>
- <string key="NSTitle">Item 2</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="858043985"/>
- <reference key="NSMixedImage" ref="700487240"/>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="953108737"/>
- </object>
- <object class="NSMenuItem" id="272743761">
- <reference key="NSMenu" ref="501672847"/>
- <string key="NSTitle">Item 3</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="858043985"/>
- <reference key="NSMixedImage" ref="700487240"/>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="953108737"/>
- </object>
- </object>
- </object>
- <int key="NSPreferredEdge">1</int>
- <bool key="NSUsesItemFromMenu">YES</bool>
- <bool key="NSAltersState">YES</bool>
- <int key="NSArrowPosition">2</int>
- </object>
- </object>
- <object class="NSSlider" id="396925210">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{18, 39}, {402, 16}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="798240356"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSliderCell" key="NSCell" id="639767004">
- <int key="NSCellFlags">67501824</int>
- <int key="NSCellFlags2">262144</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="396925210"/>
- <double key="NSMaxValue">9</double>
- <double key="NSMinValue">0.0</double>
- <double key="NSValue">0.0</double>
- <double key="NSAltIncValue">0.0</double>
- <int key="NSNumberOfTickMarks">10</int>
- <int key="NSTickMarkPosition">1</int>
- <bool key="NSAllowsTickMarkValuesOnly">YES</bool>
- <bool key="NSVertical">NO</bool>
- </object>
- </object>
- <object class="NSTextField" id="628196212">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{15, 55}, {408, 20}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="396925210"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="921881842">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">4325376</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="476446081">
- <string key="NSName">LucidaGrande-Bold</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="628196212"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="407686733"/>
- <object class="NSColor" key="NSTextColor" id="978544139">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAxIDEAA</bytes>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="245200984">
- <reference key="NSNextResponder" ref="385854969"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{16, 80}, {408, 12}}</string>
- <reference key="NSSuperview" ref="385854969"/>
- <reference key="NSNextKeyView" ref="628196212"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1032360651">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">4456448</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="811969608"/>
- <reference key="NSControlView" ref="245200984"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="407686733"/>
- <reference key="NSTextColor" ref="978544139"/>
- </object>
- </object>
+ </object>
+ <string key="NSFrame">{{272, 11}, {92, 16}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="141370142"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
</object>
- <string key="NSFrame">{{1, 1}, {438, 97}}</string>
- <reference key="NSSuperview" ref="92351498"/>
- <reference key="NSNextKeyView" ref="245200984"/>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <string key="NSFrame">{{21, 121}, {440, 99}}</string>
- <reference key="NSSuperview" ref="353606868"/>
- <reference key="NSNextKeyView" ref="385854969"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Picture Controls</string>
- <object class="NSFont" key="NSSupport" id="26">
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="847033897">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents">Scale To Screen</string>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="81685190"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <object class="NSFont" key="NSAlternateImage" id="354866114">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
+ <double key="NSSize">9</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="66510867">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{108, 14}, {75, 11}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="598619000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="567286013">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">71566336</int>
+ <string key="NSContents">Duration (sec):</string>
+ <object class="NSFont" key="NSSupport" id="811969608">
+ <string key="NSName">LucidaGrande-Bold</string>
+ <double key="NSSize">9</double>
+ <int key="NSfFlags">16</int>
</object>
- <object class="NSColor" key="NSBackgroundColor" id="384686844">
+ <reference key="NSControlView" ref="66510867"/>
+ <object class="NSColor" key="NSBackgroundColor" id="407686733">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
+ <string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ <object class="NSColor" key="NSTextColor" id="978544139">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
</object>
- <reference key="NSContentView" ref="385854969"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">4</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- <double key="NSCornerRadius2">12</double>
- <object class="NSColor" key="NSBorderColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAxIDEgMC41AA</bytes>
- </object>
- <object class="NSColor" key="NSFillColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
- </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
- <object class="NSBox" id="700607930">
- <reference key="NSNextResponder" ref="353606868"/>
- <int key="NSvFlags">-2147483611</int>
- <object class="NSMutableArray" key="NSSubviews">
+ <object class="NSPopUpButton" id="598619000">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{187, 12}, {58, 15}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="81685190"/>
+ <object class="NSArray" key="NSViewContentFilters">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="1068222891">
- <reference key="NSNextResponder" ref="700607930"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
+ </object>
+ </object>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSPopUpButtonCell" key="NSCell" id="953108737">
+ <int key="NSCellFlags">-2076180416</int>
+ <int key="NSCellFlags2">264192</int>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="598619000"/>
+ <int key="NSButtonFlags">109199360</int>
+ <int key="NSButtonFlags2">1</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="372655630">
+ <reference key="NSMenu" ref="501672847"/>
+ <string key="NSTitle">Item 1</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <object class="NSCustomResource" key="NSOnImage" id="858043985">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="700487240">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="953108737"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="501672847">
+ <string key="NSTitle">OtherViews</string>
+ <object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSSlider" id="886140787">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{18, 27}, {407, 21}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView" ref="964331174"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSliderCell" key="NSCell" id="493667684">
- <int key="NSCellFlags">67501824</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents"/>
- <reference key="NSControlView" ref="886140787"/>
- <double key="NSMaxValue">100</double>
- <double key="NSMinValue">0.0</double>
- <double key="NSValue">0.0</double>
- <double key="NSAltIncValue">0.0</double>
- <int key="NSNumberOfTickMarks">0</int>
- <int key="NSTickMarkPosition">1</int>
- <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
- <bool key="NSVertical">NO</bool>
- </object>
- </object>
- <object class="NSButton" id="102183813">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{200, 53}, {39, 25}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView" ref="894608246"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="19809002">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="353643025">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="102183813"/>
- <int key="NSButtonFlags">-2038169345</int>
- <int key="NSButtonFlags2">134</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
+ <reference ref="372655630"/>
+ <object class="NSMenuItem" id="607756368">
+ <reference key="NSMenu" ref="501672847"/>
+ <string key="NSTitle">Item 2</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="858043985"/>
+ <reference key="NSMixedImage" ref="700487240"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="953108737"/>
</object>
- <object class="NSButton" id="897614796">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{171, 53}, {30, 25}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView" ref="102183813"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="913339095">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">|&lt;</string>
- <reference key="NSSupport" ref="353643025"/>
- <reference key="NSControlView" ref="897614796"/>
- <int key="NSButtonFlags">-2038038273</int>
- <int key="NSButtonFlags2">134</int>
- <object class="NSFont" key="NSAlternateImage">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">16</int>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="894608246">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{238, 53}, {32, 25}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView" ref="630042886"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="117507013">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">&gt;|</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="894608246"/>
- <int key="NSButtonFlags">-2038169345</int>
- <int key="NSButtonFlags2">134</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="630042886">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{331, 56}, {77, 16}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView" ref="886140787"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="999505395">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">Still Previews</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="630042886"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <reference key="NSAlternateImage" ref="22"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTextField" id="964331174">
- <reference key="NSNextResponder" ref="1068222891"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{18, 10}, {399, 12}}</string>
- <reference key="NSSuperview" ref="1068222891"/>
- <reference key="NSNextKeyView"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="113790059">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">4456448</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="811969608"/>
- <reference key="NSControlView" ref="964331174"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="407686733"/>
- <reference key="NSTextColor" ref="978544139"/>
- </object>
+ <object class="NSMenuItem" id="272743761">
+ <reference key="NSMenu" ref="501672847"/>
+ <string key="NSTitle">Item 3</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="858043985"/>
+ <reference key="NSMixedImage" ref="700487240"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="953108737"/>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {438, 97}}</string>
- <reference key="NSSuperview" ref="700607930"/>
- <reference key="NSNextKeyView" ref="897614796"/>
+ </object>
+ <int key="NSPreferredEdge">1</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSSlider" id="396925210">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{18, 39}, {410, 16}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="798240356"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
+ </object>
+ </object>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="639767004">
+ <int key="NSCellFlags">67371264</int>
+ <int key="NSCellFlags2">262144</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="396925210"/>
+ <double key="NSMaxValue">9</double>
+ <double key="NSMinValue">0.0</double>
+ <double key="NSValue">0.0</double>
+ <double key="NSAltIncValue">0.0</double>
+ <int key="NSNumberOfTickMarks">10</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">YES</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="628196212">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{15, 55}, {420, 20}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="396925210"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="921881842">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">4325376</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="476446081">
+ <string key="NSName">LucidaGrande-Bold</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="628196212"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="407686733"/>
+ <reference key="NSTextColor" ref="978544139"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="245200984">
+ <reference key="NSNextResponder" ref="385854969"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{15, 77}, {416, 12}}</string>
+ <reference key="NSSuperview" ref="385854969"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="628196212"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="1032360651">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">4456448</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="811969608"/>
+ <reference key="NSControlView" ref="245200984"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="407686733"/>
+ <reference key="NSTextColor" ref="978544139"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{2, 2}, {446, 96}}</string>
+ <reference key="NSSuperview" ref="92351498"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="245200984"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{15, 132}, {450, 100}}</string>
+ <reference key="NSSuperview" ref="49161063"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="385854969"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Picture Controls</string>
+ <object class="NSFont" key="NSSupport" id="26">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor" id="384686844">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <reference key="NSContentView" ref="385854969"/>
+ <int key="NSBorderType">1</int>
+ <int key="NSBoxType">4</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ <real value="2" key="NSBorderWidth2"/>
+ <double key="NSCornerRadius2">12</double>
+ <object class="NSColor" key="NSBorderColor2">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEgMC44AA</bytes>
+ </object>
+ <object class="NSColor" key="NSFillColor2">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
+ </object>
+ </object>
+ <object class="NSBox" id="700607930">
+ <reference key="NSNextResponder" ref="49161063"/>
+ <int key="NSvFlags">-2147483611</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSView" id="1068222891">
+ <reference key="NSNextResponder" ref="700607930"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSSlider" id="886140787">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{16, 16}, {355, 21}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="964331174"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <string key="NSFrame">{{21, 16}, {440, 99}}</string>
- <reference key="NSSuperview" ref="353606868"/>
- <reference key="NSNextKeyView" ref="1068222891"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="493667684">
+ <int key="NSCellFlags">67371264</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Playback Controls</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="384686844"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ <string key="NSContents"/>
+ <reference key="NSControlView" ref="886140787"/>
+ <double key="NSMaxValue">100</double>
+ <double key="NSMinValue">0.0</double>
+ <double key="NSValue">0.0</double>
+ <double key="NSAltIncValue">0.0</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="102183813">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSFrame">{{205, 43}, {36, 36}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="894608246"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="19809002">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="353643025">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="102183813"/>
+ <int key="NSButtonFlags">-931921920</int>
+ <int key="NSButtonFlags2">134</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">play-p</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">pause-p</string>
</object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
- <reference key="NSContentView" ref="1068222891"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">4</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- <double key="NSCornerRadius2">12</double>
- <object class="NSColor" key="NSBorderColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAxIDEgMC41AA</bytes>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="897614796">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
</object>
- <object class="NSColor" key="NSFillColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
+ <string key="NSFrame">{{163, 48}, {32, 26}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="102183813"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="913339095">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="353643025"/>
+ <reference key="NSControlView" ref="897614796"/>
+ <int key="NSButtonFlags">-2041839616</int>
+ <int key="NSButtonFlags2">134</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">prev-p</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
- <object class="NSBox" id="768906858">
- <reference key="NSNextResponder" ref="353606868"/>
- <int key="NSvFlags">-2147483611</int>
+ <object class="NSButton" id="894608246">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">268</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="1067699710">
- <reference key="NSNextResponder" ref="768906858"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSProgressIndicator" id="196868285">
- <reference key="NSNextResponder" ref="1067699710"/>
- <int key="NSvFlags">-2147482368</int>
- <object class="NSPSMatrix" key="NSDrawMatrix"/>
- <string key="NSFrame">{{23, 26}, {336, 12}}</string>
- <reference key="NSSuperview" ref="1067699710"/>
- <reference key="NSNextKeyView" ref="569473100"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <int key="NSpiFlags">16650</int>
- <double key="NSMinValue">20</double>
- <double key="NSMaxValue">100</double>
- </object>
- <object class="NSButton" id="569473100">
- <reference key="NSNextResponder" ref="1067699710"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{366, 24}, {58, 16}}</string>
- <reference key="NSSuperview" ref="1067699710"/>
- <reference key="NSNextKeyView" ref="92351498"/>
- <object class="NSArray" key="NSViewContentFilters">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="CIColorMonochrome">
- <object class="CIColor" key="CI_inputColor">
- <float key="red">0.70196080207824707</float>
- <float key="green">0.70196080207824707</float>
- <float key="blue">0.70196080207824707</float>
- <float key="alpha">1</float>
- </object>
- <integer value="1" key="CI_inputIntensity"/>
- <bool key="CIEnabled">YES</bool>
- </object>
- </object>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="908165435">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">Cancel</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="569473100"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <reference key="NSAlternateImage" ref="354866114"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTextField" id="986015194">
- <reference key="NSNextResponder" ref="1067699710"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{21, 59}, {394, 14}}</string>
- <reference key="NSSuperview" ref="1067699710"/>
- <reference key="NSNextKeyView" ref="196868285"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="304208899">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">4326400</int>
- <string key="NSContents">Preparing Preview</string>
- <reference key="NSSupport" ref="476446081"/>
- <reference key="NSControlView" ref="986015194"/>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">2</int>
- <bytes key="NSRGB">MC45MDE5NjA4NSAwLjkwMTk2MDg1IDAuOTAxOTYwODUgMAA</bytes>
- </object>
- <reference key="NSTextColor" ref="978544139"/>
- </object>
- </object>
+ </object>
+ <string key="NSFrame">{{251, 48}, {32, 26}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="630042886"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="117507013">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="894608246"/>
+ <int key="NSButtonFlags">-2042363904</int>
+ <int key="NSButtonFlags2">134</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">next-p</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="630042886">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">292</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSFrame">{{348, 53}, {81, 16}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="886140787"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
</object>
- <string key="NSFrame">{{1, 1}, {438, 98}}</string>
- <reference key="NSSuperview" ref="768906858"/>
- <reference key="NSNextKeyView" ref="986015194"/>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <string key="NSFrame">{{21, 233}, {440, 100}}</string>
- <reference key="NSSuperview" ref="353606868"/>
- <reference key="NSNextKeyView" ref="1067699710"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Encoding Controls</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="384686844"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="999505395">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents">Still Previews</string>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="630042886"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="22"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="964331174">
+ <reference key="NSNextResponder" ref="1068222891"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{364, 19}, {67, 14}}</string>
+ <reference key="NSSuperview" ref="1068222891"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="113790059">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">71565312</int>
+ <string key="NSContents">00:00:00</string>
+ <reference key="NSSupport" ref="476446081"/>
+ <reference key="NSControlView" ref="964331174"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="407686733"/>
+ <reference key="NSTextColor" ref="978544139"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{2, 2}, {446, 96}}</string>
+ <reference key="NSSuperview" ref="700607930"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="897614796"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{15, 30}, {450, 100}}</string>
+ <reference key="NSSuperview" ref="49161063"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="1068222891"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Playback Controls</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="384686844"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <reference key="NSContentView" ref="1068222891"/>
+ <int key="NSBorderType">1</int>
+ <int key="NSBoxType">4</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ <real value="2" key="NSBorderWidth2"/>
+ <double key="NSCornerRadius2">12</double>
+ <object class="NSColor" key="NSBorderColor2">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEgMC44AA</bytes>
+ </object>
+ <object class="NSColor" key="NSFillColor2">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
+ </object>
+ </object>
+ <object class="NSBox" id="768906858">
+ <reference key="NSNextResponder" ref="49161063"/>
+ <int key="NSvFlags">-2147483611</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSView" id="1067699710">
+ <reference key="NSNextResponder" ref="768906858"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSProgressIndicator" id="196868285">
+ <reference key="NSNextResponder" ref="1067699710"/>
+ <int key="NSvFlags">1280</int>
+ <string key="NSFrame">{{18, 26}, {346, 12}}</string>
+ <reference key="NSSuperview" ref="1067699710"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="569473100"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
+ </object>
+ </object>
+ <int key="NSpiFlags">16650</int>
+ <double key="NSMaxValue">100</double>
+ </object>
+ <object class="NSButton" id="569473100">
+ <reference key="NSNextResponder" ref="1067699710"/>
+ <int key="NSvFlags">265</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSFrame">{{371, 24}, {58, 16}}</string>
+ <reference key="NSSuperview" ref="1067699710"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="92351498"/>
+ <object class="NSArray" key="NSViewContentFilters">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="CIColorMonochrome">
+ <object class="CIColor" key="CI_inputColor">
+ <float key="red">0.70196080207824707</float>
+ <float key="green">0.70196080207824707</float>
+ <float key="blue">0.70196080207824707</float>
+ <float key="alpha">1</float>
+ </object>
+ <integer value="1" key="CI_inputIntensity"/>
+ <bool key="CIEnabled">YES</bool>
</object>
</object>
- <reference key="NSContentView" ref="1067699710"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">4</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- <double key="NSCornerRadius2">11</double>
- <object class="NSColor" key="NSBorderColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAxIDEgMC41AA</bytes>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="908165435">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134479872</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="569473100"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <reference key="NSAlternateImage" ref="354866114"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
- <object class="NSColor" key="NSFillColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSTextField" id="986015194">
+ <reference key="NSNextResponder" ref="1067699710"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{15, 59}, {406, 14}}</string>
+ <reference key="NSSuperview" ref="1067699710"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="196868285"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="304208899">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">4326400</int>
+ <string key="NSContents">Preparing Preview</string>
+ <reference key="NSSupport" ref="476446081"/>
+ <reference key="NSControlView" ref="986015194"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">2</int>
+ <bytes key="NSRGB">MC45MDE5NjA4NSAwLjkwMTk2MDg1IDAuOTAxOTYwODUgMAA</bytes>
+ </object>
+ <reference key="NSTextColor" ref="978544139"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
- <string key="NSFrameSize">{480, 360}</string>
- <reference key="NSSuperview" ref="289177107"/>
- <reference key="NSNextKeyView" ref="844127024"/>
+ <string key="NSFrame">{{2, 2}, {446, 96}}</string>
+ <reference key="NSSuperview" ref="768906858"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="986015194"/>
</object>
</object>
- <string key="NSFrameSize">{480, 360}</string>
+ <string key="NSFrame">{{15, 235}, {450, 100}}</string>
<reference key="NSSuperview" ref="49161063"/>
- <reference key="NSNextKeyView" ref="353606868"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="1067699710"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
+ <string key="NSContents">Encoding Controls</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="384686844"/>
<object class="NSColor" key="NSTextColor">
@@ -859,27 +854,29 @@
<bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
</object>
</object>
- <reference key="NSContentView" ref="353606868"/>
+ <reference key="NSContentView" ref="1067699710"/>
<int key="NSBorderType">1</int>
<int key="NSBoxType">4</int>
<int key="NSTitlePosition">0</int>
<bool key="NSTransparent">NO</bool>
- <real value="0.0" key="NSBorderWidth2"/>
+ <real value="2" key="NSBorderWidth2"/>
+ <double key="NSCornerRadius2">12</double>
<object class="NSColor" key="NSBorderColor2">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjQ0AA</bytes>
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEgMC44AA</bytes>
</object>
<object class="NSColor" key="NSFillColor2">
<int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC43MDE5NjA4IDAuNzAxOTYwOCAwLjcwMTk2MDgAA</bytes>
+ <bytes key="NSRGB">MCAwIDAgMC42AA</bytes>
</object>
</object>
</object>
<string key="NSFrameSize">{480, 360}</string>
<reference key="NSSuperview"/>
- <reference key="NSNextKeyView" ref="289177107"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="48693112"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
@@ -889,67 +886,59 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fInfoField</string>
- <reference key="source" ref="355312334"/>
- <reference key="destination" ref="628196212"/>
- </object>
- <int key="connectionID">73</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fPictureView</string>
+ <string key="label">window</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="844127024"/>
+ <reference key="destination" ref="616825745"/>
</object>
- <int key="connectionID">181</int>
+ <int key="connectionID">184</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
+ <string key="label">fCreatePreviewMovieButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="616825745"/>
+ <reference key="destination" ref="798240356"/>
</object>
- <int key="connectionID">184</int>
+ <int key="connectionID">217</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fMovieView</string>
+ <string key="label">fscaleInfoField</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="48693112"/>
+ <reference key="destination" ref="245200984"/>
</object>
- <int key="connectionID">208</int>
+ <int key="connectionID">282</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fPictureSlider</string>
+ <string key="label">fPreviewMovieLengthPopUp</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="396925210"/>
+ <reference key="destination" ref="598619000"/>
</object>
- <int key="connectionID">211</int>
+ <int key="connectionID">232</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">pictureSliderChanged:</string>
+ <string key="label">previewDurationPopUpChanged:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="396925210"/>
+ <reference key="destination" ref="598619000"/>
</object>
- <int key="connectionID">212</int>
+ <int key="connectionID">233</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fMovieCreationProgressIndicator</string>
+ <string key="label">fPictureControlBox</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="196868285"/>
+ <reference key="destination" ref="92351498"/>
</object>
- <int key="connectionID">214</int>
+ <int key="connectionID">254</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fCreatePreviewMovieButton</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pictureSliderChanged:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="798240356"/>
+ <reference key="destination" ref="396925210"/>
</object>
- <int key="connectionID">217</int>
+ <int key="connectionID">212</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
@@ -961,115 +950,99 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fPreviewMovieStatusField</string>
- <reference key="source" ref="355312334"/>
- <reference key="destination" ref="986015194"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fPreviewMovieLengthPopUp</string>
+ <string key="label">fPictureSettingsToggleButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="598619000"/>
+ <reference key="destination" ref="141370142"/>
</object>
- <int key="connectionID">232</int>
+ <int key="connectionID">273</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">previewDurationPopUpChanged:</string>
+ <string key="label">toggleScaleToScreen:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="598619000"/>
+ <reference key="destination" ref="81685190"/>
</object>
- <int key="connectionID">233</int>
+ <int key="connectionID">279</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fPreviewWindow</string>
+ <string key="label">fScaleToScreenToggleButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="616825745"/>
+ <reference key="destination" ref="81685190"/>
</object>
- <int key="connectionID">244</int>
+ <int key="connectionID">277</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fEncodingControlBox</string>
+ <string key="label">fPictureSlider</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="768906858"/>
+ <reference key="destination" ref="396925210"/>
</object>
- <int key="connectionID">253</int>
+ <int key="connectionID">211</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fPictureControlBox</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showPictureSettings:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="92351498"/>
+ <reference key="destination" ref="141370142"/>
</object>
- <int key="connectionID">254</int>
+ <int key="connectionID">274</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fPictureViewArea</string>
+ <string key="label">fInfoField</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="289177107"/>
+ <reference key="destination" ref="628196212"/>
</object>
- <int key="connectionID">258</int>
+ <int key="connectionID">73</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fCancelPreviewMovieButton</string>
+ <string key="label">fGoToBeginningButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="569473100"/>
+ <reference key="destination" ref="897614796"/>
</object>
- <int key="connectionID">263</int>
+ <int key="connectionID">380</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fPictureSettingsToggleButton</string>
+ <string key="label">fMovieScrubberSlider</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="141370142"/>
+ <reference key="destination" ref="886140787"/>
</object>
- <int key="connectionID">273</int>
+ <int key="connectionID">371</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showPictureSettings:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fMovieInfoField</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="141370142"/>
+ <reference key="destination" ref="964331174"/>
</object>
- <int key="connectionID">274</int>
+ <int key="connectionID">374</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fScaleToScreenToggleButton</string>
+ <string key="label">fGoToEndButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="81685190"/>
+ <reference key="destination" ref="894608246"/>
</object>
- <int key="connectionID">277</int>
+ <int key="connectionID">381</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">toggleScaleToScreen:</string>
- <reference key="source" ref="355312334"/>
- <reference key="destination" ref="81685190"/>
- </object>
- <int key="connectionID">279</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fscaleInfoField</string>
+ <string key="label">moviePlaybackGoToEnd:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="245200984"/>
+ <reference key="destination" ref="894608246"/>
</object>
- <int key="connectionID">282</int>
+ <int key="connectionID">383</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fMoviePlaybackControlBox</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleMoviePreviewPlayPause:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="700607930"/>
+ <reference key="destination" ref="102183813"/>
</object>
- <int key="connectionID">363</int>
+ <int key="connectionID">370</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
@@ -1080,92 +1053,92 @@
<int key="connectionID">364</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fGoToStillPreviewButton</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">moviePlaybackGoToBeginning:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="630042886"/>
+ <reference key="destination" ref="897614796"/>
</object>
- <int key="connectionID">368</int>
+ <int key="connectionID">382</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pictureSliderChanged:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fGoToStillPreviewButton</string>
<reference key="source" ref="355312334"/>
<reference key="destination" ref="630042886"/>
</object>
- <int key="connectionID">369</int>
+ <int key="connectionID">368</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">toggleMoviePreviewPlayPause:</string>
+ <string key="label">previewScrubberChanged:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="102183813"/>
+ <reference key="destination" ref="886140787"/>
</object>
- <int key="connectionID">370</int>
+ <int key="connectionID">384</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fMovieScrubberSlider</string>
+ <string key="label">fMoviePlaybackControlBox</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="886140787"/>
+ <reference key="destination" ref="700607930"/>
</object>
- <int key="connectionID">371</int>
+ <int key="connectionID">363</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fMovieInfoField</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showPicturesPreview:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="964331174"/>
+ <reference key="destination" ref="630042886"/>
</object>
- <int key="connectionID">374</int>
+ <int key="connectionID">396</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">fGoToBeginningButton</string>
+ <string key="label">fMovieCreationProgressIndicator</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="897614796"/>
+ <reference key="destination" ref="196868285"/>
</object>
- <int key="connectionID">380</int>
+ <int key="connectionID">214</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fGoToEndButton</string>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancelCreateMoviePreview:</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="894608246"/>
+ <reference key="destination" ref="569473100"/>
</object>
- <int key="connectionID">381</int>
+ <int key="connectionID">395</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">moviePlaybackGoToBeginning:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fPreviewMovieStatusField</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="897614796"/>
+ <reference key="destination" ref="986015194"/>
</object>
- <int key="connectionID">382</int>
+ <int key="connectionID">225</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">moviePlaybackGoToEnd:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fCancelPreviewMovieButton</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="894608246"/>
+ <reference key="destination" ref="569473100"/>
</object>
- <int key="connectionID">383</int>
+ <int key="connectionID">263</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">previewScrubberChanged:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fEncodingControlBox</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="886140787"/>
+ <reference key="destination" ref="768906858"/>
</object>
- <int key="connectionID">384</int>
+ <int key="connectionID">253</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cancelCreateMoviePreview:</string>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fMovieView</string>
<reference key="source" ref="355312334"/>
- <reference key="destination" ref="569473100"/>
+ <reference key="destination" ref="48693112"/>
</object>
- <int key="connectionID">395</int>
+ <int key="connectionID">208</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -1212,210 +1185,198 @@
<reference key="object" ref="49161063"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="289177107"/>
+ <reference ref="700607930"/>
+ <reference ref="768906858"/>
+ <reference ref="92351498"/>
+ <reference ref="48693112"/>
</object>
<reference key="parent" ref="616825745"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">257</int>
- <reference key="object" ref="289177107"/>
+ <int key="objectID">335</int>
+ <reference key="object" ref="700607930"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="844127024"/>
- <reference ref="92351498"/>
- <reference ref="768906858"/>
- <reference ref="48693112"/>
- <reference ref="700607930"/>
+ <reference ref="102183813"/>
+ <reference ref="894608246"/>
+ <reference ref="897614796"/>
+ <reference ref="964331174"/>
+ <reference ref="886140787"/>
+ <reference ref="630042886"/>
</object>
<reference key="parent" ref="49161063"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">252</int>
- <reference key="object" ref="768906858"/>
+ <int key="objectID">365</int>
+ <reference key="object" ref="630042886"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="196868285"/>
- <reference ref="986015194"/>
- <reference ref="569473100"/>
+ <reference ref="999505395"/>
</object>
- <reference key="parent" ref="289177107"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="196868285"/>
- <reference key="parent" ref="768906858"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">223</int>
- <reference key="object" ref="986015194"/>
+ <int key="objectID">375</int>
+ <reference key="object" ref="897614796"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="304208899"/>
+ <reference ref="913339095"/>
</object>
- <reference key="parent" ref="768906858"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">224</int>
- <reference key="object" ref="304208899"/>
- <reference key="parent" ref="986015194"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">251</int>
- <reference key="object" ref="92351498"/>
+ <int key="objectID">378</int>
+ <reference key="object" ref="894608246"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="628196212"/>
- <reference ref="396925210"/>
- <reference ref="245200984"/>
- <reference ref="66510867"/>
- <reference ref="598619000"/>
- <reference ref="81685190"/>
- <reference ref="798240356"/>
- <reference ref="141370142"/>
+ <reference ref="117507013"/>
</object>
- <reference key="parent" ref="289177107"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">38</int>
- <reference key="object" ref="628196212"/>
+ <int key="objectID">361</int>
+ <reference key="object" ref="102183813"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="921881842"/>
+ <reference ref="19809002"/>
</object>
- <reference key="parent" ref="92351498"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="798240356"/>
+ <int key="objectID">372</int>
+ <reference key="object" ref="964331174"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="975305481"/>
+ <reference ref="113790059"/>
</object>
- <reference key="parent" ref="92351498"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">234</int>
- <reference key="object" ref="66510867"/>
+ <int key="objectID">341</int>
+ <reference key="object" ref="886140787"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="567286013"/>
+ <reference ref="493667684"/>
</object>
- <reference key="parent" ref="92351498"/>
+ <reference key="parent" ref="700607930"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">226</int>
- <reference key="object" ref="598619000"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="953108737"/>
- </object>
- <reference key="parent" ref="92351498"/>
+ <int key="objectID">346</int>
+ <reference key="object" ref="493667684"/>
+ <reference key="parent" ref="886140787"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="396925210"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="639767004"/>
- </object>
- <reference key="parent" ref="92351498"/>
+ <int key="objectID">373</int>
+ <reference key="object" ref="113790059"/>
+ <reference key="parent" ref="964331174"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="639767004"/>
- <reference key="parent" ref="396925210"/>
+ <int key="objectID">362</int>
+ <reference key="object" ref="19809002"/>
+ <reference key="parent" ref="102183813"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">227</int>
- <reference key="object" ref="953108737"/>
+ <int key="objectID">379</int>
+ <reference key="object" ref="117507013"/>
+ <reference key="parent" ref="894608246"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="913339095"/>
+ <reference key="parent" ref="897614796"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">366</int>
+ <reference key="object" ref="999505395"/>
+ <reference key="parent" ref="630042886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">252</int>
+ <reference key="object" ref="768906858"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="501672847"/>
+ <reference ref="569473100"/>
+ <reference ref="986015194"/>
+ <reference ref="196868285"/>
</object>
- <reference key="parent" ref="598619000"/>
+ <reference key="parent" ref="49161063"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">228</int>
- <reference key="object" ref="501672847"/>
+ <int key="objectID">261</int>
+ <reference key="object" ref="569473100"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="372655630"/>
- <reference ref="607756368"/>
- <reference ref="272743761"/>
+ <reference ref="908165435"/>
</object>
- <reference key="parent" ref="953108737"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">231</int>
- <reference key="object" ref="372655630"/>
- <reference key="parent" ref="501672847"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">230</int>
- <reference key="object" ref="607756368"/>
- <reference key="parent" ref="501672847"/>
+ <reference key="parent" ref="768906858"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">229</int>
- <reference key="object" ref="272743761"/>
- <reference key="parent" ref="501672847"/>
+ <int key="objectID">223</int>
+ <reference key="object" ref="986015194"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="304208899"/>
+ </object>
+ <reference key="parent" ref="768906858"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">235</int>
- <reference key="object" ref="567286013"/>
- <reference key="parent" ref="66510867"/>
+ <int key="objectID">213</int>
+ <reference key="object" ref="196868285"/>
+ <reference key="parent" ref="768906858"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="975305481"/>
- <reference key="parent" ref="798240356"/>
+ <int key="objectID">224</int>
+ <reference key="object" ref="304208899"/>
+ <reference key="parent" ref="986015194"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">165</int>
- <reference key="object" ref="921881842"/>
- <reference key="parent" ref="628196212"/>
+ <int key="objectID">262</int>
+ <reference key="object" ref="908165435"/>
+ <reference key="parent" ref="569473100"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">261</int>
- <reference key="object" ref="569473100"/>
+ <int key="objectID">251</int>
+ <reference key="object" ref="92351498"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="908165435"/>
+ <reference ref="66510867"/>
+ <reference ref="598619000"/>
+ <reference ref="141370142"/>
+ <reference ref="798240356"/>
+ <reference ref="81685190"/>
+ <reference ref="245200984"/>
+ <reference ref="396925210"/>
+ <reference ref="628196212"/>
</object>
- <reference key="parent" ref="768906858"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">262</int>
- <reference key="object" ref="908165435"/>
- <reference key="parent" ref="569473100"/>
+ <reference key="parent" ref="49161063"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">271</int>
- <reference key="object" ref="141370142"/>
+ <int key="objectID">38</int>
+ <reference key="object" ref="628196212"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="606007744"/>
+ <reference ref="921881842"/>
</object>
<reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">272</int>
- <reference key="object" ref="606007744"/>
- <reference key="parent" ref="141370142"/>
+ <int key="objectID">165</int>
+ <reference key="object" ref="921881842"/>
+ <reference key="parent" ref="628196212"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">275</int>
- <reference key="object" ref="81685190"/>
+ <int key="objectID">209</int>
+ <reference key="object" ref="396925210"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="847033897"/>
+ <reference ref="639767004"/>
</object>
<reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">276</int>
- <reference key="object" ref="847033897"/>
- <reference key="parent" ref="81685190"/>
+ <int key="objectID">210</int>
+ <reference key="object" ref="639767004"/>
+ <reference key="parent" ref="396925210"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">280</int>
@@ -1432,121 +1393,109 @@
<reference key="parent" ref="245200984"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">179</int>
- <reference key="object" ref="844127024"/>
+ <int key="objectID">275</int>
+ <reference key="object" ref="81685190"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="955430771"/>
+ <reference ref="847033897"/>
</object>
- <reference key="parent" ref="289177107"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">180</int>
- <reference key="object" ref="955430771"/>
- <reference key="parent" ref="844127024"/>
+ <reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="48693112"/>
- <reference key="parent" ref="289177107"/>
+ <int key="objectID">276</int>
+ <reference key="object" ref="847033897"/>
+ <reference key="parent" ref="81685190"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">335</int>
- <reference key="object" ref="700607930"/>
+ <int key="objectID">215</int>
+ <reference key="object" ref="798240356"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="886140787"/>
- <reference ref="964331174"/>
- <reference ref="102183813"/>
- <reference ref="894608246"/>
- <reference ref="630042886"/>
- <reference ref="897614796"/>
+ <reference ref="975305481"/>
</object>
- <reference key="parent" ref="289177107"/>
+ <reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">341</int>
- <reference key="object" ref="886140787"/>
+ <int key="objectID">216</int>
+ <reference key="object" ref="975305481"/>
+ <reference key="parent" ref="798240356"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">271</int>
+ <reference key="object" ref="141370142"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="493667684"/>
+ <reference ref="606007744"/>
</object>
- <reference key="parent" ref="700607930"/>
+ <reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="493667684"/>
- <reference key="parent" ref="886140787"/>
+ <int key="objectID">272</int>
+ <reference key="object" ref="606007744"/>
+ <reference key="parent" ref="141370142"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">361</int>
- <reference key="object" ref="102183813"/>
+ <int key="objectID">226</int>
+ <reference key="object" ref="598619000"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="19809002"/>
+ <reference ref="953108737"/>
</object>
- <reference key="parent" ref="700607930"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">362</int>
- <reference key="object" ref="19809002"/>
- <reference key="parent" ref="102183813"/>
+ <reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">365</int>
- <reference key="object" ref="630042886"/>
+ <int key="objectID">227</int>
+ <reference key="object" ref="953108737"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="999505395"/>
+ <reference ref="501672847"/>
</object>
- <reference key="parent" ref="700607930"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">366</int>
- <reference key="object" ref="999505395"/>
- <reference key="parent" ref="630042886"/>
+ <reference key="parent" ref="598619000"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">372</int>
- <reference key="object" ref="964331174"/>
+ <int key="objectID">228</int>
+ <reference key="object" ref="501672847"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="113790059"/>
+ <reference ref="272743761"/>
+ <reference ref="607756368"/>
+ <reference ref="372655630"/>
</object>
- <reference key="parent" ref="700607930"/>
+ <reference key="parent" ref="953108737"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">373</int>
- <reference key="object" ref="113790059"/>
- <reference key="parent" ref="964331174"/>
+ <int key="objectID">231</int>
+ <reference key="object" ref="372655630"/>
+ <reference key="parent" ref="501672847"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">375</int>
- <reference key="object" ref="897614796"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="913339095"/>
- </object>
- <reference key="parent" ref="700607930"/>
+ <int key="objectID">230</int>
+ <reference key="object" ref="607756368"/>
+ <reference key="parent" ref="501672847"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">376</int>
- <reference key="object" ref="913339095"/>
- <reference key="parent" ref="897614796"/>
+ <int key="objectID">229</int>
+ <reference key="object" ref="272743761"/>
+ <reference key="parent" ref="501672847"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">378</int>
- <reference key="object" ref="894608246"/>
+ <int key="objectID">234</int>
+ <reference key="object" ref="66510867"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="117507013"/>
+ <reference ref="567286013"/>
</object>
- <reference key="parent" ref="700607930"/>
+ <reference key="parent" ref="92351498"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">379</int>
- <reference key="object" ref="117507013"/>
- <reference key="parent" ref="894608246"/>
+ <int key="objectID">235</int>
+ <reference key="object" ref="567286013"/>
+ <reference key="parent" ref="66510867"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="48693112"/>
+ <reference key="parent" ref="49161063"/>
</object>
</object>
</object>
@@ -1558,8 +1507,6 @@
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>165.IBPluginDependency</string>
- <string>179.IBPluginDependency</string>
- <string>180.IBPluginDependency</string>
<string>207.IBPluginDependency</string>
<string>209.IBPluginDependency</string>
<string>210.IBPluginDependency</string>
@@ -1592,7 +1539,6 @@
<string>252.IBViewIntegration.shadowColor</string>
<string>252.IBViewIntegration.shadowOffsetHeight</string>
<string>252.IBViewIntegration.shadowOffsetWidth</string>
- <string>257.IBPluginDependency</string>
<string>261.IBAttributePlaceholdersKey</string>
<string>261.IBPluginDependency</string>
<string>262.IBPluginDependency</string>
@@ -1641,15 +1587,17 @@
<string>5.IBPluginDependency</string>
<string>5.IBWindowTemplateEditedContentRect</string>
<string>6.IBPluginDependency</string>
+ <string>6.IBViewIntegration.shadowBlurRadius</string>
+ <string>6.IBViewIntegration.shadowColor</string>
+ <string>6.IBViewIntegration.shadowOffsetHeight</string>
+ <string>6.IBViewIntegration.shadowOffsetWidth</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.QTKitIBPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1699,7 +1647,6 @@
<reference ref="864448722"/>
<integer value="0"/>
<integer value="0"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
<string key="NS.key.0">ToolTip</string>
<object class="IBToolTipAttribute" key="NS.object.0">
@@ -1797,6 +1744,10 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{262, 474}, {480, 360}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <real value="0.0"/>
+ <reference ref="864448722"/>
+ <real value="0.0"/>
+ <real value="0.0"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -1811,9 +1762,323 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">395</int>
+ <int key="maxID">396</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">PreviewController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>cancelCreateMoviePreview:</string>
+ <string>createMoviePreview:</string>
+ <string>moviePlaybackGoBackwardOneFrame:</string>
+ <string>moviePlaybackGoForwardOneFrame:</string>
+ <string>moviePlaybackGoToBeginning:</string>
+ <string>moviePlaybackGoToEnd:</string>
+ <string>pictureSliderChanged:</string>
+ <string>previewDurationPopUpChanged:</string>
+ <string>previewScrubberChanged:</string>
+ <string>settingsChanged:</string>
+ <string>showMoviePreview:</string>
+ <string>showPictureSettings:</string>
+ <string>showPicturesPreview:</string>
+ <string>toggleMoviePreviewPlayPause:</string>
+ <string>toggleScaleToScreen:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSString</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>cancelCreateMoviePreview:</string>
+ <string>createMoviePreview:</string>
+ <string>moviePlaybackGoBackwardOneFrame:</string>
+ <string>moviePlaybackGoForwardOneFrame:</string>
+ <string>moviePlaybackGoToBeginning:</string>
+ <string>moviePlaybackGoToEnd:</string>
+ <string>pictureSliderChanged:</string>
+ <string>previewDurationPopUpChanged:</string>
+ <string>previewScrubberChanged:</string>
+ <string>settingsChanged:</string>
+ <string>showMoviePreview:</string>
+ <string>showPictureSettings:</string>
+ <string>showPicturesPreview:</string>
+ <string>toggleMoviePreviewPlayPause:</string>
+ <string>toggleScaleToScreen:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">cancelCreateMoviePreview:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">createMoviePreview:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moviePlaybackGoBackwardOneFrame:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moviePlaybackGoForwardOneFrame:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moviePlaybackGoToBeginning:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moviePlaybackGoToEnd:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">pictureSliderChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">previewDurationPopUpChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">previewScrubberChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">settingsChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showMoviePreview:</string>
+ <string key="candidateClassName">NSString</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showPictureSettings:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showPicturesPreview:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">toggleMoviePreviewPlayPause:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">toggleScaleToScreen:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fCancelPreviewMovieButton</string>
+ <string>fCreatePreviewMovieButton</string>
+ <string>fEncodingControlBox</string>
+ <string>fGoBackwardOneFrameButton</string>
+ <string>fGoForwardOneFrameButton</string>
+ <string>fGoToBeginningButton</string>
+ <string>fGoToEndButton</string>
+ <string>fGoToStillPreviewButton</string>
+ <string>fInfoField</string>
+ <string>fMovieCreationProgressIndicator</string>
+ <string>fMovieInfoField</string>
+ <string>fMoviePlaybackControlBox</string>
+ <string>fMovieScrubberSlider</string>
+ <string>fMovieView</string>
+ <string>fPictureControlBox</string>
+ <string>fPictureSettingsToggleButton</string>
+ <string>fPictureSlider</string>
+ <string>fPlayPauseButton</string>
+ <string>fPreviewMovieLengthPopUp</string>
+ <string>fPreviewMovieStatusField</string>
+ <string>fScaleToScreenToggleButton</string>
+ <string>fShowPreviewMovieButton</string>
+ <string>fscaleInfoField</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSBox</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSTextField</string>
+ <string>NSProgressIndicator</string>
+ <string>NSTextField</string>
+ <string>NSBox</string>
+ <string>NSSlider</string>
+ <string>QTMovieView</string>
+ <string>NSBox</string>
+ <string>NSButton</string>
+ <string>NSSlider</string>
+ <string>NSButton</string>
+ <string>NSPopUpButton</string>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSTextField</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>fCancelPreviewMovieButton</string>
+ <string>fCreatePreviewMovieButton</string>
+ <string>fEncodingControlBox</string>
+ <string>fGoBackwardOneFrameButton</string>
+ <string>fGoForwardOneFrameButton</string>
+ <string>fGoToBeginningButton</string>
+ <string>fGoToEndButton</string>
+ <string>fGoToStillPreviewButton</string>
+ <string>fInfoField</string>
+ <string>fMovieCreationProgressIndicator</string>
+ <string>fMovieInfoField</string>
+ <string>fMoviePlaybackControlBox</string>
+ <string>fMovieScrubberSlider</string>
+ <string>fMovieView</string>
+ <string>fPictureControlBox</string>
+ <string>fPictureSettingsToggleButton</string>
+ <string>fPictureSlider</string>
+ <string>fPlayPauseButton</string>
+ <string>fPreviewMovieLengthPopUp</string>
+ <string>fPreviewMovieStatusField</string>
+ <string>fScaleToScreenToggleButton</string>
+ <string>fShowPreviewMovieButton</string>
+ <string>fscaleInfoField</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fCancelPreviewMovieButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fCreatePreviewMovieButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fEncodingControlBox</string>
+ <string key="candidateClassName">NSBox</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fGoBackwardOneFrameButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fGoForwardOneFrameButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fGoToBeginningButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fGoToEndButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fGoToStillPreviewButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fInfoField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fMovieCreationProgressIndicator</string>
+ <string key="candidateClassName">NSProgressIndicator</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fMovieInfoField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fMoviePlaybackControlBox</string>
+ <string key="candidateClassName">NSBox</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fMovieScrubberSlider</string>
+ <string key="candidateClassName">NSSlider</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fMovieView</string>
+ <string key="candidateClassName">QTMovieView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPictureControlBox</string>
+ <string key="candidateClassName">NSBox</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPictureSettingsToggleButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPictureSlider</string>
+ <string key="candidateClassName">NSSlider</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPlayPauseButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPreviewMovieLengthPopUp</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fPreviewMovieStatusField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fScaleToScreenToggleButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fShowPreviewMovieButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">fscaleInfoField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/PreviewController.h</string>
+ </object>
+ </object>
+ </object>
</object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
@@ -1832,11 +2097,19 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSMenuCheckmark</string>
<string>NSMenuMixedState</string>
+ <string>next-p</string>
+ <string>pause-p</string>
+ <string>play-p</string>
+ <string>prev-p</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>{9, 8}</string>
- <string>{7, 2}</string>
+ <string>{11, 11}</string>
+ <string>{10, 3}</string>
+ <string>{48, 48}</string>
+ <string>{48, 48}</string>
+ <string>{48, 48}</string>
+ <string>{48, 48}</string>
</object>
</object>
</data>
diff --git a/macosx/HBPresets.h b/macosx/HBPresets.h
index 2b3708cbd..598971efa 100644
--- a/macosx/HBPresets.h
+++ b/macosx/HBPresets.h
@@ -15,21 +15,17 @@
/* Built-In Preset Dictionaries (one for each built in preset) */
- (NSDictionary *)createDevicesPresetFolder;
- (NSDictionary *)createRegularPresetFolder;
-- (NSDictionary *)createLegacyPresetFolder;
- (NSDictionary *)createiPadPreset;
-- (NSDictionary *)createiPhone4Preset;
-- (NSDictionary *)createAppleTv2Preset;
+- (NSDictionary *)createAppleTV2Preset;
- (NSDictionary *)createAppleTVPreset;
-- (NSDictionary *)createAppleTv3Preset;
-- (NSDictionary *)createAppleUniversalPreset;
-- (NSDictionary *)createClassicPreset;
-- (NSDictionary *)createiPhonePreset;
-- (NSDictionary *)createIpodHighPreset;
-- (NSDictionary *)createIpodLowPreset;
+- (NSDictionary *)createAppleTV3Preset;
+- (NSDictionary *)createUniversalPreset;
+- (NSDictionary *)createiPhoneiPodtouchPreset;
+- (NSDictionary *)createiPodPreset;
- (NSDictionary *)createNormalPreset;
- (NSDictionary *)createHighProfilePreset;
-- (NSDictionary *)createAndroidMidPreset;
-- (NSDictionary *)createAndroidHighPreset;
+- (NSDictionary *)createAndroidPreset;
+- (NSDictionary *)createAndroidTabletPreset;
@end
diff --git a/macosx/HBPresets.m b/macosx/HBPresets.m
index eaf496ccb..7d3aa0eac 100644
--- a/macosx/HBPresets.m
+++ b/macosx/HBPresets.m
@@ -25,7 +25,6 @@
/* Built in preset folders at the root of the hierarchy */
[UserPresets addObject:[self createDevicesPresetFolder]];
[UserPresets addObject:[self createRegularPresetFolder]];
- [UserPresets addObject:[self createLegacyPresetFolder]];
/* Independent presets at the root hierarchy level would go here */
@@ -40,34 +39,29 @@
- (NSDictionary *)createDevicesPresetFolder
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-/*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
-
/* Get the New Preset Name from the field in the AddPresetPanel */
[preset setObject:@"Devices" forKey:@"PresetName"];
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
+ [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
/* Lets initalize the child array of dictionaries for folders, this
is an array of dictionaries much like the root level of presets and
may contain folders and presets alike, etc.*/
NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
/* we actually call the methods for the nests here */
- [childrenArray addObject:[self createAppleUniversalPreset]];
- [childrenArray addObject:[self createIpodLowPreset]];
- [childrenArray addObject:[self createiPhonePreset]];
- [childrenArray addObject:[self createiPhone4Preset]];
+ [childrenArray addObject:[self createUniversalPreset]];
+ [childrenArray addObject:[self createiPodPreset]];
+ [childrenArray addObject:[self createiPhoneiPodtouchPreset]];
[childrenArray addObject:[self createiPadPreset]];
[childrenArray addObject:[self createAppleTVPreset]];
- [childrenArray addObject:[self createAppleTv2Preset]];
- [childrenArray addObject:[self createAppleTv3Preset]];
- [childrenArray addObject:[self createAndroidMidPreset]];
- [childrenArray addObject:[self createAndroidHighPreset]];
+ [childrenArray addObject:[self createAppleTV2Preset]];
+ [childrenArray addObject:[self createAppleTV3Preset]];
+ [childrenArray addObject:[self createAndroidPreset]];
+ [childrenArray addObject:[self createAndroidTabletPreset]];
[preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
@@ -82,18 +76,14 @@
- (NSDictionary *)createRegularPresetFolder
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-/*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
-
/* Get the New Preset Name from the field in the AddPresetPanel */
[preset setObject:@"Regular" forKey:@"PresetName"];
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
+ [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
/* Lets initalize the child array of dictionaries for folders, this
is an array of dictionaries much like the root level of presets and
@@ -112,40 +102,6 @@
return preset;
}
-- (NSDictionary *)createLegacyPresetFolder
-{
- NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-/*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"];
-
-
- /* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"Legacy" forKey:@"PresetName"];
-
- /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /* Lets initalize the child array of dictionaries for folders, this
- is an array of dictionaries much like the root level of presets and
- may contain folders and presets alike, etc.*/
- NSMutableArray *childrenArray = [[NSMutableArray alloc] init];
- /* we actually call the methods for the nests here */
- [childrenArray addObject:[self createClassicPreset]];
- [childrenArray addObject:[self createIpodHighPreset]];
- [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"];
-
- [childrenArray autorelease];
-
-
-
- [preset autorelease];
- return preset;
-}
-
-
#pragma mark -
#pragma mark Built In Preset Definitions
@@ -162,22 +118,16 @@
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's settings for the AppleTV and 2009's iPhone and iPod Touch lineup. Provides a good balance between quality and file size, and pushes the devices to their limits. Includes Dolby Digital 5.1 AC3 sound for the AppleTV." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -186,16 +136,22 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String (We can use this to tweak the appleTV output)*/
- [preset setObject:@"cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"3.1" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
+ [preset setObject:@"30" forKey:@"VideoFramerate"];
+ [preset setObject:@"pfr" forKey:@"VideoFramerateMode"];
/* GrayScale */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
@@ -210,12 +166,12 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -265,7 +221,7 @@
return preset;
}
-- (NSDictionary *)createAppleUniversalPreset
+- (NSDictionary *)createUniversalPreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -274,22 +230,16 @@
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's universally compatible, full resolution settings for all current Apple devices: iPod (6G and up), iPhone, AppleTV, and Macs" forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -298,16 +248,22 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String (We can use this to tweak the appleTV output)*/
- [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:8x8dct=0:trellis=0:subme=6" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"fast" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"baseline" forKey:@"h264Profile"];
+ [preset setObject:@"3.0" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
+ [preset setObject:@"30" forKey:@"VideoFramerate"];
+ [preset setObject:@"pfr" forKey:@"VideoFramerateMode"];
/* GrayScale */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
@@ -322,12 +278,12 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -386,22 +342,16 @@
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's preset for the iPad (all generations) is optimized for a good balance between quality and filesize." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -411,10 +361,16 @@
/* x264 Option String (We can use this to tweak the output)*/
[preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"3.1" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -434,12 +390,12 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -475,105 +431,7 @@
return preset;
}
-- (NSDictionary *)createiPhone4Preset
-{
- NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-
- /* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"iPhone 4" forKey:@"PresetName"];
-
- /*Set whether or not this is a user preset where 0 is factory, 1 is user*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
-
- /* Get the New Preset Description from the field in the AddPresetPanel */
- [preset setObject:@"HandBrake's preset for the iPhone 4 is optimized for viewing on its 960x480 display." forKey:@"PresetDescription"];
-
- /* File Format */
- [preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
-
- /* Chapter Markers*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
-
- /* Video encoder */
- [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
-
- /* x264 Option String (We can use this to tweak the output)*/
- [preset setObject:@"" forKey:@"x264Option"];
-
- /* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
- [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
- [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
-
- /* Video framerate */
- [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
- [preset setObject:@"pfr" forKey:@"VideoFramerateMode"];
-
- /* GrayScale */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
-
- /* 2 Pass Encoding */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
-
- /* Basic Picture Settings */
- /* Use Max Picture settings for whatever the dvd is.*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
- [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
-
- /* Explicitly set the filters for built-in presets */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
-
- /* Set crop settings here */
- /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
-
- /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
- * not listed will be set to "None" and not encoded */
- NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
-
- /* Track 1 */
- NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
- [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
- [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
- [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"];
- [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
- [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
- [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
- [audioTrack1Array autorelease];
- [audioListArray addObject:audioTrack1Array];
-
- [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
-
- /* Subtitles*/
- [preset setObject:@"None" forKey:@"Subtitles"];
-
- [preset autorelease];
- return preset;
-}
-
-- (NSDictionary *)createAppleTv2Preset
+- (NSDictionary *)createAppleTV2Preset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -582,22 +440,16 @@
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's preset for the Apple TV (2nd gen) is optimized for viewing on its 1280x720 display." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -607,10 +459,16 @@
/* x264 Option String (We can use this to tweak the output)*/
[preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"3.1" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -630,12 +488,12 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -686,7 +544,7 @@
return preset;
}
-- (NSDictionary *)createAppleTv3Preset
+- (NSDictionary *)createAppleTV3Preset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -695,22 +553,16 @@
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's preset for the Apple TV (3rd gen) is optimized for up to 1080p playback." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -719,11 +571,17 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String (We can use this to tweak the output)*/
- [preset setObject:@"b-adapt=2" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"4.0" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -806,99 +664,6 @@
return preset;
}
-
-- (NSDictionary *)createClassicPreset
-{
- NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-
- /* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"Classic" forKey:@"PresetName"];
-
- /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
-
- /* Get the New Preset Description from the field in the AddPresetPanel */
- [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"];
-
- /* File Format */
- [preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* Chapter Markers*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
-
- /* Video encoder */
- [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"];
-
- /* x264 Option String */
- [preset setObject:@"" forKey:@"x264Option"];
-
- /* Video quality */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
- [preset setObject:@"1000" forKey:@"VideoAvgBitrate"];
-
- /* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
-
- /* GrayScale */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
-
- /* 2 Pass Encoding */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
-
- /*Picture Settings*/
- /* Use Max Picture settings for whatever the dvd is.*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
-
- /* Explicitly set the filters for built-in presets */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
-
- /* Set crop settings here */
- /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
-
- /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
- * not listed will be set to "None" and not encoded */
- NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
-
- /* Track 1 */
- NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
- [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
- [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
- [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"];
- [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
- [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"];
- [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
- [audioTrack1Array autorelease];
- [audioListArray addObject:audioTrack1Array];
-
- [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
-
- /* Subtitles*/
- [preset setObject:@"None" forKey:@"Subtitles"];
-
- [preset autorelease];
- return preset;
-}
-
- (NSDictionary *)createHighProfilePreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -908,21 +673,16 @@
/*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video, with all the bells and whistles." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -931,11 +691,17 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String */
- [preset setObject:@"b-adapt=2:rc-lookahead=50" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"4.1" forKey:@"h264Level"];
/* Video quality */
+ [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
- [preset setObject:@"1800" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -951,11 +717,12 @@
/*Picture Settings*/
/* Use Max Picture settings for whatever the dvd is.*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
@@ -968,6 +735,7 @@
/* Set crop settings here */
/* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
@@ -1011,7 +779,7 @@
return preset;
}
-- (NSDictionary *)createiPhonePreset
+- (NSDictionary *)createiPhoneiPodtouchPreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -1020,36 +788,40 @@
/*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's settings for all iPhones and iPod Touches going back to the original iPhone 2G." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
/* Video encoder */
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
+
/* x264 Option String */
- [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"high" forKey:@"h264Profile"];
+ [preset setObject:@"3.1" forKey:@"h264Level"];
/* Video quality */
+ [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
- [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
- [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
+ [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
+ [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"];
+ [preset setObject:@"pfr" forKey:@"VideoFramerateMode"];
/* GrayScale */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
@@ -1058,109 +830,18 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
/*Picture Settings*/
- /* Use a width of 480 for the iPhone*/
- [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
-
- /* Explicitly set the filters for built-in presets */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
-
- /* Set crop settings here */
- /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"];
-
- /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track
- * not listed will be set to "None" and not encoded */
- NSMutableArray *audioListArray = [[NSMutableArray alloc] init];
-
- /* Track 1 */
- NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init];
- [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"];
- [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"];
- [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"];
- [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"];
- [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"];
- [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"];
- [audioTrack1Array autorelease];
- [audioListArray addObject:audioTrack1Array];
-
- [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
-
- /* Subtitles*/
- [preset setObject:@"None" forKey:@"Subtitles"];
-
- [preset autorelease];
- return preset;
-}
-
-- (NSDictionary *)createIpodHighPreset
-{
- NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
-
- /* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"iPod Legacy" forKey:@"PresetName"];
-
- /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
+ /* Use a width of 960 for the iPhone 4 and later */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
-
- /* Get the New Preset Description from the field in the AddPresetPanel */
- [preset setObject:@"HandBrake's high resolution settings for older 5 and 5.5G iPods. Good video quality, great for viewing on a TV using your iPod. This is the iPod High-Rez preset from 0.9.2." forKey:@"PresetDescription"];
-
- /* File Format */
- [preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* Chapter Markers*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
-
- /* Video encoder */
- [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
- /* x264 Option String */
- [preset setObject:@"level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
-
- /* Video quality */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
- [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
-
- /* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
-
- /* GrayScale */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
-
- /* 2 Pass Encoding */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
-
- /*Picture Settings*/
- /* Use a width of 640 for iPod TV-out */
- [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"];
+ [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -1196,7 +877,7 @@
return preset;
}
-- (NSDictionary *)createIpodLowPreset
+- (NSDictionary *)createiPodPreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
@@ -1205,35 +886,40 @@
/*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's low resolution settings for the iPod (5G and up). Optimized for great playback on the iPod screen, with smaller file size." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
/* Video encoder */
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"];
+
/* x264 Option String */
- [preset setObject:@"level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"baseline" forKey:@"h264Profile"];
+ [preset setObject:@"1.3" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"];
- [preset setObject:@"700" forKey:@"VideoAvgBitrate"];
+ [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
+ [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
- [preset setObject:@"Same as source" forKey:@"VideoFramerate"];
- [preset setObject:@"vfr" forKey:@"VideoFramerateMode"];
+ [preset setObject:@"30" forKey:@"VideoFramerate"];
+ [preset setObject:@"pfr" forKey:@"VideoFramerateMode"];
/* GrayScale */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"];
@@ -1242,23 +928,23 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
/*Picture Settings*/
- /* Use a width of 320 for the iPod screen */
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
[preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
/* Set crop settings here */
/* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
@@ -1297,18 +983,16 @@
/*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"];
@@ -1317,11 +1001,17 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String */
- [preset setObject:@"ref=1:weightp=1:subq=2:rc-lookahead=10:trellis=0:8x8dct=0" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"veryfast" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"main" forKey:@"h264Profile"];
+ [preset setObject:@"4.0" forKey:@"h264Level"];
/* Video quality */
+ [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
- [preset setObject:@"1500" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -1337,22 +1027,23 @@
/*Picture Settings*/
/* Use Max Picture settings for whatever the dvd is.*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
/* Set crop settings here */
/* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"];
@@ -1382,43 +1073,44 @@
return preset;
}
-- (NSDictionary *)createAndroidMidPreset
+- (NSDictionary *)createAndroidPreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
/* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"Android Mid" forKey:@"PresetName"];
+ [preset setObject:@"Android" forKey:@"PresetName"];
/*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
-
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's settings for Mid-range Android 2.3 or better devices." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
/* Video encoder */
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
+
/* x264 Option String */
- [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"main" forKey:@"h264Profile"];
+ [preset setObject:@"2.2" forKey:@"h264Level"];
/* Video quality */
+ [preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
- [preset setObject:@"960" forKey:@"VideoAvgBitrate"];
[preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -1432,17 +1124,17 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
/*Picture Settings*/
- /* Use a width of 480 for the iPhone*/
- [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"];
+ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
@@ -1478,31 +1170,25 @@
return preset;
}
-- (NSDictionary *)createAndroidHighPreset
+- (NSDictionary *)createAndroidTabletPreset
{
NSMutableDictionary *preset = [[NSMutableDictionary alloc] init];
/* Get the New Preset Name from the field in the AddPresetPanel */
- [preset setObject:@"Android High" forKey:@"PresetName"];
+ [preset setObject:@"Android Tablet" forKey:@"PresetName"];
/*Set whether or not this is a user preset where 0 is factory, 1 is user*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"];
- /*Set whether or not this is a folder, 1 is bool for folder*/
- [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
- /*Set whether or not this is default, at creation set to 0*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"];
-
- /*Get the whether or not to apply pic settings in the AddPresetPanel*/
- [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
+ [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"];
/* Get the New Preset Description from the field in the AddPresetPanel */
[preset setObject:@"HandBrake's preset for the Higher end Anroid 2.3 or better devices." forKey:@"PresetDescription"];
/* File Format */
[preset setObject:@"MP4 file" forKey:@"FileFormat"];
-
- /* 64-bit MP4 file */
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"];
/* Chapter Markers*/
[preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"];
@@ -1511,11 +1197,17 @@
[preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"];
/* x264 Option String (We can use this to tweak the output)*/
- [preset setObject:@"weightp=0:cabac=0" forKey:@"x264Option"];
+ [preset setObject:@"" forKey:@"x264Option"];
+ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"];
+ [preset setObject:@"medium" forKey:@"x264Preset"];
+ [preset setObject:@"" forKey:@"x264Tune"];
+ [preset setObject:@"" forKey:@"x264OptionExtra"];
+ [preset setObject:@"main" forKey:@"h264Profile"];
+ [preset setObject:@"3.1" forKey:@"h264Level"];
/* Video quality */
- [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:@"2500" forKey:@"VideoAvgBitrate"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"];
[preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"];
/* Video framerate */
@@ -1529,18 +1221,17 @@
[preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"];
/* Basic Picture Settings */
- /* Use Max Picture settings for whatever the dvd is.*/
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"];
- [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"];
+ [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"];
[preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"];
+ [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"];
/* Explicitly set the filters for built-in presets */
[preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"];
- [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"];
[preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"];
diff --git a/macosx/HBPreviewController.h b/macosx/HBPreviewController.h
index 1394a9730..420e2831e 100644
--- a/macosx/HBPreviewController.h
+++ b/macosx/HBPreviewController.h
@@ -12,22 +12,18 @@
@class HBController;
-#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate
-
-@interface PreviewController : NSWindowController
+@interface PreviewController : NSWindowController <NSWindowDelegate>
{
hb_handle_t * fHandle;
hb_title_t * fTitle;
- HBController *fHBController; // reference to HBController
+ HBController * fHBController; // reference to HBController
- IBOutlet NSWindow * fPreviewWindow;
- NSWindow * fFullScreenWindow; // Full Screen window
NSMutableDictionary * fPicturePreviews; // NSImages, one for each preview libhb creates, created lazily
int fPicture;
- IBOutlet NSImageView * fPictureView;
- IBOutlet NSBox * fPictureViewArea;
+ CALayer * fWhiteBackground;
+ CALayer * fPictureLayer;
IBOutlet NSBox * fPictureControlBox;
IBOutlet NSBox * fEncodingControlBox;
IBOutlet NSBox * fMoviePlaybackControlBox;
@@ -36,23 +32,16 @@
IBOutlet NSTextField * fInfoField;
IBOutlet NSTextField * fscaleInfoField;
- BOOL isEncoding;
-
-
- int MaxOutputWidth;
- int MaxOutputHeight;
-
- int output_width, output_height, output_par_width, output_par_height;
- int display_width;
+ CGFloat backingScaleFactor;
/* Hud Control Overlay */
NSTimer * fHudTimer;
int hudTimerSeconds;
/* Full Screen Mode Toggle */
+ BOOL scaleToScreen;
IBOutlet NSButton * fScaleToScreenToggleButton;
IBOutlet NSButton * fPictureSettingsToggleButton;
- BOOL scaleToScreen;
/* Movie Previews */
QTMovie * aMovie;
@@ -68,13 +57,13 @@
IBOutlet NSTextField * fMovieInfoField;
NSTimer * fMovieTimer;
-
IBOutlet NSButton * fCreatePreviewMovieButton;
IBOutlet NSButton * fCancelPreviewMovieButton;
IBOutlet NSButton * fShowPreviewMovieButton;
NSString * fPreviewMoviePath;
IBOutlet NSProgressIndicator * fMovieCreationProgressIndicator;
hb_handle_t * fPreviewLibhb; // private libhb for creating previews
+ NSInteger fEncodeState;
NSTimer * fLibhbTimer; // timer for retrieving state from libhb
IBOutlet NSTextField * fPreviewMovieStatusField;
IBOutlet NSPopUpButton * fPreviewMovieLengthPopUp; // popup of choices for length of preview in seconds
@@ -83,18 +72,15 @@
- (void) SetHandle: (hb_handle_t *) handle;
- (void) SetTitle: (hb_title_t *) title;
-- (void)setHBController: (HBController *)controller;
-- (IBAction) showPreviewWindow: (id)sender;
-- (BOOL)acceptsMouseMovedEvents;
+- (void) setHBController: (HBController *)controller;
- (void) displayPreview;
-- (IBAction) SettingsChanged: (id) sender;
+- (IBAction) settingsChanged: (id) sender;
- (IBAction) pictureSliderChanged: (id) sender;
-- (IBAction)showPictureSettings:(id)sender;
+- (IBAction) showPictureSettings:(id)sender;
- (NSString*) pictureSizeInfoString;
-- (IBAction)toggleScaleToScreen:(id)sender;
-- (IBAction)goWindowedScreen:(id)sender;
+- (IBAction) toggleScaleToScreen:(id)sender;
/* HUD overlay */
- (void) enableHudControls;
@@ -108,37 +94,36 @@
- (void) stopReceivingLibhbNotifications;
- (void) installMovieCallbacks;
-- (void)removeMovieCallbacks;
+- (void) removeMovieCallbacks;
- (IBAction) cancelCreateMoviePreview: (id) sender;
- (IBAction) createMoviePreview: (id) sender;
- (void) libhbStateChanged: (hb_state_t ) state;
- (IBAction) showMoviePreview: (NSString *) path;
+- (IBAction) showPicturesPreview: (id) sender;
- (IBAction) toggleMoviePreviewPlayPause: (id) sender;
- (IBAction) moviePlaybackGoToBeginning: (id) sender;
- (IBAction) moviePlaybackGoToEnd: (id) sender;
- (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender;
- (IBAction) moviePlaybackGoForwardOneFrame: (id) sender;
--(void) initPreviewScrubberForMovie;
--(void) adjustPreviewScrubberForCurrentMovieTime;
+- (void) initPreviewScrubberForMovie;
+- (void) adjustPreviewScrubberForCurrentMovieTime;
- (IBAction) previewScrubberChanged: (id) sender;
--(void)setTime:(int)timeValue;
--(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime;
+- (BOOL) isPlaying;
+
- (void) startMovieTimer;
- (void) stopMovieTimer;
-- (NSString*) calculatePlaybackSMTPETimecodeForDisplay;
+- (NSString*) SMTPETimecode: (QTTime)time;
+- (QTTime)SliderToQTTime:(double)time;
- (IBAction) previewDurationPopUpChanged: (id) sender;
-
-- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title;
-
-+ (NSImage *) makeImageForPicture: (int)pictureIndex
++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex
libhb:(hb_handle_t*)handle
title:(hb_title_t*)title;
-- (NSImage *) imageForPicture: (int) pictureIndex;
+- (NSImage *) imageForPicture: (NSInteger) pictureIndex;
- (void) purgeImageCache;
@end
diff --git a/macosx/HBPreviewController.m b/macosx/HBPreviewController.m
index 69b6f521e..ba664059b 100644
--- a/macosx/HBPreviewController.m
+++ b/macosx/HBPreviewController.m
@@ -7,22 +7,28 @@
#import "HBPreviewController.h"
#import "Controller.h"
-@implementation QTMovieView ( HBQTkitExt )
+#define BORDER_SIZE 2.0
+#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate
+
+@implementation QTMovieView (HBExtensions)
- (void) mouseMoved:(NSEvent *)theEvent
{
[super mouseMoved:theEvent];
}
@end
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
+@interface NSWindow(HBExtensions)
+
+@property (readonly) CGFloat backingScaleFactor;
+@end
+#endif
@interface PreviewController (Private)
- (NSSize)optimalViewSizeForImageSize: (NSSize)imageSize;
-- (void)resizeSheetForViewSize: (NSSize)viewSize;
-- (void)setViewSize: (NSSize)viewSize;
-- (BOOL)viewNeedsToResizeToSize: (NSSize)newSize;
-
+- (void)resizeWindowForViewSize: (NSSize)viewSize;
@end
@implementation PreviewController
@@ -45,29 +51,10 @@
/* Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it */
int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue];
fPreviewLibhb = hb_init(loggingLevel, 0);
-
-
-
}
return self;
}
-
-//------------------------------------------------------------------------------------
-// Displays and brings the picture window to the front
-//------------------------------------------------------------------------------------
-- (IBAction) showPreviewWindow: (id)sender
-{
- [self showWindow:sender];
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PreviewWindowIsOpen"];
-
- /* lets set the preview window to accept mouse moved events */
- [fPreviewWindow setAcceptsMouseMovedEvents:YES];
- hudTimerSeconds = 0;
- [self pictureSliderChanged:nil];
- [self startReceivingLibhbNotifications];
-}
-
- (void)setHBController: (HBController *)controller
{
fHBController = controller;
@@ -75,15 +62,16 @@
- (void)awakeFromNib
{
- [fPreviewWindow setDelegate:self];
+ [[self window] setDelegate:self];
+
if( ![[self window] setFrameUsingName:@"Preview"] )
[[self window] center];
+
[self setWindowFrameAutosaveName:@"Preview"];
[[self window] setExcludedFromWindowsMenu:YES];
/* lets set the preview window to accept mouse moved events */
- [fPreviewWindow setAcceptsMouseMovedEvents:YES];
- //[self pictureSliderChanged:nil];
+ [[self window] setAcceptsMouseMovedEvents:YES];
[self startReceivingLibhbNotifications];
hudTimerSeconds = 0;
@@ -92,35 +80,74 @@
*/
[fMovieCreationProgressIndicator setUsesThreadedAnimation:NO];
- /* Setup our layers for core animation */
- [fPictureViewArea setWantsLayer:YES];
- [fPictureView setWantsLayer:YES];
+ /* we set the preview length popup in seconds */
+ [fPreviewMovieLengthPopUp removeAllItems];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"15"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"30"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"45"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"60"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"90"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"105"];
+ [fPreviewMovieLengthPopUp addItemWithTitle: @"120"];
- [fCancelPreviewMovieButton setWantsLayer:YES];
- [fMovieCreationProgressIndicator setWantsLayer:YES];
+ [fMovieView setHidden:YES];
+ [fMovieView setDelegate:self];
+ /* Setup our layers for core animation */
+ [[[self window] contentView] setWantsLayer:YES];
[fPictureControlBox setWantsLayer:YES];
[fEncodingControlBox setWantsLayer:YES];
- [fMovieView setWantsLayer:YES];
- [fMovieView setHidden:YES];
- [fMovieView setDelegate:self];
+ [fMoviePlaybackControlBox setWantsLayer:YES];
+
+ fWhiteBackground = [CALayer layer];
+ [fWhiteBackground setBounds:CGRectMake(0.0, 0.0, 480.0, 360.0)];
+ [fWhiteBackground setPosition:CGPointMake([[[self window] contentView] frame].size.width /2,
+ [[[self window] contentView] frame].size.height /2)];
+
+ [fWhiteBackground setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
+ CGColorRef white = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0);
+ [fWhiteBackground setBackgroundColor: white];
+ CFRelease(white);
+ [fWhiteBackground setShadowOpacity:0.5f];
+ [fWhiteBackground setShadowOffset:CGSizeMake(0, 0)];
- /* Since the xib has everything off center for easy acess
- * we align our views and windows here we an align to anything
- * since it will actually change later upon source load, but
- * for convenience we will use the fPictureViewArea
- */
-
- /* Align the still preview image view to the picture box */
- [fPictureView setFrameSize:[fPictureViewArea frame].size];
- [fMovieView setFrameSize:[fPictureViewArea frame].size];
- //[fPreviewWindow setFrameSize:[fPictureViewArea frame].size];
+ fPictureLayer = [CALayer layer];
+ [fPictureLayer setBounds:CGRectMake(0.0, 0.0, 476.0, 356.0)];
+ [fPictureLayer setPosition:CGPointMake([[[self window] contentView] frame].size.width /2,
+ [[[self window] contentView] frame].size.height /2)];
+ [fPictureLayer setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
+
+ NSMutableDictionary *actions = [NSMutableDictionary
+ dictionaryWithDictionary:[fPictureLayer actions]];
+
+ // Disable fade on contents change
+ [actions setObject:[NSNull null] forKey:@"contents"];
+ [fPictureLayer setActions:actions];
+
+ [[[[self window] contentView] layer] insertSublayer:fWhiteBackground below: [fMovieView layer]];
+ [[[[self window] contentView] layer] insertSublayer:fPictureLayer below: [fMovieView layer]];
+
+ /* relocate our hud origins */
+ NSPoint hudControlBoxOrigin = [fMoviePlaybackControlBox frame].origin;
+ [fPictureControlBox setFrameOrigin:hudControlBoxOrigin];
+ [fEncodingControlBox setFrameOrigin:hudControlBoxOrigin];
+ [fMoviePlaybackControlBox setFrameOrigin:hudControlBoxOrigin];
+ if( [[self window] respondsToSelector:@selector( backingScaleFactor )] )
+ backingScaleFactor = [[self window] backingScaleFactor];
+ else
+ backingScaleFactor = 1.0;
+
+ [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(titleChanged:) name: HBTitleChangedNotification object:nil];
}
-- (BOOL)acceptsMouseMovedEvents
+
+- (void) titleChanged: (NSNotification *) aNotification
{
- return YES;
+ /* Notification from HBController, only used to stop
+ * an encoding while the HBController is scanning a new title
+ */
+ [self cancelCreateMoviePreview:self];
}
- (void)windowWillClose:(NSNotification *)aNotification
@@ -131,22 +158,18 @@
* to go back to still previews .. just in case nothing is loaded up like in
* a Launch, cancel new scan then quit type scenario.
*/
- if (fPicture)
+
+ if (fEncodeState || [self isPlaying])
{
- [self pictureSliderChanged:nil];
- [fMovieTimer invalidate];
- [fMovieTimer release];
+ [self cancelCreateMoviePreview:self];
+ [fMovieView pause:self];
+ [self stopMovieTimer];
}
-
+
hudTimerSeconds = 0;
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"PreviewWindowIsOpen"];
}
-- (BOOL)windowShouldClose:(id)fPictureWindow
-{
- return YES;
-}
-
- (void) dealloc
{
hb_stop(fPreviewLibhb);
@@ -154,7 +177,7 @@
{
[[NSFileManager defaultManager] removeItemAtPath:fPreviewMoviePath error:nil];
[fPreviewMoviePath release];
- }
+ }
[fLibhbTimer invalidate];
[fLibhbTimer release];
@@ -166,7 +189,6 @@
[fMovieTimer release];
[fPicturePreviews release];
- [fFullScreenWindow release];
hb_close(&fPreviewLibhb);
@@ -179,18 +201,6 @@
{
fHandle = handle;
-
-
- /* we set the preview length popup in seconds */
- [fPreviewMovieLengthPopUp removeAllItems];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"15"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"30"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"45"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"60"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"90"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"105"];
- [fPreviewMovieLengthPopUp addItemWithTitle: @"120"];
-
/* adjust the preview slider length */
/* We use our advance pref to determine how many previews we scanned */
int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue];
@@ -203,56 +213,52 @@
}
else
{
- /* currently hard set default to 10 seconds */
- [fPreviewMovieLengthPopUp selectItemAtIndex: 1];
+ /* currently hard set default to 15 seconds */
+ [fPreviewMovieLengthPopUp selectItemAtIndex: 0];
}
}
- (void) SetTitle: (hb_title_t *) title
{
- hb_job_t * job = title->job;
-
fTitle = title;
fPicture = 0;
- MaxOutputWidth = title->width - job->crop[2] - job->crop[3];
- MaxOutputHeight = title->height - job->crop[0] - job->crop[1];
-
- [self SettingsChanged: nil];
+ [self settingsChanged:nil];
}
-
+- (void)windowDidChangeBackingProperties:(NSNotification *)notification {
+
+ NSWindow *theWindow = (NSWindow *)[notification object];
+
+ CGFloat newBackingScaleFactor = [theWindow backingScaleFactor];
+ CGFloat oldBackingScaleFactor = [[[notification userInfo]
+ objectForKey:@"NSBackingPropertyOldScaleFactorKey"]
+ doubleValue];
+ if( newBackingScaleFactor != oldBackingScaleFactor )
+ {
+ // Scale factor changed, update the preview window
+ // to the new situation
+ backingScaleFactor = newBackingScaleFactor;
+ [self pictureSliderChanged:self];
+ }
+}
// Adjusts the window to draw the current picture (fPicture) adjusting its size as
// necessary to display as much of the picture as possible.
-- (void) displayPreview
+- (void) displayPreview
{
hb_job_t * job = fTitle->job;
- /* lets make sure that the still picture view is not hidden and that
- * the movie preview is
- */
- aMovie = nil;
- [fMovieView pause:nil];
- [fMovieView setHidden:YES];
- [fMovieView setMovie:nil];
- [fMovieCreationProgressIndicator stopAnimation: nil];
- [fMovieCreationProgressIndicator setHidden: YES];
- [fMoviePlaybackControlBox setHidden: YES];
- if( fMovieTimer )
- {
- [self stopMovieTimer];
- }
- [fPictureControlBox setHidden: NO];
-
- [fPictureView setHidden:NO];
-
+
NSImage *fPreviewImage = [self imageForPicture: fPicture];
NSSize imageScaledSize = [fPreviewImage size];
- [fPictureView setImage: fPreviewImage];
-
+ [fPictureLayer setContents:fPreviewImage];
+
NSSize displaySize = NSMakeSize( ( CGFloat )fTitle->width, ( CGFloat )fTitle->height );
NSString *sizeInfoString;
+
/* Set the picture size display fields below the Preview Picture*/
+ int output_width, output_height, output_par_width, output_par_height;
+ int display_width;
if( fTitle->job->anamorphic.mode == 1 ) // Original PAR Implementation
{
output_width = fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3];
@@ -265,7 +271,7 @@
displaySize.width = display_width;
displaySize.height = fTitle->height;
imageScaledSize.width = display_width;
- imageScaledSize.height = output_height;
+ imageScaledSize.height = output_height;
}
else if (fTitle->job->anamorphic.mode == 2) // Loose Anamorphic
{
@@ -283,7 +289,6 @@
else if (fTitle->job->anamorphic.mode == 3) // Custom Anamorphic
{
hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height);
- display_width = output_width * output_par_width / output_par_height;
sizeInfoString = [NSString stringWithFormat:
@"Source: %dx%d, Output: %dx%d, Anamorphic: %dx%d Custom",
fTitle->width, fTitle->height, output_width, output_height, fTitle->job->anamorphic.dar_width, fTitle->job->anamorphic.dar_height];
@@ -291,8 +296,8 @@
displaySize.width = fTitle->job->anamorphic.dar_width + fTitle->job->crop[2] + fTitle->job->crop[3] ;
displaySize.height = fTitle->job->anamorphic.dar_height + fTitle->job->crop[0] + fTitle->job->crop[1];
imageScaledSize.width = (int)fTitle->job->anamorphic.dar_width;
- imageScaledSize.height = (int)fTitle->job->height;
- }
+ imageScaledSize.height = (int)fTitle->job->height;
+ }
else // No Anamorphic
{
sizeInfoString = [NSString stringWithFormat:
@@ -304,113 +309,94 @@
imageScaledSize.width = fTitle->job->width;
imageScaledSize.height = fTitle->job->height;
}
-
-
-
- NSSize viewSize = [self optimalViewSizeForImageSize:displaySize];
- [self resizeSheetForViewSize:viewSize];
- NSSize windowSize = [[self window] frame].size;
+ if( backingScaleFactor != 1.0 )
+ {
+ // HiDPI mode usually display everything
+ // with douple pixel count, but we don't
+ // want to double the size of the video
+ displaySize.height /= backingScaleFactor;
+ displaySize.width /= backingScaleFactor;
+ imageScaledSize.height /= backingScaleFactor;
+ imageScaledSize.width /= backingScaleFactor;
+ }
+
+ // Get the optimal view size for the image
+ NSSize viewSize = [self optimalViewSizeForImageSize:displaySize];
+ viewSize.width += BORDER_SIZE * 2;
+ viewSize.height += BORDER_SIZE * 2;
+ NSSize windowSize;
+ if (scaleToScreen == YES)
+ // Scale the window to the max possible size
+ windowSize = [[[self window] screen] visibleFrame].size;
+ else
+ // Scale the window to the image size
+ windowSize = viewSize;
+
+ [self resizeWindowForViewSize:windowSize];
+ NSSize areaSize = [[[self window] contentView] frame].size;
+ areaSize.width -= BORDER_SIZE * 2;
+ areaSize.height -= BORDER_SIZE * 2;
+
if (scaleToScreen == YES)
{
- /* Note: this should probably become a utility function */
/* We are in Scale To Screen mode so, we have to get the ratio for height and width against the window
*size so we can scale from there.
*/
- CGFloat deltaWidth = imageScaledSize.width / displaySize.width;
- CGFloat deltaHeight = imageScaledSize.height /displaySize.height;
- NSSize windowSize = [[self window] frame].size;
CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height;
+ CGFloat areaAspectRatio = areaSize.width / areaSize.height;
- /* Set our min size to the storage size */
- NSSize minSize;
- minSize.width = fTitle->width;
- minSize.height = fTitle->height;
-
- /* Set delta's based on minimum size */
- if (imageScaledSize.width < minSize.width)
- {
- deltaWidth = imageScaledSize.width / minSize.width;
- }
- else
- {
- deltaWidth = 1.0;
- }
-
- if (imageScaledSize.height < minSize.height)
- {
- deltaHeight = imageScaledSize.height / minSize.height;
- }
- else
- {
- deltaHeight = 1.0;
- }
-
- /* Now apply our deltas to the full screen view */
- if (pictureAspectRatio > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height
+ if (pictureAspectRatio > areaAspectRatio)
{
- viewSize.width = windowSize.width * deltaWidth;
+ viewSize.width = areaSize.width;
viewSize.height = viewSize.width / pictureAspectRatio;
-
}
else
{
- viewSize.height = windowSize.height * deltaHeight;
+ viewSize.height = areaSize.height;
viewSize.width = viewSize.height * pictureAspectRatio;
}
-
}
else
{
- viewSize.width = viewSize.width - (viewSize.width - imageScaledSize.width);
- viewSize.height = viewSize.height - (viewSize.height - imageScaledSize.height);
-
- if (fTitle->width > windowSize.width || fTitle->height > windowSize.height)
+ // If the image is larger then the window, scale the image
+ viewSize = imageScaledSize;
+
+ if (imageScaledSize.width > areaSize.width || imageScaledSize.height > areaSize.height)
{
- CGFloat viewSizeAspect = viewSize.width / viewSize.height;
- if (viewSizeAspect > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height
+ CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height;
+ CGFloat areaAspectRatio = areaSize.width / areaSize.height;
+
+ if (pictureAspectRatio > areaAspectRatio)
{
- viewSize.width = viewSize.width * (windowSize.width / fTitle->width) ;
- viewSize.height = viewSize.width / viewSizeAspect;
+ viewSize.width = areaSize.width;
+ viewSize.height = viewSize.width / pictureAspectRatio;
}
else
{
- viewSize.height = viewSize.height * (windowSize.height / fTitle->height);
- viewSize.width = viewSize.height * viewSizeAspect;
+ viewSize.height = areaSize.height;
+ viewSize.width = viewSize.height * pictureAspectRatio;
}
}
-
}
-
- [self setViewSize:viewSize];
-
- /* relocate our hud origins as per setViewSize */
- NSPoint hudControlBoxOrigin = [fPictureControlBox frame].origin;
- hudControlBoxOrigin.y = ([[self window] frame].size.height / 2) - (viewSize.height / 2);
- hudControlBoxOrigin.x = ([[self window] frame].size.width / 2) - ([fPictureControlBox frame].size.width / 2);
- [fPictureControlBox setFrameOrigin:hudControlBoxOrigin];
- [fEncodingControlBox setFrameOrigin:hudControlBoxOrigin];
- [fMoviePlaybackControlBox setFrameOrigin:hudControlBoxOrigin];
+ // Resize the CALayers
+ [fWhiteBackground setBounds:CGRectMake(0, 0, viewSize.width + (BORDER_SIZE * 2), viewSize.height + (BORDER_SIZE * 2))];
+ [fPictureLayer setBounds:CGRectMake(0, 0, viewSize.width, viewSize.height)];
NSString *scaleString;
- CGFloat scale = ( ( CGFloat )[fPictureView frame].size.width) / ( ( CGFloat )imageScaledSize.width);
+ CGFloat scale = ( ( CGFloat )[fPictureLayer frame].size.width) / ( ( CGFloat )imageScaledSize.width);
if (scale * 100.0 != 100)
- {
scaleString = [NSString stringWithFormat:
NSLocalizedString( @" (%.0f%% actual size)",
@"String shown when a preview is scaled" ), scale * 100.0];
- }
else
- {
scaleString = @"(Actual size)";
- }
if (scaleToScreen == YES)
- {
scaleString = [scaleString stringByAppendingString:@" Scaled To Screen"];
- }
+
/* Set the info fields in the hud controller */
[fInfoField setStringValue: [NSString stringWithFormat:
@"%@", sizeInfoString]];
@@ -423,17 +409,15 @@
- (IBAction) previewDurationPopUpChanged: (id) sender
{
-
[[NSUserDefaults standardUserDefaults] setObject:[fPreviewMovieLengthPopUp titleOfSelectedItem] forKey:@"PreviewLength"];
+}
-}
-
-- (IBAction) SettingsChanged: (id) sender
+- (IBAction) settingsChanged: (id) sender
{
- // Purge the existing picture previews so they get recreated the next time
- // they are needed.
- [self purgeImageCache];
- [self pictureSliderChanged:nil];
+ // Purge the existing picture previews so they get recreated the next time
+ // they are needed.
+ [self purgeImageCache];
+ [self pictureSliderChanged:nil];
}
- (IBAction) pictureSliderChanged: (id) sender
@@ -442,11 +426,14 @@
[self cancelCreateMoviePreview:nil];
// Show the picture view
- [fPictureView setHidden:NO];
- [fMovieView pause:nil];
- [fMovieView setHidden:YES];
- [fMovieView setMovie:nil];
- [fEncodingControlBox setHidden: YES];
+ if (aMovie)
+ {
+ [fMoviePlaybackControlBox setHidden:YES];
+ [fMovieView pause:nil];
+ [fMovieView setHidden:YES];
+ [fMovieView setMovie:nil];
+ aMovie = nil;
+ }
int newPicture = [fPictureSlider intValue];
if (newPicture != fPicture)
@@ -457,23 +444,13 @@
}
-- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title
+- (IBAction)showWindow:(id)sender
{
- if ([fPreviewWindow isVisible])
- {
- [fPreviewWindow close];
- }
- else
- {
- [self showWindow:sender];
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PreviewWindowIsOpen"];
- [fPreviewWindow setAcceptsMouseMovedEvents:YES];
- scaleToScreen = NO;
- [self pictureSliderChanged:nil];
- }
+ if (aMovie)
+ [self startMovieTimer];
+ [super showWindow:sender];
}
-
- (NSString*) pictureSizeInfoString
{
return [fInfoField stringValue];
@@ -511,12 +488,12 @@
NSPoint mouseLoc = [theEvent locationInWindow];
/* Test for mouse location to show/hide hud controls */
- if( isEncoding == NO )
+ if( fEncodeState != 1 )
{
/* Since we are not encoding, verify which control hud to show
* or hide based on aMovie ( aMovie indicates we need movie controls )
*/
- NSBox * hudBoxToShow;
+ NSBox *hudBoxToShow;
if ( aMovie == nil ) // No movie loaded up
{
hudBoxToShow = fPictureControlBox;
@@ -531,7 +508,7 @@
[[hudBoxToShow animator] setHidden: NO];
[self stopHudTimer];
}
- else if( NSPointInRect( mouseLoc, [fPictureViewArea frame] ) )
+ else if( NSPointInRect( mouseLoc, [[[self window] contentView] frame] ) )
{
[[hudBoxToShow animator] setHidden: NO];
[self startHudTimer];
@@ -578,8 +555,6 @@
}
}
-
-
- (IBAction)toggleScaleToScreen:(id)sender
{
if (scaleToScreen == YES)
@@ -599,85 +574,14 @@
}
-
-
-// Title-less windows normally don't receive key presses, override this
-- (BOOL)canBecomeKeyWindow
-{
- return YES;
-}
-
-// Title-less windows normally can't become main which means that another
-// non-fullscreen window will have the "active" titlebar in expose. Bad, fix it.
-- (BOOL)canBecomeMainWindow
-{
- return YES;
-}
-
-
-- (IBAction)goWindowedScreen:(id)sender
-{
-
- /* Get the screen info to release the display but don't actually do
- * it until the windowed screen is setup.
- */
- scaleToScreen = NO;
- [self pictureSliderChanged:nil];
- [fScaleToScreenToggleButton setTitle:@"<->"];
-
- NSScreen* mainScreen = [NSScreen mainScreen];
- NSDictionary* screenInfo = [mainScreen deviceDescription];
- NSNumber* screenID = [screenInfo objectForKey:@"NSScreenNumber"];
- CGDirectDisplayID displayID = (CGDirectDisplayID)[screenID longValue];
-
- [fFullScreenWindow dealloc];
- [fFullScreenWindow release];
-
-
- [fPreviewWindow setContentView:fPictureViewArea];
- [fPictureViewArea setNeedsDisplay:YES];
- [self setWindow:fPreviewWindow];
-
- // Show the window.
- [fPreviewWindow makeKeyAndOrderFront:self];
-
- /* Set the window back to regular level */
- [fPreviewWindow setLevel:NSNormalWindowLevel];
-
- /* Set the isFullScreen flag back to NO */
- //isFullScreen = NO;
- scaleToScreen = NO;
- /* make sure we are set to a still preview */
- [self pictureSliderChanged:nil];
- [self showPreviewWindow:nil];
-
- /* Change the name of fFullScreenToggleButton appropriately */
- //[fFullScreenToggleButton setTitle: @"Full Screen"];
- // [fScaleToScreenToggleButton setHidden:YES];
- /* set the picture settings pallete back to normal level */
- [fHBController picturePanelWindowed];
-
- /* Release the display now that the we are back in windowed mode */
- CGDisplayRelease(displayID);
-
- [fPreviewWindow setAcceptsMouseMovedEvents:YES];
- //[fFullScreenWindow setAcceptsMouseMovedEvents:NO];
-
- hudTimerSeconds = 0;
- [self startHudTimer];
-
-}
-
-
#pragma mark Still Preview Image Processing
-
// This function converts an image created by libhb (specified via pictureIndex) into
// an NSImage suitable for the GUI code to use. If removeBorders is YES,
// makeImageForPicture crops the image generated by libhb stripping off the gray
// border around the content. This is the low-level method that generates the image.
// -imageForPicture calls this function whenever it can't find an image in its cache.
-+ (NSImage *) makeImageForPicture: (int)pictureIndex
++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex
libhb:(hb_handle_t*)handle
title:(hb_title_t*)title
{
@@ -696,7 +600,7 @@
buffer = (uint8_t *) realloc( buffer, bufferSize );
}
- hb_get_preview( handle, title->job, pictureIndex, buffer );
+ hb_get_preview( handle, title->job, (int)pictureIndex, buffer );
// Create an NSBitmapImageRep and copy the libhb image into it, converting it from
// libhb's format to one suitable for NSImage. Along the way, we'll strip off the
@@ -742,11 +646,11 @@
// cache or by calling makeImageForPicture if it is not cached. Generally, you should
// use imageForPicture so that images are cached. Calling makeImageForPicture will
// always generate a new copy of the image.
-- (NSImage *) imageForPicture: (int) pictureIndex
+- (NSImage *) imageForPicture: (NSInteger) pictureIndex
{
// The preview for the specified index may not currently exist, so this method
// generates it if necessary.
- NSString * key = [NSString stringWithFormat:@"%d", pictureIndex];
+ NSNumber * key = [NSNumber numberWithInteger:pictureIndex];
NSImage * theImage = [fPicturePreviews objectForKey:key];
if (!theImage)
{
@@ -763,59 +667,33 @@
[fPicturePreviews removeAllObjects];
}
-
-
#pragma mark Movie Preview
- (IBAction) cancelCreateMoviePreview: (id) sender
{
-
hb_state_t s;
hb_get_state2( fPreviewLibhb, &s );
- if(isEncoding && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED))
+ if(fEncodeState && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED))
{
+ fEncodeState = 2;
hb_stop( fPreviewLibhb );
- [fPictureView setHidden:NO];
- [fMovieView pause:nil];
- [fMovieView setHidden:YES];
- [fMovieView setMovie:nil];
- [fPictureSlider setHidden:NO];
- isEncoding = NO;
-
- [self pictureSliderChanged:nil];
-
+ [NSAnimationContext beginGrouping];
+ [[NSAnimationContext currentContext] setDuration:0.2];
+ [[fEncodingControlBox animator] setHidden:YES];
+ [[fPictureControlBox animator] setHidden:NO];
+ [NSAnimationContext endGrouping];
+
return;
}
-
}
- (IBAction) createMoviePreview: (id) sender
-{
-
-
- /* Lets make sure the still picture previews are showing in case
- * there is currently a movie showing */
- [self pictureSliderChanged:nil];
-
+{
/* Rip or Cancel ? */
hb_state_t s;
hb_get_state2( fPreviewLibhb, &s );
- if(sender == fCancelPreviewMovieButton && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED))
- {
- hb_stop( fPreviewLibhb );
- [fPictureView setHidden:NO];
- [fMovieView pause:nil];
- [fMovieView setHidden:YES];
- [fMovieView setMovie:nil];
- [fPictureSlider setHidden:NO];
- isEncoding = NO;
-
- return;
- }
-
-
/* we use controller.mm's prepareJobForPreview to go ahead and set all of our settings
* however, we want to use a temporary destination field of course
* so that we do not put our temp preview in the users chosen
@@ -907,15 +785,16 @@
/* we need to clean up the various lists after the job(s) have been set */
hb_job_reset( job );
- [fEncodingControlBox setHidden: NO];
- [fPictureControlBox setHidden: YES];
-
- [fMovieCreationProgressIndicator setHidden: NO];
- [fPreviewMovieStatusField setHidden: NO];
-
- isEncoding = YES;
+ [fMovieCreationProgressIndicator setDoubleValue:0];
+
+ [NSAnimationContext beginGrouping];
+ [[NSAnimationContext currentContext] setDuration:0.2];
+ [[fEncodingControlBox animator] setHidden: NO];
+ [[fPictureControlBox animator] setHidden: YES];
+ [NSAnimationContext endGrouping];
/* Let fPreviewLibhb do the job */
+ fEncodeState = 1;
hb_start( fPreviewLibhb );
}
@@ -943,7 +822,6 @@
hb_state_t s;
hb_get_state( fPreviewLibhb, &s );
[self libhbStateChanged: s];
-
}
- (void) libhbStateChanged: (hb_state_t)state
@@ -958,7 +836,6 @@
case HB_STATE_WORKING:
{
#define p state.param.working
-
NSMutableString * string;
/* Update text field */
string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding preview: %.2f %%", @"" ), 100.0 * p.progress];
@@ -973,23 +850,20 @@
[fMovieCreationProgressIndicator setIndeterminate: NO];
/* Update slider */
- [fMovieCreationProgressIndicator setDoubleValue: 100.0 * p.progress];
-
- [fCreatePreviewMovieButton setTitle: @"Cancel Preview"];
+ [fMovieCreationProgressIndicator setDoubleValue: 100.0 * p.progress];
break;
}
#undef p
-#define p state.param.muxing
+#define p state.param.muxing
case HB_STATE_MUXING:
{
// Update fMovieCreationProgressIndicator
[fMovieCreationProgressIndicator setIndeterminate: YES];
[fMovieCreationProgressIndicator startAnimation: nil];
- [fPreviewMovieStatusField setStringValue: [NSString stringWithFormat:
- NSLocalizedString( @"Muxing Preview ...", @"" )]];
+ [fPreviewMovieStatusField setStringValue: NSLocalizedString( @"Muxing Preview ...", @"" )];
break;
}
#undef p
@@ -1005,18 +879,15 @@
hb_rem( fHandle, job );
[fPreviewMovieStatusField setStringValue: @""];
- [fPreviewMovieStatusField setHidden: YES];
-
[fMovieCreationProgressIndicator stopAnimation: nil];
- [fMovieCreationProgressIndicator setHidden: YES];
- [fEncodingControlBox setHidden: YES];
- [fPictureControlBox setHidden: YES];
- isEncoding = NO;
-
- // Show the movie view
- [self showMoviePreview:fPreviewMoviePath];
- [fCreatePreviewMovieButton setTitle: @"Live Preview"];
+ if (fEncodeState != 2)
+ {
+ // Show the movie view
+ [self showMoviePreview:fPreviewMoviePath];
+ }
+
+ fEncodeState = 0;
break;
}
}
@@ -1031,18 +902,17 @@
* object, given that, we detect the rate to determine whether the movie
* is playing or not.
*/
- if ([aMovie rate] != 0) // we are playing
+ if ([self isPlaying]) // we are playing
{
[fMovieView pause:aMovie];
- [fPlayPauseButton setTitle: @">"];
+ [fPlayPauseButton setState: NSOnState];
}
else // we are paused or stopped
{
[fMovieView play:aMovie];
- [fPlayPauseButton setTitle: @"||"];
+ [fPlayPauseButton setState: NSOffState];
}
}
-
}
- (IBAction) moviePlaybackGoToBeginning: (id) sender
@@ -1051,8 +921,7 @@
if (aMovie != nil)
{
[fMovieView gotoBeginning:aMovie];
- }
-
+ }
}
- (IBAction) moviePlaybackGoToEnd: (id) sender
@@ -1061,8 +930,7 @@
if (aMovie != nil)
{
[fMovieView gotoEnd:aMovie];
- }
-
+ }
}
- (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender
@@ -1073,7 +941,6 @@
[fMovieView pause:aMovie]; // Pause the movie
[fMovieView stepBackward:aMovie];
}
-
}
- (IBAction) moviePlaybackGoForwardOneFrame: (id) sender
@@ -1084,10 +951,8 @@
[fMovieView pause:aMovie]; // Pause the movie
[fMovieView stepForward:aMovie];
}
-
}
-
- (void) startMovieTimer
{
if( fMovieTimer ) {
@@ -1110,13 +975,28 @@
- (void) movieTimerFired: (NSTimer*)theTimer
{
- if (aMovie != nil)
+ if (aMovie != nil)
{
[self adjustPreviewScrubberForCurrentMovieTime];
- [fMovieInfoField setStringValue: [NSString stringWithFormat:NSLocalizedString( @"%@", @"" ),[self calculatePlaybackSMTPETimecodeForDisplay]]];
+ [fMovieInfoField setStringValue: [self SMTPETimecode:[aMovie currentTime]]];
}
}
+- (IBAction) showPicturesPreview: (id) sender
+{
+ [fMovieView pause:self];
+ [self stopMovieTimer];
+
+ [NSAnimationContext beginGrouping];
+ [[NSAnimationContext currentContext] setDuration:0.2];
+ [[fMoviePlaybackControlBox animator] setHidden:YES];
+ [[fMovieView animator] setHidden:YES];
+ [[fPictureControlBox animator] setHidden:NO];
+ [NSAnimationContext endGrouping];
+
+ [fMovieView setMovie:nil];
+ aMovie = nil;
+}
- (IBAction) showMoviePreview: (NSString *) path
@@ -1131,7 +1011,6 @@
/* Load the new movie into fMovieView */
if (path)
{
- //QTMovie * aMovie;
NSError *outError;
NSURL *movieUrl = [NSURL fileURLWithPath:path];
NSDictionary *movieAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
@@ -1146,36 +1025,22 @@
aMovie = [[[QTMovie alloc] initWithAttributes:movieAttributes error:&outError] autorelease];
-
if (!aMovie)
{
- NSLog(@"Unable to open movie");
+ [fHBController writeToActivityLog: "showMoviePreview: Unable to open movie"];
}
else
{
NSRect movieBounds;
+
+ [fMovieView setControllerVisible:NO];
+
/* we get some size information from the preview movie */
- NSSize movieSize= [[aMovie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue];
+ NSSize movieSize = [[aMovie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue];
movieBounds = [fMovieView movieBounds];
movieBounds.size.height = movieSize.height;
/* We also get our view size to use for scaling fMovieView's size */
- NSSize scaledMovieViewSize = [fPictureView frame].size;
- [fMovieView setControllerVisible:FALSE];
- if ([fMovieView isControllerVisible])
- {
- CGFloat controllerBarHeight = [fMovieView controllerBarHeight];
- if ( controllerBarHeight != 0 ) //Check if QTKit return a real value or not.
- {
- movieBounds.size.height += controllerBarHeight;
- scaledMovieViewSize.height += controllerBarHeight;
- }
- else
- {
- movieBounds.size.height += 15;
- scaledMovieViewSize.height += 15;
- }
- }
-
+ NSSize scaledMovieViewSize = [fPictureLayer frame].size;
movieBounds.size.width = movieSize.width;
/* we need to account for an issue where the scaledMovieViewSize > the window size */
@@ -1184,23 +1049,18 @@
[fHBController writeToActivityLog: "showMoviePreview: Our window is not tall enough to show the controller bar ..."];
}
-
-
/* Scale the fMovieView to scaledMovieViewSize */
[fMovieView setFrameSize:scaledMovieViewSize];
/*set our origin try using fPictureViewArea or fPictureView */
- NSPoint origin = [fPictureView frame].origin;
- origin.x += trunc( ( [fPictureView frame].size.width -
+ NSPoint origin = [fPictureLayer frame].origin;
+ origin.x += trunc( ( [fPictureLayer frame].size.width -
[fMovieView frame].size.width ) / 2.0 );
- origin.y += trunc( ( ( [fPictureView frame].size.height -
- [fMovieView frame].size.height ) / 2.0 ) - 7.5 );
+ origin.y += trunc( ( ( [fPictureLayer frame].size.height -
+ [fMovieView frame].size.height ) / 2.0 ) );
[fMovieView setFrameOrigin:origin];
[fMovieView setMovie:aMovie];
- [fMovieView setHidden:NO];
- [fMoviePlaybackControlBox setHidden: NO];
- [fPictureControlBox setHidden: YES];
// get and enable subtitles
NSArray *subtitlesArray;
@@ -1223,87 +1083,47 @@
}
// to actually play the movie
-
+ [NSAnimationContext beginGrouping];
+ [[NSAnimationContext currentContext] setDuration:0.2];
+ [[fEncodingControlBox animator] setHidden: YES];
+ [[fMovieView animator] setHidden:NO];
+ [[fMoviePlaybackControlBox animator] setHidden: NO];
+ [NSAnimationContext endGrouping];
+
[self initPreviewScrubberForMovie];
[self startMovieTimer];
/* Install amovie notifications */
[aMovie setDelegate:self];
[self installMovieCallbacks];
[fMovieView play:aMovie];
-
}
}
- isEncoding = NO;
-}
-#pragma mark *** Movie Playback Scrubber and time code methods ***
-
-/* Since MacOSX Leopard QTKit has taken over some responsibility for assessing movie playback
- * information from the old QuickTime carbon api ( time code information as well as fps, etc.).
- * However, the QTKit devs at apple were not really big on documentation and further ...
- * QuickTimes ability to playback HB's largely variable framerate output makes perfectly frame
- * accurate information at best convoluted. Still, for the purpose of a custom hud based custom
- * playback scrubber slider this has so far proven to be as accurate as I have found. To say it
- * could use some better accuracy is not understating it enough probably.
- * Most of this was gleaned from this obscure Apple Mail list thread:
- * http://www.mailinglistarchive.com/[email protected]/msg05642.html
- * Now as we currently do not show a QTKit control bar with scrubber for display sizes > container
- * size, this seems to facilitate playback control from the HB custom HUD controller fairly close
- * to the built in controller bar.
- * Further work needs to be done to try to get accurate frame by frame playback display if we want it.
- * Note that the keyboard commands for frame by frame step through etc. work as always.
- */
-
-// Returns a human readable string from the currentTime of movie playback
-- (NSString*) calculatePlaybackSMTPETimecodeForDisplay
-{
- QTTime time = [aMovie currentTime];
-
- NSString *smtpeTimeCodeString;
- int days, hour, minute, second, frame;
- long long result;
-
- result = time.timeValue / time.timeScale; // second
- frame = (time.timeValue % time.timeScale) / 100;
-
- second = result % 60;
-
- result = result / 60; // minute
- minute = result % 60;
-
- result = result / 60; // hour
- hour = result % 24;
- days = result;
-
- smtpeTimeCodeString = [NSString stringWithFormat:@"Time: %02d:%02d:%02d", hour, minute, second]; // hh:mm:ss
- return smtpeTimeCodeString;
-
}
+#pragma mark *** Movie Playback Scrubber and time code methods ***
// Initialize the preview scrubber min/max to appropriate values for the current movie
-(void) initPreviewScrubberForMovie
{
if (aMovie)
{
-
QTTime duration = [aMovie duration];
- float result = duration.timeValue / duration.timeScale;
+ CGFloat result = duration.timeValue / duration.timeScale;
[fMovieScrubberSlider setMinValue:0.0];
- [fMovieScrubberSlider setMaxValue: (float)result];
- [fMovieScrubberSlider setFloatValue: 0.0];
+ [fMovieScrubberSlider setMaxValue: result];
+ [fMovieScrubberSlider setDoubleValue: 0.0];
}
}
-
-(void) adjustPreviewScrubberForCurrentMovieTime
{
if (aMovie)
{
QTTime time = [aMovie currentTime];
- float result = (float)time.timeValue / (float)time.timeScale;;
- [fMovieScrubberSlider setFloatValue:result];
+ CGFloat result = (CGFloat)time.timeValue / (CGFloat)time.timeScale;;
+ [fMovieScrubberSlider setDoubleValue:result];
}
}
@@ -1311,28 +1131,43 @@
{
if (aMovie)
{
- [fMovieView pause:aMovie]; // Pause the movie
- QTTime time = [aMovie currentTime];
- [self setTime: time.timeScale * [fMovieScrubberSlider floatValue]];
- [self calculatePlaybackSMTPETimecodeForDisplay];
+ [fMovieView pause:aMovie];
+ QTTime time = [self SliderToQTTime:[fMovieScrubberSlider doubleValue]];
+ [aMovie setCurrentTime:time];
+ [fMovieInfoField setStringValue: [self SMTPETimecode:time]];
}
}
-#pragma mark *** Movie Notifications ***
-- (void) installMovieCallbacks
+- (BOOL) isPlaying
{
+ if (aMovie != nil)
+ {
+ /* For some stupid reason there is no "isPlaying" method for a QTMovie
+ * object, given that, we detect the rate to determine whether the movie
+ * is playing or not.
+ */
+ if ([aMovie rate] != 0.0f) // we are playing
+ return YES;
+ else // we are paused or stopped
+ return NO;
+ }
+ return NO;
+}
+#pragma mark *** Movie Notifications ***
-/*Notification for any time the movie rate changes */
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(movieRateDidChange:)
- name:@"QTMovieRateDidChangeNotification"
- object:aMovie];
- /*Notification for when the movie ends */
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(movieDidEnd:)
- name:@"QTMovieDidEndNotification"
- object:aMovie];
+- (void) installMovieCallbacks
+{
+ /*Notification for any time the movie rate changes */
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(movieRateDidChange:)
+ name:@"QTMovieRateDidChangeNotification"
+ object:aMovie];
+ /*Notification for when the movie ends */
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(movieDidEnd:)
+ name:@"QTMovieDidEndNotification"
+ object:aMovie];
}
- (void)removeMovieCallbacks
@@ -1354,59 +1189,128 @@
{
if (aMovie != nil)
{
- /* For some stupid reason there is no "isPlaying" method for a QTMovie
- * object, given that, we detect the rate to determine whether the movie
- * is playing or not.
- */
- //[self adjustPreviewScrubberForCurrentMovieTime];
- if ([aMovie rate] != 0) // we are playing
- {
- [fPlayPauseButton setTitle: @"||"];
- }
- else // we are paused or stopped
- {
- [fPlayPauseButton setTitle: @">"];
- }
+ if ([self isPlaying])
+ [fPlayPauseButton setState: NSOnState];
+ else
+ [fPlayPauseButton setState: NSOffState];
}
}
+
/* This notification is not currently used. However we should keep it "just in case" as
* live preview playback is enhanced.
*/
- (void)movieDidEnd:(NSNotification *)notification
{
-
//[fHBController writeToActivityLog: "Movie DidEnd Notification Received"];
}
-
-#pragma mark *** QTTime Utilities ***
-
- // convert a time value (long) to a QTTime structure
--(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime
+/* fMovieView Keyboard controls */
+- (void)keyDown:(NSEvent *)event
{
- NSNumber *timeScaleObj;
- long timeScaleValue;
+ unichar key = [[event charactersIgnoringModifiers] characterAtIndex:0];
- timeScaleObj = [aMovie attributeForKey:QTMovieTimeScaleAttribute];
- timeScaleValue = [timeScaleObj longValue];
+ if (aMovie)
+ {
+ if (key == 32)
+ {
+ if ([self isPlaying])
+ [fMovieView pause:aMovie];
+ else
+ [fMovieView play:aMovie];
+ }
+ else if (key == 'k')
+ [fMovieView pause:aMovie];
+ else if (key == 'l')
+ {
+ float rate = [aMovie rate];
+ rate += 1.0f;
+ [fMovieView play:aMovie];
+ [aMovie setRate:rate];
+ }
+ else if (key == 'j')
+ {
+ float rate = [aMovie rate];
+ rate -= 1.0f;
+ [fMovieView play:aMovie];
+ [aMovie setRate:rate];
+ }
+ else if ([event modifierFlags] & NSAlternateKeyMask && key == NSLeftArrowFunctionKey)
+ [fMovieView gotoBeginning:self];
+ else if ([event modifierFlags] & NSAlternateKeyMask && key == NSRightArrowFunctionKey)
+ [fMovieView gotoEnd:self];
+ else if (key == NSLeftArrowFunctionKey)
+ [fMovieView stepBackward:self];
+ else if (key == NSRightArrowFunctionKey)
+ [fMovieView stepForward:self];
+ else
+ [super keyDown:event];
+ }
+ else if (!fEncodeState)
+ {
+ if (key == NSLeftArrowFunctionKey)
+ {
+ [fPictureSlider setIntegerValue:fPicture > [fPictureSlider minValue] ? fPicture - 1 : fPicture];
+ [self pictureSliderChanged:self];
+ }
+ else if (key == NSRightArrowFunctionKey)
+ {
+ [fPictureSlider setIntegerValue:fPicture < [fPictureSlider maxValue] ? fPicture + 1 : fPicture];
+ [self pictureSliderChanged:self];
+ }
+ [super keyDown:event];
+ }
- *aQTTime = QTMakeTime(timeValue, timeScaleValue);
+ [super keyDown:event];
}
- // set the movie's current time
--(void)setTime:(int)timeValue
+#pragma mark *** QTTime Utilities ***
+
+ // convert a time value (long) to a QTTime structure
+-(QTTime)SliderToQTTime:(double)value
{
- QTTime movieQTTime;
- NSValue *valueForQTTime;
-
- [self timeToQTTime:timeValue resultTime:&movieQTTime];
+ long timeScale = [[aMovie attributeForKey:QTMovieTimeScaleAttribute] longValue];
+ return QTMakeTime(value * timeScale, timeScale);
+}
- valueForQTTime = [NSValue valueWithQTTime:movieQTTime];
+/* Since MacOSX Leopard QTKit has taken over some responsibility for assessing movie playback
+ * information from the old QuickTime carbon api ( time code information as well as fps, etc.).
+ * However, the QTKit devs at apple were not really big on documentation and further ...
+ * QuickTimes ability to playback HB's largely variable framerate output makes perfectly frame
+ * accurate information at best convoluted. Still, for the purpose of a custom hud based custom
+ * playback scrubber slider this has so far proven to be as accurate as I have found. To say it
+ * could use some better accuracy is not understating it enough probably.
+ * Most of this was gleaned from this obscure Apple Mail list thread:
+ * http://www.mailinglistarchive.com/[email protected]/msg05642.html
+ * Now as we currently do not show a QTKit control bar with scrubber for display sizes > container
+ * size, this seems to facilitate playback control from the HB custom HUD controller fairly close
+ * to the built in controller bar.
+ * Further work needs to be done to try to get accurate frame by frame playback display if we want it.
+ * Note that the keyboard commands for frame by frame step through etc. work as always.
+ */
- [aMovie setAttribute:valueForQTTime forKey:QTMovieCurrentTimeAttribute];
+// Returns a human readable string from the currentTime of movie playback
+- (NSString*) SMTPETimecode:(QTTime)time
+{
+ NSString *smtpeTimeCodeString;
+ int days, hour, minute, second, frame;
+ long long result;
+
+ result = time.timeValue / time.timeScale; // second
+ frame = (time.timeValue % time.timeScale) / 100;
+
+ second = result % 60;
+
+ result = result / 60; // minute
+ minute = result % 60;
+
+ result = result / 60; // hour
+ hour = result % 24;
+ days = result;
+
+ smtpeTimeCodeString = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, minute, second]; // hh:mm:ss
+ return smtpeTimeCodeString;
}
-
@end
@implementation PreviewController (Private)
@@ -1424,56 +1328,16 @@
CGFloat minHeight = 360.0;
NSSize screenSize = [[[self window] screen] visibleFrame].size;
- NSSize sheetSize = [[self window] frame].size;
- NSSize viewAreaSize = [fPictureViewArea frame].size;
- CGFloat paddingX = 0.00;
- CGFloat paddingY = 0.00;
-
- if (fTitle->width > screenSize.width || fTitle->height > screenSize.height)
- {
- if (scaleToScreen == YES)
- {
- paddingX = screenSize.width - imageSize.width;
- paddingY = screenSize.height - imageSize.height;
- }
-
- else
- {
- paddingX = sheetSize.width - viewAreaSize.width;
- paddingY = sheetSize.height - viewAreaSize.height;
- }
+ CGFloat maxWidth = screenSize.width;
+ CGFloat maxHeight = screenSize.height;
- }
-
- CGFloat maxWidth;
- CGFloat maxHeight;
- maxWidth = screenSize.width - paddingX;
- maxHeight = screenSize.height - paddingY;
-
NSSize resultSize = imageSize;
CGFloat resultPar = resultSize.width / resultSize.height;
//note, a mbp 15" at 1440 x 900 is a 1.6 ar
CGFloat screenAspect = screenSize.width / screenSize.height;
- // Note, a standard dvd will use 720 x 480 which is a 1.5
- CGFloat viewAreaAspect = viewAreaSize.width / viewAreaSize.height;
-
- if (scaleToScreen == YES)
- {
-
- if (screenAspect < viewAreaAspect)
- {
- resultSize.width = screenSize.width;
- resultSize.height = (screenSize.width / viewAreaAspect);
- }
- else
- {
- resultSize.height = screenSize.height;
- resultSize.width = resultSize.height * viewAreaAspect;
- }
-
- }
- else if ( resultSize.width > maxWidth || resultSize.height > maxHeight )
+
+ if ( resultSize.width > maxWidth || resultSize.height > maxHeight )
{
// Source is larger than screen in one or more dimensions
if ( resultPar > screenAspect )
@@ -1492,56 +1356,51 @@
// If necessary, grow to minimum dimensions to ensure controls overlay is not obstructed
if ( resultSize.width < minWidth )
- {
resultSize.width = minWidth;
- }
if ( resultSize.height < minHeight )
- {
resultSize.height = minHeight;
- }
-
- return resultSize;
-
+ return resultSize;
}
//
-// -[PictureController(Private) resizePanelForViewSize:animate:]
+// -[PictureController(Private) resizeWindowForViewSize:]
//
// Resizes the entire window to accomodate a view of a particular size.
//
-- (void)resizeSheetForViewSize: (NSSize)viewSize
+- (void)resizeWindowForViewSize: (NSSize)viewSize
{
// Figure out the deltas for the new frame area
- NSSize currentSize = [fPictureViewArea frame].size;
+ NSSize currentSize = [[[self window] contentView] frame].size;
CGFloat deltaX = viewSize.width - currentSize.width;
CGFloat deltaY = viewSize.height - currentSize.height;
// Now resize the whole panel by those same deltas, but don't exceed the min
NSRect frame = [[self window] frame];
NSSize maxSize = [[[self window] screen] visibleFrame].size;
- /* if we are not Scale To Screen, put an 85% of visible screen on the window */
+ /* if we are not Scale To Screen, put an 10% of visible screen on the window */
if (scaleToScreen == NO )
{
- maxSize.width = maxSize.width * 0.85;
- maxSize.height = maxSize.height * 0.85;
+ maxSize.width = maxSize.width * 0.90;
+ maxSize.height = maxSize.height * 0.90;
}
/* Set our min size to the storage size */
NSSize minSize;
- minSize.width = fTitle->width;
- minSize.height = fTitle->height;
+ minSize.width = fTitle->width / backingScaleFactor;
+ minSize.height = fTitle->height / backingScaleFactor;
frame.size.width += deltaX;
frame.size.height += deltaY;
if( frame.size.width < minSize.width )
{
frame.size.width = minSize.width;
+ deltaX = frame.size.width - currentSize.width;
}
-
if( frame.size.height < minSize.height )
{
frame.size.height = minSize.height;
+ deltaY = frame.size.height - currentSize.height;
}
/* compare frame to max size of screen */
@@ -1555,103 +1414,41 @@
frame.size.height = maxSize.height;
}
-
-
-
-
// But now the sheet is off-center, so also shift the origin to center it and
// keep the top aligned.
if( frame.size.width != [[self window] frame].size.width )
frame.origin.x -= (deltaX / 2.0);
-
- /* Since upon launch we can open up the preview window if it was open
- * the last time we quit (and at the size it was) we want to make
- * sure that upon resize we do not have the window off the screen
- * So check the origin against the screen origin and adjust if
- * necessary.
- */
- NSSize screenSize = [[[self window] screen] visibleFrame].size;
- NSPoint screenOrigin = [[[self window] screen] frame].origin;
- if (screenSize.height < frame.size.height)
- {
- frame.size.height = screenSize.height;
- }
- if (screenSize.width < frame.size.width)
- {
- frame.size.width = screenSize.width;
- }
-
-
- /* our origin is off the screen to the left*/
- if (frame.origin.x < screenOrigin.x)
- {
- /* so shift our origin to the right */
- frame.origin.x = screenOrigin.x;
- }
- else if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width))
- {
- /* the right side of the preview is off the screen, so shift to the left */
- frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width;
- }
-
- [[self window] setFrame:frame display:YES animate:YES];
-
-
-}
-
-//
-// -[PictureController(Private) setViewSize:]
-//
-// Changes the view's size and centers it vertically inside of its area.
-// Assumes resizeSheetForViewSize: has already been called.
-//
-- (void)setViewSize: (NSSize)viewSize
-{
-
- /* special case for scaleToScreen */
- NSSize areaSize = [fPictureViewArea frame].size;
- CGFloat viewSizeAspect = viewSize.width / viewSize.height;
-
- if (viewSize.width > areaSize.width || viewSize.height > areaSize.height)
+ /* Since upon launch we can open up the preview window if it was open
+ * the last time we quit (and at the size it was) we want to make
+ * sure that upon resize we do not have the window off the screen
+ * So check the origin against the screen origin and adjust if
+ * necessary.
+ */
+ NSSize screenSize = [[[self window] screen] visibleFrame].size;
+ NSPoint screenOrigin = [[[self window] screen] frame].origin;
+ if (screenSize.height < frame.size.height)
{
-
- if (viewSizeAspect > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height
- {
- viewSize.width = areaSize.width;
- viewSize.height = viewSize.width / viewSizeAspect;
- }
- else
- {
- viewSize.height = areaSize.height;
- viewSize.width = viewSize.height * viewSizeAspect;
- }
-
+ frame.size.height = screenSize.height;
+ }
+ if (screenSize.width < frame.size.width)
+ {
+ frame.size.width = screenSize.width;
}
- [fPictureView setFrameSize:viewSize];
-
-
- // center it vertically and horizontally
- NSPoint origin = [fPictureViewArea frame].origin;
- origin.y += ([fPictureViewArea frame].size.height -
- [fPictureView frame].size.height) / 2.0;
-
- origin.x += ([fPictureViewArea frame].size.width -
- [fPictureView frame].size.width) / 2.0;
-
- origin.x = floor( origin.x );
- origin.y = floor( origin.y );
-
- [fPictureView setFrameOrigin:origin];
+ /* our origin is off the screen to the left*/
+ if (frame.origin.x < screenOrigin.x)
+ {
+ /* so shift our origin to the right */
+ frame.origin.x = screenOrigin.x;
+ }
+ else if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width))
+ {
+ /* the right side of the preview is off the screen, so shift to the left */
+ frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width;
+ }
-}
-
-
-- (BOOL)viewNeedsToResizeToSize: (NSSize)newSize
-{
- NSSize viewSize = [fPictureViewArea frame].size;
- return (newSize.width != viewSize.width || newSize.height != viewSize.height);
+ [[self window] setFrame:frame display:YES animate:YES];
}
@end
diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj
index aaa49109f..bb73b72cf 100644
--- a/macosx/HandBrake.xcodeproj/project.pbxproj
+++ b/macosx/HandBrake.xcodeproj/project.pbxproj
@@ -138,6 +138,11 @@
27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C74014B102DA00B785E4 /* libxml2.a */; };
3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */; };
46AB433515F98A2B009C0961 /* DockTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 46AB433415F98A2B009C0961 /* DockTextField.m */; };
+ A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */; };
+ A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467C16BC2AD800C307BC /* next-p.pdf */; };
+ A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467D16BC2AD800C307BC /* pause-p.pdf */; };
+ A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467E16BC2AD800C307BC /* play-p.pdf */; };
+ A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467F16BC2AD800C307BC /* prev-p.pdf */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -307,10 +312,15 @@
27D6C73E14B102DA00B785E4 /* libvorbisenc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbisenc.a; path = external/contrib/lib/libvorbisenc.a; sourceTree = BUILT_PRODUCTS_DIR; };
27D6C73F14B102DA00B785E4 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = external/contrib/lib/libx264.a; sourceTree = BUILT_PRODUCTS_DIR; };
27D6C74014B102DA00B785E4 /* libxml2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxml2.a; path = external/contrib/lib/libxml2.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = HandBrake.icns; path = HandBrake.icns; sourceTree = "<group>"; };
+ 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = HandBrake.icns; sourceTree = "<group>"; };
34FF2FC014EEC363004C2400 /* HBAdvancedController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAdvancedController.h; sourceTree = "<group>"; };
46AB433315F98A2B009C0961 /* DockTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DockTextField.h; sourceTree = "<group>"; };
46AB433415F98A2B009C0961 /* DockTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DockTextField.m; sourceTree = "<group>"; };
+ A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
+ A9E1467C16BC2AD800C307BC /* next-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "next-p.pdf"; sourceTree = "<group>"; };
+ A9E1467D16BC2AD800C307BC /* pause-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "pause-p.pdf"; sourceTree = "<group>"; };
+ A9E1467E16BC2AD800C307BC /* play-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "play-p.pdf"; sourceTree = "<group>"; };
+ A9E1467F16BC2AD800C307BC /* prev-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "prev-p.pdf"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -357,6 +367,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */,
273F21C114ADE7A20021BE6D /* Growl.framework in Frameworks */,
273F21C214ADE7BC0021BE6D /* Sparkle.framework in Frameworks */,
273F20C914ADC5150021BE6D /* AudioToolbox.framework in Frameworks */,
@@ -478,6 +489,7 @@
273F203414ADBAC30021BE6D /* Frameworks */ = {
isa = PBXGroup;
children = (
+ A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */,
273F20C714ADC4FF0021BE6D /* QTKit.framework */,
273F202F14ADB9790021BE6D /* AudioToolbox.framework */,
273F203B14ADBC210021BE6D /* Cocoa.framework */,
@@ -563,6 +575,10 @@
273F212014ADCBF70021BE6D /* icons */ = {
isa = PBXGroup;
children = (
+ A9E1467C16BC2AD800C307BC /* next-p.pdf */,
+ A9E1467D16BC2AD800C307BC /* pause-p.pdf */,
+ A9E1467E16BC2AD800C307BC /* play-p.pdf */,
+ A9E1467F16BC2AD800C307BC /* prev-p.pdf */,
273F212114ADCBF70021BE6D /* ActivityWindow.tiff */,
273F212214ADCBF70021BE6D /* AddToQueue.tiff */,
273F212414ADCBF70021BE6D /* Brushed_Window.png */,
@@ -787,6 +803,10 @@
273F219014ADDDA10021BE6D /* Preferences.xib in Resources */,
273F219114ADDDA10021BE6D /* Queue.xib in Resources */,
3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */,
+ A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */,
+ A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */,
+ A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */,
+ A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/macosx/icons/next-p.pdf b/macosx/icons/next-p.pdf
new file mode 100644
index 000000000..bb11381cd
--- /dev/null
+++ b/macosx/icons/next-p.pdf
Binary files differ
diff --git a/macosx/icons/pause-p.pdf b/macosx/icons/pause-p.pdf
new file mode 100644
index 000000000..6a6224a75
--- /dev/null
+++ b/macosx/icons/pause-p.pdf
Binary files differ
diff --git a/macosx/icons/play-p.pdf b/macosx/icons/play-p.pdf
new file mode 100644
index 000000000..028feb270
--- /dev/null
+++ b/macosx/icons/play-p.pdf
Binary files differ
diff --git a/macosx/icons/prev-p.pdf b/macosx/icons/prev-p.pdf
new file mode 100644
index 000000000..7f37c9af7
--- /dev/null
+++ b/macosx/icons/prev-p.pdf
Binary files differ
diff --git a/macosx/main.mm b/macosx/main.mm
index 260a8ad92..24cd7547f 100644
--- a/macosx/main.mm
+++ b/macosx/main.mm
@@ -23,10 +23,10 @@ void SigHandler( int signal )
* this is the only place I could find that looked like C :)
****************************************************************************/
extern "C" {
-void hb_error_handler( const char *errmsg )
-{
- fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg );
-}
+ void hb_error_handler( const char *errmsg )
+ {
+ fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg );
+ }
}
char * str_printf(const char *fmt, ...)
@@ -64,80 +64,8 @@ char * str_printf(const char *fmt, ...)
}
}
-#define EXTRA_VLC_DYLD_PATH "/Applications/VLC.app/Contents/MacOS/lib"
-#define DEFAULT_DYLD_PATH "/usr/local/lib:/usr/lib"
-
int main( int argc, const char ** argv )
{
- char *dylib_path;
- int no_exec = 0;
-
- // Check for flag that prevents exec bomb. It
- // incidentally can be used to prevent adding
- // our modifications to the dyld env vars.
- if ( argc > 1 && strncmp(argv[1], "-n", 2) == 0 )
- no_exec = 1;
-
- if ( !no_exec )
- {
- dylib_path = getenv("DYLD_FALLBACK_LIBRARY_PATH");
- if ( dylib_path == NULL ||
- strstr( dylib_path, "/Applications/VLC.app/Contents/MacOS/lib" ) == NULL )
- {
- char *path = NULL;
- char *home;
- int result = -1;
-
- home = getenv("HOME");
-
- if ( dylib_path == NULL )
- {
- // Set the system default of $HOME/lib:/usr/local/lib:/usr/lib
- // And add our extra path
- if ( home != NULL )
- {
- path = str_printf("%s/lib:%s:%s:%s%s", home,
- DEFAULT_DYLD_PATH,
- EXTRA_VLC_DYLD_PATH,
- home, EXTRA_VLC_DYLD_PATH);
- }
- else
- {
- path = str_printf("%s:%s", DEFAULT_DYLD_PATH, EXTRA_VLC_DYLD_PATH);
- }
- if ( path != NULL )
- result = setenv("DYLD_FALLBACK_LIBRARY_PATH", path, 1);
- }
- else
- {
- // add our extra path
- if ( home != NULL )
- {
- path = str_printf("%s:%s:%s%s", dylib_path, EXTRA_VLC_DYLD_PATH,
- home, EXTRA_VLC_DYLD_PATH);
- }
- else
- {
- path = str_printf("%s:%s", dylib_path, EXTRA_VLC_DYLD_PATH);
- }
- if ( path != NULL )
- result = setenv("DYLD_FALLBACK_LIBRARY_PATH", path, 1);
- }
- if ( result == 0 )
- {
- const char ** new_argv;
- int i;
-
- new_argv = (const char**)malloc( (argc + 2) * sizeof(char*) );
- new_argv[0] = argv[0];
- new_argv[1] = "-n";
- for (i = 1; i < argc; i++)
- new_argv[i+1] = argv[i];
- new_argv[i+1] = NULL;
- execv(new_argv[0], (char* const*)new_argv);
- }
- }
- }
signal( SIGINT, SigHandler );
hb_register_error_handler(&hb_error_handler);
return NSApplicationMain( argc, argv );
diff --git a/make/configure.py b/make/configure.py
index 0fc32de0f..9c2a7981a 100644
--- a/make/configure.py
+++ b/make/configure.py
@@ -818,6 +818,7 @@ class ToolProbe( Action ):
self.name = self.names[0]
self.pretext = self.name
self.pathname = self.names[0]
+ self.minversion = kwargs.get('minversion', None)
def _action( self ):
self.session = []
@@ -832,6 +833,8 @@ class ToolProbe( Action ):
break
if self.fail:
self.msg_end = 'not found'
+ elif self.minversion:
+ self.version = VersionProbe( [self.pathname, '--version'], minversion=self.minversion )
def cli_add_option( self, parser ):
parser.add_option( '--'+self.name, metavar='PROG',
@@ -847,6 +850,93 @@ class ToolProbe( Action ):
###############################################################################
+###############################################################################
+##
+## version probe: passes --version to command and only cares about first line
+## of output. If probe fails, a default version of '0.0.0' results.
+## The default rexpr is useful for some very simple version strings. A Custom
+## expression would be required for more complex version strings.
+##
+## command = full command and arguments to pipe
+## rexpr = a regular expression which must return named subgroups:
+## name: mandatory. The tool name.
+## svers: mandatory. The whole version tuple to be represented as string.
+## i0: mandatory. First element of version tuple to be parsed as int.
+## i1: optional. Second element of version tuple to be parsed as int.
+## i2: optional. Third element of version tuple to be parsed as int.
+## All matching is case-insensitive.
+## abort = if true configure will exit on probe fail
+## session = result. array of lines (stdout/stderr) from command
+## fail = result. true if probe failed
+## svers = result. string of version tuple
+## ivers = result. int[3] of version tuple
+##
+class VersionProbe( Action ):
+ def __init__( self, command, minversion=None, rexpr=None, abort=False ):
+ super( VersionProbe, self ).__init__( 'version probe', os.path.basename(command[0]), abort )
+ self.command = command
+ self.minversion = minversion
+ if not rexpr:
+ rexpr = '(?P<name>[^.]+)\s+(?P<svers>(?P<i0>\d+)(\.(?P<i1>\d+))?(\.(?P<i2>\d+))?)'
+ self.rexpr = rexpr
+
+ def _action( self ):
+ ## pipe and redirect stderr to stdout; effects communicate result
+ pipe = subprocess.Popen( self.command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT )
+
+ ## read data into memory buffers
+ data = pipe.communicate()
+ self.fail = pipe.returncode != 0
+
+ if data[0]:
+ self.session = data[0].splitlines()
+ else:
+ self.session = []
+
+ self.svers = '0.0.0'
+ self.ivers = [0,0,0]
+
+ try:
+ if not self.fail and self.session and len(self.session):
+ self.fail = True
+ self._parse()
+ self.fail = False
+ self.msg_end = self.svers
+ except Exception, x:
+ self.svers = '0.0.0'
+ self.ivers = [0,0,0]
+ self.msg_end = str(x)
+
+ def _dumpSession( self, printf ):
+ printf( ' + %s\n', ' '.join(self.command) )
+ super( VersionProbe, self )._dumpSession( printf )
+
+ def _parse( self ):
+ mo = re.match( self.rexpr, self.session[0], re.IGNORECASE )
+ md = mo.groupdict()
+ self.svers = md['svers']
+ if 'i0' in md and md['i0']:
+ self.ivers[0] = int(md['i0'])
+ if 'i1' in md and md['i1']:
+ self.ivers[1] = int(md['i1'])
+ if 'i2' in md and md['i2']:
+ self.ivers[2] = int(md['i2'])
+
+ def inadequate( self ):
+ if not self.minversion:
+ return False
+ return self.lesser( self.minversion )
+
+ def lesser( self, ivers ):
+ for i in range(0,3):
+ if self.ivers[i] < ivers[i]:
+ return True
+ elif self.ivers[i] > ivers[i]:
+ return False
+ return False
+
+###############################################################################
+
class SelectTool( Action ):
selects = []
@@ -1285,7 +1375,7 @@ try:
strip = ToolProbe( 'STRIP.exe', 'strip' )
tar = ToolProbe( 'TAR.exe', 'gtar', 'tar' )
wget = ToolProbe( 'WGET.exe', 'wget', abort=False )
- yasm = ToolProbe( 'YASM.exe', 'yasm', abort=False )
+ yasm = ToolProbe( 'YASM.exe', 'yasm', abort=False, minversion=[1,2,0] )
autoconf = ToolProbe( 'AUTOCONF.exe', 'autoconf', abort=False )
automake = ToolProbe( 'AUTOMAKE.exe', 'automake', abort=False )
libtool = ToolProbe( 'LIBTOOL.exe', 'libtool', abort=False )
@@ -1345,12 +1435,19 @@ try:
for action in Action.actions:
action.run()
- ## enable local yasm when yasm probe fails
- if not options.enable_local_yasm and Tools.yasm.fail:
- options.enable_local_yasm = True
+ ## enable local yasm when yasm probe fails or version is too old
+ ## x264 requires 1.2.0+
+ if not options.enable_local_yasm:
+ if Tools.yasm.fail:
+ stdout.write( 'note: enabling local yasm: missing system yasm\n' )
+ options.enable_local_yasm = True
+ elif Tools.yasm.version.inadequate():
+ stdout.write( 'note: enabling local yasm: minimum required version is %s and %s is %s\n' % ('.'.join([str(i) for i in Tools.yasm.version.minversion]),Tools.yasm.pathname,Tools.yasm.version.svers) )
+ options.enable_local_yasm = True
## enable local autotools when any of { autoconf, automake, libtool } probe fails
if not options.enable_local_autotools and (Tools.autoconf.fail or Tools.automake.fail or Tools.libtool.fail):
+ stdout.write( 'note: enabling local autotools\n' )
options.enable_local_autotools = True
if build.system == 'mingw':
diff --git a/make/xcodemake b/make/xcodemake
index 0eaab1fec..a5950811b 100755
--- a/make/xcodemake
+++ b/make/xcodemake
@@ -126,7 +126,7 @@ if [ -n "$reconfigure" ]; then
case "$CONFIGURATION" in
debug*)
- debug="--debug=max --optimize=none"
+ debug="--debug=std --optimize=none"
;;
release*|*)
debug=
diff --git a/pkg/linux/debian/control.quantal b/pkg/linux/debian/control.quantal
index 20894fd04..4fff9a296 100644
--- a/pkg/linux/debian/control.quantal
+++ b/pkg/linux/debian/control.quantal
@@ -2,7 +2,7 @@ Source: handbrake
Section: graphics
Priority: optional
Maintainer: John Stebbins <[email protected]>
-Build-Depends: debhelper (>= 6), autotools-dev, libtool, libgudev-1.0-dev, intltool, autoconf, yasm (>= 1.1.0), libbz2-dev, zlib1g-dev, libwebkitgtk-dev, libnotify-dev, libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev, wget, subversion, python (>= 2.6), libappindicator-dev, libfribidi-dev (>= 0.19.0), libxml2-dev, libogg-dev, libtheora-dev, libvorbis-dev, libsamplerate0-dev, libfreetype6-dev, libfontconfig1-dev, libass-dev
+Build-Depends: debhelper (>= 6), autotools-dev, libtool, libgudev-1.0-dev, intltool, autoconf, yasm (>= 1.1.0), libbz2-dev, zlib1g-dev, libgtk-3-dev, libwebkitgtk-3.0-dev, libnotify-dev, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev, wget, subversion, python (>= 2.6), libappindicator3-dev, libfribidi-dev (>= 0.19.0), libxml2-dev, libogg-dev, libtheora-dev, libvorbis-dev, libsamplerate0-dev, libfreetype6-dev, libfontconfig1-dev, libass-dev
Standards-Version: 3.8.4
Homepage: http://www.handbrake.fr/
@@ -19,7 +19,7 @@ Description: versatile DVD ripper and video transcoder - command line
Package: handbrake-gtk
Architecture: i386 amd64
-Depends: ${shlibs:Depends}, ${misc:Depends}, libwebkitgtk-1.0-0, libnotify4
+Depends: ${shlibs:Depends}, ${misc:Depends}, gstreamer1.0-libav, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gstreamer1.0-pulseaudio
Conflicts: handbrake
Description: versatile DVD ripper and video transcoder - GTK GUI
HandBrake is a versatile, easy-to-use tool for converting DVDs and other videos
diff --git a/pkg/linux/debian/rules.natty b/pkg/linux/debian/rules.natty
new file mode 100755
index 000000000..2545b4de6
--- /dev/null
+++ b/pkg/linux/debian/rules.natty
@@ -0,0 +1,85 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+PKGDESTDIR = ../
+CONFIGURE = ./configure
+BUILDDIR = build
+FORCEVERSION =
+
+$(BUILDDIR)/GNUmakefile: $(CONFIGURE)
+ dh_testdir
+ unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr
+
+build: $(BUILDDIR)/GNUmakefile
+ dh_testdir
+ #We must build both the main project and the GTK project
+ unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR)
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_install --sourcedir=debian/tmp -i
+ dh_icons -i
+ dh_link -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i $(FORCEVERSION)
+ dh_md5sums -i
+ dh_builddeb --destdir=$(PKGDESTDIR) -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_install --sourcedir=debian/tmp -a
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installexamples -a
+ dh_installman -a
+ dh_link -a
+ dh_icons -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a $(FORCEVERSION)
+ dh_md5sums -a
+ dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/pkg/linux/debian/rules.oneiric b/pkg/linux/debian/rules.oneiric
new file mode 100755
index 000000000..2545b4de6
--- /dev/null
+++ b/pkg/linux/debian/rules.oneiric
@@ -0,0 +1,85 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+PKGDESTDIR = ../
+CONFIGURE = ./configure
+BUILDDIR = build
+FORCEVERSION =
+
+$(BUILDDIR)/GNUmakefile: $(CONFIGURE)
+ dh_testdir
+ unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr
+
+build: $(BUILDDIR)/GNUmakefile
+ dh_testdir
+ #We must build both the main project and the GTK project
+ unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR)
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_install --sourcedir=debian/tmp -i
+ dh_icons -i
+ dh_link -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i $(FORCEVERSION)
+ dh_md5sums -i
+ dh_builddeb --destdir=$(PKGDESTDIR) -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_install --sourcedir=debian/tmp -a
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installexamples -a
+ dh_installman -a
+ dh_link -a
+ dh_icons -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a $(FORCEVERSION)
+ dh_md5sums -a
+ dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/pkg/linux/debian/rules.precise b/pkg/linux/debian/rules.precise
new file mode 100755
index 000000000..2545b4de6
--- /dev/null
+++ b/pkg/linux/debian/rules.precise
@@ -0,0 +1,85 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+PKGDESTDIR = ../
+CONFIGURE = ./configure
+BUILDDIR = build
+FORCEVERSION =
+
+$(BUILDDIR)/GNUmakefile: $(CONFIGURE)
+ dh_testdir
+ unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr
+
+build: $(BUILDDIR)/GNUmakefile
+ dh_testdir
+ #We must build both the main project and the GTK project
+ unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR)
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_install --sourcedir=debian/tmp -i
+ dh_icons -i
+ dh_link -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i $(FORCEVERSION)
+ dh_md5sums -i
+ dh_builddeb --destdir=$(PKGDESTDIR) -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_install --sourcedir=debian/tmp -a
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installexamples -a
+ dh_installman -a
+ dh_link -a
+ dh_icons -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a $(FORCEVERSION)
+ dh_md5sums -a
+ dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/pkg/linux/debian/rules.quantal b/pkg/linux/debian/rules.quantal
new file mode 100755
index 000000000..2545b4de6
--- /dev/null
+++ b/pkg/linux/debian/rules.quantal
@@ -0,0 +1,85 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
+
+PKGDESTDIR = ../
+CONFIGURE = ./configure
+BUILDDIR = build
+FORCEVERSION =
+
+$(BUILDDIR)/GNUmakefile: $(CONFIGURE)
+ dh_testdir
+ unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr
+
+build: $(BUILDDIR)/GNUmakefile
+ dh_testdir
+ #We must build both the main project and the GTK project
+ unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR)
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_installdirs
+ $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_install --sourcedir=debian/tmp -i
+ dh_icons -i
+ dh_link -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i $(FORCEVERSION)
+ dh_md5sums -i
+ dh_builddeb --destdir=$(PKGDESTDIR) -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_install --sourcedir=debian/tmp -a
+ dh_installchangelogs -a
+ dh_installdocs -a
+ dh_installexamples -a
+ dh_installman -a
+ dh_link -a
+ dh_icons -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a $(FORCEVERSION)
+ dh_md5sums -a
+ dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/pkg/linux/module.rules b/pkg/linux/module.rules
index 950aeca7e..af38b061a 100644
--- a/pkg/linux/module.rules
+++ b/pkg/linux/module.rules
@@ -73,6 +73,7 @@ $(PKG.src.deb.stamp): GNUmakefile
$(CP.exe) -a $(SRC/)download $(STAGE.out.src/)quantal/$(PKG.deb.basename)
cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)quantal/$(PKG.deb.basename)
$(CP.exe) $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/control.quantal $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/control
+ $(CP.exe) $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/rules.quantal $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/rules
echo "handbrake ($(HB.version)ppa1~quantal1) quantal; urgency=low" > $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog
echo " * Snapshot" >> $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog
echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog
@@ -84,6 +85,7 @@ $(PKG.src.deb.stamp): GNUmakefile
$(CP.exe) -a $(SRC/)download $(STAGE.out.src/)precise/$(PKG.deb.basename)
cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)precise/$(PKG.deb.basename)
$(CP.exe) $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/control.precise $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/control
+ $(CP.exe) $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/rules.precise $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/rules
echo "handbrake ($(HB.version)ppa1~precise1) precise; urgency=low" > $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog
echo " * Snapshot" >> $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog
echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog
@@ -95,6 +97,7 @@ $(PKG.src.deb.stamp): GNUmakefile
$(CP.exe) -a $(SRC/)download $(STAGE.out.src/)oneiric/$(PKG.deb.basename)
cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)oneiric/$(PKG.deb.basename)
$(CP.exe) $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/control.oneiric $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/control
+ $(CP.exe) $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/rules.oneiric $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/rules
echo "handbrake ($(HB.version)ppa1~oneiric1) oneiric; urgency=low" > $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog
echo " * Snapshot" >> $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog
echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog
@@ -106,6 +109,7 @@ $(PKG.src.deb.stamp): GNUmakefile
$(CP.exe) -a $(SRC/)download $(STAGE.out.src/)natty/$(PKG.deb.basename)
cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)natty/$(PKG.deb.basename)
$(CP.exe) $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/control.natty $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/control
+ $(CP.exe) $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/rules.natty $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/rules
echo "handbrake ($(HB.version)ppa1~natty1) natty; urgency=low" > $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog
echo " * Snapshot" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog
echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog
diff --git a/scripts/manicure.rb b/scripts/manicure.rb
index ae6346622..1b331272c 100755
--- a/scripts/manicure.rb
+++ b/scripts/manicure.rb
@@ -592,26 +592,27 @@ class Display
if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end
#Advanced Options
- if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom"
+ if hash["x264UseAdvancedOptions"] != 1
+ if hash["x264Preset"] != ""
commandString << " --x264-preset "
commandString << hash["x264Preset"]
-
- if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
- commandString << " --x264-tune "
- commandString << hash["x264Tune"]
- end
- if hash["x264Profile"] != "" && hash["x264Profile"] != "auto"
- commandString << " --x264-profile "
- commandString << hash["x264Profile"]
- end
- if hash["x264Level"] != "" && hash["x264Level"] != "auto"
- commandString << " --h264-level "
- commandString << hash["x264Level"]
- end
- if hash["x264OptionExtra"] != ""
- commandString << " -x "
- commandString << hash["x264OptionExtra"]
- end
+ end
+ if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
+ commandString << " --x264-tune "
+ commandString << hash["x264Tune"]
+ end
+ if hash["h264Profile"] != "" && hash["h264Profile"] != "auto"
+ commandString << " --h264-profile "
+ commandString << hash["h264Profile"]
+ end
+ if hash["h264Level"] != "" && hash["h264Level"] != "auto"
+ commandString << " --h264-level "
+ commandString << hash["h264Level"]
+ end
+ if hash["x264OptionExtra"] != ""
+ commandString << " -x "
+ commandString << hash["x264OptionExtra"]
+ end
elsif hash["x264Option"] != ""
commandString << " -x "
commandString << hash["x264Option"]
@@ -965,26 +966,27 @@ class Display
if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end
#Advanced Options
- if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom"
+ if hash["x264UseAdvancedOptions"] != 1
+ if hash["x264Preset"] != ""
commandString << " --x264-preset "
commandString << hash["x264Preset"]
-
- if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
- commandString << " --x264-tune "
- commandString << hash["x264Tune"]
- end
- if hash["x264Profile"] != "" && hash["x264Profile"] != "auto"
- commandString << " --x264-profile "
- commandString << hash["x264Profile"]
- end
- if hash["x264Level"] != "" && hash["x264Level"] != "auto"
- commandString << " --h264-level "
- commandString << hash["x264Level"]
- end
- if hash["x264OptionExtra"] != ""
- commandString << " -x "
- commandString << hash["x264OptionExtra"]
- end
+ end
+ if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
+ commandString << " --x264-tune "
+ commandString << hash["x264Tune"]
+ end
+ if hash["h264Profile"] != "" && hash["h264Profile"] != "auto"
+ commandString << " --h264-profile "
+ commandString << hash["h264Profile"]
+ end
+ if hash["h264Level"] != "" && hash["h264Level"] != "auto"
+ commandString << " --h264-level "
+ commandString << hash["h264Level"]
+ end
+ if hash["x264OptionExtra"] != ""
+ commandString << " -x "
+ commandString << hash["x264OptionExtra"]
+ end
elsif hash["x264Option"] != ""
commandString << " -x "
commandString << hash["x264Option"]
@@ -1263,42 +1265,43 @@ class Display
end
#Advanced Options
- if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom"
+ if hash["x264UseAdvancedOptions"] != 1
+ if hash["x264Preset"] != ""
commandString << "if (x264_preset == NULL)\n "
commandString << "{\n "
commandString << " x264_preset = strdup(\""
commandString << hash["x264Preset"] << "\");\n "
commandString << "}\n "
-
- if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
- commandString << "if (x264_tune == NULL)\n "
- commandString << "{\n "
- commandString << " x264_tune = strdup(\""
- commandString << hash["x264Tune"]
- commandString << "\");\n "
- commandString << "}\n "
- end
- if hash["x264Profile"] != "" && hash["x264Profile"] != "auto"
- commandString << "if (x264_profile == NULL)\n "
- commandString << "{\n "
- commandString << " x264_profile = strdup(\""
- commandString << hash["x264Profile"] << "\");\n "
- commandString << "}\n "
- end
- if hash["x264Level"] != "" && hash["x264Level"] != "auto"
- commandString << "if (h264_level == NULL)\n "
- commandString << "{\n "
- commandString << " h264_level = strdup(\""
- commandString << hash["x264Level"] << "\");\n "
- commandString << "}\n "
- end
- if hash["x264OptionExtra"] != ""
- commandString << "if (advanced_opts == NULL)\n "
- commandString << "{\n "
- commandString << " advanced_opts = strdup(\""
- commandString << hash["x264OptionExtra"] << "\");\n "
- commandString << "}\n "
- end
+ end
+ if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
+ commandString << "if (x264_tune == NULL)\n "
+ commandString << "{\n "
+ commandString << " x264_tune = strdup(\""
+ commandString << hash["x264Tune"]
+ commandString << "\");\n "
+ commandString << "}\n "
+ end
+ if hash["h264Profile"] != "" && hash["h264Profile"] != "auto"
+ commandString << "if (h264_profile == NULL)\n "
+ commandString << "{\n "
+ commandString << " h264_profile = strdup(\""
+ commandString << hash["h264Profile"] << "\");\n "
+ commandString << "}\n "
+ end
+ if hash["h264Level"] != "" && hash["h264Level"] != "auto"
+ commandString << "if (h264_level == NULL)\n "
+ commandString << "{\n "
+ commandString << " h264_level = strdup(\""
+ commandString << hash["h264Level"] << "\");\n "
+ commandString << "}\n "
+ end
+ if hash["x264OptionExtra"] != ""
+ commandString << "if (advanced_opts == NULL)\n "
+ commandString << "{\n "
+ commandString << " advanced_opts = strdup(\""
+ commandString << hash["x264OptionExtra"] << "\");\n "
+ commandString << "}\n "
+ end
elsif hash["x264Option"] != ""
commandString << "if (advanced_opts == NULL)\n "
commandString << "{\n "
@@ -1765,30 +1768,31 @@ class Display
if hash["VideoTwoPass"] == 1 then commandString << " -2" end
if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end
- #Advanced Options
- if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom"
+ #Advanced Options
+ if hash["x264UseAdvancedOptions"] != 1
+ if hash["x264Preset"] != ""
commandString << " --x264-preset "
commandString << hash["x264Preset"]
-
- if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
- commandString << " --x264-tune "
- commandString << hash["x264Tune"]
- end
- if hash["x264Profile"] != "" && hash["x264Profile"] != "auto"
- commandString << " --x264-profile "
- commandString << hash["x264Profile"]
- end
- if hash["x264Level"] != "" && hash["x264Level"] != "auto"
- commandString << " --h264-level "
- commandString << hash["x264Level"]
- end
- if hash["x264OptionExtra"] != ""
- commandString << " -x "
- commandString << hash["x264OptionExtra"]
- end
- elsif hash["x264Option"] != ""
+ end
+ if hash["x264Tune"] != "" && hash["x264Tune"] != "none"
+ commandString << " --x264-tune "
+ commandString << hash["x264Tune"]
+ end
+ if hash["h264Profile"] != "" && hash["h264Profile"] != "auto"
+ commandString << " --h264-profile "
+ commandString << hash["h264Profile"]
+ end
+ if hash["h264Level"] != "" && hash["h264Level"] != "auto"
+ commandString << " --h264-level "
+ commandString << hash["h264Level"]
+ end
+ if hash["x264OptionExtra"] != ""
commandString << " -x "
- commandString << hash["x264Option"]
+ commandString << hash["x264OptionExtra"]
+ end
+ elsif hash["x264Option"] != ""
+ commandString << " -x "
+ commandString << hash["x264Option"]
end
commandString << "\\n\");"
diff --git a/test/test.c b/test/test.c
index 42c53ab8d..15d3447d7 100644
--- a/test/test.c
+++ b/test/test.c
@@ -113,10 +113,10 @@ static int chapter_start = 0;
static int chapter_end = 0;
static int chapter_markers = 0;
static char * marker_file = NULL;
-static char * advanced_opts = NULL;
-static char * x264_profile = NULL;
static char * x264_preset = NULL;
static char * x264_tune = NULL;
+static char * advanced_opts = NULL;
+static char * h264_profile = NULL;
static char * h264_level = NULL;
static int maxHeight = 0;
static int maxWidth = 0;
@@ -378,7 +378,7 @@ int main( int argc, char ** argv )
free(x264_preset);
free(x264_tune);
free(advanced_opts);
- free(x264_profile);
+ free(h264_profile);
free(h264_level);
// write a carriage return to stdout
@@ -749,9 +749,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("fast");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("baseline");
+ h264_profile = strdup("baseline");
}
if (h264_level == NULL)
{
@@ -804,9 +804,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("baseline");
+ h264_profile = strdup("baseline");
}
if (h264_level == NULL)
{
@@ -855,9 +855,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -910,9 +910,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -965,9 +965,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -1024,9 +1024,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -1079,9 +1079,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -1135,9 +1135,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("main");
+ h264_profile = strdup("main");
}
if (h264_level == NULL)
{
@@ -1188,9 +1188,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("main");
+ h264_profile = strdup("main");
}
if (h264_level == NULL)
{
@@ -1238,9 +1238,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("veryfast");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("main");
+ h264_profile = strdup("main");
}
if (h264_level == NULL)
{
@@ -1290,9 +1290,9 @@ static int HandleEvents( hb_handle_t * h )
{
x264_preset = strdup("medium");
}
- if (x264_profile == NULL)
+ if (h264_profile == NULL)
{
- x264_profile = strdup("high");
+ h264_profile = strdup("high");
}
if (h264_level == NULL)
{
@@ -2475,8 +2475,8 @@ static int HandleEvents( hb_handle_t * h )
hb_job_set_x264_preset(job, x264_preset);
hb_job_set_x264_tune(job, x264_tune);
- hb_job_set_x264_profile(job, x264_profile);
- hb_job_set_x264_level(job, h264_level);
+ hb_job_set_h264_profile(job, h264_profile);
+ hb_job_set_h264_level(job, h264_level);
if (maxWidth)
job->maxWidth = maxWidth;
@@ -2798,10 +2798,10 @@ static void ShowHelp()
" -x, --encopts <string> Specify advanced encoder options in the\n"
" same style as mencoder (x264 and ffmpeg only):\n"
" option1=value1:option2=value2\n"
- " --x264-profile When using x264, ensures compliance with the\n"
- " <string> specified h.264 profile:\n"
+ " --h264-profile When using x264, ensures compliance with the\n"
+ " <string> specified H.264 profile:\n"
" ");
- x264_opts = hb_x264_profiles();
+ x264_opts = hb_h264_profiles();
tmp[0] = 0;
len = 0;
while( x264_opts && *x264_opts )
@@ -2821,7 +2821,7 @@ static void ShowHelp()
fprintf( out, "%s\n", tmp );
fprintf( out,
" --h264-level When using x264, ensures compliance with the\n"
- " <string> specified h.264 level:\n"
+ " <string> specified H.264 level:\n"
" ");
x264_opts = hb_h264_levels();
tmp[0] = 0;
@@ -3097,19 +3097,19 @@ static void ShowPresets()
fprintf( stderr, "%s - %s - %s\n", HB_PROJECT_TITLE, HB_PROJECT_BUILD_TITLE, HB_PROJECT_URL_WEBSITE );
printf("\n< Devices\n");
- printf("\n + Universal: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 -m --x264-preset fast --x264-profile baseline --h264-level 3.0\n");
- printf("\n + iPod: -e x264 -q 22.0 -r 30 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 --modulus 2 -m --x264-preset medium --x264-profile baseline --h264-level 1.3\n");
- printf("\n + iPhone & iPod Touch: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n");
- printf("\n + iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n");
- printf("\n + AppleTV: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1 -x cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n");
- printf("\n + AppleTV 2: -e x264 -q 20.0 -r 29.97 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n");
- printf("\n + AppleTV 3: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1920 --decomb=fast --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 4.0\n");
- printf("\n + Android: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 --x264-preset medium --x264-profile main --h264-level 2.2\n");
- printf("\n + Android Tablet: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 1280 --loose-anamorphic --modulus 2 --x264-preset medium --x264-profile main --h264-level 3.1\n");
+ printf("\n + Universal: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 -m --x264-preset fast --h264-profile baseline --h264-level 3.0\n");
+ printf("\n + iPod: -e x264 -q 22.0 -r 30 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 --modulus 2 -m --x264-preset medium --h264-profile baseline --h264-level 1.3\n");
+ printf("\n + iPhone & iPod Touch: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n");
+ printf("\n + iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n");
+ printf("\n + AppleTV: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1 -x cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n");
+ printf("\n + AppleTV 2: -e x264 -q 20.0 -r 29.97 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n");
+ printf("\n + AppleTV 3: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1920 --decomb=fast --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 4.0\n");
+ printf("\n + Android: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 --x264-preset medium --h264-profile main --h264-level 2.2\n");
+ printf("\n + Android Tablet: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 1280 --loose-anamorphic --modulus 2 --x264-preset medium --h264-profile main --h264-level 3.1\n");
printf("\n>\n");
printf("\n< Regular\n");
- printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --x264-profile main --h264-level 4.0\n");
- printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --decomb --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 4.1\n");
+ printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.0\n");
+ printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --decomb --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 4.1\n");
printf("\n>\n");
}
@@ -3223,9 +3223,9 @@ static int ParseOptions( int argc, char ** argv )
#define ALLOWED_AUDIO_COPY 280
#define AUDIO_FALLBACK 281
#define LOOSE_CROP 282
- #define X264_PROFILE 283
- #define X264_PRESET 284
- #define X264_TUNE 285
+ #define X264_PRESET 283
+ #define X264_TUNE 284
+ #define H264_PROFILE 285
#define H264_LEVEL 286
#define NO_OPENCL 287
#define NORMALIZE_MIX 288
@@ -3302,11 +3302,11 @@ static int ParseOptions( int argc, char ** argv )
{ "ac", required_argument, NULL, 'C' },
{ "rate", required_argument, NULL, 'r' },
{ "arate", required_argument, NULL, 'R' },
- { "encopts", required_argument, NULL, 'x' },
- { "x264-profile", required_argument, NULL, X264_PROFILE },
- { "h264-profile", required_argument, NULL, X264_PROFILE },
{ "x264-preset", required_argument, NULL, X264_PRESET },
{ "x264-tune", required_argument, NULL, X264_TUNE },
+ { "encopts", required_argument, NULL, 'x' },
+ { "x264-profile", required_argument, NULL, H264_PROFILE },
+ { "h264-profile", required_argument, NULL, H264_PROFILE },
{ "h264-level", required_argument, NULL, H264_LEVEL },
{ "turbo", no_argument, NULL, 'T' },
{ "maxHeight", required_argument, NULL, 'Y' },
@@ -3748,18 +3748,18 @@ static int ParseOptions( int argc, char ** argv )
case 'C':
acompressions = str_split( optarg, ',' );
break;
- case 'x':
- advanced_opts = strdup( optarg );
- break;
- case X264_PROFILE:
- x264_profile = strdup( optarg );
- break;
case X264_PRESET:
x264_preset = strdup( optarg );
break;
case X264_TUNE:
x264_tune = strdup( optarg );
break;
+ case 'x':
+ advanced_opts = strdup( optarg );
+ break;
+ case H264_PROFILE:
+ h264_profile = strdup( optarg );
+ break;
case H264_LEVEL:
h264_level = strdup( optarg );
break;
diff --git a/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs b/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs
new file mode 100644
index 000000000..2687508b2
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs
@@ -0,0 +1,27 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SettingChangedEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The setting changed event args.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.EventArgs
+{
+ /// <summary>
+ /// The setting changed event args.
+ /// </summary>
+ public class SettingChangedEventArgs
+ {
+ /// <summary>
+ /// Gets or sets the key.
+ /// </summary>
+ public string Key { get; set; }
+
+ /// <summary>
+ /// Gets or sets the value.
+ /// </summary>
+ public object Value { get; set; }
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj
index 56df4d218..1448380b0 100644
--- a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj
+++ b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj
@@ -84,6 +84,7 @@
<ItemGroup>
<Compile Include="Collections\SerializableDictionary.cs" />
<Compile Include="Converters\EnumToDescConverter.cs" />
+ <Compile Include="EventArgs\SettingChangedEventArgs.cs" />
<Compile Include="Exceptions\GeneralApplicationException.cs" />
<Compile Include="EventArgs\EncodeCompletedEventArgs.cs" />
<Compile Include="EventArgs\EncodeProgressEventArgs.cs" />
diff --git a/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs b/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs
index f9053a8bb..36d416c9d 100644
--- a/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs
+++ b/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs
@@ -12,6 +12,8 @@ namespace HandBrake.ApplicationServices.Model
using System.Collections.ObjectModel;
using System.Linq;
+ using Caliburn.Micro;
+
using HandBrake.ApplicationServices.Model.Encoding;
using HandBrake.Interop.Model;
using HandBrake.Interop.Model.Encoding;
@@ -22,8 +24,17 @@ namespace HandBrake.ApplicationServices.Model
/// <summary>
/// An Encode Task
/// </summary>
- public class EncodeTask
+ public class EncodeTask : PropertyChangedBase
{
+ #region Private Fields
+
+ /// <summary>
+ /// The advanced panel enabled.
+ /// </summary>
+ private bool showAdvancedTab;
+
+ #endregion
+
/// <summary>
/// Initializes a new instance of the <see cref="EncodeTask"/> class.
/// </summary>
@@ -436,7 +447,7 @@ namespace HandBrake.ApplicationServices.Model
public bool FastDecode { get; set; }
/// <summary>
- /// Extra Advanced Arguments for the Video Tab.
+ /// Gets or sets Extra Advanced Arguments for the Video Tab.
/// </summary>
public string ExtraAdvancedArguments { get; set; }
@@ -493,6 +504,25 @@ namespace HandBrake.ApplicationServices.Model
/// Gets or sets PreviewEncodeStartAt.
/// </summary>
public string PreviewEncodeStartAt { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether advanced panel enabled.
+ /// </summary>
+ public bool ShowAdvancedTab
+ {
+ get
+ {
+ return this.showAdvancedTab;
+ }
+ set
+ {
+ if (!object.Equals(value, this.showAdvancedTab))
+ {
+ this.showAdvancedTab = value;
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+ }
#endregion
}
}
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs b/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs
index db3794151..1a20379f4 100644
--- a/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs
+++ b/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs
@@ -9,6 +9,8 @@
namespace HandBrake.ApplicationServices.Model.Encoding
{
+ using System;
+
using Caliburn.Micro;
/// <summary>
@@ -37,10 +39,14 @@ namespace HandBrake.ApplicationServices.Model.Encoding
/// <param name="name">
/// The name.
/// </param>
- public ChapterMarker(int number, string name)
+ /// <param name="duration">
+ /// The duration.
+ /// </param>
+ public ChapterMarker(int number, string name, TimeSpan duration)
{
this.ChapterName = name;
this.ChapterNumber = number;
+ this.Duration = duration;
}
/// <summary>
@@ -54,6 +60,7 @@ namespace HandBrake.ApplicationServices.Model.Encoding
{
this.ChapterName = chapter.ChapterName;
this.ChapterNumber = chapter.ChapterNumber;
+ this.Duration = chapter.Duration;
}
/// <summary>
@@ -62,6 +69,11 @@ namespace HandBrake.ApplicationServices.Model.Encoding
public int ChapterNumber { get; set; }
/// <summary>
+ /// Gets or sets the duration.
+ /// </summary>
+ public TimeSpan Duration { get; set; }
+
+ /// <summary>
/// Gets or sets ChapterName.
/// </summary>
public string ChapterName
diff --git a/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs b/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs
index 15f158381..84e9eee9f 100644
--- a/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs
+++ b/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs
@@ -30,6 +30,14 @@ namespace HandBrake.ApplicationServices.Model
#region Properties
/// <summary>
+ /// Initializes a new instance of the <see cref="QueueTask"/> class.
+ /// </summary>
+ public QueueTask()
+ {
+ this.Status = QueueItemStatus.Waiting;
+ }
+
+ /// <summary>
/// Gets or sets ScannedSource.
/// </summary>
public Source ScannedSource { get; set; }
@@ -62,5 +70,66 @@ namespace HandBrake.ApplicationServices.Model
public EncodeTask Task { get; set; }
#endregion
+
+ /// <summary>
+ /// The equals.
+ /// </summary>
+ /// <param name="other">
+ /// The other.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ protected bool Equals(QueueTask other)
+ {
+ return Equals(this.ScannedSource, other.ScannedSource) && this.CustomQuery.Equals(other.CustomQuery) && Equals(this.Task, other.Task) && this.status == other.status;
+ }
+
+ /// <summary>
+ /// The equals.
+ /// </summary>
+ /// <param name="obj">
+ /// The obj.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj))
+ {
+ return false;
+ }
+
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+
+ if (obj.GetType() != this.GetType())
+ {
+ return false;
+ }
+
+ return Equals((QueueTask)obj);
+ }
+
+ /// <summary>
+ /// The get hash code.
+ /// </summary>
+ /// <returns>
+ /// The <see cref="int"/>.
+ /// </returns>
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ int hashCode = (this.ScannedSource != null ? this.ScannedSource.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ this.CustomQuery.GetHashCode();
+ hashCode = (hashCode * 397) ^ (this.Task != null ? this.Task.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ (int)this.status;
+ return hashCode;
+ }
+ }
}
} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs
index 7f79e8aec..f17a6a51b 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs
@@ -78,10 +78,6 @@ namespace HandBrake.ApplicationServices.Parsing
/// </summary>
public event ScanProgressEventHandler OnScanProgress;
- /// <summary>
- /// Raised upon the catching of a "Scanning title # of #..." in the stream
- /// </summary>
- public event EncodeProgressEventHandler OnEncodeProgress;
/// <summary>
/// Gets the buffer of data that came from the CLI standard input/error
@@ -133,34 +129,5 @@ namespace HandBrake.ApplicationServices.Parsing
return tmp;
}
-
- /// <summary>
- /// Pase the CLI status output (from standard output)
- /// </summary>
- public void ReadEncodeStatus()
- {
- string tmp = base.ReadLine();
-
- Match m = Regex.Match(tmp, @"^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\.[0-9]*) %( \(([0-9]*\.[0-9]*) fps, avg ([0-9]*\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\))?");
- if (m.Success && OnEncodeProgress != null)
- {
- int currentTask = int.Parse(m.Groups[1].Value);
- int totalTasks = int.Parse(m.Groups[2].Value);
- float percent = float.Parse(m.Groups[3].Value, CultureInfo.InvariantCulture);
- float currentFps = m.Groups[5].Value == string.Empty ? 0.0F : float.Parse(m.Groups[5].Value, CultureInfo.InvariantCulture);
- float avgFps = m.Groups[6].Value == string.Empty ? 0.0F : float.Parse(m.Groups[6].Value, CultureInfo.InvariantCulture);
- string remaining = string.Empty;
- if (m.Groups[7].Value != string.Empty)
- {
- remaining = m.Groups[7].Value + ":" + m.Groups[8].Value + ":" + m.Groups[9].Value;
- }
- if (string.IsNullOrEmpty(remaining))
- {
- remaining = "Calculating ...";
- }
-
- OnEncodeProgress(this, currentTask, totalTasks, percent, currentFps, avgFps, remaining);
- }
- }
}
} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
index 00488eac8..324e97c16 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
@@ -16,9 +16,6 @@ namespace HandBrake.ApplicationServices.Parsing
using System.Linq;
using System.Text.RegularExpressions;
- using Caliburn.Micro;
-
- using HandBrake.ApplicationServices.Services.Interfaces;
using HandBrake.Interop.Model;
using Size = System.Drawing.Size;
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs
index 8ef67b28d..866edb794 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs
@@ -10,8 +10,12 @@
namespace HandBrake.ApplicationServices.Services.Base
{
using System;
+ using System.Globalization;
using System.IO;
using System.Text;
+ using System.Text.RegularExpressions;
+
+ using Caliburn.Micro;
using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Exceptions;
@@ -148,11 +152,15 @@ namespace HandBrake.ApplicationServices.Services.Base
/// </param>
public void InvokeEncodeStatusChanged(EncodeProgressEventArgs e)
{
- EncodeProgessStatus handler = this.EncodeStatusChanged;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(
+ () =>
+ {
+ EncodeProgessStatus handler = this.EncodeStatusChanged;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
/// <summary>
@@ -163,11 +171,15 @@ namespace HandBrake.ApplicationServices.Services.Base
/// </param>
public void InvokeEncodeCompleted(EncodeCompletedEventArgs e)
{
- EncodeCompletedStatus handler = this.EncodeCompleted;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(
+ () =>
+ {
+ EncodeCompletedStatus handler = this.EncodeCompleted;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
/// <summary>
@@ -178,11 +190,14 @@ namespace HandBrake.ApplicationServices.Services.Base
/// </param>
public void InvokeEncodeStarted(EventArgs e)
{
- EventHandler handler = this.EncodeStarted;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(() =>
+ {
+ EventHandler handler = this.EncodeStarted;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
#endregion
@@ -192,10 +207,7 @@ namespace HandBrake.ApplicationServices.Services.Base
/// <summary>
/// A Stop Method to be implemeneted.
/// </summary>
- /// <param name="exc">
- /// The Exception that occured that required a STOP action.
- /// </param>
- public virtual void Stop(Exception exc)
+ public virtual void Stop()
{
// Do Nothing
}
@@ -249,6 +261,73 @@ namespace HandBrake.ApplicationServices.Services.Base
}
}
+
+ /// <summary>
+ /// Pase the CLI status output (from standard output)
+ /// </summary>
+ /// <param name="encodeStatus">
+ /// The encode Status.
+ /// </param>
+ /// <param name="startTime">
+ /// The start Time.
+ /// </param>
+ /// <returns>
+ /// The <see cref="EncodeProgressEventArgs"/>.
+ /// </returns>
+ public EncodeProgressEventArgs ReadEncodeStatus(string encodeStatus, DateTime startTime)
+ {
+ try
+ {
+ Match m = Regex.Match(
+ encodeStatus,
+ @"^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\.[0-9]*) %( \(([0-9]*\.[0-9]*) fps, avg ([0-9]*\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\))?");
+
+ if (m.Success)
+ {
+ int currentTask = int.Parse(m.Groups[1].Value);
+ int totalTasks = int.Parse(m.Groups[2].Value);
+ float percent = float.Parse(m.Groups[3].Value, CultureInfo.InvariantCulture);
+ float currentFps = m.Groups[5].Value == string.Empty
+ ? 0.0F
+ : float.Parse(m.Groups[5].Value, CultureInfo.InvariantCulture);
+ float avgFps = m.Groups[6].Value == string.Empty
+ ? 0.0F
+ : float.Parse(m.Groups[6].Value, CultureInfo.InvariantCulture);
+ string remaining = string.Empty;
+ if (m.Groups[7].Value != string.Empty)
+ {
+ remaining = m.Groups[7].Value + ":" + m.Groups[8].Value + ":" + m.Groups[9].Value;
+ }
+ if (string.IsNullOrEmpty(remaining))
+ {
+ remaining = "Calculating ...";
+ }
+
+ EncodeProgressEventArgs eventArgs = new EncodeProgressEventArgs
+ {
+ AverageFrameRate = avgFps,
+ CurrentFrameRate = currentFps,
+ EstimatedTimeLeft =
+ Converters.EncodeToTimespan(
+ remaining),
+ PercentComplete = percent,
+ Task = currentTask,
+ TaskCount = totalTasks,
+ ElapsedTime =
+ DateTime.Now - startTime,
+ };
+
+ return eventArgs;
+ }
+
+ return null;
+ }
+ catch (Exception exc)
+ {
+ return null;
+ }
+ }
+
/// <summary>
/// Setup the logging.
/// </summary>
@@ -286,8 +365,8 @@ namespace HandBrake.ApplicationServices.Services.Base
this.fileWriter = new StreamWriter(logFile) { AutoFlush = true };
this.fileWriter.WriteLine(header);
- this.fileWriter.WriteLine(String.Format("CLI Query: {0}", query));
- this.fileWriter.WriteLine(String.Format("User Query: {0}", encodeQueueTask.CustomQuery));
+ this.fileWriter.WriteLine(string.Format("CLI Query: {0}", query));
+ this.fileWriter.WriteLine(string.Format("User Query: {0}", encodeQueueTask.CustomQuery));
this.fileWriter.WriteLine();
}
catch (Exception)
@@ -324,22 +403,9 @@ namespace HandBrake.ApplicationServices.Services.Base
if (this.fileWriter != null && this.fileWriter.BaseStream.CanWrite)
{
this.fileWriter.WriteLine(message);
-
- // If the logging grows past 100MB, kill the encode and stop.
- if (this.fileWriter.BaseStream.Length > 100000000)
- {
- this.Stop(
- new GeneralApplicationException(
- "The encode has been stopped. The log file has grown to over 100MB which indicates a serious problem has occured with the encode.",
- "Please check the encode log for an indication of what the problem is.", null));
- }
}
}
}
- catch (GeneralApplicationException)
- {
- throw;
- }
catch (Exception exc)
{
// Do Nothing.
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Encode.cs b/win/CS/HandBrake.ApplicationServices/Services/Encode.cs
index c136c18ee..577067050 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/Encode.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/Encode.cs
@@ -11,18 +11,18 @@ namespace HandBrake.ApplicationServices.Services
{
using System;
using System.Diagnostics;
+ using System.Globalization;
using System.IO;
- using System.Threading;
using System.Windows.Forms;
+ using Caliburn.Micro;
+
using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Model;
using HandBrake.ApplicationServices.Services.Base;
using HandBrake.ApplicationServices.Services.Interfaces;
using HandBrake.ApplicationServices.Utilities;
- using Parser = HandBrake.ApplicationServices.Parsing.Parser;
-
/// <summary>
/// Class which handles the CLI
/// </summary>
@@ -36,11 +36,6 @@ namespace HandBrake.ApplicationServices.Services
private readonly IUserSettingService userSettingService;
/// <summary>
- /// Gets The Process Handle
- /// </summary>
- private IntPtr processHandle;
-
- /// <summary>
/// Gets the Process ID
/// </summary>
private int processId;
@@ -55,6 +50,11 @@ namespace HandBrake.ApplicationServices.Services
/// </summary>
private QueueTask currentTask;
+ /// <summary>
+ /// The init shutdown.
+ /// </summary>
+ private bool initShutdown;
+
#endregion
/// <summary>
@@ -66,8 +66,7 @@ namespace HandBrake.ApplicationServices.Services
public Encode(IUserSettingService userSettingService)
: base(userSettingService)
{
- this.userSettingService = userSettingService;
- this.EncodeStarted += this.EncodeEncodeStarted;
+ this.userSettingService = userSettingService;
}
#region Properties
@@ -83,6 +82,7 @@ namespace HandBrake.ApplicationServices.Services
/// <summary>
/// Execute a HandBrakeCLI process.
+ /// This should only be called from the UI thread.
/// </summary>
/// <param name="encodeQueueTask">
/// The encodeQueueTask.
@@ -94,8 +94,6 @@ namespace HandBrake.ApplicationServices.Services
{
try
{
- this.currentTask = encodeQueueTask;
-
if (this.IsEncoding)
{
throw new Exception("HandBrake is already encodeing.");
@@ -103,6 +101,8 @@ namespace HandBrake.ApplicationServices.Services
this.IsEncoding = true;
+ this.currentTask = encodeQueueTask;
+
if (enableLogging)
{
try
@@ -160,8 +160,10 @@ namespace HandBrake.ApplicationServices.Services
this.HbProcess.BeginErrorReadLine();
}
+ this.HbProcess.OutputDataReceived += HbProcess_OutputDataReceived;
+ this.HbProcess.BeginOutputReadLine();
+
this.processId = this.HbProcess.Id;
- this.processHandle = this.HbProcess.Handle;
// Set the process Priority
if (this.processId != -1)
@@ -207,21 +209,9 @@ namespace HandBrake.ApplicationServices.Services
}
/// <summary>
- /// Stop the Encode
- /// </summary>
- public void Stop()
- {
- this.Stop(null);
- }
-
- /// <summary>
/// Kill the CLI process
/// </summary>
- /// <param name="exc">
- /// The Exception that has occured.
- /// This will get bubbled up through the EncodeCompletedEventArgs
- /// </param>
- public override void Stop(Exception exc)
+ public override void Stop()
{
try
{
@@ -234,11 +224,6 @@ namespace HandBrake.ApplicationServices.Services
{
// No need to report anything to the user. If it fails, it's probably already stopped.
}
-
- this.InvokeEncodeCompleted(
- exc == null
- ? new EncodeCompletedEventArgs(true, null, string.Empty)
- : new EncodeCompletedEventArgs(false, exc, "An Unknown Error has occured when trying to Stop this encode."));
}
/// <summary>
@@ -264,25 +249,12 @@ namespace HandBrake.ApplicationServices.Services
/// </param>
private void HbProcessExited(object sender, EventArgs e)
{
- this.IsEncoding = false;
- if (this.WindowsSeven.IsWindowsSeven)
- {
- this.WindowsSeven.SetTaskBarProgressToNoProgress();
- }
-
- if (this.userSettingService.GetUserSetting<bool>(ASUserSettingConstants.PreventSleep))
- {
- Win32.AllowSleep();
- }
+ HbProcess.WaitForExit();
try
{
- // This is just a quick hack to ensure that we are done processing the logging data.
- // Logging data comes in after the exit event has processed sometimes. We should really impliment ISyncronizingInvoke
- // and set the SyncObject on the process. I think this may resolve this properly.
- // For now, just wait 2.5 seconds to let any trailing log messages come in and be processed.
- Thread.Sleep(2500);
this.HbProcess.CancelErrorRead();
+ this.HbProcess.CancelOutputRead();
this.ShutdownFileWriter();
}
catch (Exception exc)
@@ -290,8 +262,22 @@ namespace HandBrake.ApplicationServices.Services
// This exception doesn't warrent user interaction, but it should be logged (TODO)
}
- this.currentTask.Status = QueueItemStatus.Completed;
- this.InvokeEncodeCompleted(new EncodeCompletedEventArgs(true, null, string.Empty));
+ Execute.OnUIThread(() =>
+ {
+ if (this.WindowsSeven.IsWindowsSeven)
+ {
+ this.WindowsSeven.SetTaskBarProgressToNoProgress();
+ }
+
+ if (this.userSettingService.GetUserSetting<bool>(ASUserSettingConstants.PreventSleep))
+ {
+ Win32.AllowSleep();
+ }
+
+ this.currentTask.Status = QueueItemStatus.Completed;
+ this.IsEncoding = false;
+ this.InvokeEncodeCompleted(new EncodeCompletedEventArgs(true, null, string.Empty));
+ });
}
/// <summary>
@@ -303,88 +289,69 @@ namespace HandBrake.ApplicationServices.Services
/// <param name="e">
/// DataReceived EventArgs
/// </param>
+ /// <remarks>
+ /// Worker Thread.
+ /// </remarks>
private void HbProcErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (!String.IsNullOrEmpty(e.Data))
{
+ if (initShutdown && this.LogBuffer.Length < 25000000)
+ {
+ initShutdown = false; // Reset this flag.
+ }
+
+ if (this.LogBuffer.Length > 25000000 && !initShutdown) // Approx 23.8MB and make sure it's only printed once
+ {
+ this.ProcessLogMessage("ERROR: Initiating automatic shutdown of encode process. The size of the log file inidcates that there is an error! ");
+ initShutdown = true;
+ this.Stop();
+ }
+
this.ProcessLogMessage(e.Data);
}
}
/// <summary>
- /// Encode Started
+ /// The hb process output data received.
/// </summary>
/// <param name="sender">
/// The sender.
/// </param>
/// <param name="e">
- /// The EventArgs.
+ /// The e.
/// </param>
- private void EncodeEncodeStarted(object sender, EventArgs e)
+ private void HbProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
- Thread monitor = new Thread(this.EncodeMonitor);
- monitor.Start();
- }
-
- /// <summary>
- /// Monitor the QueueTask
- /// </summary>
- private void EncodeMonitor()
- {
- try
+ if (!String.IsNullOrEmpty(e.Data) && this.IsEncoding)
{
- Parser encode = new Parser(this.HbProcess.StandardOutput.BaseStream);
- encode.OnEncodeProgress += this.EncodeOnEncodeProgress;
- while (!encode.EndOfStream)
+ EncodeProgressEventArgs eventArgs = this.ReadEncodeStatus(e.Data, this.startTime);
+ if (eventArgs != null)
{
- encode.ReadEncodeStatus();
+ Execute.OnUIThread(
+ () =>
+ {
+ if (!this.IsEncoding)
+ {
+ // We can get events out of order since the CLI progress is monitored on a background thread.
+ // So make sure we don't send a status update after an encode complete event.
+ return;
+ }
+
+ this.InvokeEncodeStatusChanged(eventArgs);
+
+ if (this.WindowsSeven.IsWindowsSeven)
+ {
+ int percent;
+ int.TryParse(
+ Math.Round(eventArgs.PercentComplete).ToString(CultureInfo.InvariantCulture),
+ out percent);
+
+ this.WindowsSeven.SetTaskBarProgress(percent);
+ }
+ });
}
}
- catch (Exception)
- {
- this.EncodeOnEncodeProgress(null, 0, 0, 0, 0, 0, "Unknown, status not available..");
- }
- }
-
- /// <summary>
- /// Displays the Encode status in the GUI
- /// </summary>
- /// <param name="sender">The sender</param>
- /// <param name="currentTask">The current task</param>
- /// <param name="taskCount">Number of tasks</param>
- /// <param name="percentComplete">Percent complete</param>
- /// <param name="currentFps">Current encode speed in fps</param>
- /// <param name="avg">Avg encode speed</param>
- /// <param name="timeRemaining">Time Left</param>
- private void EncodeOnEncodeProgress(object sender, int currentTask, int taskCount, float percentComplete, float currentFps, float avg, string timeRemaining)
- {
- if (!this.IsEncoding)
- {
- // We can get events out of order since the CLI progress is monitored on a background thread.
- // So make sure we don't send a status update after an encode complete event.
- return;
- }
-
- EncodeProgressEventArgs eventArgs = new EncodeProgressEventArgs
- {
- AverageFrameRate = avg,
- CurrentFrameRate = currentFps,
- EstimatedTimeLeft = Converters.EncodeToTimespan(timeRemaining),
- PercentComplete = percentComplete,
- Task = currentTask,
- TaskCount = taskCount,
- ElapsedTime = DateTime.Now - this.startTime,
- };
-
- this.InvokeEncodeStatusChanged(eventArgs);
-
- if (this.WindowsSeven.IsWindowsSeven)
- {
- int percent;
- int.TryParse(Math.Round(percentComplete).ToString(), out percent);
-
- this.WindowsSeven.SetTaskBarProgress(percent);
- }
}
#endregion
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs
index 0a952e516..b4c8872c0 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs
@@ -10,7 +10,7 @@
namespace HandBrake.ApplicationServices.Services.Interfaces
{
using System;
- using System.Collections.ObjectModel;
+ using System.ComponentModel;
using HandBrake.ApplicationServices.Model;
@@ -70,7 +70,7 @@ namespace HandBrake.ApplicationServices.Services.Interfaces
/// <summary>
/// Gets The current queue.
/// </summary>
- ObservableCollection<QueueTask> Queue { get; }
+ BindingList<QueueTask> Queue { get; }
#endregion
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs
index d7bba9550..bf6cb9c91 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs
@@ -9,12 +9,30 @@
namespace HandBrake.ApplicationServices.Services.Interfaces
{
+ using HandBrake.ApplicationServices.EventArgs;
+
+ /// <summary>
+ /// The setting event handler.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ public delegate void SettingEventHandler(object sender, SettingChangedEventArgs e);
+
/// <summary>
/// The User Setting Service Interace.
/// </summary>
public interface IUserSettingService
{
/// <summary>
+ /// The setting changed.
+ /// </summary>
+ event SettingEventHandler SettingChanged;
+
+ /// <summary>
/// Set the specified user setting.
/// </summary>
/// <param name="name">
diff --git a/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs b/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs
index 64d604a34..320b96f1b 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs
@@ -12,7 +12,6 @@ namespace HandBrake.ApplicationServices.Services
using System;
using System.Diagnostics;
- using HandBrake.ApplicationServices.Exceptions;
using HandBrake.ApplicationServices.Model;
using HandBrake.ApplicationServices.Services.Base;
using HandBrake.ApplicationServices.Services.Interfaces;
@@ -169,19 +168,7 @@ namespace HandBrake.ApplicationServices.Services
/// <summary>
/// Kill the CLI process
/// </summary>
- public void Stop()
- {
- this.Stop(null);
- }
-
- /// <summary>
- /// Kill the CLI process
- /// </summary>
- /// <param name="exc">
- /// The Exception that has occured.
- /// This will get bubbled up through the EncodeCompletedEventArgs
- /// </param>
- public override void Stop(Exception exc)
+ public override void Stop()
{
try
{
@@ -192,11 +179,6 @@ namespace HandBrake.ApplicationServices.Services
{
// Do Nothing.
}
-
- this.InvokeEncodeCompleted(
- exc == null
- ? new EncodeCompletedEventArgs(true, null, string.Empty)
- : new EncodeCompletedEventArgs(false, exc, "An Error has occured."));
}
/// <summary>
diff --git a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs
index 7aefd285f..172fe7291 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs
@@ -11,7 +11,7 @@ namespace HandBrake.ApplicationServices.Services
{
using System;
using System.Collections.Generic;
- using System.Collections.ObjectModel;
+ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
@@ -41,7 +41,7 @@ namespace HandBrake.ApplicationServices.Services
/// <summary>
/// The Queue of Job objects
/// </summary>
- private readonly ObservableCollection<QueueTask> queue = new ObservableCollection<QueueTask>();
+ private readonly BindingList<QueueTask> queue = new BindingList<QueueTask>();
/// <summary>
/// The User Setting Service
@@ -152,7 +152,7 @@ namespace HandBrake.ApplicationServices.Services
/// <summary>
/// Gets The current queue.
/// </summary>
- public ObservableCollection<QueueTask> Queue
+ public BindingList<QueueTask> Queue
{
get
{
@@ -595,13 +595,6 @@ namespace HandBrake.ApplicationServices.Services
/// </summary>
private void ProcessNextJob()
{
- if (this.EncodeService.IsEncoding || !this.IsProcessing)
- {
- // We don't want to try start a second encode, so just return out. The event will trigger the next encode automatically.
- // Also, we don't want to start a new encode if we are paused.
- return;
- }
-
QueueTask job = this.GetNextJobForProcessing();
if (job != null)
{
diff --git a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs b/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
index ab77ce800..db7389637 100644
--- a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
+++ b/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
@@ -16,6 +16,7 @@ namespace HandBrake.ApplicationServices.Services
using System.Xml.Serialization;
using HandBrake.ApplicationServices.Collections;
+ using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Exceptions;
using HandBrake.ApplicationServices.Services.Interfaces;
@@ -48,6 +49,11 @@ namespace HandBrake.ApplicationServices.Services
}
/// <summary>
+ /// The setting changed.
+ /// </summary>
+ public event SettingEventHandler SettingChanged;
+
+ /// <summary>
/// Set the specified user setting.
/// </summary>
/// <param name="name">
@@ -60,6 +66,8 @@ namespace HandBrake.ApplicationServices.Services
{
this.userSettings[name] = value;
this.Save();
+
+ this.OnSettingChanged(new SettingChangedEventArgs {Key = name, Value = value});
}
/// <summary>
@@ -99,6 +107,21 @@ namespace HandBrake.ApplicationServices.Services
}
/// <summary>
+ /// The on setting changed.
+ /// </summary>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ protected virtual void OnSettingChanged(SettingChangedEventArgs e)
+ {
+ SettingEventHandler handler = this.SettingChanged;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ }
+
+ /// <summary>
/// Save the User Settings
/// </summary>
private void Save()
diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs b/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs
index 618dd43cc..63a98abe4 100644
--- a/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs
+++ b/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs
@@ -23,10 +23,6 @@ namespace HandBrake.ApplicationServices.Utilities
/// </summary>
public class InteropModelCreator
{
- /*
- * TODO: This conversion class needs to be finished off before libencode will work.
- */
-
/// <summary>
/// Get an EncodeJob model for a LibHB Encode.
/// </summary>
@@ -182,12 +178,37 @@ namespace HandBrake.ApplicationServices.Utilities
// job.SourceType = work.Type;
job.Title = work.Title;
- // TODO Setup subtitles
+ // Subtitles
job.Subtitles = new Subtitles { SourceSubtitles = new List<SourceSubtitle>(), SrtSubtitles = new List<SrtSubtitle>() };
- //foreach (SubtitleTrack track in work.SubtitleTracks)
- //{
- // // TODO
- //}
+ foreach (SubtitleTrack track in work.SubtitleTracks)
+ {
+ if (track.IsSrtSubtitle)
+ {
+ job.Subtitles.SrtSubtitles.Add(
+ new SrtSubtitle
+ {
+ CharacterCode = track.SrtCharCode,
+ Default = track.Default,
+ FileName = track.SrtFileName,
+ LanguageCode = track.SrtLang,
+ Offset = track.SrtOffset
+ });
+ }
+ else
+ {
+ if (track.SourceTrack != null)
+ {
+ job.Subtitles.SourceSubtitles.Add(
+ new SourceSubtitle
+ {
+ BurnedIn = track.Burned,
+ Default = track.Default,
+ Forced = track.Forced,
+ TrackNumber = track.SourceTrack.TrackNumber
+ });
+ }
+ }
+ }
return job;
}
diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs b/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs
index acc8948a1..81d4846ec 100644
--- a/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs
+++ b/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs
@@ -168,7 +168,7 @@ namespace HandBrake.ApplicationServices.Utilities
/// </summary>
public static void AllowSleep()
{
- SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
+ executor(() => SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS));
}
/// <summary>
diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs
index 344759c1d..fbe8e8532 100644
--- a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs
+++ b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs
@@ -19,9 +19,20 @@ namespace HandBrake.Interop.SourceData
/// </summary>
public class Title
{
- private readonly List<AudioTrack> audioTracks;
- private readonly List<Chapter> chapters;
- private readonly List<Subtitle> subtitles;
+ /// <summary>
+ /// The audio tracks.
+ /// </summary>
+ private readonly List<AudioTrack> audioTracks;
+
+ /// <summary>
+ /// The chapters.
+ /// </summary>
+ private readonly List<Chapter> chapters;
+
+ /// <summary>
+ /// The subtitles.
+ /// </summary>
+ private readonly List<Subtitle> subtitles;
/// <summary>
/// Initializes a new instance of the Title class.
diff --git a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml
new file mode 100644
index 000000000..3fdc8d22f
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml
@@ -0,0 +1,175 @@
+<UserControl x:Class="HandBrakeWPF.Controls.TimeSpanBox"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ Loaded="UserControl_Loaded">
+ <UserControl.Resources>
+ <Style x:Key="Arrow" TargetType="Polygon">
+ <Setter Property="Fill" Value="#333" />
+ </Style>
+ <!-- UpButton and DownButton are identical except for the border radius in the control template.
+ We can't pass that through so we need to duplicate the template. After a change is made from one button
+ template it should be copied to the other. -->
+ <Style x:Key="UpButton" TargetType="Button">
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#EEE" Offset="0.4"/>
+ <GradientStop Color="#BBB" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Border
+ Name="border"
+ BorderThickness="1"
+ BorderBrush="#888"
+ CornerRadius="0,2,0,0"
+ Background="{TemplateBinding Background}">
+ <ContentPresenter
+ Name="content"
+ HorizontalAlignment="Center" VerticalAlignment="Center" />
+ </Border>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsMouseOver" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
+ <Setter Property="Foreground" Value="#FF4788c8" />
+ </Trigger>
+ <Trigger Property="IsPressed" Value="True">
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#CCC" Offset="0.4"/>
+ <GradientStop Color="#999" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter TargetName="content" Property="RenderTransform" >
+ <Setter.Value>
+ <TranslateTransform Y="1.0" />
+ </Setter.Value>
+ </Setter>
+ </Trigger>
+ <Trigger Property="IsDefaulted" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsFocused" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsEnabled" Value="False">
+ <Setter TargetName="border" Property="Opacity" Value="0.7" />
+ <Setter Property="Foreground" Value="Gray" />
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="DownButton" TargetType="Button">
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#EEE" Offset="0.4"/>
+ <GradientStop Color="#BBB" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Border
+ Name="border"
+ BorderThickness="1"
+ BorderBrush="#888"
+ CornerRadius="0,0,2,0"
+ Background="{TemplateBinding Background}">
+ <ContentPresenter
+ Name="content"
+ HorizontalAlignment="Center" VerticalAlignment="Center" />
+ </Border>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsMouseOver" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
+ <Setter Property="Foreground" Value="#FF4788c8" />
+ </Trigger>
+ <Trigger Property="IsPressed" Value="True">
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#CCC" Offset="0.4"/>
+ <GradientStop Color="#999" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter TargetName="content" Property="RenderTransform" >
+ <Setter.Value>
+ <TranslateTransform Y="1.0" />
+ </Setter.Value>
+ </Setter>
+ </Trigger>
+ <Trigger Property="IsDefaulted" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsFocused" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsEnabled" Value="False">
+ <Setter TargetName="border" Property="Opacity" Value="0.7" />
+ <Setter Property="Foreground" Value="Gray" />
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </UserControl.Resources>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+ <TextBox
+ Name="numberBox"
+ Grid.Column="0"
+ GotFocus="NumberBoxGotFocus"
+ LostFocus="NumberBoxLostFocus"
+ PreviewTextInput="NumberBoxPreviewTextInput"
+ PreviewKeyDown="NumberBoxPreviewKeyDown"
+ PreviewMouseDown="NumberBoxPreviewMouseDown"
+ PreviewMouseUp="NumberBoxPreviewMouseUp"
+ TextChanged="NumberBoxTextChanged"
+ VerticalContentAlignment="Center"/>
+ <Grid
+ Name="incrementButtonsGrid"
+ Grid.Column="1"
+ Width="16">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+ <Button
+ Style="{StaticResource UpButton}"
+ Grid.Row="0"
+ FontSize="4"
+ PreviewMouseLeftButtonDown="UpButtonMouseLeftButtonDown"
+ PreviewMouseLeftButtonUp="UpButtonMouseLeftButtonUp">
+ <Polygon
+ Style="{StaticResource Arrow}"
+ Points="4,0 0,4 8,4" />
+ </Button>
+ <Button
+ Style="{StaticResource DownButton}"
+ Grid.Row="1"
+ FontSize="4"
+ PreviewMouseLeftButtonDown="DownButtonMouseLeftButtonDown"
+ PreviewMouseLeftButtonUp="DownButtonMouseLeftButtonUp">
+ <Polygon
+ Style="{StaticResource Arrow}"
+ Points="0,0 8,0 4,4" />
+ </Button>
+ </Grid>
+ </Grid>
+</UserControl>
diff --git a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
new file mode 100644
index 000000000..5f983a699
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
@@ -0,0 +1,721 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="TimeSpanBox.xaml.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Interaction logic for TimeSpanBox.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Controls
+{
+ using System;
+ using System.Globalization;
+ using System.Linq;
+ using System.Windows;
+ using System.Windows.Controls;
+ using System.Windows.Input;
+ using System.Windows.Media;
+
+ /// <summary>
+ /// Interaction logic for TimeSpanBox.xaml
+ /// </summary>
+ public partial class TimeSpanBox
+ {
+ #region Constants and Fields
+
+ /// <summary>
+ /// The maximum property name.
+ /// </summary>
+ public const string MaximumPropertyName = "Maximum";
+
+ /// <summary>
+ /// The minimum property name.
+ /// </summary>
+ public const string MinimumPropertyName = "Minimum";
+
+ /// <summary>
+ /// The modulus property name.
+ /// </summary>
+ public const string ModulusPropertyName = "Modulus";
+
+ /// <summary>
+ /// The allow empty property.
+ /// </summary>
+ public static readonly DependencyProperty AllowEmptyProperty = DependencyProperty.Register(
+ "AllowEmpty", typeof(bool), typeof(TimeSpanBox), new PropertyMetadata(true, OnAllowEmptyChanged));
+
+ /// <summary>
+ /// The maximum property.
+ /// </summary>
+ public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register(
+ MaximumPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(int.MaxValue));
+
+ /// <summary>
+ /// The minimum property.
+ /// </summary>
+ public static readonly DependencyProperty MinimumProperty = DependencyProperty.Register(
+ MinimumPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(int.MinValue));
+
+ /// <summary>
+ /// The modulus property.
+ /// </summary>
+ public static readonly DependencyProperty ModulusProperty = DependencyProperty.Register(
+ ModulusPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(0));
+
+ /// <summary>
+ /// The number property.
+ /// </summary>
+ public static readonly DependencyProperty NumberProperty = DependencyProperty.Register(
+ "Number", typeof(int), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));
+
+ /// <summary>
+ /// The show time span property.
+ /// </summary>
+ public static readonly DependencyProperty ShowTimeSpanProperty = DependencyProperty.Register(
+ "ShowTimeSpan", typeof(bool), typeof(TimeSpanBox), new PropertyMetadata(OnShowTimeSpanChanged));
+
+ /// <summary>
+ /// The select all threshold.
+ /// </summary>
+ private static readonly TimeSpan SelectAllThreshold = TimeSpan.FromMilliseconds(500);
+
+ /// <summary>
+ /// The has focus.
+ /// </summary>
+ private bool hasFocus;
+
+ /// <summary>
+ /// The last focus mouse down.
+ /// </summary>
+ private DateTime lastFocusMouseDown;
+
+ /// <summary>
+ /// The none caption.
+ /// </summary>
+ private string noneCaption;
+
+ /// <summary>
+ /// The refire control.
+ /// </summary>
+ private RefireControl refireControl;
+
+ /// <summary>
+ /// The suppress refresh.
+ /// </summary>
+ private bool suppressRefresh;
+
+ #endregion
+
+ #region Constructors and Destructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TimeSpanBox"/> class.
+ /// </summary>
+ public TimeSpanBox()
+ {
+ this.noneCaption = "(none)";
+ this.UpdateBindingOnTextChange = true;
+ this.ShowIncrementButtons = true;
+ this.SelectAllOnClick = true;
+
+ this.InitializeComponent();
+
+ this.RefreshNumberBox();
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets or sets a value indicating whether show time span.
+ /// </summary>
+ public bool ShowTimeSpan
+ {
+ get
+ {
+ return (bool)this.GetValue(ShowTimeSpanProperty);
+ }
+
+ set
+ {
+ this.SetValue(ShowTimeSpanProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether allow empty.
+ /// </summary>
+ public bool AllowEmpty
+ {
+ get
+ {
+ return (bool)this.GetValue(AllowEmptyProperty);
+ }
+
+ set
+ {
+ this.SetValue(AllowEmptyProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the maximum.
+ /// </summary>
+ public int Maximum
+ {
+ get
+ {
+ return (int)this.GetValue(MaximumProperty);
+ }
+ set
+ {
+ this.SetValue(MaximumProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the minimum.
+ /// </summary>
+ public int Minimum
+ {
+ get
+ {
+ return (int)this.GetValue(MinimumProperty);
+ }
+ set
+ {
+ this.SetValue(MinimumProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the modulus.
+ /// </summary>
+ public int Modulus
+ {
+ get
+ {
+ return (int)this.GetValue(ModulusProperty);
+ }
+ set
+ {
+ this.SetValue(ModulusProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the none caption.
+ /// </summary>
+ public string NoneCaption
+ {
+ get
+ {
+ return this.noneCaption;
+ }
+
+ set
+ {
+ this.noneCaption = value;
+ this.RefreshNumberBox();
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the number.
+ /// </summary>
+ public int Number
+ {
+ get
+ {
+ return (int)this.GetValue(NumberProperty);
+ }
+
+ set
+ {
+ this.SetValue(NumberProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether select all on click.
+ /// </summary>
+ public bool SelectAllOnClick { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether show increment buttons.
+ /// </summary>
+ public bool ShowIncrementButtons { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether update binding on text change.
+ /// </summary>
+ public bool UpdateBindingOnTextChange { get; set; }
+
+ /// <summary>
+ /// Gets the increment.
+ /// </summary>
+ private int Increment
+ {
+ get
+ {
+ return this.Modulus > 0 ? this.Modulus : 1;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// The on allow empty changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnAllowEmptyChanged(
+ DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+ if (numBox != null)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+
+ /// <summary>
+ /// The on number changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnNumberChanged(
+ DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ if (eventArgs.NewValue != eventArgs.OldValue)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+
+ if (!numBox.suppressRefresh)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+ }
+
+ /// <summary>
+ /// The on show timespan number changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnShowTimeSpanChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ if (eventArgs.NewValue != eventArgs.OldValue)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+
+ if (!numBox.suppressRefresh)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+ }
+
+ /// <summary>
+ /// The decrement number.
+ /// </summary>
+ private void DecrementNumber()
+ {
+ int newNumber;
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ newNumber = Math.Min(this.Maximum, -this.Increment);
+ }
+ else
+ {
+ newNumber = this.Number - this.Increment;
+ }
+
+ if (newNumber < this.Minimum)
+ {
+ newNumber = this.Minimum;
+ }
+
+ if (newNumber != this.Number)
+ {
+ this.Number = newNumber;
+ }
+ }
+
+ /// <summary>
+ /// The down button mouse left button down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void DownButtonMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl = new RefireControl(this.DecrementNumber);
+ this.refireControl.Begin();
+ }
+
+ /// <summary>
+ /// The down button mouse left button up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void DownButtonMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl.Stop();
+ }
+
+ /// <summary>
+ /// The get nearest value.
+ /// </summary>
+ /// <param name="number">
+ /// The number.
+ /// </param>
+ /// <param name="modulus">
+ /// The modulus.
+ /// </param>
+ /// <returns>
+ /// The <see cref="double"/>.
+ /// </returns>
+ private int GetNearestValue(int number, int modulus)
+ {
+ int remainder = number % modulus;
+
+ if (remainder == 0)
+ {
+ return number;
+ }
+
+ return remainder >= (modulus / 2) ? number + (modulus - remainder) : number - remainder;
+ }
+
+ /// <summary>
+ /// The increment number.
+ /// </summary>
+ private void IncrementNumber()
+ {
+ int newNumber;
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ newNumber = Math.Max(this.Minimum, this.Increment);
+ }
+ else
+ {
+ newNumber = this.Number + this.Increment;
+ }
+
+ if (newNumber > this.Maximum)
+ {
+ newNumber = this.Maximum;
+ }
+
+ if (newNumber != this.Number)
+ {
+ this.Number = newNumber;
+ }
+ }
+
+ /// <summary>
+ /// The number box got focus.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxGotFocus(object sender, RoutedEventArgs e)
+ {
+ this.hasFocus = true;
+
+ if (this.AllowEmpty)
+ {
+ if (this.Number == 0)
+ {
+ this.numberBox.Text = string.Empty;
+ }
+
+ this.numberBox.Foreground = new SolidColorBrush(Colors.Black);
+ }
+ }
+
+ /// <summary>
+ /// The number box lost focus.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxLostFocus(object sender, RoutedEventArgs e)
+ {
+ this.hasFocus = false;
+
+ if (this.AllowEmpty && this.numberBox.Text == string.Empty)
+ {
+ this.Number = 0;
+ this.RefreshNumberBox();
+ return;
+ }
+
+ this.UpdateNumberBindingFromBox();
+ this.RefreshNumberBox();
+ }
+
+ /// <summary>
+ /// The number box preview key down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key == Key.Space)
+ {
+ e.Handled = true;
+ }
+ }
+
+ /// <summary>
+ /// The number box preview mouse down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ if (!this.hasFocus)
+ {
+ this.lastFocusMouseDown = DateTime.Now;
+ }
+ }
+
+ /// <summary>
+ /// The number box preview mouse up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ // If this mouse up is soon enough after an initial click on the box, select all.
+ if (this.SelectAllOnClick && DateTime.Now - this.lastFocusMouseDown < SelectAllThreshold)
+ {
+ this.Dispatcher.BeginInvoke(new Action(() => this.numberBox.SelectAll()));
+ }
+ }
+
+ /// <summary>
+ /// The number box preview text input.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewTextInput(object sender, TextCompositionEventArgs e)
+ {
+ if (e.Text.Any(c => !char.IsNumber(c) && c != '.' && c != ':' && (this.Minimum >= 0 || c != '-')))
+ {
+ e.Handled = true;
+ }
+ }
+
+ /// <summary>
+ /// The number box text changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxTextChanged(object sender, TextChangedEventArgs e)
+ {
+ if (this.UpdateBindingOnTextChange)
+ {
+ if (this.AllowEmpty && this.numberBox.Text == string.Empty)
+ {
+ this.Number = 0;
+ return;
+ }
+
+ this.UpdateNumberBindingFromBox();
+ }
+
+ this.RefreshNumberBoxColor();
+ }
+
+ /// <summary>
+ /// The number is valid.
+ /// </summary>
+ /// <param name="number">
+ /// The number.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ private bool NumberIsValid(double number)
+ {
+ return number >= this.Minimum && number <= this.Maximum;
+ }
+
+ /// <summary>
+ /// The refresh number box.
+ /// </summary>
+ private void RefreshNumberBox()
+ {
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ this.numberBox.Text = this.hasFocus ? string.Empty : this.NoneCaption;
+
+ // this.numberBox.Foreground = new SolidColorBrush(Colors.Gray);
+ }
+ else
+ {
+ if (this.ShowTimeSpan)
+ {
+ this.numberBox.Text = TimeSpan.FromSeconds(this.Number).ToString();
+ }
+ else
+ {
+ this.numberBox.Text = this.Number.ToString(CultureInfo.InvariantCulture);
+ }
+
+ // this.numberBox.Foreground = new SolidColorBrush(Colors.Black);
+ }
+
+ this.RefreshNumberBoxColor();
+ }
+
+ /// <summary>
+ /// The refresh number box color.
+ /// </summary>
+ private void RefreshNumberBoxColor()
+ {
+ this.numberBox.Foreground = this.numberBox.Text == this.NoneCaption ? new SolidColorBrush(Colors.Gray) : new SolidColorBrush(Colors.Black);
+ }
+
+ /// <summary>
+ /// The up button mouse left button down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UpButtonMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl = new RefireControl(this.IncrementNumber);
+ this.refireControl.Begin();
+ }
+
+ /// <summary>
+ /// The up button mouse left button up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UpButtonMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl.Stop();
+ }
+
+ /// <summary>
+ /// The update number binding from box.
+ /// </summary>
+ private void UpdateNumberBindingFromBox()
+ {
+ int newNumber;
+ TimeSpan newTimespanNumber;
+ if (int.TryParse(this.numberBox.Text, out newNumber))
+ {
+ if (this.NumberIsValid(newNumber))
+ {
+ if (this.Modulus != 0)
+ {
+ newNumber = this.GetNearestValue(newNumber, this.Modulus);
+ }
+
+ if (newNumber != this.Number)
+ {
+ // While updating the binding we don't need to react to the change.
+ this.suppressRefresh = true;
+ this.Number = newNumber;
+ this.suppressRefresh = false;
+ }
+ }
+ }
+ else if (TimeSpan.TryParse(this.numberBox.Text, out newTimespanNumber))
+ {
+ if (newTimespanNumber != TimeSpan.Zero)
+ {
+ int seconds = (int)Math.Round(newTimespanNumber.TotalSeconds, 0);
+ if (seconds != this.Number)
+ {
+ // While updating the binding we don't need to react to the change.
+ this.suppressRefresh = true;
+ this.Number = seconds;
+ this.suppressRefresh = false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// The user control_ loaded.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ if (!this.ShowIncrementButtons)
+ {
+ this.incrementButtonsGrid.Visibility = Visibility.Collapsed;
+ }
+ }
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs b/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs
new file mode 100644
index 000000000..f44e18a3e
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs
@@ -0,0 +1,81 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="InverseBooleanConverter.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The inverse boolean converter.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Converters
+{
+ using System;
+ using System.Globalization;
+ using System.Windows.Data;
+
+ /// <summary>
+ /// The inverse boolean converter.
+ /// </summary>
+ [ValueConversion(typeof(bool), typeof(bool))]
+ public class InverseBooleanConverter : IValueConverter
+ {
+ #region Implemented Interfaces
+
+ #region IValueConverter
+
+ /// <summary>
+ /// The convert.
+ /// </summary>
+ /// <param name="value">
+ /// The value.
+ /// </param>
+ /// <param name="targetType">
+ /// The target type.
+ /// </param>
+ /// <param name="parameter">
+ /// The parameter.
+ /// </param>
+ /// <param name="culture">
+ /// The culture.
+ /// </param>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (targetType != typeof(bool))
+ {
+ throw new InvalidOperationException("The target must be a boolean");
+ }
+
+ return !(bool)value;
+ }
+
+ /// <summary>
+ /// The convert back.
+ /// </summary>
+ /// <param name="value">
+ /// The value.
+ /// </param>
+ /// <param name="targetType">
+ /// The target type.
+ /// </param>
+ /// <param name="parameter">
+ /// The parameter.
+ /// </param>
+ /// <param name="culture">
+ /// The culture.
+ /// </param>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotSupportedException();
+ }
+
+ #endregion
+
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
index e11f8e8f9..c2214eee4 100644
--- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
+++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
@@ -129,6 +129,9 @@
<Compile Include="Commands\ProcessShortcutCommand.cs" />
<Compile Include="Commands\SourceMenuCommand.cs" />
<Compile Include="Commands\AdvancedEncoderOptionsCommand.cs" />
+ <Compile Include="Controls\TimeSpanBox.xaml.cs">
+ <DependentUpon>TimeSpanBox.xaml</DependentUpon>
+ </Compile>
<Compile Include="Controls\Loading.xaml.cs">
<DependentUpon>Loading.xaml</DependentUpon>
</Compile>
@@ -143,6 +146,7 @@
<Compile Include="Converters\Audio\AudioEncoderConverter.cs" />
<Compile Include="Converters\Audio\AudioQueueDisplayConverter.cs" />
<Compile Include="Converters\BooleanToHiddenVisibilityConverter.cs" />
+ <Compile Include="Converters\InverseBooleanConverter.cs" />
<Compile Include="Converters\Options\OptionsTabConverter.cs" />
<Compile Include="Converters\Options\OptionsTabNameConverter.cs" />
<Compile Include="Converters\Subtitles\SubtitlesQueueDisplayConverter.cs" />
@@ -150,6 +154,7 @@
<Compile Include="Helpers\GrayscaleImage.cs" />
<Compile Include="Helpers\GrowlCommunicator.cs" />
<Compile Include="Model\OptionsTab.cs" />
+ <Compile Include="Model\SelectionTitle.cs" />
<Compile Include="Services\DriveDetectService.cs" />
<Compile Include="Services\EncodeServiceWrapper.cs" />
<Compile Include="Services\Interfaces\IDriveDetectService.cs" />
@@ -162,6 +167,11 @@
<Compile Include="Services\NotificationService.cs" />
<Compile Include="Services\ScanServiceWrapper.cs" />
<Compile Include="Services\UpdateService.cs" />
+ <Compile Include="ViewModels\Interfaces\IQueueSelectionViewModel.cs" />
+ <Compile Include="ViewModels\QueueSelectionViewModel.cs" />
+ <Compile Include="Views\QueueSelectionView.xaml.cs">
+ <DependentUpon>QueueSelectionView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Views\ShellView.xaml.cs">
<DependentUpon>ShellView.xaml</DependentUpon>
</Compile>
@@ -304,6 +314,10 @@
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
+ <Page Include="Controls\TimeSpanBox.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Controls\Loading.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -316,6 +330,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Views\QueueSelectionView.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Views\ShellView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
diff --git a/win/CS/HandBrakeWPF/Model/SelectionTitle.cs b/win/CS/HandBrakeWPF/Model/SelectionTitle.cs
new file mode 100644
index 000000000..63ad47793
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Model/SelectionTitle.cs
@@ -0,0 +1,88 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SelectionTitle.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// TODO: Update summary.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Model
+{
+ using Caliburn.Micro;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ /// <summary>
+ /// A model for the multiple selection window for adding to the queue.
+ /// </summary>
+ public class SelectionTitle : PropertyChangedBase
+ {
+ /// <summary>
+ /// The source name.
+ /// </summary>
+ private readonly string sourceName;
+
+ /// <summary>
+ /// The is selected.
+ /// </summary>
+ private bool isSelected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SelectionTitle"/> class.
+ /// </summary>
+ /// <param name="title">
+ /// The title.
+ /// </param>
+ /// <param name="sourceName">
+ /// The source Name.
+ /// </param>
+ public SelectionTitle(Title title, string sourceName)
+ {
+ this.sourceName = sourceName;
+ this.Title = title;
+ }
+
+ /// <summary>
+ /// Gets the source name.
+ /// </summary>
+ public string SourceName
+ {
+ get
+ {
+ return !string.IsNullOrEmpty(Title.SourceName) ? Title.SourceName : sourceName;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the end point.
+ /// </summary>
+ public int EndPoint { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether is selected.
+ /// </summary>
+ public bool IsSelected
+ {
+ get
+ {
+ return this.isSelected;
+ }
+ set
+ {
+ this.isSelected = value;
+ this.NotifyOfPropertyChange(() => this.IsSelected);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the start point.
+ /// </summary>
+ public int StartPoint { get; set; }
+
+ /// <summary>
+ /// Gets or sets the title.
+ /// </summary>
+ public Title Title { get; set; }
+ }
+} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
index 5adc38011..e2ccbcbda 100644
--- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
+++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
@@ -216,7 +216,7 @@ namespace HandBrakeWPF.Properties {
/// <summary>
/// Looks up a localized string similar to This is the distance x264 searches from its best guess at the motion of a block in order to try to find its actual motion.
- ///Doesn&apos;t apply to Diamond or Hexagon search options.
+ ///
///The default is fine for most content, but extremely high motion video, especially at HD resolutions, may benefit from higher ranges, albeit at a high speed cost..
/// </summary>
public static string Advanced_MotionEstimationRangeToolTip {
@@ -237,6 +237,19 @@ namespace HandBrakeWPF.Properties {
}
/// <summary>
+ /// Looks up a localized string similar to The x264 Preset / Tune / Profile and Level options are currently in use on the Video Tab.
+ ///
+ ///To enable this tab, check the &quot;Use Advanced Tab instead&quot; option on the Video Tab.
+ ///
+ ///If you do not use this tab, it can be hidden from: Tools Menu &gt; Options &gt; Advanced..
+ /// </summary>
+ public static string Advanced_NotInUse {
+ get {
+ return ResourceManager.GetString("Advanced_NotInUse", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Psychovisual Rate Distortion means x264 tries to retain detail, for better quality to the human eye,
///as opposed to trying to maximize quality the way a computer understands it, through signal-to-noise ratios that have trouble telling apart fine detail and noise..
/// </summary>
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx
index 6148d29c6..b39ace5a5 100644
--- a/win/CS/HandBrakeWPF/Properties/Resources.resx
+++ b/win/CS/HandBrakeWPF/Properties/Resources.resx
@@ -178,7 +178,7 @@ Transformed Exhaustive: Like exhaustive, but makes even more accurate decisions.
</data>
<data name="Advanced_MotionEstimationRangeToolTip" xml:space="preserve">
<value>This is the distance x264 searches from its best guess at the motion of a block in order to try to find its actual motion.
-Doesn't apply to Diamond or Hexagon search options.
+
The default is fine for most content, but extremely high motion video, especially at HD resolutions, may benefit from higher ranges, albeit at a high speed cost.</value>
</data>
<data name="Advanced_NoDctDecimateToolTip" xml:space="preserve">
@@ -321,4 +321,11 @@ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</value>
</data>
+ <data name="Advanced_NotInUse" xml:space="preserve">
+ <value>The x264 Preset / Tune / Profile and Level options are currently in use on the Video Tab.
+
+To enable this tab, check the "Use Advanced Tab instead" option on the Video Tab.
+
+If you do not use this tab, it can be hidden from: Tools Menu &gt; Options &gt; Advanced.</value>
+ </data>
</root> \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs
index 5b06c97ba..97930ba4d 100644
--- a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs
+++ b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs
@@ -78,6 +78,8 @@ namespace HandBrakeWPF.Startup
this.windsorContainer.Register(Component.For<IOptionsViewModel>().ImplementedBy<OptionsViewModel>().LifeStyle.Is(LifestyleType.Singleton));
this.windsorContainer.Register(Component.For<IUpdateVersionService>().ImplementedBy<UpdateVersionService>().LifeStyle.Is(LifestyleType.Singleton));
this.windsorContainer.Register(Component.For<ITitleSpecificViewModel>().ImplementedBy<TitleSpecificViewModel>().LifeStyle.Is(LifestyleType.Singleton));
+ this.windsorContainer.Register(Component.For<IQueueSelectionViewModel>().ImplementedBy<QueueSelectionViewModel>().LifeStyle.Is(LifestyleType.Singleton));
+
// Tab Components
this.windsorContainer.Register(Component.For<IAudioViewModel>().ImplementedBy<AudioViewModel>().LifeStyle.Is(LifestyleType.Singleton));
diff --git a/win/CS/HandBrakeWPF/UserSettingConstants.cs b/win/CS/HandBrakeWPF/UserSettingConstants.cs
index 01fcea409..f0414ef6b 100644
--- a/win/CS/HandBrakeWPF/UserSettingConstants.cs
+++ b/win/CS/HandBrakeWPF/UserSettingConstants.cs
@@ -216,6 +216,11 @@ namespace HandBrakeWPF
/// </summary>
public const string ShowAdvancedTab = "ShowAdvancedTab";
+ /// <summary>
+ /// The last preview duration
+ /// </summary>
+ public const string LastPreviewDuration = "LastPreviewDuration";
+
#endregion
}
} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs
index 741f31876..1c0f9de67 100644
--- a/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs
@@ -172,6 +172,9 @@ namespace HandBrakeWPF.ViewModels
/// <summary>
/// Initializes a new instance of the <see cref="AdvancedViewModel"/> class.
/// </summary>
+ /// <param name="advancedEncoderOptionsCommand">
+ /// The advanced Encoder Options Command.
+ /// </param>
public AdvancedViewModel(IAdvancedEncoderOptionsCommand advancedEncoderOptionsCommand)
{
this.advancedEncoderOptionsCommand = advancedEncoderOptionsCommand;
@@ -179,11 +182,34 @@ namespace HandBrakeWPF.ViewModels
this.UpdateUIFromAdvancedOptions();
}
+ /// <summary>
+ /// The task object property changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The PropertyChangedEventArgs.
+ /// </param>
+ private void Task_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == UserSettingConstants.ShowAdvancedTab)
+ {
+ ShowX264AdvancedOptions = this.Task.ShowAdvancedTab;
+ this.NotifyOfPropertyChange(() => ShowX264AdvancedOptions);
+ }
+ }
+
#endregion
#region Properties
/// <summary>
+ /// Gets or sets a value indicating whether show x 264 advanced options.
+ /// </summary>
+ public bool ShowX264AdvancedOptions { get; set; }
+
+ /// <summary>
/// Gets or sets a value indicating whether DisplayX264Options.
/// </summary>
public bool? DisplayX264Options
@@ -195,7 +221,19 @@ namespace HandBrakeWPF.ViewModels
set
{
this.displayX264Options = value;
+
+ if (this.displayX264Options == false)
+ {
+ this.ShowX264AdvancedOptions = false;
+ }
+
+ if (this.displayX264Options == true && this.Task.ShowAdvancedTab)
+ {
+ this.ShowX264AdvancedOptions = true;
+ }
+
this.NotifyOfPropertyChange(() => this.DisplayX264Options);
+ this.NotifyOfPropertyChange(() => this.ShowX264AdvancedOptions);
}
}
@@ -959,7 +997,9 @@ namespace HandBrakeWPF.ViewModels
/// </param>
public void SetPreset(Preset preset, EncodeTask task)
{
+ this.Task.PropertyChanged -= this.Task_PropertyChanged;
this.Task = task;
+ this.Task.PropertyChanged += this.Task_PropertyChanged;
this.AdvancedOptionsString = preset.Task.AdvancedEncoderOptions;
}
diff --git a/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs
index 69a8a5d05..4276b97a4 100644
--- a/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs
@@ -274,7 +274,7 @@ namespace HandBrakeWPF.ViewModels
foreach (Chapter chapter in this.SourceChapterList)
{
string chapterName = string.IsNullOrEmpty(chapter.ChapterName) ? string.Format("Chapter {0}", counter) : chapter.ChapterName;
- var marker = new ChapterMarker(chapter.ChapterNumber, chapterName);
+ var marker = new ChapterMarker(chapter.ChapterNumber, chapterName, chapter.Duration);
this.Task.ChapterNames.Add(marker);
counter += 1;
diff --git a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs
new file mode 100644
index 000000000..36a64846a
--- /dev/null
+++ b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs
@@ -0,0 +1,40 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="IQueueSelectionViewModel.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The Queue Selection View Model Interface
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.ViewModels.Interfaces
+{
+ using System.Collections.Generic;
+ using System.ComponentModel;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ using HandBrakeWPF.Model;
+
+ /// <summary>
+ /// The Add Preset View Model
+ /// </summary>
+ public interface IQueueSelectionViewModel
+ {
+ /// <summary>
+ /// Gets the selected titles.
+ /// </summary>
+ BindingList<SelectionTitle> TitleList { get; }
+
+ /// <summary>
+ /// The setup.
+ /// </summary>
+ /// <param name="scannedSource">
+ /// The scanned source.
+ /// </param>
+ /// <param name="sourceName">
+ /// The source Name.
+ /// </param>
+ void Setup(Source scannedSource, string sourceName);
+ }
+}
diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
index ad09f3043..fe52f88ce 100644
--- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
@@ -221,6 +221,7 @@ namespace HandBrakeWPF.ViewModels
// Setup Properties
this.WindowTitle = "HandBrake";
this.CurrentTask = new EncodeTask();
+ this.CurrentTask.PropertyChanged += this.CurrentTask_PropertyChanged;
this.ScannedSource = new Source();
// Setup Events
@@ -231,6 +232,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.QueueCompleted += this.QueueCompleted;
this.queueProcessor.QueueChanged += this.QueueChanged;
this.queueProcessor.EncodeService.EncodeStatusChanged += this.EncodeStatusChanged;
+ this.userSettingService.SettingChanged += this.UserSettingServiceSettingChanged;
this.Presets = this.presetService.Presets;
this.CancelScanCommand = new CancelScanCommand(this.scanService);
@@ -448,6 +450,12 @@ namespace HandBrakeWPF.ViewModels
{
get
{
+ // Sanity Check
+ if (ScannedSource == null || ScannedSource.ScanPath == null)
+ {
+ return string.Empty;
+ }
+
// The title that is selected has a source name. This means it's part of a batch scan.
if (selectedTitle != null && !string.IsNullOrEmpty(selectedTitle.SourceName))
{
@@ -597,7 +605,7 @@ namespace HandBrakeWPF.ViewModels
set
{
this.isMkv = value;
- this.NotifyOfPropertyChange("IsMkv");
+ this.NotifyOfPropertyChange(() => this.IsMkv);
}
}
@@ -737,6 +745,7 @@ namespace HandBrakeWPF.ViewModels
{
return this.CurrentTask.StartPoint;
}
+
set
{
this.CurrentTask.Angle = value;
@@ -745,6 +754,11 @@ namespace HandBrakeWPF.ViewModels
}
/// <summary>
+ /// Gets or sets a value indicating whether is timespan range.
+ /// </summary>
+ public bool IsTimespanRange { get; set; }
+
+ /// <summary>
/// Gets or sets SelectedStartPoint.
/// </summary>
public int SelectedStartPoint
@@ -759,7 +773,7 @@ namespace HandBrakeWPF.ViewModels
this.NotifyOfPropertyChange(() => this.SelectedStartPoint);
this.Duration = this.DurationCalculation();
- if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming))
+ if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming) && this.ScannedSource.ScanPath != null)
{
this.Destination = AutoNameHelper.AutoName(this.CurrentTask, this.SourceName);
}
@@ -781,7 +795,7 @@ namespace HandBrakeWPF.ViewModels
this.NotifyOfPropertyChange(() => this.SelectedEndPoint);
this.Duration = this.DurationCalculation();
- if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming))
+ if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming) && this.ScannedSource.ScanPath != null)
{
this.Destination = AutoNameHelper.AutoName(this.CurrentTask, this.SourceName);
}
@@ -805,21 +819,41 @@ namespace HandBrakeWPF.ViewModels
if (value == PointToPointMode.Chapters && this.SelectedTitle != null)
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
+
this.SelectedStartPoint = 1;
this.SelectedEndPoint = selectedTitle.Chapters.Last().ChapterNumber;
}
else if (value == PointToPointMode.Seconds)
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
+
this.SelectedStartPoint = 0;
int timeInSeconds;
if (int.TryParse(selectedTitle.Duration.TotalSeconds.ToString(CultureInfo.InvariantCulture), out timeInSeconds))
{
this.SelectedEndPoint = timeInSeconds;
- }
+ }
+
+ this.IsTimespanRange = true;
+ this.NotifyOfPropertyChange(() => this.IsTimespanRange);
}
else
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
// Note this does not account for VFR. It's only a guesstimate.
double estimatedTotalFrames = selectedTitle.Fps * selectedTitle.Duration.TotalSeconds;
@@ -829,6 +863,9 @@ namespace HandBrakeWPF.ViewModels
{
this.SelectedEndPoint = totalFrames;
}
+
+ this.IsTimespanRange = false;
+ this.NotifyOfPropertyChange(() => this.IsTimespanRange);
}
}
}
@@ -927,6 +964,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.QueueChanged -= this.QueueChanged;
this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;
this.queueProcessor.EncodeService.EncodeStatusChanged -= this.EncodeStatusChanged;
+ this.userSettingService.SettingChanged -= this.UserSettingServiceSettingChanged;
}
#endregion
@@ -1073,6 +1111,38 @@ namespace HandBrakeWPF.ViewModels
}
/// <summary>
+ /// The add selection to queue.
+ /// </summary>
+ public void AddSelectionToQueue()
+ {
+ if (this.ScannedSource == null || this.ScannedSource.Titles == null || this.ScannedSource.Titles.Count == 0)
+ {
+ this.errorService.ShowMessageBox("You must first scan a source and setup your job before adding to the queue.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ if (!AutoNameHelper.IsAutonamingEnabled())
+ {
+ this.errorService.ShowMessageBox("You must turn on automatic file naming in preferences before you can add to the queue.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ Window window = Application.Current.Windows.Cast<Window>().FirstOrDefault(x => x.GetType() == typeof(QueueSelectionViewModel));
+ IQueueSelectionViewModel viewModel = IoC.Get<IQueueSelectionViewModel>();
+
+ viewModel.Setup(this.ScannedSource, this.SourceName);
+
+ if (window != null)
+ {
+ window.Activate();
+ }
+ else
+ {
+ this.WindowManager.ShowWindow(viewModel);
+ }
+ }
+
+ /// <summary>
/// Folder Scan
/// </summary>
public void FolderScan()
@@ -1521,15 +1591,20 @@ namespace HandBrakeWPF.ViewModels
this.NotifyOfPropertyChange(() => this.ScannedSource.Titles);
// Select the Users Title
- this.CurrentTask = new EncodeTask(queueEditTask);
- this.NotifyOfPropertyChange(() => this.CurrentTask);
this.SelectedTitle = this.ScannedSource.Titles.FirstOrDefault(t => t.TitleNumber == this.CurrentTask.Title);
-
- // Update the Main UI control Area (TODO)
this.CurrentTask = new EncodeTask(queueEditTask);
this.NotifyOfPropertyChange(() => this.CurrentTask);
- // Update the Tab Controls (TODO)
+ // Update the Main Window
+ this.NotifyOfPropertyChange(() => this.Destination);
+ this.NotifyOfPropertyChange(() => this.SelectedStartPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedEndPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedAngle);
+ this.NotifyOfPropertyChange(() => this.SelectedPointToPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedOutputFormat);
+ this.NotifyOfPropertyChange(() => IsMkv);
+
+ // Update the Tab Controls
this.PictureSettingsViewModel.UpdateTask(this.CurrentTask);
this.VideoViewModel.UpdateTask(this.CurrentTask);
this.FiltersViewModel.UpdateTask(this.CurrentTask);
@@ -1538,8 +1613,23 @@ namespace HandBrakeWPF.ViewModels
this.ChaptersViewModel.UpdateTask(this.CurrentTask);
this.AdvancedViewModel.UpdateTask(this.CurrentTask);
+ // Tell the Preivew Window
+ IPreviewViewModel viewModel = IoC.Get<IPreviewViewModel>();
+ viewModel.Task = this.CurrentTask;
+
// Cleanup
this.ShowStatusWindow = false;
+
+ if (this.SelectedTitle != null && !string.IsNullOrEmpty(this.SelectedTitle.SourceName))
+ {
+ this.SourceLabel = this.SelectedTitle.SourceName;
+ }
+ else
+ {
+ this.SourceLabel = this.SourceName;
+ }
+
+ this.StatusLabel = "Scan Completed";
});
}
@@ -1648,6 +1738,7 @@ namespace HandBrakeWPF.ViewModels
this.ProgramStatusLabel = "A New Update is Available. Goto Tools Menu > Options to Install";
}
}
+
#endregion
#region Event Handlers
@@ -1921,6 +2012,41 @@ namespace HandBrakeWPF.ViewModels
Caliburn.Micro.Execute.OnUIThread(() => this.SourceMenu = this.GenerateSourceMenu());
}
+ /// <summary>
+ /// Allows the main window to respond to setting changes.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserSettingServiceSettingChanged(object sender, HandBrake.ApplicationServices.EventArgs.SettingChangedEventArgs e)
+ {
+ if (e.Key == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+
+ /// <summary>
+ /// Handle the property changed event of the encode task.
+ /// Allows the main window to respond to changes.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void CurrentTask_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+
#endregion
}
} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs
index d917c20c8..7ebb88619 100644
--- a/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs
@@ -95,6 +95,7 @@ namespace HandBrakeWPF.ViewModels
this.Duration = 30;
UseSystemDefaultPlayer = userSettingService.GetUserSetting<bool>(UserSettingConstants.DefaultPlayer);
+ this.Duration = userSettingService.GetUserSetting<int>(UserSettingConstants.LastPreviewDuration);
}
#endregion
@@ -113,7 +114,7 @@ namespace HandBrakeWPF.ViewModels
{
get
{
- return new List<int> { 10, 30, 45, 60, 75, 90, 105, 120 };
+ return new List<int> { 5, 10, 30, 45, 60, 75, 90, 105, 120 };
}
}
@@ -381,6 +382,7 @@ namespace HandBrakeWPF.ViewModels
this.encodeService.EncodeStatusChanged += this.encodeService_EncodeStatusChanged;
this.encodeService.Start((QueueTask)state, false);
+ this.userSettingService.SetUserSetting(UserSettingConstants.LastPreviewDuration, this.Duration);
}
#endregion
diff --git a/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs
new file mode 100644
index 000000000..c5b6072cc
--- /dev/null
+++ b/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs
@@ -0,0 +1,198 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueSelectionViewModel.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The Queue Selection View Model
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.ViewModels
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel;
+ using System.Linq;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ using HandBrakeWPF.Model;
+ using HandBrakeWPF.Services.Interfaces;
+ using HandBrakeWPF.ViewModels.Interfaces;
+
+ /// <summary>
+ /// The Queue Selection View Model
+ /// </summary>
+ public class QueueSelectionViewModel : ViewModelBase, IQueueSelectionViewModel
+ {
+ /// <summary>
+ /// The error service.
+ /// </summary>
+ private readonly IErrorService errorService;
+
+ /// <summary>
+ /// The ordered by duration.
+ /// </summary>
+ private bool orderedByDuration;
+
+ /// <summary>
+ /// The ordered by title.
+ /// </summary>
+ private bool orderedByTitle;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="QueueSelectionViewModel"/> class.
+ /// </summary>
+ /// <param name="errorService">
+ /// The Error Service
+ /// </param>
+ public QueueSelectionViewModel(IErrorService errorService)
+ {
+ this.errorService = errorService;
+ this.Title = "Add to Queue";
+ this.TitleList = new BindingList<SelectionTitle>();
+ this.OrderedByTitle = true;
+ }
+
+ /// <summary>
+ /// Gets or sets the source.
+ /// </summary>
+ public string Source { get; set; }
+
+ /// <summary>
+ /// Gets or sets the selected titles.
+ /// </summary>
+ public BindingList<SelectionTitle> TitleList { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether ordered by title.
+ /// </summary>
+ public bool OrderedByTitle
+ {
+ get
+ {
+ return this.orderedByTitle;
+ }
+
+ set
+ {
+ this.orderedByTitle = value;
+ this.NotifyOfPropertyChange(() => OrderedByTitle);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether ordered by duration.
+ /// </summary>
+ public bool OrderedByDuration
+ {
+ get
+ {
+ return this.orderedByDuration;
+ }
+
+ set
+ {
+ this.orderedByDuration = value;
+ this.NotifyOfPropertyChange(() => OrderedByDuration);
+ }
+ }
+
+ /// <summary>
+ /// The order by title.
+ /// </summary>
+ public void OrderByTitle()
+ {
+ TitleList = new BindingList<SelectionTitle>(TitleList.OrderBy(o => o.Title.TitleNumber).ToList());
+ this.NotifyOfPropertyChange(() => TitleList);
+ this.OrderedByTitle = true;
+ this.OrderedByDuration = false;
+ }
+
+ /// <summary>
+ /// The order by duration.
+ /// </summary>
+ public void OrderByDuration()
+ {
+ TitleList = new BindingList<SelectionTitle>(TitleList.OrderByDescending(o => o.Title.Duration).ToList());
+ this.NotifyOfPropertyChange(() => TitleList);
+ this.OrderedByTitle = false;
+ this.OrderedByDuration = true;
+ }
+
+ /// <summary>
+ /// The select all.
+ /// </summary>
+ public void SelectAll()
+ {
+ foreach (var item in TitleList)
+ {
+ item.IsSelected = true;
+ }
+ }
+
+ /// <summary>
+ /// The select all.
+ /// </summary>
+ public void UnSelectAll()
+ {
+ foreach (var item in TitleList)
+ {
+ item.IsSelected = false;
+ }
+ }
+
+ /// <summary>
+ /// Add a Preset
+ /// </summary>
+ public void Add()
+ {
+ this.Close();
+ }
+
+ /// <summary>
+ /// Cancel adding a preset
+ /// </summary>
+ public void Cancel()
+ {
+ this.TitleList.Clear();
+ this.Close();
+ }
+
+ /// <summary>
+ /// Close this window.
+ /// </summary>
+ public void Close()
+ {
+ this.TryClose();
+ }
+
+ /// <summary>
+ /// The setup.
+ /// </summary>
+ /// <param name="scannedSource">
+ /// The scanned source.
+ /// </param>
+ /// <param name="srcName">
+ /// The src Name.
+ /// </param>
+ public void Setup(Source scannedSource, string srcName)
+ {
+ this.TitleList.Clear();
+
+ if (scannedSource != null)
+ {
+
+ IEnumerable<Title> titles = orderedByTitle
+ ? scannedSource.Titles
+ : scannedSource.Titles.OrderByDescending(o => o.Duration).ToList();
+
+ foreach (Title item in titles)
+ {
+ SelectionTitle title = new SelectionTitle(item, srcName);
+ TitleList.Add(title);
+ }
+ }
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
index a3998be21..4f344db08 100644
--- a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
@@ -11,6 +11,7 @@ namespace HandBrakeWPF.ViewModels
{
using System;
using System.Collections.ObjectModel;
+ using System.ComponentModel;
using System.Windows;
using Caliburn.Micro;
@@ -30,6 +31,13 @@ namespace HandBrakeWPF.ViewModels
/// </summary>
public class QueueViewModel : ViewModelBase, IQueueViewModel
{
+ /*
+
+ * TODO FIX THE DRAP/DROP ADORNER!
+ */
+
+
+
#region Constants and Fields
/// <summary>
@@ -152,17 +160,6 @@ namespace HandBrakeWPF.ViewModels
}
/// <summary>
- /// Gets QueueJobs.
- /// </summary>
- public ObservableCollection<QueueTask> QueueJobs
- {
- get
- {
- return this.queueProcessor.Queue;
- }
- }
-
- /// <summary>
/// Gets or sets WhenDoneAction.
/// </summary>
public string WhenDoneAction
@@ -178,6 +175,17 @@ namespace HandBrakeWPF.ViewModels
}
}
+ /// <summary>
+ /// Gets the queue tasks.
+ /// </summary>
+ public BindingList<QueueTask> QueueTasks
+ {
+ get
+ {
+ return this.queueProcessor.Queue;
+ }
+ }
+
#endregion
#region Public Methods
@@ -270,8 +278,6 @@ namespace HandBrakeWPF.ViewModels
{
this.queueProcessor.Remove(task);
}
-
- this.JobsPending = string.Format("{0} jobs pending", this.queueProcessor.Count);
}
/// <summary>
@@ -408,16 +414,19 @@ namespace HandBrakeWPF.ViewModels
private void EncodeService_EncodeStatusChanged(
object sender, EncodeProgressEventArgs e)
{
- this.JobStatus =
- string.Format(
- "Encoding: Pass {0} of {1}, {2:00.00}%, FPS: {3:000.0}, Avg FPS: {4:000.0}, Time Remaining: {5}, Elapsed: {6:hh\\:mm\\:ss}",
- e.Task,
- e.TaskCount,
- e.PercentComplete,
- e.CurrentFrameRate,
- e.AverageFrameRate,
- e.EstimatedTimeLeft,
- e.ElapsedTime);
+ if (this.IsEncoding)
+ {
+ this.JobStatus =
+ string.Format(
+ "Encoding: Pass {0} of {1}, {2:00.00}%, FPS: {3:000.0}, Avg FPS: {4:000.0}, Time Remaining: {5}, Elapsed: {6:hh\\:mm\\:ss}",
+ e.Task,
+ e.TaskCount,
+ e.PercentComplete,
+ e.CurrentFrameRate,
+ e.AverageFrameRate,
+ e.EstimatedTimeLeft,
+ e.ElapsedTime);
+ }
}
/// <summary>
diff --git a/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs
index 6164e3603..a59105084 100644
--- a/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs
@@ -27,6 +27,7 @@ namespace HandBrakeWPF.ViewModels
using HandBrake.Interop.Model.Encoding.x264;
using HandBrakeWPF.Commands.Interfaces;
+ using HandBrakeWPF.Model;
using HandBrakeWPF.ViewModels.Interfaces;
/// <summary>
@@ -95,6 +96,11 @@ namespace HandBrakeWPF.ViewModels
/// </summary>
private bool canClear;
+ /// <summary>
+ /// The use advanced tab.
+ /// </summary>
+ private bool useAdvancedTab;
+
#endregion
#region Constructors and Destructors
@@ -122,6 +128,8 @@ namespace HandBrakeWPF.ViewModels
H264Profiles = EnumHelper<x264Profile>.GetEnumList();
X264Tunes = EnumHelper<x264Tune>.GetEnumList().Where(t => t != x264Tune.Fastdecode);
this.H264Levels = Levels;
+
+ this.userSettingService.SettingChanged += this.UserSettingServiceSettingChanged;
}
#endregion
@@ -134,6 +142,44 @@ namespace HandBrakeWPF.ViewModels
public EncodeTask Task { get; set; }
/// <summary>
+ /// Gets a value indicating whether show advanced tab.
+ /// </summary>
+ public bool ShowAdvancedTab
+ {
+ get
+ {
+ bool showAdvTabSetting =
+ this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowAdvancedTab);
+ if (!showAdvTabSetting)
+ {
+ this.UseAdvancedTab = false;
+ }
+
+ return showAdvTabSetting;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether use video tab.
+ /// </summary>
+ public bool UseAdvancedTab
+ {
+ get
+ {
+ return this.useAdvancedTab;
+ }
+ set
+ {
+ if (!object.Equals(value, this.useAdvancedTab))
+ {
+ this.useAdvancedTab = value;
+ this.Task.ShowAdvancedTab = value;
+ this.NotifyOfPropertyChange(() => this.UseAdvancedTab);
+ }
+ }
+ }
+
+ /// <summary>
/// Gets Framerates.
/// </summary>
public IEnumerable<string> Framerates
@@ -335,6 +381,9 @@ namespace HandBrakeWPF.ViewModels
}
}
+ /// <summary>
+ /// Gets the rfqp.
+ /// </summary>
public string Rfqp
{
get
@@ -729,6 +778,8 @@ namespace HandBrakeWPF.ViewModels
this.H264Level = preset.Task.VideoEncoder == VideoEncoder.X264 ? preset.Task.H264Level : "Auto";
this.FastDecode = preset.Task.VideoEncoder == VideoEncoder.X264 && preset.Task.FastDecode;
this.ExtraArguments = preset.Task.ExtraAdvancedArguments;
+
+ this.UseAdvancedTab = !string.IsNullOrEmpty(preset.Task.AdvancedEncoderOptions) && this.ShowAdvancedTab;
}
}
@@ -866,5 +917,22 @@ namespace HandBrakeWPF.ViewModels
// TODO figure out what is wrong with this??
return HandBrakeUtils.CreateX264OptionsString(preset, tunes, this.ExtraArguments, profile, this.H264Level, width, height);
}
+
+ /// <summary>
+ /// The user setting service_ setting changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserSettingServiceSettingChanged(object sender, HandBrake.ApplicationServices.EventArgs.SettingChangedEventArgs e)
+ {
+ if (e.Key == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
}
} \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs b/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs
index 91968fdc0..d3485d2c0 100644
--- a/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs
+++ b/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs
@@ -3,7 +3,7 @@
// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
// </copyright>
// <summary>
-// Interaction logic for VideoView.xaml
+// Interaction logic for AddPresetView.xaml
// </summary>
// --------------------------------------------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace HandBrakeWPF.Views
using System.Windows;
/// <summary>
- /// Interaction logic for VideoView.xaml
+ /// Interaction logic for AddPresetView.xaml
/// </summary>
public partial class AddPresetView : Window
{
diff --git a/win/CS/HandBrakeWPF/Views/AdvancedView.xaml b/win/CS/HandBrakeWPF/Views/AdvancedView.xaml
index 785102cd2..b0b7698d2 100644
--- a/win/CS/HandBrakeWPF/Views/AdvancedView.xaml
+++ b/win/CS/HandBrakeWPF/Views/AdvancedView.xaml
@@ -42,7 +42,7 @@
VerticalAlignment="Center"
FontWeight="Bold"
Text="x264 Encoder Options:"
- Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
/>
<TextBox Grid.Row="3"
@@ -54,7 +54,7 @@
Text="{Binding AdvancedOptionsString,
UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
- Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
/>
<StackPanel Orientation="Vertical">
@@ -80,7 +80,11 @@
</Grid>
<!-- X264 -->
- <Grid Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}">
+ <TextBlock Text="{x:Static Properties:Resources.Advanced_NotInUse}"
+ TextWrapping="Wrap" Width="480" Margin="0, 100, 0, 0" FontSize="12"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=true}" />
+
+ <Grid Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
diff --git a/win/CS/HandBrakeWPF/Views/AudioView.xaml b/win/CS/HandBrakeWPF/Views/AudioView.xaml
index af5b81514..c63346642 100644
--- a/win/CS/HandBrakeWPF/Views/AudioView.xaml
+++ b/win/CS/HandBrakeWPF/Views/AudioView.xaml
@@ -9,6 +9,7 @@
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
d:DesignHeight="170"
d:DesignWidth="616"
mc:Ignorable="d">
@@ -265,6 +266,7 @@
Visibility="{Binding IsPassthru,
Converter={StaticResource boolToVisConverter},
ConverterParameter=true}" />
+
<NumericUpDown:NumericUpDown Name="drcNumericCtl"
Grid.Row="1"
Grid.Column="3"
diff --git a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml
index c6cefb35e..a5fa6a6da 100644
--- a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml
+++ b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml
@@ -38,7 +38,8 @@
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
- <DataGridTextColumn Header="Chapter Number" Width="150" Binding="{Binding ChapterNumber}" IsReadOnly="True" />
+ <DataGridTextColumn Header="Chapter Number" Width="120" Binding="{Binding ChapterNumber}" IsReadOnly="True" />
+ <DataGridTextColumn Header="Duration" Width="100" Binding="{Binding Duration}" IsReadOnly="True" />
<DataGridTextColumn Header="Chapter Name" Width="*" Binding="{Binding ChapterName}" IsReadOnly="False" />
</DataGrid.Columns>
</DataGrid>
diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml b/win/CS/HandBrakeWPF/Views/MainView.xaml
index 0f85a2b73..1a020b603 100644
--- a/win/CS/HandBrakeWPF/Views/MainView.xaml
+++ b/win/CS/HandBrakeWPF/Views/MainView.xaml
@@ -269,6 +269,7 @@
</StackPanel>
</MenuItem.Header>
<MenuItem Header="Add All" Micro:Message.Attach="[Event Click] = [Action AddAllToQueue]" />
+ <!--<MenuItem Header="Add Selection" Micro:Message.Attach="[Event Click] = [Action AddSelectionToQueue]" />-->
</MenuItem>
</Menu>
@@ -370,14 +371,13 @@
Converter={StaticResource boolToVisConverter},
ConverterParameter=true}"
/>
- <TextBox Name="StartPointText"
- MinWidth="60"
- Margin="8,0,0,0"
- Text="{Binding SelectedStartPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
- Visibility="{Binding ShowTextEntryForPointToPointMode,
- Converter={StaticResource boolToVisConverter},
- ConverterParameter=false}"
- />
+ <Controls:TimeSpanBox Number="{Binding SelectedStartPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+ Minimum="0" AllowEmpty="False" ShowTimeSpan="{Binding IsTimespanRange}"
+ MinWidth="80" Margin="8,0,0,0" Visibility="{Binding ShowTextEntryForPointToPointMode,
+ Converter={StaticResource boolToVisConverter},
+ ConverterParameter=false}"
+ />
+
<Label Margin="8,0,0,0" Content="through" />
<ComboBox Name="EndPoint"
MinWidth="60"
@@ -388,14 +388,13 @@
Converter={StaticResource boolToVisConverter},
ConverterParameter=true}"
/>
- <TextBox Name="EndPointText"
- MinWidth="60"
- Margin="8,0,0,0"
- Text="{Binding SelectedEndPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
- Visibility="{Binding ShowTextEntryForPointToPointMode,
- Converter={StaticResource boolToVisConverter},
- ConverterParameter=false}"
- />
+ <Controls:TimeSpanBox Number="{Binding SelectedEndPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+ Minimum="0" AllowEmpty="False" ShowTimeSpan="{Binding IsTimespanRange}"
+ MinWidth="80" Margin="8,0,0,0" Visibility="{Binding ShowTextEntryForPointToPointMode,
+ Converter={StaticResource boolToVisConverter},
+ ConverterParameter=false}"
+ />
+
<Label Margin="8,0,0,0" Content="Duration" />
<Label Margin="8,0,0,0" Content="{Binding Duration}" />
</StackPanel>
diff --git a/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml
new file mode 100644
index 000000000..b46b07ff5
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml
@@ -0,0 +1,140 @@
+<Window x:Class="HandBrakeWPF.Views.QueueSelectionView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:cal="http://www.caliburnproject.org"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ Title="{Binding Title}"
+ Width="450"
+ MaxHeight="450"
+ SizeToContent="Height"
+ WindowStartupLocation="CenterScreen"
+ TextOptions.TextFormattingMode="Display"
+ mc:Ignorable="d">
+
+ <Window.Resources>
+
+ <Style x:Key="LongToolTipHolder" TargetType="FrameworkElement">
+ <Setter Property="ToolTipService.ShowDuration" Value="20000" />
+ <Setter Property="Margin" Value="0,2,0,2" />
+ </Style>
+ </Window.Resources>
+
+ <Grid HorizontalAlignment="Stretch"
+ VerticalAlignment="Stretch"
+ Background="#FFF1F0EF">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ </Grid.RowDefinitions>
+
+ <!-- Header -->
+ <StackPanel Grid.Row="0"
+ Height="30"
+ Margin="0,0,0,10"
+ Background="White"
+ Orientation="Horizontal">
+ <Image Width="24"
+ Height="24"
+ Margin="10,0,5,0"
+ VerticalAlignment="Center"
+ Source="Images/AddToQueue_small.png" />
+ <StackPanel VerticalAlignment="Center" Orientation="Vertical">
+ <TextBlock FontWeight="Bold" Text="Queue Multiple Items" />
+ </StackPanel>
+ </StackPanel>
+
+ <!-- Text -->
+ <StackPanel Orientation="Vertical" Grid.Row="1" Margin="10,10,10,0">
+ <TextBlock Text="Select multiple titles to add: " />
+ </StackPanel>
+
+ <!-- Selection -->
+ <ListBox Grid.Row="2"
+ Margin="10,10,10,10"
+ VerticalAlignment="Stretch"
+ Background="LightGray"
+ ItemsSource="{Binding TitleList}"
+ SelectionMode="Single">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch" />
+ <Setter Property="Background" Value="WhiteSmoke" />
+ <Setter Property="Margin" Value="0,0,0,1" />
+ </Style>
+ </ListBox.ItemContainerStyle>
+
+ <ListBox.ContextMenu>
+ <ContextMenu>
+ <MenuItem Header="Select All" cal:Message.Attach="[Event Click] = [Action SelectAll]" />
+ <MenuItem Header="Select All" cal:Message.Attach="[Event Click] = [Action UnSelectAll]" />
+ <Separator />
+ <MenuItem Header="Order by Title" IsChecked="{Binding OrderedByTitle}" cal:Message.Attach="[Event Click] = [Action OrderByTitle]" />
+ <MenuItem Header="Order by Duration" IsChecked="{Binding OrderedByDuration}" cal:Message.Attach="[Event Click] = [Action OrderByDuration]" />
+ </ContextMenu>
+ </ListBox.ContextMenu>
+
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid HorizontalAlignment="Stretch" MinHeight="28">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+ <CheckBox IsChecked="{Binding IsSelected}" Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
+
+ <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Margin="10,0,0,0" >
+ <TextBlock Text="Title:" Margin="0,0,5,0" FontWeight="Bold" />
+ <TextBlock Text="{Binding Title}" Margin="5,0,5,0" />
+ </StackPanel>
+
+ <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="10,0,0,0" >
+ <TextBlock Text="Source:" Margin="0,0,5,0" FontWeight="Bold" />
+ <TextBlock Text="{Binding SourceName}" Margin="5,0,5,0" />
+ </StackPanel>
+ </Grid>
+
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+
+ <!-- Checlist -->
+ <StackPanel Orientation="Vertical" Grid.Row="3" Margin="10,10,10,0">
+ <TextBlock Text="Checklist " />
+ </StackPanel>
+
+ <!-- Controls -->
+ <Grid Grid.Row="4"
+ Margin="0,20,0,0"
+ Background="LightGray">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+ <Button Grid.Column="1"
+ Margin="0,5,10,5"
+ cal:Message.Attach="[Event Click] = [Action Cancel]"
+ Content="Cancel"
+ IsCancel="True"
+ Padding="8,2" />
+ <Button Grid.Column="2"
+ Margin="0,5,10,5"
+ cal:Message.Attach="[Event Click] = [Action Add]"
+ Content="Add"
+ IsDefault="True"
+ Padding="8,2" />
+ </Grid>
+
+ </Grid>
+</Window>
diff --git a/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs
new file mode 100644
index 000000000..553c7201f
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs
@@ -0,0 +1,27 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueSelectionView.xaml.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Interaction logic for QueueSelectionView.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Views
+{
+ using System.Windows;
+
+ /// <summary>
+ /// Interaction logic for QueueSelectionView.xaml
+ /// </summary>
+ public partial class QueueSelectionView : Window
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="QueueSelectionView"/> class.
+ /// </summary>
+ public QueueSelectionView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/Views/QueueView.xaml b/win/CS/HandBrakeWPF/Views/QueueView.xaml
index 5384948b3..394eb35e4 100644
--- a/win/CS/HandBrakeWPF/Views/QueueView.xaml
+++ b/win/CS/HandBrakeWPF/Views/QueueView.xaml
@@ -137,15 +137,14 @@
<TextBlock Text="{Binding JobsPending}" />
<TextBlock Text="{Binding JobStatus}" />
</StackPanel>
-
+
<ListBox Grid.Row="2"
Margin="10,0,10,10"
Background="LightGray"
dd:DragDrop.DropHandler="{Binding}"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
- ItemsSource="{Binding QueueJobs}"
- SelectedItem="{Binding SelectedJob}"
+ ItemsSource="{Binding QueueTasks, Mode=OneWay}"
SelectionMode="Extended">
<ListBox.ContextMenu>
@@ -263,16 +262,16 @@
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
- <Image Width="20" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"
- Height="20" VerticalAlignment="Center" Margin="0,0,5,0"
+ <Image Width="20" Grid.Row="0" Grid.Column="0"
+ Height="20" VerticalAlignment="Center" Margin="0,5,0,0"
Source="Images/Refresh.ico"
ToolTip="Reset job status to Waiting."
Visibility="{Binding Status,
@@ -288,7 +287,7 @@
<Image Width="20" Grid.Row="0" Grid.Column="1"
Height="20"
- Margin="0,5,0,0"
+ Margin="10,5,0,0"
Source="Images/Options24.png"
ToolTip="Edit this Job">
<i:Interaction.Triggers>
@@ -300,9 +299,9 @@
</i:Interaction.Triggers>
</Image>
- <Image Width="20" Grid.Row="1" Grid.Column="1"
+ <Image Width="20" Grid.Row="0" Grid.Column="2"
Height="20"
- Margin="0,5,0,0"
+ Margin="10,5,0,0"
Source="Images/delete.png"
ToolTip="Remove this Job">
<i:Interaction.Triggers>
@@ -317,11 +316,7 @@
</Grid>
-
-
</Grid>
-
-
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
diff --git a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml
index 362734851..a99989189 100644
--- a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml
+++ b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml
@@ -8,6 +8,7 @@
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
d:DesignHeight="153"
d:DesignWidth="319"
mc:Ignorable="d">
@@ -229,15 +230,11 @@
VerticalAlignment="Center"
FontWeight="Bold"
Text="Offset (ms)" />
- <NumericUpDown:NumericUpDown Grid.Row="1"
- Grid.Column="5"
- Width="65"
- Margin="5,0,5,0"
- HorizontalAlignment="Left"
- IsEnabled="{Binding IsSrtSubtitle}"
- Minimum="-10800"
- Value="{Binding SrtOffset, Mode=TwoWay}" />
+ <controls:NumberBox Grid.Row="1" Grid.Column="5" Width="65" Height="24" Margin="5,0,5,0"
+ Minimum="-900000" Maximum="900000" IsEnabled="{Binding IsSrtSubtitle}"
+ Number="{Binding SrtOffset, Mode=TwoWay}" />
+
</Grid>
<!-- Delete -->
diff --git a/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml b/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml
index 573236170..00add413e 100644
--- a/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml
+++ b/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml
@@ -5,6 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
Title="Scan Title"
Width="250"
Background="#FFF1F0EF"
@@ -39,12 +40,9 @@
Margin="10,10,0,10"
Orientation="Horizontal">
<TextBlock Text="Choose a title to scan:" />
- <NumericUpDown:NumericUpDown Width="60"
- Margin="10,0,0,0"
- Maximum="1000"
- Minimum="0"
- Value="{Binding SelectedTitle,
- Mode=TwoWay}" />
+
+ <controls:NumberBox Width="60" Height="24" Margin="10,0,0,0"
+ Minimum="0" Maximum="1000" Number="{Binding SelectedTitle, Mode=TwoWay}" />
</StackPanel>
<StackPanel Grid.Row="2"
diff --git a/win/CS/HandBrakeWPF/Views/VideoView.xaml b/win/CS/HandBrakeWPF/Views/VideoView.xaml
index c9b125abe..4cc1b6b9e 100644
--- a/win/CS/HandBrakeWPF/Views/VideoView.xaml
+++ b/win/CS/HandBrakeWPF/Views/VideoView.xaml
@@ -11,8 +11,9 @@
<Converters:BooleanConverter x:Key="boolConverter" />
<Converters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />
<Converters:EnumComboConverter x:Key="enumComboConverter" />
+ <Converters:InverseBooleanConverter x:Key="inverseConverter" />
<Video:VideoEncoderConverter x:Key="videoEncoderConverter" />
-
+
<Style x:Key="LongToolTipHolder" TargetType="FrameworkElement">
<Setter Property="ToolTipService.ShowDuration" Value="20000" />
</Style>
@@ -109,63 +110,79 @@
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
-
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
-
- <TextBlock Text="Optimise Video:" Margin="0,0,0,8" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" FontWeight="Bold" VerticalAlignment="Center" />
-
- <!-- Row 1 -->
- <TextBlock Text="x264 Preset:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
- <StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal">
- <Slider Minimum="0" Maximum="9" Width="150" Value="{Binding X264PresetValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"
+
+ <TextBlock Text="Optimise Video:" Margin="0,0,0,8" Grid.Row="0" Grid.ColumnSpan="2" FontWeight="Bold" VerticalAlignment="Center" />
+
+ <CheckBox Content="Use Advanced Tab instead" Grid.Row="1" IsChecked="{Binding UseAdvancedTab}"
+ Visibility="{Binding ShowAdvancedTab, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />
+
+ <Grid Grid.Row="2" Margin="0,5,0,0" IsEnabled="{Binding UseAdvancedTab, Converter={StaticResource inverseConverter}}"
+ Visibility="{Binding DisplayX264Options, Converter={StaticResource boolToVisConverter}}">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+
+
+ <!-- Row 1 -->
+ <TextBlock Text="x264 Preset:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
+ <StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal">
+ <Slider Minimum="0" Maximum="9" Width="150" Value="{Binding X264PresetValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"
IsSnapToTickEnabled="True" TickFrequency="1" TickPlacement="BottomRight" ToolTip="{x:Static Properties:Resources.Video_x264Preset}"
Style="{StaticResource LongToolTipHolder}" />
- <TextBlock Text="{Binding X264Preset, Converter={StaticResource enumComboConverter}}" Margin="5,0,0,0" />
- </StackPanel>
+ <TextBlock Text="{Binding X264Preset, Converter={StaticResource enumComboConverter}}" Margin="5,0,0,0" />
+ </StackPanel>
- <TextBlock Text="x264 Tune:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="0,10,0,0" />
- <ComboBox Width="100" Grid.Row="2" Grid.Column="1" Margin="5,10,5,0" Height="22"
+ <TextBlock Text="x264 Tune:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="0,10,0,0" />
+ <ComboBox Width="100" Grid.Row="2" Grid.Column="1" Margin="5,10,5,0" Height="22"
ItemsSource="{Binding X264Tunes, Converter={StaticResource enumComboConverter}}"
SelectedItem="{Binding X264Tune, Converter={StaticResource enumComboConverter}}"
ToolTip="{x:Static Properties:Resources.Video_x264Tune}"
Style="{StaticResource LongToolTipHolder}" />
- <CheckBox IsChecked="{Binding FastDecode}" Content="Fast Decode" Grid.Row="2" Grid.Column="2" Margin="10,10,10,0" VerticalAlignment="Center"
+ <CheckBox IsChecked="{Binding FastDecode}" Content="Fast Decode" Grid.Row="2" Grid.Column="2" Margin="10,10,10,0" VerticalAlignment="Center"
ToolTip="{x:Static Properties:Resources.Video_x264FastDecode}"/>
-
- <!-- Row 2-->
- <TextBlock Text="H.264 Profile:" Grid.Row="3" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" />
- <ComboBox Width="100" Grid.Row="3" Grid.Column="1" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
+
+ <!-- Row 2-->
+ <TextBlock Text="H.264 Profile:" Grid.Row="3" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" />
+ <ComboBox Width="100" Grid.Row="3" Grid.Column="1" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
ItemsSource="{Binding H264Profiles, Converter={StaticResource enumComboConverter}}"
SelectedItem="{Binding H264Profile, Converter={StaticResource enumComboConverter}}"
Style="{StaticResource LongToolTipHolder}"
ToolTip="{x:Static Properties:Resources.Video_x264Profile}" />
- <TextBlock Text="H.264 Level:" Grid.Row="3" Grid.Column="2" Margin="10,10,0,0" VerticalAlignment="Center" />
- <ComboBox Width="100" Grid.Row="3" Grid.Column="3" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
+ <TextBlock Text="H.264 Level:" Grid.Row="3" Grid.Column="2" Margin="10,10,0,0" VerticalAlignment="Center" />
+ <ComboBox Width="100" Grid.Row="3" Grid.Column="3" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
ItemsSource="{Binding H264Levels}"
SelectedItem="{Binding H264Level}"
Style="{StaticResource LongToolTipHolder}"
ToolTip="{x:Static Properties:Resources.Video_x264Level}"/>
-
- <!-- Row 3 -->
- <TextBlock Text="Extra Options:" Grid.Row="4" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
- <TextBox Text="{Binding ExtraArguments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+
+ <!-- Row 3 -->
+ <TextBlock Text="Extra Options:" Grid.Row="4" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
+ <TextBox Text="{Binding ExtraArguments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Height="30" MaxLines="2" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Margin="5,10,0,0" VerticalAlignment="Center"
ToolTip="{Binding FullOptionsTooltip}"/>
-
-
+
+
+ </Grid>
</Grid>
+
+
</Grid>
</Grid>
diff --git a/win/CS/HandBrakeWPF/defaultsettings.xml b/win/CS/HandBrakeWPF/defaultsettings.xml
index 73d5742fc..c1a645647 100644
--- a/win/CS/HandBrakeWPF/defaultsettings.xml
+++ b/win/CS/HandBrakeWPF/defaultsettings.xml
@@ -481,4 +481,12 @@
<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:boolean" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">true</anyType>
</value>
</item>
+ <item>
+ <key>
+ <string>LastPreviewDuration</string>
+ </key>
+ <value>
+ <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:int" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">30</anyType>
+ </value>
+ </item>
</dictionary> \ No newline at end of file
diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML
index 24df8ef25..37d4ff9b9 100644
--- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML
+++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML
@@ -4,6 +4,35 @@
<name>GongSolutions.Wpf.DragDrop</name>
</assembly>
<members>
+ <member name="T:GongSolutions.Wpf.DragDrop.IDropTarget">
+ <summary>
+ Interface implemented by Drop Handlers.
+ </summary>
+ </member>
+ <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.DragOver(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <summary>
+ Updates the current drag state.
+ </summary>
+
+ <param name="dropInfo">
+ Information about the drag.
+ </param>
+
+ <remarks>
+ To allow a drop at the current drag position, the <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Effects"/> property on
+ <paramref name="dropInfo"/> should be set to a value other than <see cref="F:System.Windows.DragDropEffects.None"/>
+ and <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Data"/> should be set to a non-null value.
+ </remarks>
+ </member>
+ <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.Drop(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <summary>
+ Performs a drop.
+ </summary>
+
+ <param name="dropInfo">
+ Information about the drop.
+ </param>
+ </member>
<member name="P:GongSolutions.Wpf.DragDrop.IDropInfo.Data">
<summary>
Gets the drag data.
@@ -222,29 +251,28 @@
Gets th orientation of the current drop target.
</summary>
</member>
- <member name="T:GongSolutions.Wpf.DragDrop.IDropTarget">
+ <member name="T:GongSolutions.Wpf.DragDrop.IDragSource">
<summary>
- Interface implemented by Drop Handlers.
+ Interface implemented by Drag Handlers.
</summary>
</member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.DragOver(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.StartDrag(GongSolutions.Wpf.DragDrop.IDragInfo)">
<summary>
- Updates the current drag state.
+ Queries whether a drag can be started.
</summary>
- <param name="dropInfo">
- Information about the drag.
+ <param name="dragInfo">
+ Information about the drag.
</param>
<remarks>
- To allow a drop at the current drag position, the <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Effects"/> property on
- <paramref name="dropInfo"/> should be set to a value other than <see cref="F:System.Windows.DragDropEffects.None"/>
- and <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Data"/> should be set to a non-null value.
+ To allow a drag to be started, the <see cref="P:GongSolutions.Wpf.DragDrop.DragInfo.Effects"/> property on <paramref name="dragInfo"/>
+ should be set to a value other than <see cref="!:DragDropEffects.None"/>.
</remarks>
</member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.Drop(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.Dropped(GongSolutions.Wpf.DragDrop.IDropInfo)">
<summary>
- Performs a drop.
+ Notifies the drag handler that a drop has occurred.
</summary>
<param name="dropInfo">
@@ -419,33 +447,5 @@
will hold a ListBoxItem.
</remarks>
</member>
- <member name="T:GongSolutions.Wpf.DragDrop.IDragSource">
- <summary>
- Interface implemented by Drag Handlers.
- </summary>
- </member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.StartDrag(GongSolutions.Wpf.DragDrop.IDragInfo)">
- <summary>
- Queries whether a drag can be started.
- </summary>
-
- <param name="dragInfo">
- Information about the drag.
- </param>
-
- <remarks>
- To allow a drag to be started, the <see cref="P:GongSolutions.Wpf.DragDrop.DragInfo.Effects"/> property on <paramref name="dragInfo"/>
- should be set to a value other than <see cref="!:DragDropEffects.None"/>.
- </remarks>
- </member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.Dropped(GongSolutions.Wpf.DragDrop.IDropInfo)">
- <summary>
- Notifies the drag handler that a drop has occurred.
- </summary>
-
- <param name="dropInfo">
- Information about the drop.
- </param>
- </member>
</members>
</doc>
diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll
index 47a513ca6..5617d91b9 100644
--- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll
+++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll
Binary files differ
diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb
index 90b441736..ce74a4036 100644
--- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb
+++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb
Binary files differ
diff --git a/win/CS/libraries/WPFDragDrop/SourceModifications.zip b/win/CS/libraries/WPFDragDrop/SourceModifications.zip
index a08196a6e..9d050d455 100644
--- a/win/CS/libraries/WPFDragDrop/SourceModifications.zip
+++ b/win/CS/libraries/WPFDragDrop/SourceModifications.zip
Binary files differ