From 55472064557164410c7e11200de5a2e068411c4e Mon Sep 17 00:00:00 2001 From: sr55 Date: Mon, 29 Apr 2013 19:08:21 +0000 Subject: [PATCH] QSV: Merging trunk to qsv branch. git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/qsv@5427 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- NEWS | 1253 +++++++++-------- THANKS | 2 - doc/BUILD-Mac | 60 +- doc/texi/Building.osx.texi | 21 +- doc/texi/building/chapter.via.xcode.texi | 5 - gfx/icons/-Credits.md | 7 +- libhb/common.c | 6 +- libhb/decavcodec.c | 83 +- libhb/decssasub.c | 17 +- libhb/dectx3gsub.c | 8 +- libhb/decutf8sub.c | 36 +- libhb/encavcodecaudio.c | 7 +- libhb/hb.c | 35 +- libhb/hb.h | 3 + libhb/internal.h | 4 +- libhb/muxmp4.c | 80 +- libhb/platform/macosx/encca_aac.c | 2 +- libhb/ports.c | 86 +- libhb/ports.h | 8 +- libhb/scan.c | 5 +- libhb/stream.c | 122 +- libhb/sync.c | 5 +- libhb/work.c | 36 +- macosx/Controller.h | 16 +- macosx/Controller.m | 632 +++++---- macosx/English.lproj/MainMenu.xib | 105 +- macosx/English.lproj/PicturePreview.xib | 14 +- macosx/Growl.framework/Versions/A/Growl | Bin 259708 -> 1093888 bytes .../Versions/A/Headers/Growl.h | 5 +- .../A/Headers/GrowlApplicationBridge-Carbon.h | 780 ---------- .../A/Headers/GrowlApplicationBridge.h | 154 +- .../Versions/A/Headers/GrowlDefines.h | 102 +- .../Versions/A/Resources/Info.plist | 20 +- .../Versions/A/_CodeSignature/CodeResources | 34 + macosx/HBAudioController.m | 32 +- macosx/HBPreferencesController.m | 8 +- macosx/HBPreviewController.m | 16 +- macosx/HBQueueController.mm | 236 +--- macosx/HBSubtitles.h | 1 + macosx/HBSubtitles.m | 272 +++- macosx/HandBrake.xcodeproj/project.pbxproj | 160 ++- macosx/Info.plist.m4 | 2 +- macosx/PictureController.m | 26 +- macosx/icons/ActivityWindow.tiff | Bin 2456 -> 0 bytes macosx/icons/AddToQueue.tiff | Bin 4092 -> 0 bytes macosx/icons/Brushed Window.tiff | Bin 16120 -> 0 bytes macosx/icons/Brushed_Window.png | Bin 4025 -> 0 bytes macosx/icons/Drawer.tiff | Bin 2162 -> 0 bytes macosx/icons/Info.png | Bin 1814 -> 0 bytes macosx/icons/JobLarge.png | Bin 30157 -> 0 bytes macosx/icons/JobPassLarge.png | Bin 1379 -> 0 bytes macosx/icons/JobPassSmall.png | Bin 604 -> 0 bytes macosx/icons/Pause.tiff | Bin 16664 -> 0 bytes macosx/icons/Play.tiff | Bin 18836 -> 0 bytes macosx/icons/Queue.tiff | Bin 3700 -> 0 bytes macosx/icons/Source.tiff | Bin 4346 -> 0 bytes macosx/icons/Stop.tiff | Bin 16124 -> 0 bytes macosx/icons/activity.png | Bin 0 -> 798 bytes macosx/icons/activity@2x.png | Bin 0 -> 3128 bytes macosx/icons/addqueue.png | Bin 0 -> 3963 bytes macosx/icons/addqueue@2x.png | Bin 0 -> 3998 bytes macosx/icons/advanced.png | Bin 0 -> 1133 bytes macosx/icons/advanced@2x.png | Bin 0 -> 4437 bytes macosx/icons/audio.png | Bin 0 -> 926 bytes macosx/icons/audio@2x.png | Bin 0 -> 3551 bytes macosx/icons/encode.png | Bin 0 -> 1394 bytes macosx/icons/encode@2x.png | Bin 0 -> 3223 bytes macosx/icons/pauseencode.png | Bin 0 -> 1318 bytes macosx/icons/pauseencode@2x.png | Bin 0 -> 3118 bytes macosx/icons/picturesettings.png | Bin 0 -> 1401 bytes macosx/icons/picturesettings@2x.png | Bin 0 -> 3929 bytes macosx/icons/pref-audio.tiff | Bin 2860 -> 0 bytes macosx/icons/pref-picture.tiff | Bin 2102 -> 0 bytes macosx/icons/presets.png | Bin 0 -> 762 bytes macosx/icons/presets@2x.png | Bin 0 -> 3211 bytes macosx/icons/preview.png | Bin 0 -> 1005 bytes macosx/icons/preview@2x.png | Bin 0 -> 3762 bytes macosx/icons/settings.png | Bin 0 -> 1151 bytes macosx/icons/settings@2x.png | Bin 0 -> 3304 bytes macosx/icons/showqueue.png | Bin 0 -> 1069 bytes macosx/icons/showqueue@2x.png | Bin 0 -> 3884 bytes macosx/icons/source.png | Bin 0 -> 714 bytes macosx/icons/source@2x.png | Bin 0 -> 3447 bytes macosx/icons/stopencode.png | Bin 0 -> 1457 bytes macosx/icons/stopencode@2x.png | Bin 0 -> 1955 bytes make/configure.py | 2 +- pkg/linux/debian/control.raring | 30 + pkg/linux/debian/rules.raring | 85 ++ pkg/linux/module.defs | 10 + pkg/linux/module.rules | 41 +- pkg/module.defs | 5 +- pkg/module.rules | 6 + test/parsecsv.c | 9 +- test/parsecsv.h | 9 +- test/test.c | 47 +- .../ASUserSettingConstants.cs | 5 - .../Factories/PlistPresetFactory.cs | 7 +- .../HandBrake.ApplicationServices.csproj | 2 + .../Parsing/Chapter.cs | 5 +- .../Parsing/Title.cs | 21 +- .../Properties/AssemblyInfo.cs.Nightly.tmpl | 42 + .../Services/Base/EncodeBase.cs | 4 +- .../Services/LibScan.cs | 9 +- .../Services/PresetService.cs | 4 +- .../Services/QueueProcessor.cs | 4 +- .../Services/ScanService.cs | 4 +- .../Services/ServerService.cs | 4 +- .../Utilities/GeneralUtilities.cs | 10 +- .../Utilities/PlistUtility.cs | 4 +- .../Utilities/VersionHelper.cs | 68 + .../HandBrakeInterop/Converters.cs | 42 +- .../EventArgs/ScanProgressEventArgs.cs | 41 +- .../HandBrakeInterop/HandBrakeInstance.cs | 104 +- .../HandBrakeInterop/HandBrakeUtils.cs | 10 +- .../HandBrakeInterop/HbLib/HbFunctions.cs | 2 +- .../HandBrakeInterop/HbLib/Misc.cs | 6 + .../HandBrakeInterop/HbLib/NativeConstants.cs | 6 +- .../HandBrakeInterop/HbLib/hb_audio.cs | 2 + .../HandBrakeInterop/HbLib/hb_job_s.cs | 8 +- .../HandBrakeInterop/Model/VideoRangeType.cs | 50 +- .../Properties/AssemblyInfo.cs | 4 +- .../HandBrakeInterop/SourceData/Chapter.cs | 7 +- .../HandBrakeInterop/SourceData/Title.cs | 7 +- win/CS/HandBrakeWPF/Constants.cs | 27 + win/CS/HandBrakeWPF/HandBrakeWPF.csproj | 4 +- win/CS/HandBrakeWPF/Helpers/CliCheckHelper.cs | 11 - .../HandBrakeWPF/Properties/AssemblyInfo.cs | 2 +- .../Properties/AssemblyInfo.cs.Nightly.tmpl | 60 + .../Properties/Resources.Designer.cs | 3 +- win/CS/HandBrakeWPF/Properties/Resources.resx | 3 +- .../Interfaces/IUpdateVersionService.cs | 22 - .../Services/ScanServiceWrapper.cs | 2 +- win/CS/HandBrakeWPF/Services/UpdateService.cs | 7 +- .../Services/UpdateVersionService.cs | 146 -- .../Startup/CastleBootstrapper.cs | 1 - win/CS/HandBrakeWPF/UserSettingConstants.cs | 20 +- .../HandBrakeWPF/ViewModels/AboutViewModel.cs | 9 +- .../ViewModels/AddPresetViewModel.cs | 15 +- .../HandBrakeWPF/ViewModels/AudioViewModel.cs | 14 +- .../HandBrakeWPF/ViewModels/MainViewModel.cs | 23 +- .../ViewModels/OptionsViewModel.cs | 40 +- .../ViewModels/PictureSettingsViewModel.cs | 32 +- .../ViewModels/SubtitlesViewModel.cs | 7 + .../HandBrakeWPF/ViewModels/VideoViewModel.cs | 32 +- win/CS/HandBrakeWPF/Views/OptionsView.xaml | 3 +- .../Views/PictureSettingsView.xaml | 5 +- win/CS/HandBrakeWPF/Views/VideoView.xaml | 10 + win/CS/HandBrakeWPF/defaultsettings.xml | 41 +- win/CS/build.xml | 19 +- .../GongSolutions.Wpf.DragDrop.XML | 424 +++--- .../GongSolutions.Wpf.DragDrop.dll | Bin 34304 -> 49664 bytes .../GongSolutions.Wpf.DragDrop.pdb | Bin 81408 -> 97792 bytes .../WPFDragDrop/SourceModifications.zip | Bin 28597 -> 0 bytes win/CS/libraries/WPFDragDrop/notes.txt | 1 + 154 files changed, 3099 insertions(+), 3116 deletions(-) delete mode 100644 macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h create mode 100644 macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources delete mode 100644 macosx/icons/ActivityWindow.tiff delete mode 100644 macosx/icons/AddToQueue.tiff delete mode 100644 macosx/icons/Brushed Window.tiff delete mode 100644 macosx/icons/Brushed_Window.png delete mode 100644 macosx/icons/Drawer.tiff delete mode 100644 macosx/icons/Info.png delete mode 100644 macosx/icons/JobLarge.png delete mode 100644 macosx/icons/JobPassLarge.png delete mode 100644 macosx/icons/JobPassSmall.png delete mode 100644 macosx/icons/Pause.tiff delete mode 100644 macosx/icons/Play.tiff delete mode 100644 macosx/icons/Queue.tiff delete mode 100644 macosx/icons/Source.tiff delete mode 100644 macosx/icons/Stop.tiff create mode 100755 macosx/icons/activity.png create mode 100755 macosx/icons/activity@2x.png create mode 100755 macosx/icons/addqueue.png create mode 100755 macosx/icons/addqueue@2x.png create mode 100755 macosx/icons/advanced.png create mode 100755 macosx/icons/advanced@2x.png create mode 100755 macosx/icons/audio.png create mode 100755 macosx/icons/audio@2x.png create mode 100755 macosx/icons/encode.png create mode 100755 macosx/icons/encode@2x.png create mode 100755 macosx/icons/pauseencode.png create mode 100755 macosx/icons/pauseencode@2x.png create mode 100755 macosx/icons/picturesettings.png create mode 100755 macosx/icons/picturesettings@2x.png delete mode 100644 macosx/icons/pref-audio.tiff delete mode 100644 macosx/icons/pref-picture.tiff create mode 100755 macosx/icons/presets.png create mode 100755 macosx/icons/presets@2x.png create mode 100755 macosx/icons/preview.png create mode 100755 macosx/icons/preview@2x.png create mode 100755 macosx/icons/settings.png create mode 100755 macosx/icons/settings@2x.png create mode 100755 macosx/icons/showqueue.png create mode 100755 macosx/icons/showqueue@2x.png create mode 100755 macosx/icons/source.png create mode 100755 macosx/icons/source@2x.png create mode 100755 macosx/icons/stopencode.png create mode 100755 macosx/icons/stopencode@2x.png create mode 100644 pkg/linux/debian/control.raring create mode 100755 pkg/linux/debian/rules.raring create mode 100644 win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.Nightly.tmpl create mode 100644 win/CS/HandBrake.ApplicationServices/Utilities/VersionHelper.cs create mode 100644 win/CS/HandBrakeWPF/Constants.cs create mode 100644 win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs.Nightly.tmpl delete mode 100644 win/CS/HandBrakeWPF/Services/Interfaces/IUpdateVersionService.cs delete mode 100644 win/CS/HandBrakeWPF/Services/UpdateVersionService.cs delete mode 100644 win/CS/libraries/WPFDragDrop/SourceModifications.zip create mode 100644 win/CS/libraries/WPFDragDrop/notes.txt diff --git a/NEWS b/NEWS index f13f57839..219a77a50 100644 --- a/NEWS +++ b/NEWS @@ -3,701 +3,715 @@ NEWS file for HandBrake Changes betwen 0.9.8 and 0.9.9: -General: -- Improved HandBrake Pineapple Icon by Matt Johnson -- Improved Retina Resolution Icons within the Application by Nik Pawlak ​​http://nikpawlak.com - -Core: -- PGS Subtitle support. (Burn-in with MP4, passthru and burn-in for MKV) -- Additional Framerates 30, 50, 59.94, 60 -- Bob mode for De-interlacing and Decomb. -- Updated libraries (x264, libav) -- Assorted bug fixes and improvements to the core libhb library. -- Better Audio Mixdown support. (6.1, 7.1, 7.1 (5F/2R/LFE), Mono left only, Mono Right only). CLI users should note 6ch becomes 5point1 -- Allow the selection of higher audio bitrates where appropriate -- Allow the selection of slower samplerates where appropriate. -- Use libav for dts audio decoding instead of libdca -- Addition of x264 Tune, Preset, Profile and Level options. Can be used instead of the Advanced Tab. - -Windows: -- User Interface has been re-written in WPF. Includes many small UI enhancements -- Switched to .NET 4 Client Profile. (Smaller download for those who don't have .NET 4 Full installed) - -Linux: -- Moved to GTK 3 -- Assorted bug fixes and improvements. -- Use some system libraries rather than bundling (libass-dev, libsamplerate-dev) - -Mac: -- Drag/Drop? files onto the Main window or application icon to scan. -- Nicer Progress indication on the dock icon. -- Prevent sleep during encoding and scanning for Mountain Lion. -- Assorted bug fixes including better support for retina displays - -CLI: -- Audio option (-a) will ignore invalid input tracks and encode with only the valid ones. -- Allow use of hh:mm:ss format when specifying p-to-p start/stop time + General + - Improved HandBrake pineapple icon by Matt Johnson + - Improved Retina-resolution icons within the application, by Nik Pawlak + + http://nikpawlak.com + Core + - Blu-ray (PGS) subtitle support + + works with Foreign Audio Search + + can be Burned-In + + can be passed through to MKV (but not MP4) + - Additional video framerates + + 30, 50, 59.94, 60 fps + - Double framerate ("bob") mode for the deinterlace and decomb filters + - Better audio remix support + + additional mixdowns: 6.1, 7.1, 7.1 (5F/2R/LFE) + CLI users should note 6ch becomes 5point1 + + better-than-Stereo sources can be upmixed to 5.1 + + discard one channel from Stereo sources + Mono (Left Only), Mono (Right Only) + - Allow the selection of higher audio bitrates where appropriate + - Allow the selection of lower audio samplerates where appropriate + + 8, 11.025, 12, 16 kHz + - Audio dithering (TPDF) when converting to 16-bit FLAC + - Use libavcodec for DTS audio decoding (instead of libdca) + + DTS-ES 6.1 Discrete support + - All graphical interfaces: support for x264's preset, tune and profile options + + alternative to the Advanced panel (which is still available) + + HandBrake-specific option to ensure compliance with a specific H.264 level + - Updated built-in presets + + take advantage of x264 preset/tune/profile support + + removed increasingly suboptimal and irrelevant Legacy presets + - Assorted bug fixes and improvements to the core library (libhb) + - Updated libraries + + x264 r2273-b3065e6 + + Libav v9.3 + + libbluray 0.2.3 + Windows + - User Interface has been re-written in WPF + + Includes many small UI enhancements + - Switched to .NET 4 Client Profile + + smaller download for those who don't have .NET 4 Full installed + Mac + - Assorted bug fixes + + including better support for Retina displays + - Prevent sleep during encoding and scanning for Mountain Lion + - Drag & Drop files onto the Main window or application icon to scan + - Nicer progress indication on the dock icon + - Preview window improvements and bugfixes + - Updated Growl to 2.0.1 + + Notification Center support (when Growl is not installed) + Linux + - Assorted bug fixes and improvements + - Use some system libraries rather than bundling + + fontconfig, freetype, libxml2, libass, libogg, libvorbis, libtheora and libsamplerate + Command Line Interface + - Audio option (-a) will ignore invalid input tracks and encode with only the valid ones + - Allow use of hh:mm:ss format when specifying p-to-p start/stop time + - Advanced audio options + + enable level normalization when downmixing (disabled by default) + + disable audio dithering or select a specific algorithm + Changes betwen 0.9.7 and 0.9.8: --> Corrects a few crash bugs that showed up in 0.9.7 + - Corrects a few crash bugs that showed up in 0.9.7 Changes betwen 0.9.6 and 0.9.7: --> This is a bug fix release for 0.9.6. --> Includes an AppleTV3 Preset and updated iPad Preset + - This is a bug fix release for 0.9.6. + - Includes an AppleTV3 Preset and updated iPad Preset Changes betwen 0.9.5 and 0.9.6: -Encoders: ---------- - --> Video: - - - updated libx264 (revision 2146) - - MPEG-2 encoder (from libavcodec) - - advanced options support for libavcodec encoders - format: option1=value1:option2=value2 - -bf 2 -trellis 2 becomes bf=2:trellis=2 - --> Audio: + Encoders: - - audio gain control (increase/decrease audio volume) + -> Video: - - updated libogg (1.3.0) and libvorbis (aoTuV b6.03) - - new AAC encoder (from libavcodec) (considered experimental) - (supported mixdowns: Mono/Stereo/Dolby, 5.1 will come later) - (should be on par with faac in terms of quality, sometimes better) - - FLAC encoder (16-bit, MKV container only) + - updated libx264 (revision 2146) + - MPEG-2 encoder (from libavcodec) + - advanced options support for libavcodec encoders + format: option1=value1:option2=value2 + -bf 2 -trellis 2 becomes bf=2:trellis=2 - - Mac OS X: HE-AAC encoding support, via Core Audio + -> Audio: - - quality-based variable bitrate encoding support - works with: Lame MP3, Vorbis, Core Audio AAC - only implemented in CLI and Linux GUI + - audio gain control (increase/decrease audio volume) - - AC3 encoder: set Dolby Surround flag in stream parameters when mixdown is Dolby Surround or Pro Logic II + - updated libogg (1.3.0) and libvorbis (aoTuV b6.03) + - new AAC encoder (from libavcodec) (considered experimental) + (supported mixdowns: Mono/Stereo/Dolby, 5.1 will come later) + (should be on par with faac in terms of quality, sometimes better) + - FLAC encoder (16-bit, MKV container only) + - Mac OS X: HE-AAC encoding support, via Core Audio --> Audio Passthru: + - quality-based variable bitrate encoding support + works with: Lame MP3, Vorbis, Core Audio AAC + only implemented in CLI and Linux GUI - - DTS Passthru to MP4 container (in addition to MKV) (supported by e.g. VLC, MPlayer) - - DTS-HD Passthru (MP4, MKV containers) - - MP3 Passthru (MP4, MKV containers) - - AAC Passthru (MP4, MKV containers) - (known issue: Magic Cookie not passed through from MPEG Program/Transport streams, - which will break playback in e.g. QuickTime Player) - - Auto Passthru: one encoder, multiple codecs - lets you define allowed codecs (from supported passthru codecs) - lets you pick a fallback encoder if passthru is not possible + - AC3 encoder: set Dolby Surround flag in stream parameters when mixdown is Dolby Surround or Pro Logic II -Muxers: -------- - - start MKV clusters with a video keyframe whenever possible - should improve seeking and DLNA streaming + -> Audio Passthru: - - bug fix: use ISO 639-2 bibliographic form for MKV language codes - - bug fix: fix crash due to division by zero in MP4 muxer - - bug fix: fix muxing of Closed Captions. Improper interleaving broke playback on some players + - DTS Passthru to MP4 container (in addition to MKV) (supported by e.g. VLC, MPlayer) + - DTS-HD Passthru (MP4, MKV containers) + - MP3 Passthru (MP4, MKV containers) + - AAC Passthru (MP4, MKV containers) + (known issue: Magic Cookie not passed through from MPEG Program/Transport streams, + which will break playback in e.g. QuickTime Player) + - Auto Passthru: one encoder, multiple codecs + lets you define allowed codecs (from supported passthru codecs) + lets you pick a fallback encoder if passthru is not possible -Decoders: ---------- + Muxers: + - start MKV clusters with a video keyframe whenever possible + should improve seeking and DLNA streaming --> Video: + - bug fix: use ISO 639-2 bibliographic form for MKV language codes + - bug fix: fix crash due to division by zero in MP4 muxer + - bug fix: fix muxing of Closed Captions. Improper interleaving broke playback on some players - - updated libav* libraries from Libav (http://libav.org/) (v0.7-1696-gcae4f4b, late October 2011) - frame-based multithreading for H.264, VP8 - 10-bit decoding support for H.264, DNxHD - Apple ProRes decoding support - - improved average framerate detection - - duplicate frame detection for improved frame drop decision (CFR/PFR) - - new Same as source, Constant Framerate option - for devices that don't support variable framerate - automatically picks a constant framerate closest to the detected average framerate + Decoders: - - bug fix: fix problem when resolution changes in the middle of a video stream + -> Video: --> Audio: + - updated libav* libraries from Libav (http://libav.org/) (v0.7-1696-gcae4f4b, late October 2011) + frame-based multithreading for H.264, VP8 + 10-bit decoding support for H.264, DNxHD + Apple ProRes decoding support + - improved average framerate detection + - duplicate frame detection for improved frame drop decision (CFR/PFR) + - new Same as source, Constant Framerate option + for devices that don't support variable framerate + automatically picks a constant framerate closest to the detected average framerate - - Blu-ray: make TrueHD, DTS-HD and E-AC3 Secondary Audio streams available for decoding and/or passthrough + - bug fix: fix problem when resolution changes in the middle of a video stream - - bug fix: libavcodec-decoded streams can now be decoded multiple times - previously, multiple decodes of the same source tracks weren't possible - and audio output tracks had to be dropped - - bug fix: fix audio screech at beginning of some audio tracks when decoding AC3 - - bug fix: fix DTS decoder audio volume (was too low) - - bug fix: garbled audio when decoding DTS-HD audio from MKV containers - - bug fix: fix support for DTS-HD High Resolution Audio in MPEG Transport streams + -> Audio: --> Subtitles: + - Blu-ray: make TrueHD, DTS-HD and E-AC3 Secondary Audio streams available for decoding and/or passthrough - - updated libass (0.10.0) - - improved handling of subtitles with overlapping timestamps - - improved handling of DVD subtitles without Stop Display commands - - SSA subtitles are now passed through to MKV without conversion to SRT/UTF-8 + - bug fix: libavcodec-decoded streams can now be decoded multiple times + previously, multiple decodes of the same source tracks weren't possible + and audio output tracks had to be dropped + - bug fix: fix audio screech at beginning of some audio tracks when decoding AC3 + - bug fix: fix DTS decoder audio volume (was too low) + - bug fix: garbled audio when decoding DTS-HD audio from MKV containers + - bug fix: fix support for DTS-HD High Resolution Audio in MPEG Transport streams - - bug fix: fix rendering problem with SSA subtitles when no font is embedded in the source video + -> Subtitles: -Demuxers: ---------- + - updated libass (0.10.0) + - improved handling of subtitles with overlapping timestamps + - improved handling of DVD subtitles without Stop Display commands + - SSA subtitles are now passed through to MKV without conversion to SRT/UTF-8 - - improved MPEG Program/Transport stream support - support for MPEG-1 Program streams - support for HD-DVD EVOB streams - improved handling of Transport streams that have no PCR - - WTV container support (via libavformat) + - bug fix: fix rendering problem with SSA subtitles when no font is embedded in the source video - - bug fix: files with more than 20 tracks (video, audio, subtitles etc.) are now supported - - bug fix: some QuickTime MOV files were misdirected as MPEG Transport streams - - bug fix: fix detection of TrueType font attachments that don't have the correct MIME type + Demuxers: -Filters: --------- + - improved MPEG Program/Transport stream support + support for MPEG-1 Program streams + support for HD-DVD EVOB streams + improved handling of Transport streams that have no PCR + - WTV container support (via libavformat) - - new, much improved decomb filter (but slower) - new settings are default - old settings become decomb "Fast" + - bug fix: files with more than 20 tracks (video, audio, subtitles etc.) are now supported + - bug fix: some QuickTime MOV files were misdirected as MPEG Transport streams + - bug fix: fix detection of TrueType font attachments that don't have the correct MIME type -Presets: --------- + Filters: - - improved "Normal" preset (much faster, similar file size and quality) - - removed obsolete legacy presets - - added new device presets for Android phones/tablets - recent and/or powerful devices recommended + - new, much improved decomb filter (but slower) + new settings are default + old settings become decomb "Fast" -Mac OS X: ---------- + Presets: --> DVD decryption: + - improved "Normal" preset (much faster, similar file size and quality) + - removed obsolete legacy presets + - added new device presets for Android phones/tablets + recent and/or powerful devices recommended - - VLC 2.x or later will not work for DVD decryption - and is therefore unsupported as of HandBrake 0.9.6 - - libdvdcss is now the preferred method for DVD decryption - already works with HandBrake 0.9.5 - a .pkg installer is available from Videolan: - http://download.videolan.org/libdvdcss/last/macosx/ + Mac OS X: --> Build system: + -> DVD decryption: - - support for Xcode 4 and Mac OS X 10.7 "Lion" - - Mac OS X 10.5 "Leopard" no longer supported + - VLC 2.x or later will not work for DVD decryption + and is therefore unsupported as of HandBrake 0.9.6 + - libdvdcss is now the preferred method for DVD decryption + already works with HandBrake 0.9.5 + a .pkg installer is available from Videolan: + http://download.videolan.org/libdvdcss/last/macosx/ -Mac OS X GUI: -------------- + -> Build system: --> OS X 10.7 Lion support: + - support for Xcode 4 and Mac OS X 10.7 "Lion" + - Mac OS X 10.5 "Leopard" no longer supported - - bug fix: Live Preview window widgets updated to work under Lion - - bug fix: fixed positioning of widgets in the Audio panel under Lion + Mac OS X GUI: --> Other: + -> OS X 10.7 Lion support: - - wider main window providing more room for various widgets + - bug fix: Live Preview window widgets updated to work under Lion + - bug fix: fixed positioning of widgets in the Audio panel under Lion -Windows GUI: ------------- + -> Other: --> Preview window: + - wider main window providing more room for various widgets - - complete redesign - - support for VLC or the system default video player - - dropped built-in QuickTime playback support + Windows GUI: + -> Preview window: --> Other: + - complete redesign + - support for VLC or the system default video player + - dropped built-in QuickTime playback support - - much improved control over the default audio and subtitle tracks selected (see Options) - - ability to set the minimal title length that will show up during a scan (see Options) - - several other usability improvements - - installer now has a silent option for easier network installs (launch the installer with /S) + -> Other: -Linux GUI: ----------- + - much improved control over the default audio and subtitle tracks selected (see Options) + - ability to set the minimal title length that will show up during a scan (see Options) + - several other usability improvements + - installer now has a silent option for easier network installs (launch the installer with /S) --> Audio panel: + Linux GUI: + -> Audio panel: - - new advanced audio options section for gain and audio track names - - dynamic range compression and samplerate moved to advanced audio options + - new advanced audio options section for gain and audio track names + - dynamic range compression and samplerate moved to advanced audio options --> Other: + -> Other: - - minor UI tweaks and usability enhancements + - minor UI tweaks and usability enhancements -Miscellaneous: --------------- + Miscellaneous: + - Target Size is gone, and isn't coming back + Don't bother complaining on the forums - - Target Size is gone, and isn't coming back - Don't bother complaining on the forums + - CLI: support for x264 presets, tunes and profiles + new --x264-preset, --x264-tune and --x264-profile options - - CLI: support for x264 presets, tunes and profiles - new --x264-preset, --x264-tune and --x264-profile options + - DVD: fix issues with some discs (e.g. True Grit, Thor, Transformers 3) + - DVD: improved main feature detection - - DVD: fix issues with some discs (e.g. True Grit, Thor, Transformers 3) - - DVD: improved main feature detection + - updated libbluray (0.0.1-pre-213-ga869da8, late May 2011) - - updated libbluray (0.0.1-pre-213-ga869da8, late May 2011) Changes between 0.9.4 and 0.9.5: -* Core Library - - BluRay disc structure support. (No decryption support) - - Updated Libraries (x264, ffmpeg) - - SSA Subtitle support. (Including burn-in) - - MP3 audio now supported in MP4 files (Note: Limited Player compatibility) - - VOBSUB subtitle now supported in MP4 files (Note: Limited Player compatibility) - - Updated Presets for newer devices and better quality - - AC3 encoding support. - - Many Bug fixes and other small improvements - - Improved DVD Main Feature detection (when using dvdnav) - - Universal audio downmix support (all audio types can be downmixed) - -*All GUIs - - Updated x264 Advanced Panel - - Video Quality Slider drops % value and only shows RF for x264 - - Batch Scan (Scan Multiple files at once. N.B: Does not include multiple VIDEO_TS folders / Image files) - - Peak framerate option (Capped VFR) - - Many Bug fixes - - Many Tweaks to improve usability. - - Ability to edit queue jobs - - Point-to-Point encoding (second or frame start and end times) - -* Mac GUI - - New Audio Panel supporting >4 Audio Tracks - - VLC detection in /Applications and ~/Applications - -* Windows GUI - - Encode Status in GUI. (CLI window is now always hidden) - - Improved Auto-Naming for Destination file name. - - Drag / Drop Video onto Main Window to scan. - -* Linux GUI - - Multiple instance support (run multiple copies of ghb at once) - - Many Bug fixes and UI improvements. + * Core Library + - BluRay disc structure support. (No decryption support) + - Updated Libraries (x264, ffmpeg) + - SSA Subtitle support. (Including burn-in) + - MP3 audio now supported in MP4 files (Note: Limited Player compatibility) + - VOBSUB subtitle now supported in MP4 files (Note: Limited Player compatibility) + - Updated Presets for newer devices and better quality + - AC3 encoding support. + - Many Bug fixes and other small improvements + - Improved DVD Main Feature detection (when using dvdnav) + - Universal audio downmix support (all audio types can be downmixed) + + *All GUIs + - Updated x264 Advanced Panel + - Video Quality Slider drops % value and only shows RF for x264 + - Batch Scan (Scan Multiple files at once. N.B: Does not include multiple VIDEO_TS folders / Image files) + - Peak framerate option (Capped VFR) + - Many Bug fixes + - Many Tweaks to improve usability. + - Ability to edit queue jobs + - Point-to-Point encoding (second or frame start and end times) + + * Mac GUI + - New Audio Panel supporting >4 Audio Tracks + - VLC detection in /Applications and ~/Applications + + * Windows GUI + - Encode Status in GUI. (CLI window is now always hidden) + - Improved Auto-Naming for Destination file name. + - Drag / Drop Video onto Main Window to scan. + + * Linux GUI + - Multiple instance support (run multiple copies of ghb at once) + - Many Bug fixes and UI improvements. Changes between 0.9.3 and 0.9.4: - -Core: - -* New build system, allowing 64-bit binaries (around 10% faster) -* Soft subtitles and Closed Captions: - - DVD Closed Captions - - ATSC Closed Captions - - SRT subtitle import - - Text soft subtitles in MP4 and MKV output - - Bitmap soft subtitles in MKV output -* Better support for DVD inputs: - - Uses libdvdnav - - DVD angles support - - Workaround for libdvdread malloc bomb on invalid PGC entry - - DVD drive region detection support in Linux - - Handles DVD programs with more than 16 streams - - No longer tries to detect and discard duplicate titles when scanning - - Libdvdnav patched to perform read error recovery - - Libdvdread patched to allow raw device access in Windows - - Handles poorly mastered DVDs that had the menus ripped out of them -* Better support for non-DVD inputs: - - Preserves MP4 metadata - - TrueHD - - DTS-HD demuxing - - 8 bit audio - - Better handling of transport streams where audio starts first - - Better handling of transport streams that have been spliced together, leading to duplicate timestamps - - Better VC-1 frame detection - - Fixes bug that was causing one sec. of audio to be dropped on many ffmpeg files - - Looks harder for aspect ratio info from DV sources - - No longer truncates the last (dummy) chapter - - Allows specifying field parity for detelecine and decomb -* Better AV sync -* Support for sources with no audio -* DTS passthrough for MKV -* x264 bumped from r1169 to r1347, which means speed optimizations, new default settings (see r2742 commit comment), the magic of macroblock tree rate control (mbtree), a new CRF curve (meaning you will get different, generally lower bitrates at the same RF, with similar quality metrics), and weighted P-Frames (disabled by default for Baseline encodes and the AppleTV preset). -* Better sample interleaving -* Better, optional deinterlacer for decomb (EEDI2) -* New mode structure for the decomb filter -* Variable verbose logging levels -* Fixed timing for first two frames coming out of filters -* Libtheora bumped to 1.1.0 -* Improvements to our theora implementation (2 pass encoding + soft target rate control) -* Caters to Theora's insistence on content having mod16 framing dimensions specified -* Flushes LAME encoder's final packets -* Fixed interjob framerate calculation -* Fixed pthreads regression in cygwin -* Tweaks for packaging tools -* Solaris 10 build support - -All interfaces: - -* Live video preview -* New subtitle tab -* New filters and picture settings inspector -* Custom anamorphic mode -* Updated Sparkle -* Custom number of preview images -* Quality slider now works off actual rate factor/quantizer values instead of percentages -* Partially updated advanced x264 tab -* New built-in presets -* Use libdvdnav by default on DVD sources -* Removed Constant QP encoding option for x264 (use CRF) -* Various bug fixes and UI tweaks -* x264 turbo 1st pass mode now uses subme=2 not subme=1 - -Mac: - -* Core Audio AAC encoding -* H.264 video source decoding crash fixed -* Queue displays varying row heights based on encode settings -* Fixed EyeTV package scanning -* 64bit / 32 bit VLC detection -* Preset import/export - -Windows: - -* New audio tab -* AAC audio source decoding bug fixed -* Tray minimization is now optional -* Queue can now be started from main window -* Growl for Windows notification support -* General UI improvements -* Preset import -* Preferred language control for audio dubs and subtitles -* Fixed file extensions resetting to m4v when enabling chapter markers in mkv -* Faster updating of GUI elements from CLI data -* Cleanup / Improved some of the programs options. (Growl, use m4v, drive detection) -* Numerous fixes in the Picture Settings Panel and CLI Query Handling code. -* Bug Fixes and Usability improvements. - -Linux: - -* General UI improvements -* Inhibits sleep mode while encoding -* Single title scan -* Chapter duration display -* Notifications when encodes complete -* Tray minimization -* Full screen preview -* Preset import/export -* Preferred language control for audio dubs and subtitles -* Preferences rearrangement -* Preference to auto-apply .m4v extension -* New system tray icon behavior -* Preference for what to do when encode completes -* Preference for how often to delete activity logs -* Preference to disable automatic scanning -* New Gnome session manager support -* Improved "auto" audio selection -* Use .m4v as the default extension for the MPEG-4 container -* Use .m4v when soft subs are enabled -* Alternate angle encoding fix -* Only strips drive letters for Windows builds -* Show correct audio format info when it's been sanitized for incompatibilities -* Preserve chapter list modifications made to queued jobs -* Fixed error when navigating chapter titles with the keyboard -* Bug Fixes. - -CLI: - -* Options to handle new subtitle, anamorphic, and preview features -* --srt-file, --srt-codeset, --srt-offset, --srt-lang, --srt-default -* --native-dub option lets users request dubbing instead of subs when the audio isn't in their native language -* Allow encoding sources with no audio without explicitly stating -a none -* Update checker on MinGW built exe should now work correctly. -* Matches GUIs' default verbosity level of 1 + Core: + + * New build system, allowing 64-bit binaries (around 10% faster) + * Soft subtitles and Closed Captions: + - DVD Closed Captions + - ATSC Closed Captions + - SRT subtitle import + - Text soft subtitles in MP4 and MKV output + - Bitmap soft subtitles in MKV output + * Better support for DVD inputs: + - Uses libdvdnav + - DVD angles support + - Workaround for libdvdread malloc bomb on invalid PGC entry + - DVD drive region detection support in Linux + - Handles DVD programs with more than 16 streams + - No longer tries to detect and discard duplicate titles when scanning + - Libdvdnav patched to perform read error recovery + - Libdvdread patched to allow raw device access in Windows + - Handles poorly mastered DVDs that had the menus ripped out of them + * Better support for non-DVD inputs: + - Preserves MP4 metadata + - TrueHD + - DTS-HD demuxing + - 8 bit audio + - Better handling of transport streams where audio starts first + - Better handling of transport streams that have been spliced together, leading to duplicate timestamps + - Better VC-1 frame detection + - Fixes bug that was causing one sec. of audio to be dropped on many ffmpeg files + - Looks harder for aspect ratio info from DV sources + - No longer truncates the last (dummy) chapter + - Allows specifying field parity for detelecine and decomb + * Better AV sync + * Support for sources with no audio + * DTS passthrough for MKV + * x264 bumped from r1169 to r1347, which means speed optimizations, new default settings (see r2742 commit comment), the magic of macroblock tree rate control (mbtree), a new CRF curve (meaning you will get different, generally lower bitrates at the same RF, with similar quality metrics), and weighted P-Frames (disabled by default for Baseline encodes and the AppleTV preset). + * Better sample interleaving + * Better, optional deinterlacer for decomb (EEDI2) + * New mode structure for the decomb filter + * Variable verbose logging levels + * Fixed timing for first two frames coming out of filters + * Libtheora bumped to 1.1.0 + * Improvements to our theora implementation (2 pass encoding + soft target rate control) + * Caters to Theora's insistence on content having mod16 framing dimensions specified + * Flushes LAME encoder's final packets + * Fixed interjob framerate calculation + * Fixed pthreads regression in cygwin + * Tweaks for packaging tools + * Solaris 10 build support + + All interfaces: + + * Live video preview + * New subtitle tab + * New filters and picture settings inspector + * Custom anamorphic mode + * Updated Sparkle + * Custom number of preview images + * Quality slider now works off actual rate factor/quantizer values instead of percentages + * Partially updated advanced x264 tab + * New built-in presets + * Use libdvdnav by default on DVD sources + * Removed Constant QP encoding option for x264 (use CRF) + * Various bug fixes and UI tweaks + * x264 turbo 1st pass mode now uses subme=2 not subme=1 + + Mac: + + * Core Audio AAC encoding + * H.264 video source decoding crash fixed + * Queue displays varying row heights based on encode settings + * Fixed EyeTV package scanning + * 64bit / 32 bit VLC detection + * Preset import/export + + Windows: + + * New audio tab + * AAC audio source decoding bug fixed + * Tray minimization is now optional + * Queue can now be started from main window + * Growl for Windows notification support + * General UI improvements + * Preset import + * Preferred language control for audio dubs and subtitles + * Fixed file extensions resetting to m4v when enabling chapter markers in mkv + * Faster updating of GUI elements from CLI data + * Cleanup / Improved some of the programs options. (Growl, use m4v, drive detection) + * Numerous fixes in the Picture Settings Panel and CLI Query Handling code. + * Bug Fixes and Usability improvements. + + Linux: + + * General UI improvements + * Inhibits sleep mode while encoding + * Single title scan + * Chapter duration display + * Notifications when encodes complete + * Tray minimization + * Full screen preview + * Preset import/export + * Preferred language control for audio dubs and subtitles + * Preferences rearrangement + * Preference to auto-apply .m4v extension + * New system tray icon behavior + * Preference for what to do when encode completes + * Preference for how often to delete activity logs + * Preference to disable automatic scanning + * New Gnome session manager support + * Improved "auto" audio selection + * Use .m4v as the default extension for the MPEG-4 container + * Use .m4v when soft subs are enabled + * Alternate angle encoding fix + * Only strips drive letters for Windows builds + * Show correct audio format info when it's been sanitized for incompatibilities + * Preserve chapter list modifications made to queued jobs + * Fixed error when navigating chapter titles with the keyboard + * Bug Fixes. + + CLI: + + * Options to handle new subtitle, anamorphic, and preview features + * --srt-file, --srt-codeset, --srt-offset, --srt-lang, --srt-default + * --native-dub option lets users request dubbing instead of subs when the audio isn't in their native language + * Allow encoding sources with no audio without explicitly stating -a none + * Update checker on MinGW built exe should now work correctly. + * Matches GUIs' default verbosity level of 1 Changes between 0.9.2 and 0.9.3: 0.9.3 Snapshot 5 -> 0.9.3 Final -- Better PMT processing -- Basic underlying support for live previews (encode from a seek point for a set number of frames) -- Better searching for IDR frames in H.264 streams -- Preset changes (iPhone goes CRF, some old Apple presets resurrected as Legacy) -- Assorted bug fixes + - Better PMT processing + - Basic underlying support for live previews (encode from a seek point for a set number of frames) + - Better searching for IDR frames in H.264 streams + - Preset changes (iPhone goes CRF, some old Apple presets resurrected as Legacy) + - Assorted bug fixes 0.9.3 Snapshot 4 -> 0.9.3 Snapshot 5 (r1913) -Core Library -- VC-1 stream input -- Newer libmp4v2, which fixes the issue with output > 2 gigs in Linux -- Proper allocation for preview frames -- Avoids corruption of previews of sources that use widths that aren't cleanly divisible by 8 -- Decodes DTS internally instead of using ffmpeg, to allow mixdowns -- Better support for DTS in MKV files with implicit timestamps or large timestamp errors -- Ensures proper chroma size by rounding up when dealing with odd dimensions -- Ensures "auto" samplerate sends a valid value to faac (22050, 24000, 32000, 44100, or 48000) -- Bumped Theora to 1.0 final -- Bumped x264 to r1024, which includes Nehalem optimizations as well as speed boosts for things such as b-adapt=2 - -Mac GUI -- Allows multibyte characters in chapter titles - -Windows GUI -- Fixes issue parsing presets that use maxWidth and maxHeight (-X and -Y) -- DRC defaults to 1 now -- Chapter markers disabled for non-DVD sources -- Makes sure Normal preset gets loaded -- Fixes arithmetic overflow crash when scanning - -Linux GUI -- Update checker -- Limits range of chapters to encode to the number of chapters on the DVD -- Disabled entry of dimensions larger than the source - -CLI -- Allows overriding of audio (tracks, bitrates, samplerates, codecs, mixdowns) and x264 options in built-in presets - -Documentation -- Documentation updates have begun on the wiki, although they are not yet complete + Core Library + - VC-1 stream input + - Newer libmp4v2, which fixes the issue with output > 2 gigs in Linux + - Proper allocation for preview frames + - Avoids corruption of previews of sources that use widths that aren't cleanly divisible by 8 + - Decodes DTS internally instead of using ffmpeg, to allow mixdowns + - Better support for DTS in MKV files with implicit timestamps or large timestamp errors + - Ensures proper chroma size by rounding up when dealing with odd dimensions + - Ensures "auto" samplerate sends a valid value to faac (22050, 24000, 32000, 44100, or 48000) + - Bumped Theora to 1.0 final + - Bumped x264 to r1024, which includes Nehalem optimizations as well as speed boosts for things such as b-adapt=2 + + Mac GUI + - Allows multibyte characters in chapter titles + + Windows GUI + - Fixes issue parsing presets that use maxWidth and maxHeight (-X and -Y) + - DRC defaults to 1 now + - Chapter markers disabled for non-DVD sources + - Makes sure Normal preset gets loaded + - Fixes arithmetic overflow crash when scanning + + Linux GUI + - Update checker + - Limits range of chapters to encode to the number of chapters on the DVD + - Disabled entry of dimensions larger than the source + + CLI + - Allows overriding of audio (tracks, bitrates, samplerates, codecs, mixdowns) and x264 options in built-in presets + + Documentation + - Documentation updates have begun on the wiki, although they are not yet complete 0.9.3 Snapshot 3 -> 0.9.3 Snapshot 4 (r1896) -Core Library -- Converts video in other color spaces to YUV420 (this means DV support) -- Official, standards-based AC3-in-MP4 -- Tries to base the AV timing for streams off audio when possible -- Keeps some audio fixes for lost packets in over the air streams from interfering with other sources -- Handles rendering of sources where the picture resolution changes mid-stream (this fixes the long-standing bug reading a particular episode of Doctor Who) -- Wider window for clock references (AV sync) -- Fixed a crash when closing out data for AAC encoding on aborted encodes -- Rejiggered verbose activity log display to be more laconic by default -- Updated x264 to r1016, which means b-rdo and bime are gone and replaced with new subme modes -- DTS and HDMV DTS audio support in streams -- Doesn't show the audio track button on iPhones/iPod Touches unless there's more than 1 track -- Tries to avoid garbage data from AC3 sync by searching for two agreeing packets -- As the MPEG4IP project is defunct, switched to an independently maintained libmp4v2 which has folded in all our cumbersome patches -- Fixed SunOS compilation -- Fixed conflict between maxHeight and maxWidth and loose anamorphic -- Warn in the log when titles are being ignored during scan for lack of audio -- Fixed bug with Slow/Slowest deinterlacing and decomb which could leave a flickering line at the top or bottom of the screen -- Extracts audio and subtitle types from DVD sources, to do things like label commentary tracks -- Better handling of the beginning of AVI and WMV sources that start after time 0 -- Optimize MP4 for web download works with AC3 tracks now - -Mac GUI -- Nested presets -- Individual activity logs for each encode (stored by default in ~/Application Support/HandBrake, can be co-located with encoded file destination by preference) -- Allows reading from ZFS volumes -- Fixed target size mode. It keeps breaking itself. Maybe it should just be put out of its misery... -- Assorted other improvements - -Windows GUI -- Nested presets -- Individual activity logs for each encode -- Slow and slower deinterlacing and decomb work now in Windows -- Added resizeable update window -- Fixed parsing of non-DVD source audio formats -- Restored Copy to Clipboard to the Activity Log Window, among other enhancements to it -- Fixed bug with MKV presets showing up as .m4v -- Assorted other improvements - -Linux GUI (GTK) -- Nested presets -- Individual activity logs for each encode -- Allows pending queue items to be removed, and reloaded in the main window for editing -- Better handling of HD previews -- Assorted other improvements - -CLI -- Updated presets to the equivalent of the nested ones in the GUIs -- Allows setting custom audio track names in MP4 files -- Allows selection of the COLR atom in MP4 files, between Bt.601 and Bt.709 -- Fixed reading of device paths in OS X - -A special note on the new presets (they're collapsible-triangle-folder-thing-errific!) -- Deux Six Quatre, Blind, Broke, and Bedlam are gone. They were dead weight. -- iPod Low-Rez is now iPod Classic & iPod Nano -- iPod High-Rez is now iPod Legacy -- iPhone / iPod Touch is now iPhone & iPod Touch, so take care CLI users -- Animation and Television now use the decomb and detelecine (VFR) filters -- High Profile presets now use psy-trellis and the new subme 9 mode with B-frame RD refinement -- AppleTV is now CRF, so sizes will vary with content -- PS3 preset should be fixed -- Constant Quality Rate still needs its quality % lowered, probably - -The keen reader is already asking "iPod Legacy? WTF is iPod High-Rez called iPod Legacy now?" - -The answer is Universal. - -The Universal preset is designed to play on all modern iPods (anything newer than the iPod 5.5G). It also plays on iPhones. It also plays on AppleTVs. It should also play just about anywhere else, hence the name. It is full anamorphic DVD resolution--no tricks with downscaling like stuff from the iTunes Store. It includes chapters, and has the first audio track in both AAC (DPL2 downmixed) and AC3 pass-thru, just like the AppleTV preset. In fact, it should give the same quality as the AppleTV preset, but faster...and at a larger file size. Like the AppleTV preset, it used CRF, so sizes will vary. + Core Library + - Converts video in other color spaces to YUV420 (this means DV support) + - Official, standards-based AC3-in-MP4 + - Tries to base the AV timing for streams off audio when possible + - Keeps some audio fixes for lost packets in over the air streams from interfering with other sources + - Handles rendering of sources where the picture resolution changes mid-stream (this fixes the long-standing bug reading a particular episode of Doctor Who) + - Wider window for clock references (AV sync) + - Fixed a crash when closing out data for AAC encoding on aborted encodes + - Rejiggered verbose activity log display to be more laconic by default + - Updated x264 to r1016, which means b-rdo and bime are gone and replaced with new subme modes + - DTS and HDMV DTS audio support in streams + - Doesn't show the audio track button on iPhones/iPod Touches unless there's more than 1 track + - Tries to avoid garbage data from AC3 sync by searching for two agreeing packets + - As the MPEG4IP project is defunct, switched to an independently maintained libmp4v2 which has folded in all our cumbersome patches + - Fixed SunOS compilation + - Fixed conflict between maxHeight and maxWidth and loose anamorphic + - Warn in the log when titles are being ignored during scan for lack of audio + - Fixed bug with Slow/Slowest deinterlacing and decomb which could leave a flickering line at the top or bottom of the screen + - Extracts audio and subtitle types from DVD sources, to do things like label commentary tracks + - Better handling of the beginning of AVI and WMV sources that start after time 0 + - Optimize MP4 for web download works with AC3 tracks now + + Mac GUI + - Nested presets + - Individual activity logs for each encode (stored by default in ~/Application Support/HandBrake, can be co-located with encoded file destination by preference) + - Allows reading from ZFS volumes + - Fixed target size mode. It keeps breaking itself. Maybe it should just be put out of its misery... + - Assorted other improvements + + Windows GUI + - Nested presets + - Individual activity logs for each encode + - Slow and slower deinterlacing and decomb work now in Windows + - Added resizeable update window + - Fixed parsing of non-DVD source audio formats + - Restored Copy to Clipboard to the Activity Log Window, among other enhancements to it + - Fixed bug with MKV presets showing up as .m4v + - Assorted other improvements + + Linux GUI (GTK) + - Nested presets + - Individual activity logs for each encode + - Allows pending queue items to be removed, and reloaded in the main window for editing + - Better handling of HD previews + - Assorted other improvements + + CLI + - Updated presets to the equivalent of the nested ones in the GUIs + - Allows setting custom audio track names in MP4 files + - Allows selection of the COLR atom in MP4 files, between Bt.601 and Bt.709 + - Fixed reading of device paths in OS X + + A special note on the new presets (they're collapsible-triangle-folder-thing-errific!) + - Deux Six Quatre, Blind, Broke, and Bedlam are gone. They were dead weight. + - iPod Low-Rez is now iPod Classic & iPod Nano + - iPod High-Rez is now iPod Legacy + - iPhone / iPod Touch is now iPhone & iPod Touch, so take care CLI users + - Animation and Television now use the decomb and detelecine (VFR) filters + - High Profile presets now use psy-trellis and the new subme 9 mode with B-frame RD refinement + - AppleTV is now CRF, so sizes will vary with content + - PS3 preset should be fixed + - Constant Quality Rate still needs its quality % lowered, probably + + The keen reader is already asking "iPod Legacy? WTF is iPod High-Rez called iPod Legacy now?" + + The answer is Universal. + + The Universal preset is designed to play on all modern iPods (anything newer than the iPod 5.5G). It also plays on iPhones. It also plays on AppleTVs. It should also play just about anywhere else, hence the name. It is full anamorphic DVD resolution--no tricks with downscaling like stuff from the iTunes Store. It includes chapters, and has the first audio track in both AAC (DPL2 downmixed) and AC3 pass-thru, just like the AppleTV preset. In fact, it should give the same quality as the AppleTV preset, but faster...and at a larger file size. Like the AppleTV preset, it used CRF, so sizes will vary. 0.9.3 Snapshot2 -> 0.9.3 Snapshot 3 (r1797) -Core Library: -- Universal input support, utilizing libavcodec from the FFmpeg project for decoding non-MPEG-2 video -- Newer, faster, better version of the x264 codec, including psychovisual optimizations -- Better AV sync through full compliance with the MPEG Standard Target Decoder timing model -- More accurate auto-cropping -- Support for New Zealand and Norwegian HDTV broadcasts (H.264 and AAC-LATM in MPEG-TS) -- Detelecine is now "VFR detelecine" by default, dropping some frames and extending others to make up lost time, old behavior of keeping duplicate frames is enabled by selecting a framerate besides "Same as source" -- Threaded deinterlacing in Slow and Slower modes -- Threaded and entirely rewritten decomb filter -- Better audio resampling interpolator -- Better gamma in QuickTime through the use of the COLR MP4 atom -- Better constant quality encoding when using FFmpeg -- Hopefully better cache and virtual memory performance by recycling buffers that were most recently used instead of least -- Fix for MP4s with "negative duration" errors. -- Set the detelecine filter to work better with PAL by using "loose" breaks -- Fix for missing initial H.264 NAL units, improves reliability of 8x8dct -- Fix for subtitle-scan with XviD encoding -- Fix for crash at the end of 2nd pass using x264 -- Deblock filter works now -- Rewritten update system, so the core library can read a portion of Sparkle appcasts. -- Updates for libsamplerate, libogg, xvidcore, libtheora, libmpeg2, lame, faac, and of course ffmpeg and x264. - -Mac GUI -- Entirely rewritten and far more flexible queue that can be saved between sessions, capable of preserving queued items after a crash -- Now requires vlc 0.9.xx to read protected dvd's in the users /Applications folder -- Fix for 4x3 loose anamorphic to keep it from downscaling -- Countless other improvements - -Windows GUI -- Resolution calculation -- Better preset bar -- Better queue (including queue recovery feature) -- Better activity log window -- Improved UI (layout changes, animated x264 options, DVD drive detection, duration displayed) -- More options - includes support for custom auto name format & starting the CLI minimized -- Countless other improvements - -Linux GUI (GTK) -- It's alive! - -Known Issues in Snapshot 3 -- Possibility of a flickering line at the top or bottom of the frame after Slow or Slower deinterlacing or decombing -- Input bitrate display may be off by a factor of 100 for H.264-in-TS sources -- Constant Quality Rate preset probably needs a lower quality level (60% - 55%) -- With non-DVD sources that don't have AC3 audio, you can't encode 1 input audio track to multiple output audio tracks -- Slow and Slower deinterlacing and decombing are BROKEN in Windows -- QuickTime won't read Xvid-in-MP4 output, although VLC will -- Windows GUI does not detect all audio tracks from non-DVD sources + Core Library: + - Universal input support, utilizing libavcodec from the FFmpeg project for decoding non-MPEG-2 video + - Newer, faster, better version of the x264 codec, including psychovisual optimizations + - Better AV sync through full compliance with the MPEG Standard Target Decoder timing model + - More accurate auto-cropping + - Support for New Zealand and Norwegian HDTV broadcasts (H.264 and AAC-LATM in MPEG-TS) + - Detelecine is now "VFR detelecine" by default, dropping some frames and extending others to make up lost time, old behavior of keeping duplicate frames is enabled by selecting a framerate besides "Same as source" + - Threaded deinterlacing in Slow and Slower modes + - Threaded and entirely rewritten decomb filter + - Better audio resampling interpolator + - Better gamma in QuickTime through the use of the COLR MP4 atom + - Better constant quality encoding when using FFmpeg + - Hopefully better cache and virtual memory performance by recycling buffers that were most recently used instead of least + - Fix for MP4s with "negative duration" errors. + - Set the detelecine filter to work better with PAL by using "loose" breaks + - Fix for missing initial H.264 NAL units, improves reliability of 8x8dct + - Fix for subtitle-scan with XviD encoding + - Fix for crash at the end of 2nd pass using x264 + - Deblock filter works now + - Rewritten update system, so the core library can read a portion of Sparkle appcasts. + - Updates for libsamplerate, libogg, xvidcore, libtheora, libmpeg2, lame, faac, and of course ffmpeg and x264. + + Mac GUI + - Entirely rewritten and far more flexible queue that can be saved between sessions, capable of preserving queued items after a crash + - Now requires vlc 0.9.xx to read protected dvd's in the users /Applications folder + - Fix for 4x3 loose anamorphic to keep it from downscaling + - Countless other improvements + + Windows GUI + - Resolution calculation + - Better preset bar + - Better queue (including queue recovery feature) + - Better activity log window + - Improved UI (layout changes, animated x264 options, DVD drive detection, duration displayed) + - More options - includes support for custom auto name format & starting the CLI minimized + - Countless other improvements + + Linux GUI (GTK) + - It's alive! + + Known Issues in Snapshot 3 + - Possibility of a flickering line at the top or bottom of the frame after Slow or Slower deinterlacing or decombing + - Input bitrate display may be off by a factor of 100 for H.264-in-TS sources + - Constant Quality Rate preset probably needs a lower quality level (60% - 55%) + - With non-DVD sources that don't have AC3 audio, you can't encode 1 input audio track to multiple output audio tracks + - Slow and Slower deinterlacing and decombing are BROKEN in Windows + - QuickTime won't read Xvid-in-MP4 output, although VLC will + - Windows GUI does not detect all audio tracks from non-DVD sources 0.9.3 Snapshot 1 -> 0.9.3 Snapshot 2 (r1477) -Core Library: -- Anamorphic PAR for the AVI container -- Allow constant frame rates when they different from the source's frame rate (otherwise pass through the variable MPEG-2 frame durations ) -- Decomb filter (selectively deinterlaces when it sees interlacing in the frame) -- Filter bug fixed, that would skip any filters after detelecine, if VFR wasn't enabled -- Loose anamorphic + FFmpeg video bug fixed + Core Library: + - Anamorphic PAR for the AVI container + - Allow constant frame rates when they different from the source's frame rate (otherwise pass through the variable MPEG-2 frame durations ) + - Decomb filter (selectively deinterlaces when it sees interlacing in the frame) + - Filter bug fixed, that would skip any filters after detelecine, if VFR wasn't enabled + - Loose anamorphic + FFmpeg video bug fixed -Windows GUI: -- Title dropdown list bug fixed -- Missing log file bug fixed + Windows GUI: + - Title dropdown list bug fixed + - Missing log file bug fixed -CLI: -- Default audio samplerate changed to 48kHz, audio bitrate changed to 160kbps. -- Samplerate entry bug fixed + CLI: + - Default audio samplerate changed to 48kHz, audio bitrate changed to 160kbps. + - Samplerate entry bug fixed 0.9.2 -> 0.9.3 Snapshot 1 (r1457) -Core Library: -- New audio subsystem (no more AAC+AC3, control each track's codec and settings individually) -- Removed libdvdcss (HandBrake no longer decrypts DVDs on its own, will use VLC to do so if it's available) -- Added Theora encoder -- Fixed x264-in-avi and ffmpeg-in-avi -- Fixed xvid -- More accurate scaling -- Major sync improvements -- Major stream improvements -- AAC+AC3 support in MKV -- MKV seeking fixes -- Make sure subtitles get displayed long enough to read them -- Updated VBV 2-pass and VBV 1-pass patch for x264 -- Adaptive Quantization for x264 -- Recover from bad preview scans -- Recover from invalid PGNs -- Fixed vorbis bitrate control -- Snapshot builds - -Mac: -- New audio interface -- Loads libdvdcss from VLC at runtime if it's present on the user's system -- No more general-purpose "Codecs" menu -- set video and audio codecs individually -- More robust preset system, in preparation for nested presets -- Made 64-bit MP4 file widget more prominent -- Only allow useful x264 options in the advanced tab -- Various fixes and improvements - -Windows: -- New x264 tab -- New audio interface -- Various fixes and improvements - -CLI: -- New audio interface + Core Library: + - New audio subsystem (no more AAC+AC3, control each track's codec and settings individually) + - Removed libdvdcss (HandBrake no longer decrypts DVDs on its own, will use VLC to do so if it's available) + - Added Theora encoder + - Fixed x264-in-avi and ffmpeg-in-avi + - Fixed xvid + - More accurate scaling + - Major sync improvements + - Major stream improvements + - AAC+AC3 support in MKV + - MKV seeking fixes + - Make sure subtitles get displayed long enough to read them + - Updated VBV 2-pass and VBV 1-pass patch for x264 + - Adaptive Quantization for x264 + - Recover from bad preview scans + - Recover from invalid PGNs + - Fixed vorbis bitrate control + - Snapshot builds + + Mac: + - New audio interface + - Loads libdvdcss from VLC at runtime if it's present on the user's system + - No more general-purpose "Codecs" menu -- set video and audio codecs individually + - More robust preset system, in preparation for nested presets + - Made 64-bit MP4 file widget more prominent + - Only allow useful x264 options in the advanced tab + - Various fixes and improvements + + Windows: + - New x264 tab + - New audio interface + - Various fixes and improvements + + CLI: + - New audio interface + + Changes between 0.9.1 and 0.9.2: + CORE + + - AC3 in MP4 support + - Multi-track audio support for Apple devices + - Better handling of audio discontinuities + - More flexible, "loose" anamorphic + - Variable frame rate encoding + - MP4 optimization for progressive downloads + - Dynamic range compression for encoding from AC3 audio + - Ability to encode an audio stream and pass it through at the same time + - iPhone-compatible anamorphic (pasp atom) + - Robust program and transport stream support + - Better handling of DVD read errors from invalid VOB units + - Detects and works around missing end of cell markers + - Recovers from loss of signal in a stream + - Drops subtitles less often + - Keeps chapter markers in better sync and prevents duplicates + - Better handling of B-Frames + - Tunes FIFO sizes by CPU count + - Finally squashes the bug that cut off the end of movies + - Preset changes + - Standardizes on standard out for progress and standard error for everything else. + - Correct channel counts when passing AC3 audio to Matroska + - Tag MP4 files as encoded with HandBrake + - No more merging short chapters + - Newer copies of x264, + - VBV 2-pass patch for x264 + - Sets keyframes for x264 by frame rate. + - Support for >2GB MKV files in Linux + - Code audio languages in a way QuickTime understands + - Better subtitle positioning + - Fewer crashes in 2-pass encoding + + MAC + + - Leopard Only + - Sparkle + - Reads .eyetv files as well as .dvdmedia files + - Much better queue + - More white space + - Code restructuring + - Activity window logging, complete with a "black box recorder" for crashes + - Ability to open a single title for a DVD instead of scanning the whole thing + - Warns people when they try to queue up two files with the same name + - Maintains picture filter states between jobs + - .xib Interface Builder files SVN can track + - Switches to NSImageView for previews, so no more useless OpenGL effects + - Temporary loss of localizations for foreign languages (the old system was broken anyway) + - Separate filter settings for every queued job + + WIN + + - Revamped preset system + - Sparkle-compatible update checker + - Activity log window + - CLI built-in preset parsing + - No more admin rights required in Vista + - Handles more display resolutions + + CLI + + - Built-in presets + - Short names for denoising (weak, medium, strong) and deinterlacing (fast, slow, slower) + - Solaris port + - No more x264b30 (use -e x264 -I -x level=30:cabac=0 instead or better yet an iPod preset) + - Chapter marker .csv input fixed + - CRF as default quality mode for x264, now -q is CRF and if you want CQP add -Q to it + -CORE - -- AC3 in MP4 support -- Multi-track audio support for Apple devices -- Better handling of audio discontinuities -- More flexible, "loose" anamorphic -- Variable frame rate encoding -- MP4 optimization for progressive downloads -- Dynamic range compression for encoding from AC3 audio -- Ability to encode an audio stream and pass it through at the same time -- iPhone-compatible anamorphic (pasp atom) -- Robust program and transport stream support -- Better handling of DVD read errors from invalid VOB units -- Detects and works around missing end of cell markers -- Recovers from loss of signal in a stream -- Drops subtitles less often -- Keeps chapter markers in better sync and prevents duplicates -- Better handling of B-Frames -- Tunes FIFO sizes by CPU count -- Finally squashes the bug that cut off the end of movies -- Preset changes -- Standardizes on standard out for progress and standard error for everything else. -- Correct channel counts when passing AC3 audio to Matroska -- Tag MP4 files as encoded with HandBrake -- No more merging short chapters -- Newer copies of x264, -- VBV 2-pass patch for x264 -- Sets keyframes for x264 by frame rate. -- Support for >2GB MKV files in Linux -- Code audio languages in a way QuickTime understands -- Better subtitle positioning -- Fewer crashes in 2-pass encoding - -MAC - -- Leopard Only -- Sparkle -- Reads .eyetv files as well as .dvdmedia files -- Much better queue -- More white space -- Code restructuring -- Activity window logging, complete with a "black box recorder" for crashes -- Ability to open a single title for a DVD instead of scanning the whole thing -- Warns people when they try to queue up two files with the same name -- Maintains picture filter states between jobs -- .xib Interface Builder files SVN can track -- Switches to NSImageView for previews, so no more useless OpenGL effects -- Temporary loss of localizations for foreign languages (the old system was broken anyway) -- Separate filter settings for every queued job - -WIN - -- Revamped preset system -- Sparkle-compatible update checker -- Activity log window -- CLI built-in preset parsing -- No more admin rights required in Vista -- Handles more display resolutions - -CLI - -- Built-in presets -- Short names for denoising (weak, medium, strong) and deinterlacing (fast, slow, slower) -- Solaris port -- No more x264b30 (use -e x264 -I -x level=30:cabac=0 instead or better yet an iPod preset) -- Chapter marker .csv input fixed -- CRF as default quality mode for x264, now -q is CRF and if you want CQP add -Q to it Changes between 0.9.0 and 0.9.1: @@ -739,7 +753,9 @@ Changes between 0.9.0 and 0.9.1: + Fixed: Add-to-queue issues + Fixed: Foreign language issues Assorted other changes - + + + Changes between 0.8.5b1 and 0.9.0: Core HandBrake Changes @@ -784,6 +800,8 @@ Changes between 0.8.5b1 and 0.9.0: + Changed: DVD information parser Assorted other changes + + Changes between 0.8.0b1 and 0.8.5b1 Core HandBrake Changes @@ -863,6 +881,7 @@ Changes between 0.8.0b1 and 0.8.5b1 + Removed: The Help and Support window. Been replaced with a few Web Links. + Changes between 0.7.1 and 0.8.0 + MediaFork project forked from HandBrake source + Updated libraries (meaning better quality, hopefully fewer bugs, and increased speeds) @@ -878,10 +897,14 @@ Changes between 0.7.1 and 0.8.0 + New preference item to select the default audio language (Mac OS X) + Bugfix for reading straight from a DVD + + Changes between 0.7.0 and 0.7.1 + Universal Binary for PPC and Intel + Bugfixes for missing subtitles, audio glitches with LPCM tracks and more + + Changes between 0.7.0-beta3 and 0.7.0 + Multithreaded H.264 encoding with x264 + Added option for H.264 Baseline (suitable for iPods) @@ -889,6 +912,8 @@ Changes between 0.7.0-beta3 and 0.7.0 + Fixes for some DVD titles HandBrake would not recognize + Fixes audio gliches when encoding from LPCM tracks + + Changes between 0.6.2 and 0.7.0-beta3 + Chapters selection + Custom framerate @@ -905,6 +930,8 @@ Changes between 0.6.2 and 0.7.0-beta3 + Grayscale encoding + Up-to-date BeOS UI + + Changes between 0.6.1 and 0.6.2 + Support for DVDs with MPEG audio tracks + Rewrote the DVD navigation code @@ -914,9 +941,13 @@ Changes between 0.6.1 and 0.6.2 + Internal improvements + Bugfixes + + Changes between 0.6.0 and 0.6.1 + Fixed LPCM endianness issue + + Changes between 0.5.2 and 0.6.0 + MP4 and OGM output + AAC and Vorbis encoding @@ -926,37 +957,53 @@ Changes between 0.5.2 and 0.6.0 + GTK2 linux interface + OS X interface localization + + Changes between 0.5.1 and 0.5.2 + Bugfixes + + Changes between 0.5 and 0.5.1 + 2-pass XviD encoding + Bugfixes + + Changes between 0.4 and 0.5 + Bugfixes, rewrite of large parts of the core + XviD encoding (1-pass only) + + Changes between 0.3 and 0.4 + Better multithreading + Allow the user to specify a target size instead of bitrate + Misc GUI enhancements + Use low-priority threads on OS X + + Changes between 0.2 and 0.3 + OSX & Linux ports + Allow 2-pass encoding + Many internal changes & fixes + + Changes between 0.1.1 and 0.2 + Fixed a major bug that made HandBrake probably crash after ~ 15 minutes encoded + Fixed a few minor memory leaks + + Changes between 0.1 and 0.1.1 + Fixed a stupid bug that prevented to scan volumes correctly if FAT/NTFS/etc volumes were mounted + + Changes between 0.1-alpha2 and 0.1 : + Automatically detect ripped DVDs on BFS volumes + Allow picture cropping and resizing @@ -965,9 +1012,13 @@ Changes between 0.1-alpha2 and 0.1 : and BSPlayer) + Better A/V sync with some DVDs + + Changes between 0.1-alpha and 0.1-alpha2 : + Show length for each title + Fixed the screwed-audio bug + Many bugfixes... + + First version is 0.1-alpha. diff --git a/THANKS b/THANKS index c703100d6..ca228204e 100644 --- a/THANKS +++ b/THANKS @@ -5,7 +5,6 @@ Graphics: Modernised Application Icon by Matt Johnson (mattdog.100@gmail.com) Handbrake Toolbar Icons by Nik Pawlak (holla@nikpawlak.com, @nikpawlak, http://nikpawlak.com) - For use only with Handbrake software and directly related non commercial projects. Hosting: @@ -19,7 +18,6 @@ Software: ReviewBoard (http://www.reviewboard.org/) PhpBB (http://www.phpbb.com/) -hlscript (http://badmofo.org/hlscript/) Jetbrains ReSharper (http://www.jetbrains.com/resharper/features/index.html?linklogos) VisualSVN (http://www.visualsvn.com) diff --git a/doc/BUILD-Mac b/doc/BUILD-Mac index 118109581..9e8227d9a 100644 --- a/doc/BUILD-Mac +++ b/doc/BUILD-Mac @@ -1,4 +1,4 @@ -Build Guide for HandBrake 5208svn on Mac OS X +Build Guide for HandBrake 5388svn on Mac OS X ********************************************* Table of Contents @@ -23,11 +23,10 @@ Table of Contents 6 Building via Xcode.app 6.1 Checkout Sources 6.2 Build - 6.3 Note: Debugging - 6.4 Note: Finding Built Products - 6.5 Note: Workspace Log Behaviors - 6.6 External Target - 6.7 User-Defined Settings + 6.3 Note: Finding Built Products + 6.4 Note: Workspace Log Behaviors + 6.5 External Target + 6.6 User-Defined Settings 7 Troubleshooting Appendix A Project Repository Details @@ -49,15 +48,28 @@ possible: * Mac Intel hardware - * Mac OS X 10.7.2 + * Mac OS X 10.7.5 or Mac OS X 10.8.3 - * Xcode 4.2.1 (Build version 4D502) + * Xcode 4.6.1 (4H512) - * llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) + * llvm-gcc-4.2 version 4.2.1 (Based on Apple Inc. build 5658) (LLVM + build 2336.11.00) - * yasm 1.2.x + * Xcode command-line tools (installed via Preferences > Downloads > + Components) - * xquartz (http://xquartz.macosforge.org/landing/) + * XQuartz (http://xquartz.macosforge.org/landing/) + +The following tools are compiled during the build process if necessary, +but you can speed up your build by installing them: + + * yasm 1.2.0 or later + + * autoconf + + * automake + + * libtool Note: It is recommended to use the platform distribution's standard compiler for maximum C++ compatibility. If you build with @@ -519,17 +531,7 @@ Perform the following steps to build: * Xcode workspace Log navigator - select top Build item -6.3 Note: Debugging -=================== - -When debugging, Xcode launches the application under the gdb debugger. -gdb will encounter a trap when starting the program. This trap is -harmless and you should just 'continue'. For the curious, the trap -occurs because we add some values to the environment with setenv, then -do a brain transplant with execv. Restarting the application with execv -triggers the trap. - -6.4 Note: Finding Built Products +6.3 Note: Finding Built Products ================================ Under default Xcode.app options the products from a build are managed @@ -552,7 +554,7 @@ top of build tree and navigate to release products: greyed-out. Workaround glitch by selecting any other tab and then reselecting Projects tab. -6.5 Note: Workspace Log Behaviors +6.4 Note: Workspace Log Behaviors ================================= The default Workspace behavior does not display latest Build log in the @@ -580,7 +582,7 @@ navigator and show current log: are ignored by the external build system. Ultimately, look to the workspace status indicator for Build Succeeded. -6.6 External Target +6.5 External Target =================== The external target mechanism is used to launch a full terminal-based @@ -633,7 +635,7 @@ Example; something in a big module is failing; redo build sequentially: make ffmpeg.clean make BUILD.jobs=1 ffmpeg -6.7 User-Defined Settings +6.6 User-Defined Settings ========================= The following user defined settings are visible in Xcode project and @@ -690,10 +692,6 @@ When troubleshooting build issues, the following files relative to the Environment (variables) dump as seen when Xcode forks `make'. Mac OS X only. -A note about gdb: We perform an extra execv when starting the -application. This triggers a trap in gdb. It is harmless. You should -just 'continue' from the trap. - Appendix A Project Repository Details ************************************* @@ -701,7 +699,7 @@ Appendix A Project Repository Details root: svn://svn.handbrake.fr/HandBrake branch: trunk uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5 - rev: 5208 - date: 2013-01-26 18:47:13 +0000 + rev: 5388 + date: 2013-04-09 14:21:38 +0200 type: developer diff --git a/doc/texi/Building.osx.texi b/doc/texi/Building.osx.texi index f9aa3fe2c..cd35269ea 100644 --- a/doc/texi/Building.osx.texi +++ b/doc/texi/Building.osx.texi @@ -20,11 +20,20 @@ Building on @value{OS.osx} is well supported. It is the reference platform for @ @itemize @bullet @item Mac Intel hardware -@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.2.x -@item xquartz (http://xquartz.macosforge.org/landing/) +@item @value{OS.osx} 10.7.5 or @value{OS.osx} 10.8.3 +@item Xcode 4.6.1 (4H512) +@item llvm-gcc-4.2 version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) +@item Xcode command-line tools (installed via Preferences > Downloads > Components) +@item XQuartz (http://xquartz.macosforge.org/landing/) +@end itemize + +The following tools are compiled during the build process if necessary, but you can speed up your build by installing them: + +@itemize @bullet +@item yasm 1.2.0 or later +@item autoconf +@item automake +@item libtool @end itemize @include building/prerequisites.bundled.texi @@ -71,6 +80,4 @@ make UB.xcconfigs="osx107.i386 osx107.x86_64" ub.combine @c %**------------------------------------------------------------------------- @include building/chapter.via.xcode.texi @include building/chapter.troubleshooting.texi - -A note about gdb: We perform an extra execv when starting the application. This triggers a trap in gdb. It is harmless. You should just 'continue' from the trap. @include building/appendix.repo.texi diff --git a/doc/texi/building/chapter.via.xcode.texi b/doc/texi/building/chapter.via.xcode.texi index 83d1e9362..263390851 100644 --- a/doc/texi/building/chapter.via.xcode.texi +++ b/doc/texi/building/chapter.via.xcode.texi @@ -20,11 +20,6 @@ Perform the following steps to build: @item Xcode workspace Log navigator - select top Build item @end itemize -@c %**------------------------------------------------------------------------- -@anchor{xcode.note.debug} -@section Note: Debugging -When debugging, Xcode launches the application under the gdb debugger. gdb will encounter a trap when starting the program. This trap is harmless and you should just 'continue'. For the curious, the trap occurs because we add some values to the environment with setenv, then do a brain transplant with execv. Restarting the application with execv triggers the trap. - @c %**------------------------------------------------------------------------- @anchor{xcode.note.products} @section Note: Finding Built Products diff --git a/gfx/icons/-Credits.md b/gfx/icons/-Credits.md index 3202b0d38..30e23bedc 100644 --- a/gfx/icons/-Credits.md +++ b/gfx/icons/-Credits.md @@ -4,5 +4,8 @@ - holla@nikpawlak.com - http://nikpawlak.com -# Lisecnce -For use only with Handbrake software and directly related non commercial projects. \ No newline at end of file +# Licence +Under the Project GPLv2 Licence. + + +Note: The Green Encode / Pause Icons are remakes by jamiemlaw \ No newline at end of file diff --git a/libhb/common.c b/libhb/common.c index 7279c6b62..a34b7c08d 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -997,12 +997,12 @@ int hb_get_best_mixdown(uint32_t codec, uint64_t layout, int mixdown) // caller requested the best available mixdown if (mixdown == HB_INVALID_AMIXDOWN) - mixdown = hb_audio_mixdowns[hb_audio_mixdowns_count].amixdown; + mixdown = hb_audio_mixdowns[hb_audio_mixdowns_count - 1].amixdown; int ii; // test all mixdowns until an authorized, supported mixdown is found // stop before we reach the "worst" non-None mixdown (index == 1) - for (ii = hb_audio_mixdowns_count; ii > 1; ii--) + for (ii = hb_audio_mixdowns_count - 1; ii > 1; ii--) if (hb_audio_mixdowns[ii].amixdown <= mixdown && hb_mixdown_is_supported(hb_audio_mixdowns[ii].amixdown, codec, layout)) break; @@ -2412,7 +2412,7 @@ int hb_audio_add(const hb_job_t * job, const hb_audio_config_t * audiocfg) audio->config.out.normalize_mix_level = 0; audio->config.out.compression_level = -1; audio->config.out.quality = HB_INVALID_AUDIO_QUALITY; - audio->config.out.dither_method = AV_RESAMPLE_DITHER_NONE; + audio->config.out.dither_method = hb_audio_dither_get_default(); } else { diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c index f3fbd9a38..beece1b9b 100644 --- a/libhb/decavcodec.c +++ b/libhb/decavcodec.c @@ -192,12 +192,21 @@ static int decavcodecaInit( hb_work_object_t * w, hb_job_t * job ) pv->title = w->title; pv->list = hb_list_init(); - codec = avcodec_find_decoder(w->codec_param); + codec = avcodec_find_decoder(w->codec_param); pv->context = avcodec_alloc_context3(codec); + if (pv->title->opaque_priv != NULL) { AVFormatContext *ic = (AVFormatContext*)pv->title->opaque_priv; avcodec_copy_context(pv->context, ic->streams[w->audio->id]->codec); + // libav's eac3 parser toggles the codec_id in the context as + // it reads eac3 data between AV_CODEC_ID_AC3 and AV_CODEC_ID_EAC3. + // It detects an AC3 sync pattern sometimes in ac3_sync() which + // causes it to eventually set avctx->codec_id to AV_CODEC_ID_AC3 + // in ff_aac_ac3_parse(). Since we are parsing some data before + // we get here, the codec_id may have flipped. This will cause an + // error in hb_avcodec_open(). So flip it back! + pv->context->codec_id = w->codec_param; } else { @@ -424,8 +433,27 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, static char codec_name[64]; info->name = strncpy( codec_name, codec->name, sizeof(codec_name)-1 ); - AVCodecParserContext *parser = av_parser_init( codec->id ); - AVCodecContext *context = avcodec_alloc_context3(codec); + AVCodecContext *context = avcodec_alloc_context3(codec); + AVCodecParserContext *parser = NULL; + + if (w->title->opaque_priv != NULL) + { + AVFormatContext *ic = (AVFormatContext*)w->title->opaque_priv; + avcodec_copy_context(context, ic->streams[w->audio->id]->codec); + // libav's eac3 parser toggles the codec_id in the context as + // it reads eac3 data between AV_CODEC_ID_AC3 and AV_CODEC_ID_EAC3. + // It detects an AC3 sync pattern sometimes in ac3_sync() which + // causes it to eventually set avctx->codec_id to AV_CODEC_ID_AC3 + // in ff_aac_ac3_parse(). Since we are parsing some data before + // we get here, the codec_id may have flipped. This will cause an + // error in hb_avcodec_open(). So flip it back! + context->codec_id = w->codec_param; + } + else + { + parser = av_parser_init(codec->id); + } + hb_ff_set_sample_fmt( context, codec, AV_SAMPLE_FMT_FLT ); if ( hb_avcodec_open( context, codec, NULL, 0 ) ) { @@ -446,20 +474,6 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, len = av_parser_parse2(parser, context, &pbuffer, &pbuffer_size, buf->data + pos, buf->size - pos, buf->s.start, buf->s.start, 0); - if (context->codec_id == AV_CODEC_ID_TRUEHD && - context->channel_layout == AV_CH_LAYOUT_MONO) - { - // libavcodec can't decode TrueHD Mono (bug #356) - // work around it by requesting Stereo before decoding - truehd_mono = 1; - context->request_channels = 2; - context->request_channel_layout = AV_CH_LAYOUT_STEREO; - } - else - { - context->request_channels = 0; - context->request_channel_layout = 0; - } } else { @@ -467,6 +481,22 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, len = pbuffer_size = buf->size; } pos += len; + + // libavcodec can't decode TrueHD Mono (bug #356) + // work around it by requesting Stereo before decoding + if (context->codec_id == AV_CODEC_ID_TRUEHD && + context->channel_layout == AV_CH_LAYOUT_MONO) + { + truehd_mono = 1; + context->request_channels = 2; + context->request_channel_layout = AV_CH_LAYOUT_STEREO; + } + else + { + context->request_channels = 0; + context->request_channel_layout = 0; + } + if (pbuffer_size > 0) { int got_frame; @@ -481,8 +511,24 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, { info->rate_base = 1; info->rate = context->sample_rate; - info->bitrate = context->bit_rate; info->samples_per_frame = frame.nb_samples; + + int bps = av_get_bits_per_sample(context->codec_id); + if (bps > 0 && context->channels > 0) + { + info->bitrate = (bps * + context->channels * + context->sample_rate); + } + else if (context->bit_rate > 0) + { + info->bitrate = context->bit_rate; + } + else + { + info->bitrate = 1; + } + if (truehd_mono) { info->channel_layout = AV_CH_LAYOUT_MONO; @@ -493,6 +539,7 @@ static int decavcodecaBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, hb_ff_layout_xlat(context->channel_layout, context->channels); } + ret = 1; break; } diff --git a/libhb/decssasub.c b/libhb/decssasub.c index b85ff0524..d648f1d9d 100644 --- a/libhb/decssasub.c +++ b/libhb/decssasub.c @@ -126,8 +126,8 @@ static hb_buffer_t *ssa_decode_line_to_mkv_ssa( hb_work_object_t * w, uint8_t *i static hb_buffer_t *ssa_decode_packet( hb_work_object_t * w, hb_buffer_t *in ) { // Store NULL after the end of the buffer to make using string processing safe - hb_buffer_realloc( in, in->size + 1 ); - in->data[in->size] = '\0'; + hb_buffer_realloc(in, ++in->size); + in->data[in->size - 1] = '\0'; hb_buffer_t *out_list = NULL; hb_buffer_t **nextPtr = &out_list; @@ -151,10 +151,10 @@ static hb_buffer_t *ssa_decode_packet( hb_work_object_t * w, hb_buffer_t *in ) // We shouldn't be storing the extra NULL character, // but the MP4 muxer expects this, unfortunately. - if ( out->size > 0 && out->data[out->size - 1] != '\0' ) { - // NOTE: out->size remains unchanged - hb_buffer_realloc( out, out->size + 1 ); - out->data[out->size] = '\0'; + if (out->size > 0 && out->data[out->size - 1] != '\0') + { + hb_buffer_realloc(out, ++out->size); + out->data[out->size - 1] = '\0'; } // If the input packet was non-empty, do not pass through @@ -352,8 +352,9 @@ static hb_buffer_t * ssa_to_mkv_ssa( hb_work_object_t * w, hb_buffer_t * in ) hb_buffer_t * out_last = NULL; hb_buffer_t * out_first = NULL; - hb_buffer_realloc( in, in->size + 1 ); - in->data[in->size] = '\0'; + // Store NULL after the end of the buffer to make using string processing safe + hb_buffer_realloc(in, ++in->size); + in->data[in->size - 1] = '\0'; const char *EOL = "\r\n"; char *curLine, *curLine_parserData; diff --git a/libhb/dectx3gsub.c b/libhb/dectx3gsub.c index b8d8c28be..a2231a4fb 100644 --- a/libhb/dectx3gsub.c +++ b/libhb/dectx3gsub.c @@ -214,10 +214,10 @@ static int dectx3gWork( hb_work_object_t * w, hb_buffer_t ** buf_in, if ( out != NULL ) { // We shouldn't be storing the extra NULL character, // but the MP4 muxer expects this, unfortunately. - if ( out->size > 0 && out->data[out->size - 1] != '\0' ) { - // NOTE: out->size remains unchanged - hb_buffer_realloc( out, out->size + 1 ); - out->data[out->size] = '\0'; + if (out->size > 0 && out->data[out->size - 1] != '\0') + { + hb_buffer_realloc(out, ++out->size); + out->data[out->size - 1] = '\0'; } // If the input packet was non-empty, do not pass through diff --git a/libhb/decutf8sub.c b/libhb/decutf8sub.c index cf86678d7..ea6440954 100644 --- a/libhb/decutf8sub.c +++ b/libhb/decutf8sub.c @@ -20,40 +20,38 @@ #include #include "hb.h" -static int decutf8Init( hb_work_object_t * w, hb_job_t * job ) +static int decutf8Init(hb_work_object_t *w, hb_job_t *job) { return 0; } -static int decutf8Work( hb_work_object_t * w, hb_buffer_t ** buf_in, - hb_buffer_t ** buf_out ) +static int decutf8Work(hb_work_object_t * w, + hb_buffer_t **buf_in, hb_buffer_t **buf_out) { - hb_buffer_t * in = *buf_in; - hb_buffer_t * out = NULL; - // Pass the packets through without modification - out = in; + hb_buffer_t *out = *buf_in; - // Warn if the subtitle's duration has not been passed through by the demuxer, - // which will prevent the subtitle from displaying at all - if ( out->s.stop == 0 ) { - hb_log( "decutf8sub: subtitle packet lacks duration" ); + // Warn if the subtitle's duration has not been passed through by the + // demuxer, which will prevent the subtitle from displaying at all + if (out->s.stop == 0) + { + hb_log("decutf8sub: subtitle packet lacks duration"); } - + // We shouldn't be storing the extra NULL character, // but the MP4 muxer expects this, unfortunately. - if ( out->size > 0 && out->data[out->size - 1] != '\0' ) { - // NOTE: out->size remains unchanged - hb_buffer_realloc( out, out->size + 1 ); - out->data[out->size] = '\0'; + if (out->size > 0 && out->data[out->size - 1] != '\0') + { + hb_buffer_realloc(out, ++out->size); + out->data[out->size - 1] = '\0'; } - - *buf_in = NULL; + + *buf_in = NULL; *buf_out = out; return HB_WORK_OK; } -static void decutf8Close( hb_work_object_t * w ) +static void decutf8Close(hb_work_object_t *w) { // nothing } diff --git a/libhb/encavcodecaudio.c b/libhb/encavcodecaudio.c index 2c4471bab..e24eaca32 100644 --- a/libhb/encavcodecaudio.c +++ b/libhb/encavcodecaudio.c @@ -189,8 +189,11 @@ static int encavcodecaInit(hb_work_object_t *w, hb_job_t *job) pv->samples_per_frame = context->frame_size; pv->input_samples = context->frame_size * context->channels; pv->input_buf = malloc(pv->input_samples * sizeof(float)); - pv->max_output_bytes = (pv->input_samples * - av_get_bytes_per_sample(context->sample_fmt)); + // Some encoders in libav (e.g. fdk-aac) fail if the output buffer + // size is not some minumum value. 8K seems to be enough :( + pv->max_output_bytes = MAX(FF_MIN_BUFFER_SIZE, + (pv->input_samples * + av_get_bytes_per_sample(context->sample_fmt))); // sample_fmt conversion if (context->sample_fmt != AV_SAMPLE_FMT_FLT) diff --git a/libhb/hb.c b/libhb/hb.c index 0182501d8..507a1279d 100644 --- a/libhb/hb.c +++ b/libhb/hb.c @@ -64,9 +64,8 @@ struct hb_handle_s on multi-pass encodes where frames get dropped. */ hb_interjob_t * interjob; - // Power Management opaque pointer - // For OSX, it's an IOPMAssertionID* - void * hb_system_sleep_opaque; + // power management opaque pointer + void *system_sleep_opaque; #ifdef USE_QSV // detailed information about Intel QSV availability @@ -108,8 +107,16 @@ static int ff_lockmgr_cb(void **mutex, enum AVLockOp op) void hb_avcodec_init() { - av_lockmgr_register( ff_lockmgr_cb ); + av_lockmgr_register(ff_lockmgr_cb); av_register_all(); +#ifdef _WIN64 + // avresample's assembly optimizations can cause crashes under Win x86_64 + // (see http://bugzilla.libav.org/show_bug.cgi?id=496) + // disable AVX and FMA4 as a workaround + hb_deep_log(2, "hb_avcodec_init: Windows x86_64, disabling AVX and FMA4"); + int cpu_flags = av_get_cpu_flags() & ~AV_CPU_FLAG_AVX & ~AV_CPU_FLAG_FMA4; + av_set_cpu_flags_mask(cpu_flags); +#endif } int hb_avcodec_open(AVCodecContext *avctx, AVCodec *codec, @@ -494,7 +501,7 @@ hb_handle_t * hb_init( int verbose, int update_check ) h->build = -1; /* Initialize opaque for PowerManagement purposes */ - h->hb_system_sleep_opaque = hb_system_sleep_opaque_init(); + h->system_sleep_opaque = hb_system_sleep_opaque_init(); if( update_check ) { @@ -605,7 +612,7 @@ hb_handle_t * hb_init_dl( int verbose, int update_check ) h->build = -1; /* Initialize opaque for PowerManagement purposes */ - h->hb_system_sleep_opaque = hb_system_sleep_opaque_init(); + h->system_sleep_opaque = hb_system_sleep_opaque_init(); if( update_check ) { @@ -1642,7 +1649,7 @@ void hb_start( hb_handle_t * h ) h->paused = 0; h->work_die = 0; - h->work_thread = hb_work_init( h, h->jobs, &h->work_die, &h->work_error, &h->current_job ); + h->work_thread = hb_work_init( h->jobs, &h->work_die, &h->work_error, &h->current_job ); } /** @@ -1661,8 +1668,6 @@ void hb_pause( hb_handle_t * h ) hb_lock( h->state_lock ); h->state.state = HB_STATE_PAUSED; hb_unlock( h->state_lock ); - - hb_allow_sleep( h ); } } @@ -1674,8 +1679,6 @@ void hb_resume( hb_handle_t * h ) { if( h->paused ) { - hb_prevent_sleep( h ); - #define job hb_current_job( h ) if( job->st_pause_date != -1 ) { @@ -1774,6 +1777,8 @@ void hb_close( hb_handle_t ** _h ) hb_lock_close( &h->state_lock ); hb_lock_close( &h->pause_lock ); + hb_system_sleep_opaque_close(&h->system_sleep_opaque); + free( h->interjob ); free( h ); @@ -1981,14 +1986,14 @@ void hb_set_state( hb_handle_t * h, hb_state_t * s ) hb_unlock( h->pause_lock ); } -void hb_prevent_sleep( hb_handle_t * h ) +void hb_system_sleep_allow(hb_handle_t *h) { - hb_system_sleep_prevent( h->hb_system_sleep_opaque ); + hb_system_sleep_private_enable(h->system_sleep_opaque); } -void hb_allow_sleep( hb_handle_t * h ) +void hb_system_sleep_prevent(hb_handle_t *h) { - hb_system_sleep_allow( h->hb_system_sleep_opaque ); + hb_system_sleep_private_disable(h->system_sleep_opaque); } /* Passes a pointer to persistent data */ diff --git a/libhb/hb.h b/libhb/hb.h index e63ce3f41..35b091bb1 100644 --- a/libhb/hb.h +++ b/libhb/hb.h @@ -99,6 +99,9 @@ void hb_pause( hb_handle_t * ); void hb_resume( hb_handle_t * ); void hb_stop( hb_handle_t * ); +void hb_system_sleep_allow(hb_handle_t*); +void hb_system_sleep_prevent(hb_handle_t*); + /* Persistent data between jobs. */ typedef struct hb_interjob_s { diff --git a/libhb/internal.h b/libhb/internal.h index adaca1c2d..d23bd5428 100644 --- a/libhb/internal.h +++ b/libhb/internal.h @@ -39,8 +39,6 @@ void hb_title_close( hb_title_t ** ); **********************************************************************/ int hb_get_pid( hb_handle_t * ); void hb_set_state( hb_handle_t *, hb_state_t * ); -void hb_prevent_sleep( hb_handle_t * ); -void hb_allow_sleep( hb_handle_t * ); /*********************************************************************** * fifo.c @@ -237,7 +235,7 @@ hb_thread_t * hb_scan_init( hb_handle_t *, volatile int * die, const char * path, int title_index, hb_title_set_t * title_set, int preview_count, int store_previews, uint64_t min_duration ); -hb_thread_t * hb_work_init( hb_handle_t * handle, hb_list_t * jobs, +hb_thread_t * hb_work_init( hb_list_t * jobs, volatile int * die, int * error, hb_job_t ** job ); void ReadLoop( void * _w ); hb_work_object_t * hb_muxer_init( hb_job_t * ); diff --git a/libhb/muxmp4.c b/libhb/muxmp4.c index 6220cff5d..227f77ad1 100644 --- a/libhb/muxmp4.c +++ b/libhb/muxmp4.c @@ -40,6 +40,10 @@ struct hb_mux_data_s int sub_format; uint64_t sum_dur; // sum of the frame durations so far + + // audio frame duration info + int sample_rate; + int samples_per_frame; }; /* Tune video track chunk duration. @@ -276,29 +280,30 @@ static int MP4Init( hb_mux_object_t * m ) { case HB_ACODEC_AC3: { + int ii, jj; + int bitrate; + int sr_shift, sr_code; uint8_t bsid; uint8_t bsmod; uint8_t acmod; uint8_t lfeon; - uint8_t bit_rate_code = 0; - int ii, jj; - int freq; - int bitrate; - int sr_shift, sr_code; + uint8_t br_code = 0; if ( audio->config.out.codec & HB_ACODEC_PASS_FLAG ) { - bsmod = audio->config.in.mode; - acmod = audio->config.in.flags & 0x7; - lfeon = ( audio->config.in.flags & A52_LFE ) ? 1 : 0; - freq = audio->config.in.samplerate; - bitrate = audio->config.in.bitrate; + bsmod = audio->config.in.mode; + acmod = audio->config.in.flags & 0x7; + lfeon = !!(audio->config.in.flags & A52_LFE); + bitrate = audio->config.in.bitrate; + mux_data->sample_rate = audio->config.in.samplerate; + mux_data->samples_per_frame = audio->config.in.samples_per_frame; } else { - bsmod = 0; - freq = audio->config.out.samplerate; - bitrate = audio->config.out.bitrate * 1000; + bsmod = 0; + bitrate = audio->config.out.bitrate * 1000; + mux_data->sample_rate = audio->config.out.samplerate; + mux_data->samples_per_frame = audio->config.out.samples_per_frame; switch (audio->config.out.mixdown) { case HB_AMIXDOWN_MONO: @@ -330,7 +335,7 @@ static int MP4Init( hb_mux_object_t * m ) { for (jj = 0; jj < 3; jj++) { - if ((ac3_sample_rate_tab[jj] >> ii) == freq) + if ((ac3_sample_rate_tab[jj] >> ii) == mux_data->sample_rate) { goto rate_found1; } @@ -352,17 +357,12 @@ static int MP4Init( hb_mux_object_t * m ) hb_error("Unknown AC3 bitrate"); ii = 0; } - bit_rate_code = ii; - - mux_data->track = MP4AddAC3AudioTrack( - m->file, - freq, - sr_code, - bsid, - bsmod, - acmod, - lfeon, - bit_rate_code); + br_code = ii; + + mux_data->track = MP4AddAC3AudioTrack(m->file, + mux_data->sample_rate, + sr_code, bsid, bsmod, + acmod, lfeon, br_code); /* Tune track chunk duration */ MP4TuneTrackDurationPerChunk( m, mux_data->track ); @@ -394,7 +394,7 @@ static int MP4Init( hb_mux_object_t * m ) case HB_ACODEC_DCA: { uint8_t audio_type = MP4_MPEG4_AUDIO_TYPE; - int samplerate, samples_per_frame, channels, config_len = 0; + int channels, config_len = 0; uint8_t *config_bytes = NULL; switch ( audio->config.out.codec & HB_ACODEC_MASK ) @@ -423,18 +423,22 @@ static int MP4Init( hb_mux_object_t * m ) } if (audio->config.out.codec & HB_ACODEC_PASS_FLAG) { - samplerate = audio->config.in.samplerate; - samples_per_frame = audio->config.in.samples_per_frame; + mux_data->sample_rate = audio->config.in.samplerate; + mux_data->samples_per_frame = audio->config.in.samples_per_frame; channels = av_get_channel_layout_nb_channels(audio->config.in.channel_layout); } else { - samplerate = audio->config.out.samplerate; - samples_per_frame = audio->config.out.samples_per_frame; + mux_data->sample_rate = audio->config.out.samplerate; + mux_data->samples_per_frame = audio->config.out.samples_per_frame; channels = hb_mixdown_get_discrete_channel_count(audio->config.out.mixdown); } - mux_data->track = MP4AddAudioTrack( m->file, samplerate, - samples_per_frame, audio_type ); + mux_data->track = MP4AddAudioTrack(m->file, + mux_data->sample_rate, + // fixed frame duration, if applicable + mux_data->samples_per_frame > 0 ? + mux_data->samples_per_frame : MP4_INVALID_DURATION, + audio_type); /* Tune track chunk duration */ MP4TuneTrackDurationPerChunk( m, mux_data->track ); @@ -873,6 +877,11 @@ static void hb_muxmp4_process_subtitle_style( uint8_t *input, *writer++ = *reader++; break; } + } else if (*reader == '\r') { + // skip '\r' and replace with '\n' if necessary + if (*(++reader) != '\n') { + *writer++ = '\n'; + } } else { *writer++ = *reader++; } @@ -1046,7 +1055,12 @@ static int MP4Mux( hb_mux_object_t * m, hb_mux_data_t * mux_data, else { /* Audio */ - duration = MP4_INVALID_DURATION; + if (mux_data->samples_per_frame > 0) + // frame size is fixed and known + duration = MP4_INVALID_DURATION; + else + // frame size has to be computed + duration = buf->s.duration * mux_data->sample_rate / 90000; } /* Here's where the sample actually gets muxed. */ diff --git a/libhb/platform/macosx/encca_aac.c b/libhb/platform/macosx/encca_aac.c index 98e5ddfaf..a5c7488a5 100644 --- a/libhb/platform/macosx/encca_aac.c +++ b/libhb/platform/macosx/encca_aac.c @@ -1,6 +1,6 @@ /* encca_aac.c - Copyright (c) 2003-2012 HandBrake Team + Copyright (c) 2003-2013 HandBrake Team This file is part of the HandBrake source code Homepage: . It may be used under the terms of the GNU General Public License v2. diff --git a/libhb/ports.c b/libhb/ports.c index 7097f2ee9..98945fec0 100644 --- a/libhb/ports.c +++ b/libhb/ports.c @@ -792,63 +792,101 @@ char *strtok_r(char *s, const char *delim, char **save_ptr) #ifdef __APPLE__ // 128 chars limit for IOPMAssertionCreateWithName -static CFStringRef reasonForActivity= CFSTR("HandBrake is currently scanning and/or encoding"); +static CFStringRef reasonForActivity = + CFSTR("HandBrake is currently scanning and/or encoding"); #endif void* hb_system_sleep_opaque_init() { - void* opaque; + void *opaque = NULL; #ifdef __APPLE__ - opaque = calloc( sizeof( IOPMAssertionID ), 1); - IOPMAssertionID * assertionID = (IOPMAssertionID *)opaque; + opaque = calloc(sizeof(IOPMAssertionID), 1); + if (opaque == NULL) + { + hb_error("hb_system_sleep: failed to allocate opaque"); + return NULL; + } + + IOPMAssertionID *assertionID = (IOPMAssertionID*)opaque; *assertionID = -1; #endif - return opaque; } -void hb_system_sleep_opaque_close(void **_opaque) +void hb_system_sleep_opaque_close(void **opaque) { + if (*opaque != NULL) + { + hb_system_sleep_private_enable(*opaque); + } #ifdef __APPLE__ - IOPMAssertionID * assertionID = (IOPMAssertionID *) *_opaque; - free( assertionID ); + if (*opaque != NULL) + { + IOPMAssertionID *assertionID = (IOPMAssertionID*)*opaque; + free(assertionID); + } #endif - *_opaque = NULL; + *opaque = NULL; } -void hb_system_sleep_allow(void *opaque) +void hb_system_sleep_private_enable(void *opaque) { #ifdef __APPLE__ - IOPMAssertionID * assertionID = (IOPMAssertionID *)opaque; + if (opaque == NULL) + { + hb_error("hb_system_sleep: opaque is NULL"); + } + IOPMAssertionID *assertionID = (IOPMAssertionID*)opaque; if (*assertionID == -1) + { + // nothing to do return; + } IOReturn success = IOPMAssertionRelease(*assertionID); - - if (success == kIOReturnSuccess) { - hb_deep_log( 3, "osxsleep: IOPM assertion %d successfully released, sleep allowed", *assertionID ); + if (success == kIOReturnSuccess) + { + hb_deep_log(3, + "hb_system_sleep: assertion %d released, sleep allowed", + *assertionID); *assertionID = -1; - } else { - hb_log( "osxsleep: error while trying to unset power management assertion" ); + } + else + { + hb_log("hb_system_sleep: failed to allow system sleep"); } #endif } -void hb_system_sleep_prevent(void *opaque) +void hb_system_sleep_private_disable(void *opaque) { #ifdef __APPLE__ - IOPMAssertionID * assertionID = (IOPMAssertionID *)opaque; - + if (opaque == NULL) + { + hb_error("hb_system_sleep: opaque is NULL"); + } + + IOPMAssertionID *assertionID = (IOPMAssertionID*)opaque; if (*assertionID != -1) + { + // nothing to do return; + } IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, - kIOPMAssertionLevelOn, reasonForActivity, assertionID); - if (success == kIOReturnSuccess) { - hb_deep_log( 3, "IOPM assertion %d successfully created, prevent sleep", *assertionID); - } else { - hb_log( "osxsleep: error while trying to set power management assertion" ); + kIOPMAssertionLevelOn, + reasonForActivity, + assertionID); + if (success == kIOReturnSuccess) + { + hb_deep_log(3, + "hb_system_sleep: assertion %d created, sleep prevented", + *assertionID); + } + else + { + hb_log("hb_system_sleep: failed to prevent system sleep"); } #endif } diff --git a/libhb/ports.h b/libhb/ports.h index 162781347..2c0aeb1ee 100644 --- a/libhb/ports.h +++ b/libhb/ports.h @@ -105,10 +105,10 @@ void hb_net_close( hb_net_t ** ); /************************************************************************ * OS Sleep Allow / Prevent ***********************************************************************/ -void * hb_system_sleep_opaque_init(); -void hb_system_sleep_opaque_close( void ** opaque ); -void hb_system_sleep_allow( void * opaque ); -void hb_system_sleep_prevent( void * opaque ); +void* hb_system_sleep_opaque_init(); +void hb_system_sleep_opaque_close(void **opaque); +void hb_system_sleep_private_enable(void *opaque); +void hb_system_sleep_private_disable(void *opaque); #endif /* __LIBHB__ */ diff --git a/libhb/scan.c b/libhb/scan.c index 7dfb44c60..c83326d4d 100644 --- a/libhb/scan.c +++ b/libhb/scan.c @@ -1000,6 +1000,7 @@ static void LookForAudio( hb_title_t * title, hb_buffer_t * b ) } hb_work_info_t info; + w->title = title; w->audio = audio; w->codec_param = audio->config.in.codec_param; b = hb_fifo_see( audio->priv.scan_cache ); @@ -1119,9 +1120,9 @@ static void UpdateState2(hb_scan_t *scan, int title) p.preview_cur = 1; p.preview_count = scan->preview_count; if (scan->title_index) - p.progress = (float)p.title_cur / p.title_count; + p.progress = (float)(p.title_cur - 1) / p.title_count; else - p.progress = 0.5 + 0.5 * (float)p.title_cur / p.title_count; + p.progress = 0.5 + 0.5 * (float)(p.title_cur - 1) / p.title_count; #undef p hb_set_state(scan->h, &state); diff --git a/libhb/stream.c b/libhb/stream.c index 3bab6998c..994cb70de 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -5118,87 +5118,65 @@ static void ffmpeg_close( hb_stream_t *d ) static void add_ffmpeg_audio(hb_title_t *title, hb_stream_t *stream, int id) { - AVStream *st = stream->ffmpeg_ic->streams[id]; - AVCodecContext *codec = st->codec; - AVDictionaryEntry *tag; - - // scan will ignore any audio without a bitrate. Since we've already typed the - // audio in order to determine its codec we set up the audio parameters here. - if (codec->bit_rate || codec->sample_rate) - { - hb_audio_t *audio = calloc(1, sizeof(*audio)); - audio->id = id; + AVStream *st = stream->ffmpeg_ic->streams[id]; + AVCodecContext *codec = st->codec; + AVDictionaryEntry *tag = av_dict_get(st->metadata, "language", NULL, 0); + + hb_audio_t *audio = calloc(1, sizeof(*audio)); + audio->id = id; + audio->config.in.track = id; + audio->config.in.codec = HB_ACODEC_FFMPEG; + audio->config.in.codec_param = codec->codec_id; + // set the bitrate to 0; decavcodecaBSInfo will be called and fill the rest + audio->config.in.bitrate = 0; + + // set the input codec and extradata for Passthru + switch (codec->codec_id) + { + case AV_CODEC_ID_AAC: + { + int len = MIN(codec->extradata_size, HB_CONFIG_MAX_SIZE); + memcpy(audio->priv.config.extradata.bytes, codec->extradata, len); + audio->priv.config.extradata.length = len; + audio->config.in.codec = HB_ACODEC_FFAAC; + } break; + + case AV_CODEC_ID_AC3: + audio->config.in.codec = HB_ACODEC_AC3; + audio->config.in.codec_param = 0; + break; - if (codec->codec_id == AV_CODEC_ID_AC3) + case AV_CODEC_ID_DTS: { - audio->config.in.codec = HB_ACODEC_AC3; - } - else - { - if (codec->codec_id == AV_CODEC_ID_DTS) + switch (codec->profile) { - if (codec->profile == FF_PROFILE_DTS_HD_MA || - codec->profile == FF_PROFILE_DTS_HD_HRA) - { - audio->config.in.codec = HB_ACODEC_DCA_HD; - } - else if (codec->profile == FF_PROFILE_DTS || - codec->profile == FF_PROFILE_DTS_ES || - codec->profile == FF_PROFILE_DTS_96_24) - { + case FF_PROFILE_DTS: + case FF_PROFILE_DTS_ES: + case FF_PROFILE_DTS_96_24: audio->config.in.codec = HB_ACODEC_DCA; - } - else - { - audio->config.in.codec = HB_ACODEC_FFMPEG; - } - } - else if (codec->codec_id == AV_CODEC_ID_AAC) - { - int len = MIN(codec->extradata_size, HB_CONFIG_MAX_SIZE); - memcpy(audio->priv.config.extradata.bytes, codec->extradata, - len); - audio->priv.config.extradata.length = len; - audio->config.in.codec = HB_ACODEC_FFAAC; - } - else if (codec->codec_id == AV_CODEC_ID_MP3) - { - audio->config.in.codec = HB_ACODEC_MP3; - } - else - { - audio->config.in.codec = HB_ACODEC_FFMPEG; - } - audio->config.in.codec_param = codec->codec_id; + break; - int bps = av_get_bits_per_sample(codec->codec_id); - if (bps && codec->sample_rate && codec->channels) - { - audio->config.in.bitrate = (codec->channels * - codec->sample_rate * bps); - } - else if (codec->bit_rate) - { - audio->config.in.bitrate = codec->bit_rate; - } - else - { - audio->config.in.bitrate = 1; + case FF_PROFILE_DTS_HD_MA: + case FF_PROFILE_DTS_HD_HRA: + audio->config.in.codec = HB_ACODEC_DCA_HD; + break; + + default: + break; } - audio->config.in.samplerate = codec->sample_rate; - audio->config.in.samples_per_frame = codec->frame_size; - audio->config.in.channel_map = &hb_libav_chan_map; - audio->config.in.channel_layout = - hb_ff_layout_xlat(codec->channel_layout, codec->channels); - } + } break; - tag = av_dict_get(st->metadata, "language", NULL, 0); - set_audio_description(stream, audio, - lang_for_code2(tag ? tag->value : "und")); + case AV_CODEC_ID_MP3: + audio->config.in.codec = HB_ACODEC_MP3; + break; - audio->config.in.track = id; - hb_list_add(title->list_audio, audio); + default: + break; } + + set_audio_description(stream, audio, + lang_for_code2(tag != NULL ? tag->value : "und")); + hb_list_add(title->list_audio, audio); } /* diff --git a/libhb/sync.c b/libhb/sync.c index fe3d01915..3e2bbb703 100644 --- a/libhb/sync.c +++ b/libhb/sync.c @@ -979,9 +979,10 @@ static void InitAudio( hb_job_t * job, hb_sync_common_t * common, int i ) c->channel_layout = w->audio->config.in.channel_layout; } - if( hb_avcodec_open( c, codec, NULL, 0 ) < 0 ) + if (hb_avcodec_open(c, codec, NULL, 0) < 0) { - hb_log( "sync: avcodec_open failed" ); + hb_error("sync: avcodec_open failed"); + *job->die = 1; return; } diff --git a/libhb/work.c b/libhb/work.c index 713983caa..4ff79a788 100644 --- a/libhb/work.c +++ b/libhb/work.c @@ -17,10 +17,9 @@ typedef struct { - hb_handle_t * handle; - hb_list_t * jobs; - hb_job_t ** current_job; - int * error; + hb_list_t * jobs; + hb_job_t ** current_job; + int * error; volatile int * die; } hb_work_t; @@ -45,15 +44,14 @@ static void filter_loop( void * ); * @param die Handle to user inititated exit indicator. * @param error Handle to error indicator. */ -hb_thread_t * hb_work_init( hb_handle_t * handle, hb_list_t * jobs, volatile int * die, int * error, hb_job_t ** job ) +hb_thread_t * hb_work_init( hb_list_t * jobs, volatile int * die, int * error, hb_job_t ** job ) { hb_work_t * work = calloc( sizeof( hb_work_t ), 1 ); - work->handle = handle; - work->jobs = jobs; + work->jobs = jobs; work->current_job = job; - work->die = die; - work->error = error; + work->die = die; + work->error = error; return hb_thread_init( "work", work_func, work, HB_LOW_PRIORITY ); } @@ -87,22 +85,16 @@ static void work_func( void * _work ) hb_log( "%d job(s) to process", hb_list_count( work->jobs ) ); - hb_prevent_sleep( work->handle ); - while( !*work->die && ( job = hb_list_item( work->jobs, 0 ) ) ) { hb_list_rem( work->jobs, job ); job->die = work->die; *(work->current_job) = job; - InitWorkState( job->h ); do_job( job ); - *(work->current_job) = NULL; } - hb_allow_sleep( work->handle ); - *(work->error) = HB_ERROR_NONE; free( work ); @@ -677,17 +669,21 @@ static void do_job( hb_job_t * job ) * Note: out.track starts at 1, i starts at 0 */ subtitle->out_track = ++i; } - if ( one_burned ) + if (one_burned) { - hb_filter_object_t * filter; - // Add subtitle rendering filter // Note that if the filter is already in the filter chain, this // has no effect. Note also that this means the front-end is // not required to add the subtitle rendering filter since // we will always try to do it here. - filter = hb_filter_init(HB_FILTER_RENDER_SUB); - hb_add_filter( job, filter, NULL ); + hb_filter_object_t *filter = hb_filter_init(HB_FILTER_RENDER_SUB); + char *filter_settings = hb_strdup_printf("%d:%d:%d:%d", + job->crop[0], + job->crop[1], + job->crop[2], + job->crop[3]); + hb_add_filter(job, filter, filter_settings); + free(filter_settings); } } diff --git a/macosx/Controller.h b/macosx/Controller.h index 5182ac6fe..6020f64f8 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -62,7 +62,7 @@ BOOL fIsDragging; /* x264 Presets Box */ NSArray * fX264PresetNames; NSUInteger fX264MediumPresetIndex; - IBOutlet NSButton * fx264UseAdvancedOptionsCheck; + IBOutlet NSButton * fX264UseAdvancedOptionsCheck; IBOutlet NSBox * fX264PresetsBox; IBOutlet NSSlider * fX264PresetsSlider; IBOutlet NSTextField * fX264PresetSliderLabel; @@ -166,12 +166,9 @@ BOOL fIsDragging; IBOutlet NSButton * fVidTwoPassCheck; IBOutlet NSButton * fVidTurboPassCheck; - /* Status read out fileds for picture sizing */ - IBOutlet NSTextField * fPictureSizeField; - IBOutlet NSTextField * fPictureCroppingField; - - /* Status read out fileds for video filters */ - IBOutlet NSTextField * fVideoFiltersField; + /* Status read out fields for picture settings and video filters */ + IBOutlet NSTextField * fPictureSettingsField; + IBOutlet NSTextField * fPictureFiltersField; /* Picture variables */ int PicOrigOutputWidth; @@ -347,6 +344,11 @@ BOOL fIsDragging; - (IBAction) calculatePictureSizing: (id) sender; - (IBAction) openMainWindow: (id) sender; +/* Text summaries of various settings */ +- (NSString*) pictureSettingsSummary; +- (NSString*) pictureFiltersSummary; +- (NSString*) muxerOptionsSummary; + /* Add All titles to the queue */ - (IBAction) addAllTitlesToQueue: (id) sender; - (void) addAllTitlesToQueueAlertDone: (NSWindow *) sheet diff --git a/macosx/Controller.m b/macosx/Controller.m index b1faa7d08..a94a2e177 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -755,8 +755,8 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It fSrcChapterEndPopUp, fSrcDuration1Field, fSrcDuration2Field, fDstFormatField, fDstFormatPopUp, fDstFile1Field, fDstFile2Field, fDstBrowseButton, fVidRateField, fVidRatePopUp, fVidEncoderField, - fVidEncoderPopUp, fVidQualityField, fPictureSizeField, - fPictureCroppingField, fVideoFiltersField, fVidQualityMatrix, + fVidEncoderPopUp, fVidQualityField, fVidQualityMatrix, + fPictureSettingsField, fPictureFiltersField, fSubField, fSubPopUp, fPresetsAdd, fPresetsDelete, fSrcAngleLabel, fSrcAnglePopUp, fCreateChapterMarkers, fVidTurboPassCheck, fDstMp4LargeFileCheck, fSubForcedCheck, fPresetsOutlineView, @@ -1330,7 +1330,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Toggle Presets"]; [item setPaletteLabel: @"Toggler Presets"]; [item setToolTip: @"Open/Close Preset Drawer"]; - [item setImage: [NSImage imageNamed: @"Drawer"]]; + [item setImage: [NSImage imageNamed: @"presets"]]; [item setTarget: self]; [item setAction: @selector(toggleDrawer:)]; [item setAutovalidates: NO]; @@ -1340,7 +1340,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Start"]; [item setPaletteLabel: @"Start Encoding"]; [item setToolTip: @"Start Encoding"]; - [item setImage: [NSImage imageNamed: @"Play"]]; + [item setImage: [NSImage imageNamed: @"encode"]]; [item setTarget: self]; [item setAction: @selector(Rip:)]; } @@ -1349,7 +1349,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Show Queue"]; [item setPaletteLabel: @"Show Queue"]; [item setToolTip: @"Show Queue"]; - [item setImage: [NSImage imageNamed: @"Queue"]]; + [item setImage: [NSImage imageNamed: @"showqueue"]]; [item setTarget: self]; [item setAction: @selector(showQueueWindow:)]; [item setAutovalidates: NO]; @@ -1359,7 +1359,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Add to Queue"]; [item setPaletteLabel: @"Add to Queue"]; [item setToolTip: @"Add to Queue"]; - [item setImage: [NSImage imageNamed: @"AddToQueue"]]; + [item setImage: [NSImage imageNamed: @"addqueue"]]; [item setTarget: self]; [item setAction: @selector(addToQueue:)]; } @@ -1368,7 +1368,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Pause"]; [item setPaletteLabel: @"Pause Encoding"]; [item setToolTip: @"Pause Encoding"]; - [item setImage: [NSImage imageNamed: @"Pause"]]; + [item setImage: [NSImage imageNamed: @"pauseencode"]]; [item setTarget: self]; [item setAction: @selector(Pause:)]; } @@ -1377,7 +1377,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Picture Settings"]; [item setPaletteLabel: @"Show Picture Settings"]; [item setToolTip: @"Show Picture Settings"]; - [item setImage: [NSImage imageNamed: @"pref-picture"]]; + [item setImage: [NSImage imageNamed: @"picturesettings"]]; [item setTarget: self]; [item setAction: @selector(showPicturePanel:)]; } @@ -1387,7 +1387,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setPaletteLabel: @"Show Preview"]; [item setToolTip: @"Show Preview"]; //[item setImage: [NSImage imageNamed: @"pref-picture"]]; - [item setImage: [NSImage imageNamed: @"Brushed_Window"]]; + [item setImage: [NSImage imageNamed: @"preview"]]; [item setTarget: self]; [item setAction: @selector(showPreviewWindow:)]; } @@ -1396,7 +1396,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Activity Window"]; [item setPaletteLabel: @"Show Activity Window"]; [item setToolTip: @"Show Activity Window"]; - [item setImage: [NSImage imageNamed: @"ActivityWindow"]]; + [item setImage: [NSImage imageNamed: @"activity"]]; [item setTarget: self]; [item setAction: @selector(showDebugOutputPanel:)]; [item setAutovalidates: NO]; @@ -1406,7 +1406,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [item setLabel: @"Source"]; [item setPaletteLabel: @"Source"]; [item setToolTip: @"Choose Video Source"]; - [item setImage: [NSImage imageNamed: @"Source"]]; + [item setImage: [NSImage imageNamed: @"source"]]; [item setTarget: self]; [item setAction: @selector(browseSources:)]; } @@ -1447,7 +1447,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It if ([ident isEqualToString: ChooseSourceIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Stop"]]; + [toolbarItem setImage: [NSImage imageNamed: @"stopencode"]]; [toolbarItem setLabel: @"Cancel Scan"]; [toolbarItem setPaletteLabel: @"Cancel Scanning"]; [toolbarItem setToolTip: @"Cancel Scanning Source"]; @@ -1461,7 +1461,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { if ([ident isEqualToString: ChooseSourceIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Source"]]; + [toolbarItem setImage: [NSImage imageNamed: @"source"]]; [toolbarItem setLabel: @"Source"]; [toolbarItem setPaletteLabel: @"Source"]; [toolbarItem setToolTip: @"Choose Video Source"]; @@ -1475,7 +1475,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { if ([ident isEqualToString: StartEncodingIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Stop"]]; + [toolbarItem setImage: [NSImage imageNamed: @"stopencode"]]; [toolbarItem setLabel: @"Stop"]; [toolbarItem setPaletteLabel: @"Stop"]; [toolbarItem setToolTip: @"Stop Encoding"]; @@ -1483,7 +1483,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It } if ([ident isEqualToString: PauseEncodingIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Pause"]]; + [toolbarItem setImage: [NSImage imageNamed: @"pauseencode"]]; [toolbarItem setLabel: @"Pause"]; [toolbarItem setPaletteLabel: @"Pause Encoding"]; [toolbarItem setToolTip: @"Pause Encoding"]; @@ -1503,7 +1503,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { if ([ident isEqualToString: PauseEncodingIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Play"]]; + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; [toolbarItem setLabel: @"Resume"]; [toolbarItem setPaletteLabel: @"Resume Encoding"]; [toolbarItem setToolTip: @"Resume Encoding"]; @@ -1524,7 +1524,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { if ([ident isEqualToString: StartEncodingIdentifier]) { - [toolbarItem setImage: [NSImage imageNamed: @"Play"]]; + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; if (hb_count(fHandle) > 0) [toolbarItem setLabel: @"Start Queue"]; else @@ -2026,7 +2026,11 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It // it doesn't apply to batch scan either, but we can't tell it apart from DVD & BD folders here [self writeToActivityLog: "scanning titles with a duration of %d seconds or more", min_title_duration_seconds]; } - hb_scan( fHandle, [path UTF8String], scanTitleNum, hb_num_previews, 1 , min_title_duration_ticks ); + + hb_system_sleep_prevent(fHandle); + hb_scan(fHandle, [path UTF8String], scanTitleNum, hb_num_previews, 1 , + min_title_duration_ticks); + [fSrcDVD2Field setStringValue:@"Scanning new source…"]; // After the scan process, we signal to enableUI loop that this scan process is now finished @@ -2038,6 +2042,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It - (IBAction) cancelScanning:(id)sender { hb_scan_stop(fHandle); + hb_system_sleep_allow(fHandle); } - (IBAction) showNewScan:(id)sender @@ -2200,10 +2205,10 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [self applyQueueSettingsToMainWindow:nil]; } - - } - + + /* Done scanning, allow system sleep for the scan handle */ + hb_system_sleep_allow(fHandle); } @@ -2587,7 +2592,7 @@ fWorkingCount = 0; [queueFileJob setObject:[fVidEncoderPopUp titleOfSelectedItem] forKey:@"VideoEncoder"]; /* x264 advanced options */ - if ([fx264UseAdvancedOptionsCheck state]) + if ([fX264UseAdvancedOptionsCheck state]) { // we are using the advanced panel [queueFileJob setObject:[NSNumber numberWithInt:1] forKey: @"x264UseAdvancedOptions"]; @@ -2595,7 +2600,7 @@ fWorkingCount = 0; } else { - // we are using the x264 system + // we are using the x264 preset system [queueFileJob setObject:[NSNumber numberWithInt:0] forKey: @"x264UseAdvancedOptions"]; [queueFileJob setObject:[self x264Preset] forKey: @"x264Preset"]; [queueFileJob setObject:[self x264Tune] forKey: @"x264Tune"]; @@ -2659,9 +2664,15 @@ fWorkingCount = 0; [queueFileJob setObject:[NSNumber numberWithFloat:fTitle->job->anamorphic.dar_height] forKey:@"PicturePARDisplayHeight"]; } - NSString * pictureSummary; - pictureSummary = [fPictureSizeField stringValue]; - [queueFileJob setObject:pictureSummary forKey:@"PictureSizingSummary"]; + + /* Text summaries of various settings */ + [queueFileJob setObject:[NSString stringWithString:[self pictureSettingsSummary]] + forKey:@"PictureSettingsSummary"]; + [queueFileJob setObject:[NSString stringWithString:[self pictureFiltersSummary]] + forKey:@"PictureFiltersSummary"]; + [queueFileJob setObject:[NSString stringWithString:[self muxerOptionsSummary]] + forKey:@"MuxerOptionsSummary"]; + /* Set crop settings here */ [queueFileJob setObject:[NSNumber numberWithInt:[fPictureController autoCrop]] forKey:@"PictureAutoCrop"]; [queueFileJob setObject:[NSNumber numberWithInt:job->crop[0]] forKey:@"PictureTopCrop"]; @@ -2815,7 +2826,12 @@ fWorkingCount = 0; else { [self writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"]; - /*Since there are no more items to encode, go to queueCompletedAlerts for user specified alerts after queue completed*/ + /* Done encoding, allow system sleep for the encode handle */ + hb_system_sleep_allow(fQueueEncodeLibhb); + /* + * Since there are no more items to encode, go to queueCompletedAlerts + * for user specified alerts after queue completed + */ [self queueCompletedAlerts]; } } @@ -2854,9 +2870,13 @@ fWorkingCount = 0; { [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum]; } - /* Only scan 10 previews before an encode - additional previews are only useful for autocrop and static previews, - * which are already taken care of at this point */ - hb_scan( fQueueEncodeLibhb, [path UTF8String], scanTitleNum, 10, 0, 0 ); + /* + * Only scan 10 previews before an encode - additional previews are + * only useful for autocrop and static previews, which are already taken + * care of at this point + */ + hb_system_sleep_prevent(fQueueEncodeLibhb); + hb_scan(fQueueEncodeLibhb, [path UTF8String], scanTitleNum, 10, 0, 0); } } @@ -3003,20 +3023,28 @@ fWorkingCount = 0; { // we are using the advanced panel [fAdvancedOptions setOptions:[queueToApply objectForKey:@"x264Option"]]; + // preset does not use the x264 preset system, reset the widgets + [self setX264Preset: nil]; + [self setX264Tune: nil]; + [self setX264OptionExtra:[queueToApply objectForKey:@"x264Option"]]; + [self setH264Profile: nil]; + [self setH264Level: nil]; // enable the advanced panel and update the widgets - [fx264UseAdvancedOptionsCheck setState: NSOnState]; + [fX264UseAdvancedOptionsCheck setState:NSOnState]; [self updateX264Widgets:nil]; } else { - // we are using the x264 system - [self setX264Preset: [queueToApply objectForKey:@"x264Preset"]]; - [self setX264Tune: [queueToApply objectForKey:@"x264Tune"]]; - [self setX264OptionExtra: [queueToApply objectForKey:@"x264OptionExtra"]]; - [self setH264Profile: [queueToApply objectForKey:@"h264Profile"]]; - [self setH264Level: [queueToApply objectForKey:@"h264Level"]]; + // we are using the x264 preset system + [self setX264Preset: [queueToApply objectForKey:@"x264Preset"]]; + [self setX264Tune: [queueToApply objectForKey:@"x264Tune"]]; + [self setX264OptionExtra:[queueToApply objectForKey:@"x264OptionExtra"]]; + [self setH264Profile: [queueToApply objectForKey:@"h264Profile"]]; + [self setH264Level: [queueToApply objectForKey:@"h264Level"]]; + // preset does not use the advanced panel, reset it + [fAdvancedOptions setOptions:@""]; // disable the advanced panel and update the widgets - [fx264UseAdvancedOptionsCheck setState: NSOffState]; + [fX264UseAdvancedOptionsCheck setState:NSOffState]; [self updateX264Widgets:nil]; } @@ -3045,16 +3073,32 @@ fWorkingCount = 0; [self videoMatrixChanged:nil]; /* Video framerate */ - /* For video preset video framerate, we want to make sure that Same as source does not conflict with the - detected framerate in the fVidRatePopUp so we use index 0*/ if ([[queueToApply objectForKey:@"VideoFramerate"] isEqualToString:@"Same as source"]) { - [fVidRatePopUp selectItemAtIndex: 0]; + /* Now set the Video Frame Rate Mode to either vfr or cfr according to the preset */ + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want vfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } } else { - [fVidRatePopUp selectItemWithTitle:[queueToApply objectForKey:@"VideoFramerate"]]; + /* Now set the Video Frame Rate Mode to either pfr or cfr according to the preset */ + if ([[queueToApply objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"]) + { + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want pfr + } + else + { + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr + } } + [fVidRatePopUp selectItemWithTitle:[queueToApply objectForKey:@"VideoFramerate"]]; + [self videoFrameRateChanged:nil]; /* 2 Pass Encoding */ [fVidTwoPassCheck setState:[[queueToApply objectForKey:@"VideoTwoPass"] intValue]]; @@ -3304,7 +3348,7 @@ fWorkingCount = 0; const char *advanced_opts = NULL; const char *h264_profile = NULL; const char *h264_level = NULL; - if ([fx264UseAdvancedOptionsCheck state]) + if ([fX264UseAdvancedOptionsCheck state]) { // we are using the advanced panel if ([(tmpString = [fAdvancedOptions optionsString]) length]) @@ -3314,8 +3358,7 @@ fWorkingCount = 0; } else { - // we are using the x264 system - x264_preset = [[self x264Preset] UTF8String]; + // we are using the x264 preset system if ([(tmpString = [self x264Tune]) length]) { x264_tune = [tmpString UTF8String]; @@ -3332,6 +3375,7 @@ fWorkingCount = 0; { h264_level = [tmpString UTF8String]; } + x264_preset = [[self x264Preset] UTF8String]; } hb_job_set_x264_preset (job, x264_preset); hb_job_set_x264_tune (job, x264_tune); @@ -3452,7 +3496,7 @@ bool one_burned = FALSE; else { /* if we are getting the subtitles from an external srt file */ - if ([[tempObject objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { hb_subtitle_config_t sub_config; @@ -3839,8 +3883,7 @@ bool one_burned = FALSE; } else { - // we are using the x264 system - x264_preset = [[queueToApply objectForKey:@"x264Preset"] UTF8String]; + // we are using the x264 preset system if ([(tmpString = [queueToApply objectForKey:@"x264Tune"]) length]) { x264_tune = [tmpString UTF8String]; @@ -3857,6 +3900,7 @@ bool one_burned = FALSE; { h264_level = [tmpString UTF8String]; } + x264_preset = [[queueToApply objectForKey:@"x264Preset"] UTF8String]; } hb_job_set_x264_preset (job, x264_preset); hb_job_set_x264_tune (job, x264_tune); @@ -4012,7 +4056,7 @@ bool one_burned = FALSE; else { /* if we are getting the subtitles from an external srt file */ - if ([[tempObject objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { hb_subtitle_config_t sub_config; @@ -4111,27 +4155,31 @@ bool one_burned = FALSE; /* Audio tracks and mixdowns */ /* Now lets add our new tracks to the audio list here */ - for (unsigned int counter = 0; counter < maximumNumberOfAllowedAudioTracks; counter++) { - NSString *prefix = [NSString stringWithFormat: @"Audio%d", counter + 1]; - if ([[queueToApply objectForKey: [prefix stringByAppendingString: @"Track"]] intValue] > 0) { - audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); - hb_audio_config_init(audio); - audio->in.track = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Track"]] intValue] - 1; - /* We go ahead and assign values to our audio->out. */ - audio->out.track = audio->in.track; - audio->out.dynamic_range_compression = [[queueToApply objectForKey: [prefix stringByAppendingString: @"TrackDRCSlider"]] floatValue]; - audio->out.gain = [[queueToApply objectForKey: [prefix stringByAppendingString: @"TrackGainSlider"]] floatValue]; - prefix = [NSString stringWithFormat: @"JobAudio%d", counter + 1]; - audio->out.codec = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Encoder"]] intValue]; - audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); - audio->out.mixdown = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Mixdown"]] intValue]; - audio->out.bitrate = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Bitrate"]] intValue]; - audio->out.samplerate = [[queueToApply objectForKey: [prefix stringByAppendingString: @"Samplerate"]] intValue]; - - hb_audio_add( job, audio ); - free(audio); - } - } + for (unsigned int counter = 0; counter < maximumNumberOfAllowedAudioTracks; counter++) + { + NSString *prefix = [NSString stringWithFormat:@"Audio%d", counter + 1]; + NSString *jobPrefix = [NSString stringWithFormat:@"JobAudio%d", counter + 1]; + if ([[queueToApply objectForKey:[prefix stringByAppendingString:@"Track"]] intValue] > 0) + { + audio = (hb_audio_config_t*)calloc(1, sizeof(*audio)); + hb_audio_config_init(audio); + audio->in.track = [[queueToApply objectForKey:[prefix stringByAppendingString:@"Track"]] intValue] - 1; + /* We go ahead and assign values to our audio->out. */ + audio->out.track = audio->in.track; + audio->out.codec = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Encoder"]] intValue]; + audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); + audio->out.mixdown = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Mixdown"]] intValue]; + audio->out.normalize_mix_level = 0; + audio->out.bitrate = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Bitrate"]] intValue]; + audio->out.samplerate = [[queueToApply objectForKey:[jobPrefix stringByAppendingString:@"Samplerate"]] intValue]; + audio->out.dynamic_range_compression = [[queueToApply objectForKey:[prefix stringByAppendingString:@"TrackDRCSlider"]] floatValue]; + audio->out.gain = [[queueToApply objectForKey:[prefix stringByAppendingString:@"TrackGainSlider"]] floatValue]; + audio->out.dither_method = hb_audio_dither_get_default(); + + hb_audio_add(job, audio); + free(audio); + } + } /* Now lets call the filters if applicable. * The order of the filters is critical @@ -4471,7 +4519,12 @@ bool one_burned = FALSE; { if (!fQueueController) return; - hb_pause( fQueueEncodeLibhb ); + /* + * No need to allow system sleep here as we'll either call Cancel: + * (which will take care of it) or resume right away + */ + hb_pause(fQueueEncodeLibhb); + NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"You are currently encoding. What would you like to do ?", nil)]; // Which window to attach the sheet to? @@ -4495,14 +4548,16 @@ bool one_burned = FALSE; - (void) didDimissCancel: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo { - hb_resume( fQueueEncodeLibhb ); - if (returnCode == NSAlertOtherReturn) + /* No need to prevent system sleep here as we didn't allow it in Cancel: */ + hb_resume(fQueueEncodeLibhb); + + if (returnCode == NSAlertOtherReturn) { [self doCancelCurrentJob]; // <- this also stops libhb } - if (returnCode == NSAlertAlternateReturn) + else if (returnCode == NSAlertAlternateReturn) { - [self doCancelCurrentJobAndStop]; + [self doCancelCurrentJobAndStop]; } } @@ -4519,7 +4574,8 @@ bool one_burned = FALSE; // remaining jobs. - hb_stop( fQueueEncodeLibhb ); + hb_stop(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); // Delete all remaining jobs since libhb doesn't do this on its own. hb_job_t * job; @@ -4560,7 +4616,8 @@ bool one_burned = FALSE; - (void) doCancelCurrentJobAndStop { - hb_stop( fQueueEncodeLibhb ); + hb_stop(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); // Delete all remaining jobs since libhb doesn't do this on its own. hb_job_t * job; @@ -4582,15 +4639,17 @@ bool one_burned = FALSE; - (IBAction) Pause: (id) sender { hb_state_t s; - hb_get_state2( fQueueEncodeLibhb, &s ); + hb_get_state2(fQueueEncodeLibhb, &s); - if( s.state == HB_STATE_PAUSED ) + if (s.state == HB_STATE_PAUSED) { - hb_resume( fQueueEncodeLibhb ); + hb_system_sleep_prevent(fQueueEncodeLibhb); + hb_resume(fQueueEncodeLibhb); } else { - hb_pause( fQueueEncodeLibhb ); + hb_pause(fQueueEncodeLibhb); + hb_system_sleep_allow(fQueueEncodeLibhb); } } @@ -5305,7 +5364,7 @@ the user is using "Custom" settings by determining the sender*/ { NSUInteger i; /* - * now we populate the x264 system widgets via hb_x264_presets(), + * now we populate the x264 preset system widgets via hb_x264_presets(), * hb_x264_tunes(), hb_h264_profiles(), hb_h264_levels() */ // store x264 preset names @@ -5363,7 +5422,7 @@ the user is using "Custom" settings by determining the sender*/ - (void) enableX264Widgets: (bool) enable { - NSControl * controls[] = + NSControl *controls[] = { fX264PresetsSlider, fX264PresetSliderLabel, fX264PresetSelectedTextField, fX264TunePopUp, fX264TunePopUpLabel, fX264FastDecodeCheck, @@ -5372,11 +5431,16 @@ the user is using "Custom" settings by determining the sender*/ fX264LevelPopUp, fX264LevelPopUpLabel, fDisplayX264PresetsUnparseTextField, }; - // check whether we're using the x264 system - bool x264_system = ([fx264UseAdvancedOptionsCheck state] == NSOffState); - // enable or disable the "Use x264 Advanced Options Panel" checkbox - [fx264UseAdvancedOptionsCheck setEnabled: enable]; - // enable or disable the x264 system widgets + + // check whether the x264 preset system and the advanced panel should be enabled + BOOL enable_x264_controls = (enable && [fX264UseAdvancedOptionsCheck state] == NSOffState); + BOOL enable_advanced_panel = (enable && [fX264UseAdvancedOptionsCheck state] == NSOnState); + + // enable/disable the checkbox and advanced panel + [fX264UseAdvancedOptionsCheck setEnabled:enable]; + [fAdvancedOptions enableUI:enable_advanced_panel]; + + // enable/disable the x264 preset system controls for (unsigned i = 0; i < (sizeof(controls) / sizeof(NSControl*)); i++) { if ([[controls[i] className] isEqualToString: @"NSTextField"]) @@ -5384,45 +5448,50 @@ the user is using "Custom" settings by determining the sender*/ NSTextField *tf = (NSTextField*)controls[i]; if (![tf isBezeled]) { - [tf setTextColor: (x264_system ? - [NSColor controlTextColor] : - [NSColor disabledControlTextColor])]; + [tf setTextColor:(enable_x264_controls ? + [NSColor controlTextColor] : + [NSColor disabledControlTextColor])]; continue; } } - [controls[i] setEnabled: (enable && x264_system)]; - } - - if (x264_system) - { - // using x264 system, always disable advanced panel - [fAdvancedOptions enableUI:NO]; - // don't reset x264 system widgets as they may have been set explicitly + [controls[i] setEnabled:enable_x264_controls]; } - else - { - // using advanced panel, enable if applicable - [fAdvancedOptions enableUI:enable]; - // TODO: set the advanced options string based on the previously - // selected x264 system setting - // reset x264 system widgets - [fX264PresetsSlider setIntegerValue: fX264MediumPresetIndex]; - [fX264TunePopUp selectItemAtIndex:0]; - [fX264FastDecodeCheck setState:NSOffState]; - [fDisplayX264PresetsAdditonalOptionsTextField setStringValue:@""]; - [fX264ProfilePopUp selectItemAtIndex:0]; - [fX264LevelPopUp selectItemAtIndex:0]; - } - [self x264PresetsSliderChanged:nil]; } - (IBAction) updateX264Widgets: (id) sender { - [self enableX264Widgets: YES]; + if ([fX264UseAdvancedOptionsCheck state] == NSOnState) + { + /* + * we are using or switching to the advanced panel + * + * if triggered by selectPreset or applyQueueSettingToMainWindow, + * the options string will have been specified explicitly - leave it. + * + * if triggered by the advanced panel on/off checkbox, set the options + * string to the value of the unparsed x264 preset system string. + */ + if (sender == fX264UseAdvancedOptionsCheck) + { + if (fX264PresetsUnparsedUTF8String != NULL) + { + [fAdvancedOptions setOptions: + [NSString stringWithUTF8String:fX264PresetsUnparsedUTF8String]]; + } + else + { + [fAdvancedOptions setOptions:@""]; + } + } + } + // enable/disable, populate and update the various widgets + [self enableX264Widgets: YES]; + [self x264PresetsSliderChanged:nil]; + [fAdvancedOptions X264AdvancedOptionsSet: nil]; } #pragma mark - -#pragma mark x264 system +#pragma mark x264 preset system - (NSString*) x264Preset { @@ -5671,140 +5740,198 @@ the user is using "Custom" settings by determining the sender*/ /* Get and Display Current Pic Settings in main window */ - (IBAction) calculatePictureSizing: (id) sender { - if (fTitle->job->anamorphic.mode > 0) - { - fTitle->job->keep_ratio = 0; - } - - if (fTitle->job->anamorphic.mode != 1) // we are not strict so show the modulus - { - [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@, Modulus: %d", [fPictureController getPictureSizeInfoString], fTitle->job->modulus]]; - } - else + if (fTitle->job->anamorphic.mode > 0) { - [fPictureSizeField setStringValue: [NSString stringWithFormat:@"Picture Size: %@", [fPictureController getPictureSizeInfoString]]]; + fTitle->job->keep_ratio = 0; } - NSString *picCropping; - /* Set the display field for crop as per boolean */ - if (![fPictureController autoCrop]) - { - picCropping = @"Custom"; - } - else - { - picCropping = @"Auto"; - } - picCropping = [picCropping stringByAppendingString:[NSString stringWithFormat:@" %d/%d/%d/%d",fTitle->job->crop[0],fTitle->job->crop[1],fTitle->job->crop[2],fTitle->job->crop[3]]]; - [fPictureCroppingField setStringValue: [NSString stringWithFormat:@"Picture Cropping: %@",picCropping]]; + // align picture settings and video filters in the UI using tabs + [fPictureSettingsField setStringValue:[NSString stringWithFormat:@"Picture Settings: \t %@", + [self pictureSettingsSummary]]]; + [fPictureFiltersField setStringValue:[NSString stringWithFormat:@"Picture Filters: \t\t %@", + [self pictureFiltersSummary]]]; - NSString *videoFilters; - videoFilters = @""; - /* Detelecine */ - if ([fPictureController detelecine] == 2) - { - videoFilters = [videoFilters stringByAppendingString:@" - Detelecine (Default)"]; - } - else if ([fPictureController detelecine] == 1) - { - videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[fPictureController detelecineCustomString]]]; - } + /* Store storage resolution for unparse */ + fX264PresetsWidthForUnparse = fTitle->job->width; + fX264PresetsHeightForUnparse = fTitle->job->height; + // width or height may have changed, unparse + [self x264PresetsChangedDisplayExpandedOptions:nil]; - if ([fPictureController useDecomb] == 1) + // reload still previews + // note: fTitle->job->deinterlace is set by fPictureController now + [fPictureController decombDeinterlacePreviewImage]; +} + +#pragma mark - +#pragma mark - Text Summaries + +- (NSString*) pictureSettingsSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (fPictureController && fTitle && fTitle->job) { - /* Decomb */ - if ([fPictureController decomb] == 4) + [summary appendString:[fPictureController getPictureSizeInfoString]]; + if (fTitle->job->anamorphic.mode != 1) { - videoFilters = [videoFilters stringByAppendingString:@" - Decomb (Bob)"]; + // anamorphic is not Strict, show the modulus + [summary appendFormat:@", Modulus: %d", fTitle->job->modulus]; } - else if ([fPictureController decomb] == 3) + [summary appendFormat:@", Crop: %s %d/%d/%d/%d", + [fPictureController autoCrop] ? "Auto" : "Custom", + fTitle->job->crop[0], fTitle->job->crop[1], + fTitle->job->crop[2], fTitle->job->crop[3]]; + } + return [NSString stringWithString:summary]; +} + +- (NSString*) pictureFiltersSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (fPictureController) + { + /* Detelecine */ + switch ([fPictureController detelecine]) { - videoFilters = [videoFilters stringByAppendingString:@" - Decomb (Fast)"]; + case 1: + [summary appendFormat:@" - Detelecine (%@)", + [fPictureController detelecineCustomString]]; + break; + + case 2: + [summary appendString:@" - Detelecine (Default)"]; + break; + + default: + break; } - else if ([fPictureController decomb] == 2) + + if ([fPictureController useDecomb] == 1) { - videoFilters = [videoFilters stringByAppendingString:@" - Decomb (Default)"]; + /* Decomb */ + switch ([fPictureController decomb]) + { + case 1: + [summary appendFormat:@" - Decomb (%@)", + [fPictureController decombCustomString]]; + break; + + case 2: + [summary appendString:@" - Decomb (Default)"]; + break; + + case 3: + [summary appendString:@" - Decomb (Fast)"]; + break; + + case 4: + [summary appendString:@" - Decomb (Bob)"]; + break; + + default: + break; + } } - else if ([fPictureController decomb] == 1) + else { - videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[fPictureController decombCustomString]]]; + /* Deinterlace */ + switch ([fPictureController deinterlace]) + { + case 1: + [summary appendFormat:@" - Deinterlace (%@)", + [fPictureController deinterlaceCustomString]]; + break; + + case 2: + [summary appendString:@" - Deinterlace (Fast)"]; + break; + + case 3: + [summary appendString:@" - Deinterlace (Slow)"]; + break; + + case 4: + [summary appendString:@" - Deinterlace (Slower)"]; + break; + + case 5: + [summary appendString:@" - Deinterlace (Bob)"]; + break; + + default: + break; + } } - } - else - { - /* Deinterlace */ - if ([fPictureController deinterlace] == 5) + + /* Deblock */ + if ([fPictureController deblock] > 0) { - fTitle->job->deinterlace = 1; - videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Bob)"]; + [summary appendFormat:@" - Deblock (%d)", + [fPictureController deblock]]; } - else if ([fPictureController deinterlace] == 4) + + /* Denoise */ + switch ([fPictureController denoise]) { - fTitle->job->deinterlace = 1; - videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Slower)"]; + case 1: + [summary appendFormat:@" - Denoise (%@)", + [fPictureController denoiseCustomString]]; + break; + + case 2: + [summary appendString:@" - Denoise (Weak)"]; + break; + + case 3: + [summary appendString:@" - Denoise (Medium)"]; + break; + + case 4: + [summary appendString:@" - Denoise (Strong)"]; + break; + + default: + break; } - else if ([fPictureController deinterlace] == 3) + + /* Grayscale */ + if ([fPictureController grayscale]) { - fTitle->job->deinterlace = 1; - videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Slow)"]; + [summary appendString:@" - Grayscale"]; } - else if ([fPictureController deinterlace] == 2) + } + if ([summary hasPrefix:@" - "]) + { + [summary deleteCharactersInRange:NSMakeRange(0, 3)]; + } + return [NSString stringWithString:summary]; +} + +- (NSString*) muxerOptionsSummary +{ + NSMutableString *summary = [NSMutableString stringWithString:@""]; + if (([fDstFormatPopUp selectedItem]) && + [[fDstFormatPopUp selectedItem] tag] == HB_MUX_MP4) + { + if ([fDstMp4LargeFileCheck state]) { - fTitle->job->deinterlace = 1; - videoFilters = [videoFilters stringByAppendingString:@" - Deinterlace (Fast)"]; + [summary appendString:@" - Large file size"]; } - else if ([fPictureController deinterlace] == 1) + if ([fDstMp4HttpOptFileCheck state]) { - fTitle->job->deinterlace = 1; - videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[fPictureController deinterlaceCustomString]]]; + [summary appendString:@" - Web optimized"]; } - else + if ([fDstMp4iPodFileCheck state]) { - fTitle->job->deinterlace = 0; + [summary appendString:@" - iPod 5G support"]; } - } - - /* Denoise */ - if ([fPictureController denoise] == 2) - { - videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Weak)"]; - } - else if ([fPictureController denoise] == 3) - { - videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Medium)"]; } - else if ([fPictureController denoise] == 4) - { - videoFilters = [videoFilters stringByAppendingString:@" - Denoise (Strong)"]; - } - else if ([fPictureController denoise] == 1) - { - videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[fPictureController denoiseCustomString]]]; - } - - /* Deblock */ - if ([fPictureController deblock] > 0) + if ([summary hasPrefix:@" - "]) { - videoFilters = [videoFilters stringByAppendingString:[NSString stringWithFormat:@" - Deblock (%d)",[fPictureController deblock]]]; + [summary deleteCharactersInRange:NSMakeRange(0, 3)]; } - - /* Grayscale */ - if ([fPictureController grayscale]) - { - videoFilters = [videoFilters stringByAppendingString:@" - Grayscale"]; - } - [fVideoFiltersField setStringValue: [NSString stringWithFormat:@"Video Filters: %@", videoFilters]]; - - /* Store storage resolution for unparse */ - fX264PresetsWidthForUnparse = fTitle->job->width; - fX264PresetsHeightForUnparse = fTitle->job->height; - // width or height may have changed, unparse - [self x264PresetsChangedDisplayExpandedOptions:nil]; - - [fPictureController decombDeinterlacePreviewImage]; + return [NSString stringWithString:summary]; } - #pragma mark - #pragma mark - Audio and Subtitles @@ -6325,31 +6452,39 @@ return YES; */ if ([chosenPreset objectForKey:@"x264Option"]) { - /* we set the advanced opt string here if applicable */ - [fAdvancedOptions setOptions: - [chosenPreset objectForKey:@"x264Option"]]; + /* we set the advanced options string here if applicable */ + [fAdvancedOptions setOptions: [chosenPreset objectForKey:@"x264Option"]]; + [self setX264OptionExtra:[chosenPreset objectForKey:@"x264Option"]]; } else { - [fAdvancedOptions setOptions:@""]; + [fAdvancedOptions setOptions: @""]; + [self setX264OptionExtra:nil]; } + /* preset does not use the x264 preset system, reset the widgets */ + [self setX264Preset: nil]; + [self setX264Tune: nil]; + [self setH264Profile:nil]; + [self setH264Level: nil]; /* we enable the advanced panel and update the widgets */ - [fx264UseAdvancedOptionsCheck setState: NSOnState]; + [fX264UseAdvancedOptionsCheck setState:NSOnState]; [self updateX264Widgets:nil]; } else { /* * x264UseAdvancedOptions is set to 0 (disabled), - * so we use the x264 system + * so we use the x264 preset system */ - [self setX264Preset: [chosenPreset objectForKey:@"x264Preset"]]; - [self setX264Tune: [chosenPreset objectForKey:@"x264Tune"]]; - [self setX264OptionExtra: [chosenPreset objectForKey:@"x264OptionExtra"]]; - [self setH264Profile: [chosenPreset objectForKey:@"h264Profile"]]; - [self setH264Level: [chosenPreset objectForKey:@"h264Level"]]; + [self setX264Preset: [chosenPreset objectForKey:@"x264Preset"]]; + [self setX264Tune: [chosenPreset objectForKey:@"x264Tune"]]; + [self setX264OptionExtra:[chosenPreset objectForKey:@"x264OptionExtra"]]; + [self setH264Profile: [chosenPreset objectForKey:@"h264Profile"]]; + [self setH264Level: [chosenPreset objectForKey:@"h264Level"]]; + /* preset does not use the advanced panel, reset it */ + [fAdvancedOptions setOptions:@""]; /* we disable the advanced panel and update the widgets */ - [fx264UseAdvancedOptionsCheck setState: NSOffState]; + [fX264UseAdvancedOptionsCheck setState:NSOffState]; [self updateX264Widgets:nil]; } } @@ -6399,35 +6534,33 @@ return YES; [self videoMatrixChanged:nil]; /* Video framerate */ - /* For video preset video framerate, we want to make sure that Same as source does not conflict with the - detected framerate in the fVidRatePopUp so we use index 0*/ if ([[chosenPreset objectForKey:@"VideoFramerate"] isEqualToString:@"Same as source"]) { - [fVidRatePopUp selectItemAtIndex: 0]; /* Now set the Video Frame Rate Mode to either vfr or cfr according to the preset */ - if (![chosenPreset objectForKey:@"VideoFramerateMode"] || [[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) + if (![chosenPreset objectForKey:@"VideoFramerateMode"] || + [[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"vfr"]) { - [fFramerateMatrix selectCellAtRow: 0 column: 0]; // we want vfr + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want vfr } else { - [fFramerateMatrix selectCellAtRow: 1 column: 0]; // we want cfr + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr } } else { - [fVidRatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"VideoFramerate"]]; /* Now set the Video Frame Rate Mode to either pfr or cfr according to the preset */ - if ([[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"] || [[chosenPreset objectForKey:@"VideoFrameratePFR"] intValue] == 1) + if ([[chosenPreset objectForKey:@"VideoFramerateMode"] isEqualToString:@"pfr"] || + [[chosenPreset objectForKey:@"VideoFrameratePFR"] intValue] == 1) { - [fFramerateMatrix selectCellAtRow: 0 column: 0]; // we want pfr + [fFramerateMatrix selectCellAtRow:0 column:0]; // we want pfr } else { - [fFramerateMatrix selectCellAtRow: 1 column: 0]; // we want cfr + [fFramerateMatrix selectCellAtRow:1 column:0]; // we want cfr } } - + [fVidRatePopUp selectItemWithTitle:[chosenPreset objectForKey:@"VideoFramerate"]]; [self videoFrameRateChanged:nil]; /* 2 Pass Encoding */ @@ -6969,7 +7102,7 @@ return YES; [preset setObject:[fVidEncoderPopUp titleOfSelectedItem] forKey:@"VideoEncoder"]; /* x264 Options, this will either be advanced panel or the video tabs x264 presets panel with modded option string */ - if ([fx264UseAdvancedOptionsCheck state] == NSOnState) + if ([fX264UseAdvancedOptionsCheck state] == NSOnState) { /* use the old advanced panel */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"x264UseAdvancedOptions"]; @@ -6977,7 +7110,7 @@ return YES; } else { - /* use the x264 system */ + /* use the x264 preset system */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; [preset setObject:[self x264Preset] forKey:@"x264Preset"]; [preset setObject:[self x264Tune] forKey:@"x264Tune"]; @@ -6988,8 +7121,15 @@ return YES; * bonus: set the unparsed options to make the preset compatible * with old HB versions */ - [preset setObject:[NSString stringWithUTF8String:fX264PresetsUnparsedUTF8String] - forKey:@"x264Option"]; + if (fX264PresetsUnparsedUTF8String != NULL) + { + [preset setObject:[NSString stringWithUTF8String:fX264PresetsUnparsedUTF8String] + forKey:@"x264Option"]; + } + else + { + [preset setObject:@"" forKey:@"x264Option"]; + } } /* FFmpeg (lavc) Option String */ diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib index a77f08d63..0a7f82d5b 100644 --- a/macosx/English.lproj/MainMenu.xib +++ b/macosx/English.lproj/MainMenu.xib @@ -2,13 +2,13 @@ 1050 - 12C60 - 2844 - 1187.34 - 625.00 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.CocoaPlugin - 2844 + 3084 YES @@ -233,15 +233,15 @@ 256 - {{14, 30}, {892, 14}} + {{16, 20}, {892, 14}} - + YES 67108864 4194304 - Picture Size: + Picture Settings: @@ -354,37 +354,18 @@ NO - - - 256 - {{14, 17}, {892, 14}} - - - - YES - - 67108864 - 4194304 - Picture Cropping: - - - - - - NO - 256 - {{14, 3}, {892, 14}} + {{16, 4}, {892, 14}} - + YES 67108864 4194304 - Video Filters: + Picture Filters: @@ -1076,7 +1057,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 67108864 71303168 - h264 Profile: + H.264 Profile: @@ -1095,7 +1076,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 67108864 71303168 - h264 Level: + H.264 Level: @@ -1437,7 +1418,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{12, 6}, {863, 29}} - + YES 67108864 @@ -6679,7 +6660,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - fPictureSizeField + fPictureSettingsField @@ -6687,15 +6668,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - fPictureCroppingField - - - - 5170 - - - - fVideoFiltersField + fPictureFiltersField @@ -7215,7 +7188,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - fx264UseAdvancedOptionsCheck + fX264UseAdvancedOptionsCheck @@ -8033,7 +8006,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - @@ -8118,15 +8090,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 2375 - - - YES - - - - 1989 @@ -9348,11 +9311,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 4893 - - - 4904 @@ -11341,7 +11299,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 2364.IBAttributePlaceholdersKey 2364.IBPluginDependency 2368.IBPluginDependency - 2375.IBPluginDependency 240.IBPluginDependency 2421.IBPluginDependency 2443.IBPluginDependency @@ -11404,7 +11361,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 4879.IBPluginDependency 4880.IBPluginDependency 4892.IBPluginDependency - 4893.IBPluginDependency 4904.IBPluginDependency 4905.IBPluginDependency 4906.IBPluginDependency @@ -11837,7 +11793,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin {{72, 712}, {392, 144}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -11935,7 +11890,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -12655,8 +12609,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fFramerateMatrix fFramerateVfrPfrCell fLoadChaptersButton - fPictureCroppingField - fPictureSizeField + fPictureSettingsField fPresetDrawer fPresetNewDesc fPresetNewFolderCheck @@ -12716,7 +12669,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fVidRatePopUp fVidTurboPassCheck fVidTwoPassCheck - fVideoFiltersField + fPictureFiltersField fWindow fX264FastDecodeCheck fX264LevelPopUp @@ -12729,7 +12682,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fX264ProfilePopUpLabel fX264TunePopUp fX264TunePopUpLabel - fx264UseAdvancedOptionsCheck + fX264UseAdvancedOptionsCheck YES @@ -12764,7 +12717,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSButtonCell NSButton NSTextField - NSTextField NSDrawer NSTextField NSButton @@ -12874,8 +12826,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fFramerateMatrix fFramerateVfrPfrCell fLoadChaptersButton - fPictureCroppingField - fPictureSizeField + fPictureSettingsField fPresetDrawer fPresetNewDesc fPresetNewFolderCheck @@ -12935,7 +12886,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fVidRatePopUp fVidTurboPassCheck fVidTwoPassCheck - fVideoFiltersField + fPictureFiltersField fWindow fX264FastDecodeCheck fX264LevelPopUp @@ -12948,7 +12899,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA fX264ProfilePopUpLabel fX264TunePopUp fX264TunePopUpLabel - fx264UseAdvancedOptionsCheck + fX264UseAdvancedOptionsCheck YES @@ -13073,11 +13024,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSButton - fPictureCroppingField - NSTextField - - - fPictureSizeField + fPictureSettingsField NSTextField @@ -13317,7 +13264,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSButton - fVideoFiltersField + fPictureFiltersField NSTextField @@ -13369,7 +13316,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSTextField - fx264UseAdvancedOptionsCheck + fX264UseAdvancedOptionsCheck NSButton diff --git a/macosx/English.lproj/PicturePreview.xib b/macosx/English.lproj/PicturePreview.xib index 460057859..3740cac7e 100644 --- a/macosx/English.lproj/PicturePreview.xib +++ b/macosx/English.lproj/PicturePreview.xib @@ -61,7 +61,7 @@ 7 2 - {{142, 519}, {480, 360}} + {{142, 519}, {490, 360}} 1886913536 HandBrake Preview NSPanel @@ -87,7 +87,7 @@ QTMoviePasteboardType - {480, 360} + {490, 360} @@ -448,7 +448,7 @@ - {{15, 132}, {450, 100}} + {{15, 132}, {460, 100}} @@ -704,7 +704,7 @@ - {{15, 30}, {450, 100}} + {{15, 30}, {460, 100}} @@ -838,7 +838,7 @@ - {{15, 235}, {450, 100}} + {{15, 235}, {460, 100}} @@ -871,7 +871,7 @@ - {480, 360} + {490, 360} @@ -1742,7 +1742,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{262, 474}, {480, 360}} + {{262, 474}, {490, 360}} com.apple.InterfaceBuilder.CocoaPlugin diff --git a/macosx/Growl.framework/Versions/A/Growl b/macosx/Growl.framework/Versions/A/Growl index f1f19445045be29dbd44491a37c53985786a6575..e35673015940aa06d2bad06fe5b6763dcfd23726 100755 GIT binary patch literal 1093888 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�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�KZUMmF)Hbe-@2&=7-h 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

r3Y=YAK;+T3JaCy1@lq=Ppc zT+H8{%x`pRlpl`?+$S>rBmsa~P2ux6=%%2_jj!N-ilM;@h2(jhxR<;y=?sxv8{$3UCAX4_3(Mzf|rkM2IZS-~jgrP)G28+FbvK$8##B33*mGiCEi^?)GuLs^_6w zwWaZ8Ex3lu6~n*iTdjN*dRLTBCq4#)rR~=1dlZhhxi8XR*~ht4Wz!*lI*fbm+sC;u zSYc!MyH8qY{rNir1Y)=BU{c%j_W*JW^0#P&$KNpqpIGH};@hDez94`5c7(6g z$M=sXT>jt(7QiQ=7IrdMvT`S`#Aa|wJfDiol(5fbSOjuzivbsMBGHi zJfdHAVv&&s-psJejyaf8mNyRRYrEI?&k%PA_kf#A{LK{^cypW?L(_lm-QBtDIEYA2 z8Hp2;ew@O-sjh-^p zhxgCNDM3-NRiX1{pL0~St$p@lcGek1YJAsY;bZP-+KP5{BeD=#YpmvCVaGie_9#k9 z6q{4%Y8)KmAao3i;5|9P!SM{fmem&}ld@@-hr;nja9WRpBR+&1a@yh#OKI1msW^y) zEp)QSk}&JpzO0PR?X&pX3}{uvX3h_6_ezBDF=treTNA5q2a%LFWJg9&UIt(UYvZfa{0Yhe@QYLrqyLkXK>vSez572(cG&*~ zhu8m6veW)ArM>?;j#e6LlebxKg@9q6b#kW{cxsyzzpjQSE|*j)A+j;Qz3Kabm?-u2f@r zDbw?fWmQ}JBu%gK{iWAf!F`f=GB5r>cimr$wb0DF5d&GoX^U?oS-PSFr)!d6y;`u! z7SK%)AA-fLQj5Fv(LATC`v7sez7;=Fj@FCcWz4Lcoagmbdcq!dcchqK2^|eh%gbqP z@%jD997X{!2-mAcY%df7wzskg%CMjm`Reb`{YuZER|A!BpI);iW<{-l>!n^1U9VL~ zp_zCul}=)|xSv?W?yB)`w+Yods6Q31ml8Un9vbhjaC@8Q zdNqi6IneY$8E1rBz?M4ddX+Hemn5r3R&$`0R~_^QMTft=m)8pDm)hT3Wqc0X-#Uu1 zfc+gUD6D69VRqJOJran0`+Mwt>uZ1ifRY{A-{X`G<9|JMFPY-G<--2gu2R~yzd!Cx z!WKG531QYgq?7jdApZWJ*x!TD3Z2;BUTma|vA>^#!m#~)PiYR>-{IOQoR7;Kpza

`XAD2@nNhVxODRm%u<^%`9d`p%Pb^i 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

MM>())@w%xu1wR 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 z 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

7MU>O9M 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 V68KjF|4QIr3H&R8|Ia1xe*n6ea4rA< literal 259708 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[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 diff --git a/macosx/Growl.framework/Versions/A/Headers/Growl.h b/macosx/Growl.framework/Versions/A/Headers/Growl.h index e2a44255d..7b1a3247d 100644 --- a/macosx/Growl.framework/Versions/A/Headers/Growl.h +++ b/macosx/Growl.framework/Versions/A/Headers/Growl.h @@ -1,6 +1,5 @@ -#include "GrowlDefines.h" +#include #ifdef __OBJC__ -# include "GrowlApplicationBridge.h" +# include #endif -#include "GrowlApplicationBridge-Carbon.h" diff --git a/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h b/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h deleted file mode 100644 index e7213dbe2..000000000 --- a/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h +++ /dev/null @@ -1,780 +0,0 @@ -// -// GrowlApplicationBridge-Carbon.h -// Growl -// -// Created by Peter Hosey on Wed Jun 18 2004. -// Based on GrowlApplicationBridge.h by Evan Schoenberg. -// This source code is in the public domain. You may freely link it into any -// program. -// - -#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_ -#define _GROWLAPPLICATIONBRIDGE_CARBON_H_ - -#include -#include - -#ifndef GROWL_EXPORT -#define GROWL_EXPORT __attribute__((visibility("default"))) DEPRECATED_ATTRIBUTE -#endif - -/*! @header GrowlApplicationBridge-Carbon.h - * @abstract Declares an API that Carbon applications can use to interact with Growl. - * @discussion GrowlApplicationBridge uses a delegate to provide information //XXX - * to Growl (such as your application's name and what notifications it may - * post) and to provide information to your application (such as that Growl - * is listening for notifications or that a notification has been clicked). - * - * You can set the Growldelegate with Growl_SetDelegate and find out the - * current delegate with Growl_GetDelegate. See struct Growl_Delegate for more - * information about the delegate. - */ - -__BEGIN_DECLS - -/*! @struct Growl_Delegate - * @abstract Delegate to supply GrowlApplicationBridge with information and respond to events. - * @discussion The Growl delegate provides your interface to - * GrowlApplicationBridge. When GrowlApplicationBridge needs information about - * your application, it looks for it in the delegate; when Growl or the user - * does something that you might be interested in, GrowlApplicationBridge - * looks for a callback in the delegate and calls it if present - * (meaning, if it is not NULL). - * XXX on all of that - * @field size The size of the delegate structure. - * @field applicationName The name of your application. - * @field registrationDictionary A dictionary describing your application and the notifications it can send out. - * @field applicationIconData Your application's icon. - * @field growlInstallationWindowTitle The title of the installation window. - * @field growlInstallationInformation Text to display in the installation window. - * @field growlUpdateWindowTitle The title of the update window. - * @field growlUpdateInformation Text to display in the update window. - * @field referenceCount A count of owners of the delegate. - * @field retain Called when GrowlApplicationBridge receives this delegate. - * @field release Called when GrowlApplicationBridge no longer needs this delegate. - * @field growlIsReady Called when GrowlHelperApp is listening for notifications. - * @field growlNotificationWasClicked Called when a Growl notification is clicked. - * @field growlNotificationTimedOut Called when a Growl notification timed out. - */ -struct Growl_Delegate { - /* @discussion This should be sizeof(struct Growl_Delegate). - */ - size_t size; - - /*All of these attributes are optional. - *Optional attributes can be NULL; required attributes that - * are NULL cause setting the Growl delegate to fail. - *XXX - move optional/required status into the discussion for each field - */ - - /* This name is used both internally and in the Growl preferences. - * - * This should remain stable between different versions and incarnations of - * your application. - * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and - * "SurfWriter Lite" are not. - * - * This can be NULL if it is provided elsewhere, namely in an - * auto-discoverable plist file in your app bundle - * (XXX refer to more information on that) or in registrationDictionary. - */ - CFStringRef applicationName; - - /* - * Must contain at least these keys: - * GROWL_NOTIFICATIONS_ALL (CFArray): - * Contains the names of all notifications your application may post. - * - * Can also contain these keys: - * GROWL_NOTIFICATIONS_DEFAULT (CFArray): - * Names of notifications that should be enabled by default. - * If omitted, GROWL_NOTIFICATIONS_ALL will be used. - * GROWL_APP_NAME (CFString): - * Same as the applicationName member of this structure. - * If both are present, the applicationName member shall prevail. - * If this key is present, you may omit applicationName (set it to NULL). - * GROWL_APP_ICON (CFData): - * Same as the iconData member of this structure. - * If both are present, the iconData member shall prevail. - * If this key is present, you may omit iconData (set it to NULL). - * - * If you change the contents of this dictionary after setting the delegate, - * be sure to call Growl_Reregister. - * - * This can be NULL if you have an auto-discoverable plist file in your app - * bundle. (XXX refer to more information on that) - */ - CFDictionaryRef registrationDictionary; - - /* The data can be in any format supported by NSImage. As of - * Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and - * PICT formats. - * - * If this is not supplied, Growl will look up your application's icon by - * its application name. - */ - CFDataRef applicationIconData; - - /* Installer display attributes - * - * These four attributes are used by the Growl installer, if this framework - * supports it. - * For any of these being NULL, a localised default will be - * supplied. - */ - - /* If this is NULL, Growl will use a default, - * localized title. - * - * Only used if you're using Growl-WithInstaller.framework. Otherwise, - * this member is ignored. - */ - CFStringRef growlInstallationWindowTitle; - /* This information may be as long or short as desired (the - * window will be sized to fit it). If Growl is not installed, it will - * be displayed to the user as an explanation of what Growl is and what - * it can do in your application. - * It should probably note that no download is required to install. - * - * If this is NULL, Growl will use a default, localized - * explanation. - * - * Only used if you're using Growl-WithInstaller.framework. Otherwise, - * this member is ignored. - */ - CFStringRef growlInstallationInformation; - /* If this is NULL, Growl will use a default, - * localized title. - * - * Only used if you're using Growl-WithInstaller.framework. Otherwise, - * this member is ignored. - */ - CFStringRef growlUpdateWindowTitle; - /* This information may be as long or short as desired (the - * window will be sized to fit it). If an older version of Growl is - * installed, it will be displayed to the user as an explanation that an - * updated version of Growl is included in your application and - * no download is required. - * - * If this is NULL, Growl will use a default, localized - * explanation. - * - * Only used if you're using Growl-WithInstaller.framework. Otherwise, - * this member is ignored. - */ - CFStringRef growlUpdateInformation; - - /* This member is provided for use by your retain and release - * callbacks (see below). - * - * GrowlApplicationBridge never directly uses this member. Instead, it - * calls your retain callback (if non-NULL) and your release - * callback (if non-NULL). - */ - unsigned referenceCount; - - //Functions. Currently all of these are optional (any of them can be NULL). - - /* When you call Growl_SetDelegate(newDelegate), it will call - * oldDelegate->release(oldDelegate), and then it will call - * newDelegate->retain(newDelegate), and the return value from retain - * is what will be set as the delegate. - * (This means that this member works like CFRetain and -[NSObject retain].) - * This member is optional (it can be NULL). - * For a delegate allocated with malloc, this member would be - * NULL. - * @result A delegate to which GrowlApplicationBridge holds a reference. - */ - void *(*retain)(void *); - /* When you call Growl_SetDelegate(newDelegate), it will call - * oldDelegate->release(oldDelegate), and then it will call - * newDelegate->retain(newDelegate), and the return value from retain - * is what will be set as the delegate. - * (This means that this member works like CFRelease and - * -[NSObject release].) - * This member is optional (it can be NULL). - * For a delegate allocated with malloc, this member might be - * free(3). - */ - void (*release)(void *); - - /* Informs the delegate that Growl (specifically, the GrowlHelperApp) was - * launched successfully (or was already running). The application can - * take actions with the knowledge that Growl is installed and functional. - */ - void (*growlIsReady)(void); - - /* Informs the delegate that a Growl notification was clicked. It is only - * sent for notifications sent with a non-NULL clickContext, - * so if you want to receive a message when a notification is clicked, - * clickContext must not be NULL when calling - * Growl_PostNotification or - * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext. - */ - void (*growlNotificationWasClicked)(CFPropertyListRef clickContext); - - /* Informs the delegate that a Growl notification timed out. It is only - * sent for notifications sent with a non-NULL clickContext, - * so if you want to receive a message when a notification is clicked, - * clickContext must not be NULL when calling - * Growl_PostNotification or - * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext. - */ - void (*growlNotificationTimedOut)(CFPropertyListRef clickContext); -}; - -/*! @struct Growl_Notification - * @abstract Structure describing a Growl notification. - * @discussion XXX - * @field size The size of the notification structure. - * @field name Identifies the notification. - * @field title Short synopsis of the notification. - * @field description Additional text. - * @field iconData An icon for the notification. - * @field priority An indicator of the notification's importance. - * @field reserved Bits reserved for future usage. - * @field isSticky Requests that a notification stay on-screen until dismissed explicitly. - * @field clickContext An identifier to be passed to your click callback when a notification is clicked. - * @field clickCallback A callback to call when the notification is clicked. - */ -struct Growl_Notification { - /* This should be sizeof(struct Growl_Notification). - */ - size_t size; - - /* The notification name distinguishes one type of - * notification from another. The name should be human-readable, as it - * will be displayed in the Growl preference pane. - * - * The name is used in the GROWL_NOTIFICATIONS_ALL and - * GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and - * in this member of the Growl_Notification structure. - */ - CFStringRef name; - - /* A notification's title describes the notification briefly. - * It should be easy to read quickly by the user. - */ - CFStringRef title; - - /* The description supplements the title with more - * information. It is usually longer and sometimes involves a list of - * subjects. For example, for a 'Download complete' notification, the - * description might have one filename per line. GrowlMail in Growl 0.6 - * uses a description of '%d new mail(s)' (formatted with the number of - * messages). - */ - CFStringRef description; - - /* The notification icon usually indicates either what - * happened (it may have the same icon as e.g. a toolbar item that - * started the process that led to the notification), or what it happened - * to (e.g. a document icon). - * - * The icon data is optional, so it can be NULL. In that - * case, the application icon is used alone. Not all displays support - * icons. - * - * The data can be in any format supported by NSImage. As of Mac OS X - * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form - * ats. - */ - CFDataRef iconData; - - /* Priority is new in Growl 0.6, and is represented as a - * signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low - * priority, and +2 is Very High priority. - * - * Not all displays support priority. If you do not wish to assign a - * priority to your notification, assign 0. - */ - signed int priority; - - /* These bits are not used in Growl 0.6. Set them to 0. - */ - unsigned reserved: 31; - - /* When the sticky bit is clear, in most displays, - * notifications disappear after a certain amount of time. Sticky - * notifications, however, remain on-screen until the user dismisses them - * explicitly, usually by clicking them. - * - * Sticky notifications were introduced in Growl 0.6. Most notifications - * should not be sticky. Not all displays support sticky notifications, - * and the user may choose in Growl's preference pane to force the - * notification to be sticky or non-sticky, in which case the sticky bit - * in the notification will be ignored. - */ - unsigned isSticky: 1; - - /* If this is not NULL, and your click callback - * is not NULL either, this will be passed to the callback - * when your notification is clicked by the user. - * - * Click feedback was introduced in Growl 0.6, and it is optional. Not - * all displays support click feedback. - */ - CFPropertyListRef clickContext; - - /* If this is not NULL, it will be called instead - * of the Growl delegate's click callback when clickContext is - * non-NULL and the notification is clicked on by the user. - * - * Click feedback was introduced in Growl 0.6, and it is optional. Not - * all displays support click feedback. - * - * The per-notification click callback is not yet supported as of Growl - * 0.7. - */ - void (*clickCallback)(CFPropertyListRef clickContext); - - CFStringRef identifier; -}; - -#pragma mark - -#pragma mark Easy initialisers - -/*! @defined InitGrowlDelegate - * @abstract Callable macro. Initializes a Growl delegate structure to defaults. - * @discussion Call with a pointer to a struct Growl_Delegate. All of the - * members of the structure will be set to 0 or NULL, except for - * size (which will be set to sizeof(struct Growl_Delegate)) and - * referenceCount (which will be set to 1). - */ -#define InitGrowlDelegate(delegate) \ - do { \ - if (delegate) { \ - (delegate)->size = sizeof(struct Growl_Delegate); \ - (delegate)->applicationName = NULL; \ - (delegate)->registrationDictionary = NULL; \ - (delegate)->applicationIconData = NULL; \ - (delegate)->growlInstallationWindowTitle = NULL; \ - (delegate)->growlInstallationInformation = NULL; \ - (delegate)->growlUpdateWindowTitle = NULL; \ - (delegate)->growlUpdateInformation = NULL; \ - (delegate)->referenceCount = 1U; \ - (delegate)->retain = NULL; \ - (delegate)->release = NULL; \ - (delegate)->growlIsReady = NULL; \ - (delegate)->growlNotificationWasClicked = NULL; \ - (delegate)->growlNotificationTimedOut = NULL; \ - } \ - } while(0) - -/*! @defined InitGrowlNotification - * @abstract Callable macro. Initializes a Growl notification structure to defaults. - * @discussion Call with a pointer to a struct Growl_Notification. All of - * the members of the structure will be set to 0 or NULL, except - * for size (which will be set to - * sizeof(struct Growl_Notification)). - */ -#define InitGrowlNotification(notification) \ - do { \ - if (notification) { \ - (notification)->size = sizeof(struct Growl_Notification); \ - (notification)->name = NULL; \ - (notification)->title = NULL; \ - (notification)->description = NULL; \ - (notification)->iconData = NULL; \ - (notification)->priority = 0; \ - (notification)->reserved = 0U; \ - (notification)->isSticky = false; \ - (notification)->clickContext = NULL; \ - (notification)->clickCallback = NULL; \ - (notification)->identifier = NULL; \ - } \ - } while(0) - -#pragma mark - -#pragma mark Public API - -// @functiongroup Managing the Growl delegate - -/*! @function Growl_SetDelegate - * @abstract Replaces the current Growl delegate with a new one, or removes - * the Growl delegate. - * @param newDelegate - * @result Returns false and does nothing else if a pointer that was passed in - * is unsatisfactory (because it is non-NULL, but at least one - * required member of it is NULL). Otherwise, sets or unsets the - * delegate and returns true. - * @discussion When newDelegate is non-NULL, sets - * the delegate to newDelegate. When it is NULL, - * the current delegate will be unset, and no delegate will be in place. - * - * It is legal for newDelegate to be the current delegate; - * nothing will happen, and Growl_SetDelegate will return true. It is also - * legal for it to be NULL, as described above; again, it will - * return true. - * - * If there was a delegate in place before the call, Growl_SetDelegate will - * call the old delegate's release member if it was non-NULL. If - * newDelegate is non-NULL, Growl_SetDelegate will - * call newDelegate->retain, and set the delegate to its return - * value. - * - * If you are using Growl-WithInstaller.framework, and an older version of - * Growl is installed on the user's system, the user will automatically be - * prompted to update. - * - * GrowlApplicationBridge currently does not copy this structure, nor does it - * retain any of the CF objects in the structure (it regards the structure as - * a container that retains the objects when they are added and releases them - * when they are removed or the structure is destroyed). Also, - * GrowlApplicationBridge currently does not modify any member of the - * structure, except possibly the referenceCount by calling the retain and - * release members. - */ -GROWL_EXPORT Boolean Growl_SetDelegate(struct Growl_Delegate *newDelegate); - -/*! @function Growl_GetDelegate - * @abstract Returns the current Growl delegate, if any. - * @result The current Growl delegate. - * @discussion Returns the last pointer passed into Growl_SetDelegate, or - * NULL if no such call has been made. - * - * This function follows standard Core Foundation reference-counting rules. - * Because it is a Get function, not a Copy function, it will not retain the - * delegate on your behalf. You are responsible for retaining and releasing - * the delegate as needed. - */ -GROWL_EXPORT struct Growl_Delegate *Growl_GetDelegate(void); - -#pragma mark - - -// @functiongroup Posting Growl notifications - -/*! @function Growl_PostNotification - * @abstract Posts a Growl notification. - * @param notification The notification to post. - * @discussion This is the preferred means for sending a Growl notification. - * The notification name and at least one of the title and description are - * required (all three are preferred). All other parameters may be - * NULL (or 0 or false as appropriate) to accept default values. - * - * If using the Growl-WithInstaller framework, if Growl is not installed the - * user will be prompted to install Growl. - * If the user cancels, this function will have no effect until the next - * application session, at which time when it is called the user will be - * prompted again. The user is also given the option to not be prompted again. - * If the user does choose to install Growl, the requested notification will - * be displayed once Growl is installed and running. - */ -GROWL_EXPORT void Growl_PostNotification(const struct Growl_Notification *notification); - -/*! @function Growl_PostNotificationWithDictionary -* @abstract Notifies using a userInfo dictionary suitable for passing to -* CFDistributedNotificationCenter. -* @param userInfo The dictionary to notify with. -* @discussion Before Growl 0.6, your application would have posted -* notifications using CFDistributedNotificationCenter by creating a userInfo -* dictionary with the notification data. This had the advantage of allowing -* you to add other data to the dictionary for programs besides Growl that -* might be listening. -* -* This function allows you to use such dictionaries without being restricted -* to using CFDistributedNotificationCenter. The keys for this dictionary - * can be found in GrowlDefines.h. -*/ -GROWL_EXPORT void Growl_PostNotificationWithDictionary(CFDictionaryRef userInfo); - -/*! @function Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext - * @abstract Posts a Growl notification using parameter values. - * @param title The title of the notification. - * @param description The description of the notification. - * @param notificationName The name of the notification as listed in the - * registration dictionary. - * @param iconData Data representing a notification icon. Can be NULL. - * @param priority The priority of the notification (-2 to +2, with -2 - * being Very Low and +2 being Very High). - * @param isSticky If true, requests that this notification wait for a - * response from the user. - * @param clickContext An object to pass to the clickCallback, if any. Can - * be NULL, in which case the clickCallback is not called. - * @discussion Creates a temporary Growl_Notification, fills it out with the - * supplied information, and calls Growl_PostNotification on it. - * See struct Growl_Notification and Growl_PostNotification for more - * information. - * - * The icon data can be in any format supported by NSImage. As of Mac OS X - * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT formats. - */ -GROWL_EXPORT void Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext( - /*inhale*/ - CFStringRef title, - CFStringRef description, - CFStringRef notificationName, - CFDataRef iconData, - signed int priority, - Boolean isSticky, - CFPropertyListRef clickContext); - -#pragma mark - - -// @functiongroup Registering - -/*! @function Growl_RegisterWithDictionary - * @abstract Register your application with Growl without setting a delegate. - * @discussion When you call this function with a dictionary, - * GrowlApplicationBridge registers your application using that dictionary. - * If you pass NULL, GrowlApplicationBridge will ask the delegate - * (if there is one) for a dictionary, and if that doesn't work, it will look - * in your application's bundle for an auto-discoverable plist. - * (XXX refer to more information on that) - * - * If you pass a dictionary to this function, it must include the - * GROWL_APP_NAME key, unless a delegate is set. - * - * This function is mainly an alternative to the delegate system introduced - * with Growl 0.6. Without a delegate, you cannot receive callbacks such as - * growlIsReady (since they are sent to the delegate). You can, - * however, set a delegate after registering without one. - * - * This function was introduced in Growl.framework 0.7. - * @result false if registration failed (e.g. if Growl isn't installed). - */ -GROWL_EXPORT Boolean Growl_RegisterWithDictionary(CFDictionaryRef regDict); - -/*! @function Growl_Reregister - * @abstract Updates your registration with Growl. - * @discussion If your application changes the contents of the - * GROWL_NOTIFICATIONS_ALL key in the registrationDictionary member of the - * Growl delegate, or if it changes the value of that member, or if it - * changes the contents of its auto-discoverable plist, call this function - * to have Growl update its registration information for your application. - * - * Otherwise, this function does not normally need to be called. If you're - * using a delegate, your application will be registered when you set the - * delegate if both the delegate and its registrationDictionary member are - * non-NULL. - * - * This function is now implemented using - * Growl_RegisterWithDictionary. - */ -GROWL_EXPORT void Growl_Reregister(void); - -#pragma mark - - -/*! @function Growl_SetWillRegisterWhenGrowlIsReady - * @abstract Tells GrowlApplicationBridge to register with Growl when Growl - * launches (or not). - * @discussion When Growl has started listening for notifications, it posts a - * GROWL_IS_READY notification on the Distributed Notification - * Center. GrowlApplicationBridge listens for this notification, using it to - * perform various tasks (such as calling your delegate's - * growlIsReady callback, if it has one). If this function is - * called with true, one of those tasks will be to reregister - * with Growl (in the manner of Growl_Reregister). - * - * This attribute is automatically set back to false - * (the default) after every GROWL_IS_READY notification. - * @param flag true if you want GrowlApplicationBridge to register with - * Growl when next it is ready; false if not. - */ -GROWL_EXPORT void Growl_SetWillRegisterWhenGrowlIsReady(Boolean flag); -/*! @function Growl_WillRegisterWhenGrowlIsReady - * @abstract Reports whether GrowlApplicationBridge will register with Growl - * when Growl next launches. - * @result true if GrowlApplicationBridge will register with - * Growl when next it posts GROWL_IS_READY; false if not. - */ -GROWL_EXPORT Boolean Growl_WillRegisterWhenGrowlIsReady(void); - -#pragma mark - - -// @functiongroup Obtaining registration dictionaries - -/*! @function Growl_CopyRegistrationDictionaryFromDelegate - * @abstract Asks the delegate for a registration dictionary. - * @discussion If no delegate is set, or if the delegate's - * registrationDictionary member is NULL, this - * function returns NULL. - * - * This function does not attempt to clean up the dictionary in any way - for - * example, if it is missing the GROWL_APP_NAME key, the result - * will be missing it too. Use - * Growl_CreateRegistrationDictionaryByFillingInDictionary or - * Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys - * to try to fill in missing keys. - * - * This function was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -GROWL_EXPORT CFDictionaryRef Growl_CopyRegistrationDictionaryFromDelegate(void); - -/*! @function Growl_CopyRegistrationDictionaryFromBundle - * @abstract Looks in a bundle for a registration dictionary. - * @discussion This function looks in a bundle for an auto-discoverable - * registration dictionary file using CFBundleCopyResourceURL. - * If it finds one, it loads the file using CFPropertyList and - * returns the result. - * - * If you pass NULL as the bundle, the main bundle is examined. - * - * This function does not attempt to clean up the dictionary in any way - for - * example, if it is missing the GROWL_APP_NAME key, the result - * will be missing it too. Use - * Growl_CreateRegistrationDictionaryByFillingInDictionary: or - * Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys - * to try to fill in missing keys. - * - * This function was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -GROWL_EXPORT CFDictionaryRef Growl_CopyRegistrationDictionaryFromBundle(CFBundleRef bundle); - -/*! @function Growl_CreateBestRegistrationDictionary - * @abstract Obtains a registration dictionary, filled out to the best of - * GrowlApplicationBridge's knowledge. - * @discussion This function creates a registration dictionary as best - * GrowlApplicationBridge knows how. - * - * First, GrowlApplicationBridge examines the Growl delegate (if there is - * one) and gets the registration dictionary from that. If no such dictionary - * was obtained, GrowlApplicationBridge looks in your application's main - * bundle for an auto-discoverable registration dictionary file. If that - * doesn't exist either, this function returns NULL. - * - * Second, GrowlApplicationBridge calls - * Growl_CreateRegistrationDictionaryByFillingInDictionary with - * whatever dictionary was obtained. The result of that function is the - * result of this function. - * - * GrowlApplicationBridge uses this function when you call - * Growl_SetDelegate, or when you call - * Growl_RegisterWithDictionary with NULL. - * - * This function was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -GROWL_EXPORT CFDictionaryRef Growl_CreateBestRegistrationDictionary(void); - -#pragma mark - - -// @functiongroup Filling in registration dictionaries - -/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionary - * @abstract Tries to fill in missing keys in a registration dictionary. - * @param regDict The dictionary to fill in. - * @result The dictionary with the keys filled in. - * @discussion This function examines the passed-in dictionary for missing keys, - * and tries to work out correct values for them. As of 0.7, it uses: - * - * Key Value - * --- ----- - * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON The icon of the application. - * GROWL_APP_LOCATION The location of the application. - * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL - * - * Keys are only filled in if missing; if a key is present in the dictionary, - * its value will not be changed. - * - * This function was introduced in Growl.framework 0.7. - */ -GROWL_EXPORT CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionary(CFDictionaryRef regDict); -/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys - * @abstract Tries to fill in missing keys in a registration dictionary. - * @param regDict The dictionary to fill in. - * @param keys The keys to fill in. If NULL, any missing keys are filled in. - * @result The dictionary with the keys filled in. - * @discussion This function examines the passed-in dictionary for missing keys, - * and tries to work out correct values for them. As of 0.7, it uses: - * - * Key Value - * --- ----- - * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON The icon of the application. - * GROWL_APP_LOCATION The location of the application. - * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL - * - * Only those keys that are listed in keys will be filled in. - * Other missing keys are ignored. Also, keys are only filled in if missing; - * if a key is present in the dictionary, its value will not be changed. - * - * This function was introduced in Growl.framework 0.7. - */ -GROWL_EXPORT CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys(CFDictionaryRef regDict, CFSetRef keys); - -/*! @brief Tries to fill in missing keys in a notification dictionary. - * @param notifDict The dictionary to fill in. - * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. - * @discussion This function examines the \a notifDict for missing keys, and - * tries to get them from the last known registration dictionary. As of 1.1, - * the keys that it will look for are: - * - * \li GROWL_APP_NAME - * \li GROWL_APP_ICON - * - * @since Growl.framework 1.1 - */ -GROWL_EXPORT CFDictionaryRef Growl_CreateNotificationDictionaryByFillingInDictionary(CFDictionaryRef notifDict); - -#pragma mark - - -// @functiongroup Querying Growl's status - -/*! @function Growl_IsInstalled - * @abstract Determines whether the Growl prefpane and its helper app are - * installed. - * @result Returns true if Growl is installed, false otherwise. - */ -GROWL_EXPORT Boolean Growl_IsInstalled(void); - -/*! @function Growl_IsRunning - * @abstract Cycles through the process list to find whether GrowlHelperApp - * is running. - * @result Returns true if Growl is running, false otherwise. - */ -GROWL_EXPORT Boolean Growl_IsRunning(void); - -#pragma mark - - -// @functiongroup Launching Growl - -/*! @typedef GrowlLaunchCallback - * @abstract Callback to notify you that Growl is running. - * @param context The context pointer passed to Growl_LaunchIfInstalled. - * @discussion Growl_LaunchIfInstalled calls this callback function if Growl - * was already running or if it launched Growl successfully. - */ -typedef void (*GrowlLaunchCallback)(void *context); - -/*! @function Growl_LaunchIfInstalled - * @abstract Launches GrowlHelperApp if it is not already running. - * @param callback A callback function which will be called if Growl was successfully - * launched or was already running. Can be NULL. - * @param context The context pointer to pass to the callback. Can be NULL. - * @result Returns true if Growl was successfully launched or was already - * running; returns false and does not call the callback otherwise. - * @discussion Returns true and calls the callback (if the callback is not - * NULL) if the Growl helper app began launching or was already - * running. Returns false and performs no other action if Growl could not be - * launched (e.g. because the Growl preference pane is not properly installed). - * - * If Growl_CreateBestRegistrationDictionary returns - * non-NULL, this function will register with Growl atomically. - * - * The callback should take a single argument; this is to allow applications - * to have context-relevant information passed back. It is perfectly - * acceptable for context to be NULL. The callback itself can be - * NULL if you don't want one. - */ -GROWL_EXPORT Boolean Growl_LaunchIfInstalled(GrowlLaunchCallback callback, void *context); - -#pragma mark - -#pragma mark Constants - -/*! @defined GROWL_PREFPANE_BUNDLE_IDENTIFIER - * @abstract The CFBundleIdentifier of the Growl preference pane bundle. - * @discussion GrowlApplicationBridge uses this to determine whether Growl is - * currently installed, by searching for the Growl preference pane. Your - * application probably does not need to use this macro itself. - */ -#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER -#define GROWL_PREFPANE_BUNDLE_IDENTIFIER CFSTR("com.growl.prefpanel") -#endif - -__END_DECLS - -#endif /* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */ diff --git a/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h b/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h index 1e39f8d65..363975762 100644 --- a/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h +++ b/macosx/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h @@ -18,14 +18,11 @@ #import #import -#import "GrowlDefines.h" +#import //Forward declarations @protocol GrowlApplicationBridgeDelegate; -//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation) -#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION @"User chose not to install" - //------------------------------------------------------------------------------ #pragma mark - @@ -45,9 +42,9 @@ * @method isGrowlInstalled * @abstract Detects whether Growl is installed. * @discussion Determines if the Growl prefpane and its helper app are installed. - * @result Returns YES if Growl is installed, NO otherwise. + * @result this method will forever return YES. */ -+ (BOOL) isGrowlInstalled; ++ (BOOL) isGrowlInstalled __attribute__((deprecated)); /*! * @method isGrowlRunning @@ -57,6 +54,34 @@ */ + (BOOL) isGrowlRunning; + +/*! + * @method isMistEnabled + * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. + * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and + * executing a notification dispatch + * @result Returns YES if Growl isn't reachable and the developer has not opted-out of + * Mist and the user hasn't set the global mist enable key to false. + */ ++ (BOOL)isMistEnabled; + +/*! + * @method setShouldUseBuiltInNotifications + * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. + * @discussion if growl is unavailable due to not being installed or as a result of being turned off then + * this option can enable/disable a built-in fire and forget display style + * @param should Specifies whether or not the developer wants to opt-in (default) or opt out + * of the built-in Mist style in the event Growl is unreachable. + */ ++ (void)setShouldUseBuiltInNotifications:(BOOL)should; + +/*! + * @method shouldUseBuiltInNotifications + * @abstract returns the current opt-in state of the framework's use of the Mist display style. + * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. + */ ++ (BOOL)shouldUseBuiltInNotifications; + #pragma mark - /*! @@ -87,7 +112,7 @@ * * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. */ -+ (void) setGrowlDelegate:(NSObject *)inDelegate; ++ (void) setGrowlDelegate:(id)inDelegate; /*! * @method growlDelegate @@ -95,7 +120,7 @@ * @discussion See setGrowlDelegate: for details. * @result The Growl delegate. */ -+ (NSObject *) growlDelegate; ++ (id) growlDelegate; #pragma mark - @@ -235,6 +260,7 @@ * Growl when next it is ready; NO if not. */ + (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; + /*! @method willRegisterWhenGrowlIsReady * @abstract Reports whether GrowlApplicationBridge will register with Growl * when Growl next launches. @@ -323,7 +349,7 @@ * Key Value * --- ----- * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON The icon of the application. + * GROWL_APP_ICON_DATA The data of the icon of the application. * GROWL_APP_LOCATION The location of the application. * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL * @@ -336,6 +362,7 @@ * copy of regDict. */ + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + /*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: * @abstract Tries to fill in missing keys in a registration dictionary. * @discussion This method examines the passed-in dictionary for missing keys, @@ -344,7 +371,7 @@ * Key Value * --- ----- * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON The icon of the application. + * GROWL_APP_ICON_DATA The data of the icon of the application. * GROWL_APP_LOCATION The location of the application. * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL * @@ -368,30 +395,38 @@ * the keys that it will look for are: * * \li GROWL_APP_NAME - * \li GROWL_APP_ICON + * \li GROWL_APP_ICON_DATA * * @since Growl.framework 1.1 */ + (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; + (NSDictionary *) frameworkInfoDictionary; -@end -//------------------------------------------------------------------------------ #pragma mark - /*! - * @protocol GrowlApplicationBridgeDelegate - * @abstract Required protocol for the Growl delegate. - * @discussion The methods in this protocol are required and are called - * automatically as needed by GrowlApplicationBridge. See - * +[GrowlApplicationBridge setGrowlDelegate:]. - * See also GrowlApplicationBridgeDelegate_InformalProtocol. + *@method growlURLSchemeAvailable + *@abstract Lets the app know whether growl:// is registered on the system, used for certain methods below this + *@return Returns whether growl:// is registered on the system + *@discussion Methods such as openGrowlPreferences rely on the growl:// URL scheme to function + * Further, this method can provide a check on whether Growl is installed, + * however, the framework will not be relying on this method for choosing when/how to notify, + * and it is not recommended that the app rely on it for other than whether to use growl:// methods + *@since Growl.framework 1.4 */ ++ (BOOL) isGrowlURLSchemeAvailable; -@protocol GrowlApplicationBridgeDelegate - -// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7. +/*! + * @method openGrowlPreferences: + * @abstract Open Growl preferences, optionally to this app's settings, growl:// method + * @param showApp Whether to show the application's settings, otherwise just opens to the last position + * @return Return's whether opening the URL was succesfull or not. + * @discussion Will launch if Growl is installed, but not running, and open the preferences window + * Uses growl:// URL scheme + * @since Growl.framework 1.4 + */ ++ (BOOL) openGrowlPreferences:(BOOL)showApp; @end @@ -399,11 +434,17 @@ #pragma mark - /*! - * @category NSObject(GrowlApplicationBridgeDelegate_InformalProtocol) - * @abstract Methods which may be optionally implemented by the GrowlDelegate. - * @discussion The methods in this informal protocol will only be called if implemented by the delegate. + * @protocol GrowlApplicationBridgeDelegate + * @abstract Required protocol for the Growl delegate. + * @discussion The methods in this protocol are optional and are called + * automatically as needed by GrowlApplicationBridge. See + * +[GrowlApplicationBridge setGrowlDelegate:]. + * See also GrowlApplicationBridgeDelegate_InformalProtocol. */ -@interface NSObject (GrowlApplicationBridgeDelegate_InformalProtocol) + +@protocol GrowlApplicationBridgeDelegate + +@optional /*! * @method registrationDictionaryForGrowl @@ -510,66 +551,17 @@ */ - (void) growlNotificationTimedOut:(id)clickContext; -@end - -#pragma mark - -/*! - * @category NSObject(GrowlApplicationBridgeDelegate_Installation_InformalProtocol) - * @abstract Methods which may be optionally implemented by the Growl delegate when used with Growl-WithInstaller.framework. - * @discussion The methods in this informal protocol will only be called if - * implemented by the delegate. They allow greater control of the information - * presented to the user when installing or upgrading Growl from within your - * application when using Growl-WithInstaller.framework. - */ -@interface NSObject (GrowlApplicationBridgeDelegate_Installation_InformalProtocol) - -/*! - * @method growlInstallationWindowTitle - * @abstract Return the title of the installation window. - * @discussion If not implemented, Growl will use a default, localized title. - * @result An NSString object to use as the title. - */ -- (NSString *)growlInstallationWindowTitle; - -/*! - * @method growlUpdateWindowTitle - * @abstract Return the title of the upgrade window. - * @discussion If not implemented, Growl will use a default, localized title. - * @result An NSString object to use as the title. - */ -- (NSString *)growlUpdateWindowTitle; - -/*! - * @method growlInstallationInformation - * @abstract Return the information to display when installing. - * @discussion This information may be as long or short as desired (the window - * will be sized to fit it). It will be displayed to the user as an - * explanation of what Growl is and what it can do in your application. It - * should probably note that no download is required to install. - * - * If this is not implemented, Growl will use a default, localized explanation. - * @result An NSAttributedString object to display. - */ -- (NSAttributedString *)growlInstallationInformation; /*! - * @method growlUpdateInformation - * @abstract Return the information to display when upgrading. - * @discussion This information may be as long or short as desired (the window - * will be sized to fit it). It will be displayed to the user as an - * explanation that an updated version of Growl is included in your - * application and no download is required. - * - * If this is not implemented, Growl will use a default, localized explanation. - * @result An NSAttributedString object to display. + * @method hasNetworkClientEntitlement + * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement + * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, + * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. */ -- (NSAttributedString *)growlUpdateInformation; +- (BOOL) hasNetworkClientEntitlement; @end -//private -@interface GrowlApplicationBridge (GrowlInstallationPrompt_private) -+ (void) _userChoseNotToInstallGrowl; -@end +#pragma mark - #endif /* __GrowlApplicationBridge_h__ */ diff --git a/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h b/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h index 2b971cfe5..0a196f1e3 100644 --- a/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h +++ b/macosx/Growl.framework/Versions/A/Headers/GrowlDefines.h @@ -7,10 +7,8 @@ #ifdef __OBJC__ #define XSTR(x) (@x) -#define STRING_TYPE NSString * #else #define XSTR CFSTR -#define STRING_TYPE CFStringRef #endif /*! @header GrowlDefines.h @@ -56,7 +54,7 @@ * This key is optional. */ #define GROWL_APP_ID XSTR("ApplicationId") -/*! @defined GROWL_APP_ICON +/*! @defined GROWL_APP_ICON_DATA * @abstract The image data for your application's icon. * @discussion Image data representing your application's icon. This may be * superimposed on a notification icon as a badge, used as the notification @@ -66,7 +64,7 @@ * * Optional. Not supported by all display plugins. */ -#define GROWL_APP_ICON XSTR("ApplicationIcon") +#define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") /*! @defined GROWL_NOTIFICATIONS_DEFAULT * @abstract The array of notifications to turn on by default. * @discussion These are the names of the notifications that should be enabled @@ -101,6 +99,14 @@ * This key is optional. */ #define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") +/*! @defined GROWL_NOTIFICATIONS_ICONS + * @abstract A dictionary of icons for each notification + * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are + * icons for each notification, for GNTP spec + * + * This key is optional. + */ +#define GROWL_NOTIFICATIONS_ICONS XSTR("NotificationIcons") /*! @defined GROWL_TICKET_VERSION * @abstract The version of your registration ticket. @@ -144,20 +150,20 @@ */ #define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") /*! @defined GROWL_NOTIFICATION_ICON - * @discussion Image data for the notification icon. Must be in a format + * @discussion Image data for the notification icon. Image data must be in a format * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. * * Optional. Not supported by all display plugins. */ -#define GROWL_NOTIFICATION_ICON XSTR("NotificationIcon") +#define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") /*! @defined GROWL_NOTIFICATION_APP_ICON * @discussion Image data for the application icon, in case GROWL_APP_ICON does - * not apply for some reason. Must be in a format supported by NSImage, such + * not apply for some reason. Image data be in a format supported by NSImage, such * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. * * Optional. Not supported by all display plugins. */ -#define GROWL_NOTIFICATION_APP_ICON XSTR("NotificationAppIcon") +#define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") /*! @defined GROWL_NOTIFICATION_PRIORITY * @discussion The priority of the notification as an integer number from * -2 to +2 (+2 being highest). @@ -185,16 +191,6 @@ */ #define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") -/*! @defined GROWL_DISPLAY_PLUGIN - * @discussion The name of a display plugin which should be used for this notification. - * Optional. If this key is not set or the specified display plugin does not - * exist, the display plugin stored in the application ticket is used. This key - * allows applications to use different default display plugins for their - * notifications. The user can still override those settings in the preference - * pane. - */ -#define GROWL_DISPLAY_PLUGIN XSTR("NotificationDisplayPlugin") - /*! @defined GROWL_NOTIFICATION_IDENTIFIER * @abstract An identifier for the notification for coalescing purposes. * Notifications with the same identifier fall into the same class; only @@ -224,6 +220,19 @@ */ #define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") +/*! @defined GROWL_NOTIFICATION_ALREADY_SHOWN + * @abstract If this key is set, it should contain a bool value wrapped + * in a NSNumber which describes whether the notification has + * already been displayed, for instance by built in Notification + * Center support. This value can be used to allow display + * plugins to skip a notification, while still allowing Growl + * actions to run on them. + * + * Optional. Not supported by all display plugins. + */ +#define GROWL_NOTIFICATION_ALREADY_SHOWN XSTR("AlreadyShown") + + // Notifications #pragma mark Notifications @@ -245,7 +254,7 @@ * The userInfo dictionary for this notification can contain these keys: *

@@ -288,12 +297,6 @@ * Growl_PostNotification. */ #define GROWL_NOTIFICATION XSTR("GrowlNotification") -/*! @defined GROWL_SHUTDOWN -* @abstract The distributed notification name that tells Growl to shutdown. -* @discussion The Growl preference pane posts this notification when the -* "Stop Growl" button is clicked. -*/ -#define GROWL_SHUTDOWN XSTR("GrowlShutdown") /*! @defined GROWL_PING * @abstract A distributed notification to check whether Growl is running. * @discussion This is used by the Growl preference pane. If it receives a @@ -313,15 +316,48 @@ * registration dictionary supplied by its delegate. */ #define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") -/*! @defined GROWL_NOTIFICATION_CLICKED - * @abstract The distributed notification sent when a supported notification is clicked. + + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. * @discussion When a Growl notification with a click context is clicked on by - * the user, Growl posts this distributed notification. - * The GrowlApplicationBridge responds to this notification by calling a - * callback in its delegate. + * the user, Growl posts a distributed notification whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX + * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. + * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification + * whose name is in the format: + * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] + * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. + * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. */ -#define GROWL_NOTIFICATION_CLICKED XSTR("GrowlClicked!") -#define GROWL_NOTIFICATION_TIMED_OUT XSTR("GrowlTimedOut!") +#define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON + * @abstract The distributed notification sent when the Notification Center support is toggled on in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should now speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON XSTR("GrowlNotificationCenterOn!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF + * @abstract The distributed notification sent when the Notification Center support is toggled off in Growl 2.0 + * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent + * to inform all running apps that they should no longer speak to Notification Center directly. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF XSTR("GrowlNotificationCenterOff!") + +/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY + * @abstract The distributed notification sent by an application to query Growl 2.0's notification center support. + * @discussion When an app starts up, it will send this query to get Growl 2.0 to spit out whether notification + * center support is on or off. + */ +#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY XSTR("GrowlNotificationCenterYN?") + /*! @group Other symbols */ /* Symbols which don't fit into any of the other categories. */ @@ -345,4 +381,6 @@ #define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" +#define GROWL_PLUGIN_CONFIG_ID XSTR("GrowlPluginConfigurationID") + #endif //ndef _GROWLDEFINES_H diff --git a/macosx/Growl.framework/Versions/A/Resources/Info.plist b/macosx/Growl.framework/Versions/A/Resources/Info.plist index ed7235993..6a90f41b9 100644 --- a/macosx/Growl.framework/Versions/A/Resources/Info.plist +++ b/macosx/Growl.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 10J869 + 12C60 CFBundleDevelopmentRegion English CFBundleExecutable @@ -15,25 +15,25 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.2.2 + 2.0.1 CFBundleSignature GRRR CFBundleVersion - 1.2.2 + 2.0.1 DTCompiler - 4.0 + com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 10M2518 + 4G2008a DTPlatformVersion - PG + GM DTSDKBuild - 9L31a + 12C37 DTSDKName - macosx10.5 + macosx10.8 DTXcode - 0400 + 0452 DTXcodeBuild - 10M2518 + 4G2008a NSPrincipalClass GrowlApplicationBridge diff --git a/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources b/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources new file mode 100644 index 000000000..420b594ac --- /dev/null +++ b/macosx/Growl.framework/Versions/A/_CodeSignature/CodeResources @@ -0,0 +1,34 @@ + + + + + files + + Resources/Info.plist + + VZb3f8My4te/5JwcjfvotgCXTAs= + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^version.plist$ + + + + diff --git a/macosx/HBAudioController.m b/macosx/HBAudioController.m index 5e4a32508..353e24f16 100644 --- a/macosx/HBAudioController.m +++ b/macosx/HBAudioController.m @@ -150,27 +150,27 @@ NSString *HBMixdownChangedNotification = @"HBMixdownChangedNotification"; unsigned int audioArrayCount = [self countOfAudioArray]; for (i = 0; i < audioArrayCount; i++) { - HBAudio *anAudio = [self objectInAudioArrayAtIndex: i]; + HBAudio *anAudio = [self objectInAudioArrayAtIndex:i]; if ([anAudio enabled]) { - NSNumber *sampleRateToUse = (0 == [[[anAudio sampleRate] objectForKey: keyAudioSamplerate] intValue]) ? - [[anAudio track] objectForKey: keyAudioInputSampleRate] : - [[anAudio sampleRate] objectForKey: keyAudioSamplerate]; + NSNumber *sampleRateToUse = ([[[anAudio sampleRate] objectForKey:keyAudioSamplerate] intValue] == 0 ? + [[anAudio track] objectForKey:keyAudioInputSampleRate] : + [[anAudio sampleRate] objectForKey:keyAudioSamplerate]); - hb_audio_config_t *audio = (hb_audio_config_t *) calloc(1, sizeof(*audio)); + hb_audio_config_t *audio = (hb_audio_config_t*)calloc(1, sizeof(*audio)); hb_audio_config_init(audio); - audio->in.track = [[[anAudio track] objectForKey: keyAudioTrackIndex] intValue] - 1; + audio->in.track = [[[anAudio track] objectForKey:keyAudioTrackIndex] intValue] - 1; /* We go ahead and assign values to our audio->out. */ - audio->out.track = audio->in.track; - audio->out.codec = [[[anAudio codec] objectForKey: keyAudioCodec] intValue]; - audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); - audio->out.mixdown = [[[anAudio mixdown] objectForKey: keyAudioMixdown] intValue]; - audio->out.normalize_mix_level = 0; - audio->out.bitrate = [[[anAudio bitRate] objectForKey: keyAudioBitrate] intValue]; - audio->out.samplerate = [sampleRateToUse intValue]; - audio->out.dynamic_range_compression = [[anAudio drc] floatValue]; - audio->out.gain = [[anAudio gain] floatValue]; - audio->out.dither_method = hb_audio_dither_get_default(); + audio->out.track = audio->in.track; + audio->out.codec = [[[anAudio codec] objectForKey:keyAudioCodec] intValue]; + audio->out.compression_level = hb_get_default_audio_compression(audio->out.codec); + audio->out.mixdown = [[[anAudio mixdown] objectForKey:keyAudioMixdown] intValue]; + audio->out.normalize_mix_level = 0; + audio->out.bitrate = [[[anAudio bitRate] objectForKey:keyAudioBitrate] intValue]; + audio->out.samplerate = [sampleRateToUse intValue]; + audio->out.dynamic_range_compression = [[anAudio drc] floatValue]; + audio->out.gain = [[anAudio gain] floatValue]; + audio->out.dither_method = hb_audio_dither_get_default(); hb_audio_add(aJob, audio); free(audio); diff --git a/macosx/HBPreferencesController.m b/macosx/HBPreferencesController.m index 1be9ccf76..4e5baccd1 100644 --- a/macosx/HBPreferencesController.m +++ b/macosx/HBPreferencesController.m @@ -111,25 +111,25 @@ { return [self toolbarItemWithIdentifier:ident label:NSLocalizedString(@"General", @"Preferences General Toolbar Item") - image:[NSImage imageNamed:NSImageNamePreferencesGeneral]]; + image:[NSImage imageNamed:@"settings"]]; } else if ( [ident isEqualToString:TOOLBAR_PICTURE] ) { return [self toolbarItemWithIdentifier:ident label:NSLocalizedString(@"Picture", @"Preferences Picture Toolbar Item") - image:[NSImage imageNamed:@"pref-picture"]]; + image:[NSImage imageNamed:@"picturesettings"]]; } else if ( [ident isEqualToString:TOOLBAR_AUDIO] ) { return [self toolbarItemWithIdentifier:ident label:NSLocalizedString(@"Audio", @"Preferences Audio Toolbar Item") - image:[NSImage imageNamed:@"pref-audio"]]; + image:[NSImage imageNamed:@"audio"]]; } else if ( [ident isEqualToString:TOOLBAR_ADVANCED] ) { return [self toolbarItemWithIdentifier:ident label:NSLocalizedString(@"Advanced", @"Preferences Advanced Toolbar Item") - image:[NSImage imageNamed:NSImageNameAdvanced]]; + image:[NSImage imageNamed:@"advanced"]]; } return nil; diff --git a/macosx/HBPreviewController.m b/macosx/HBPreviewController.m index fe605450b..aaf6ec36c 100644 --- a/macosx/HBPreviewController.m +++ b/macosx/HBPreviewController.m @@ -247,7 +247,8 @@ // Scale factor changed, update the preview window // to the new situation backingScaleFactor = newBackingScaleFactor; - [self pictureSliderChanged:self]; + if (fTitle) + [self pictureSliderChanged:self]; } } @@ -680,12 +681,14 @@ - (IBAction) cancelCreateMoviePreview: (id) sender { hb_state_t s; - hb_get_state2( fPreviewLibhb, &s ); + hb_get_state2(fPreviewLibhb, &s); - if(fEncodeState && (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 ); + hb_stop(fPreviewLibhb); + hb_system_sleep_allow(fPreviewLibhb); [NSAnimationContext beginGrouping]; [[NSAnimationContext currentContext] setDuration:0.2]; [[fEncodingControlBox animator] setHidden:YES]; @@ -803,7 +806,8 @@ /* Let fPreviewLibhb do the job */ fEncodeState = 1; - hb_start( fPreviewLibhb ); + hb_system_sleep_prevent(fPreviewLibhb); + hb_start(fPreviewLibhb); } @@ -896,6 +900,8 @@ } fEncodeState = 0; + /* Done encoding, allow system sleep for the preview handle */ + hb_system_sleep_allow(fPreviewLibhb); break; } } diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 2a961be6d..a121c1826 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -340,7 +340,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe // Set up a reasonable tooltip, and image [toolbarItem setToolTip: @"Start Encoding"]; - [toolbarItem setImage: [NSImage imageNamed: @"Play"]]; + [toolbarItem setImage: [NSImage imageNamed: @"encode"]]; // Tell the item what message to send when it is clicked [toolbarItem setTarget: self]; @@ -357,7 +357,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe // Set up a reasonable tooltip, and image [toolbarItem setToolTip: @"Pause Encoding"]; - [toolbarItem setImage: [NSImage imageNamed: @"Pause"]]; + [toolbarItem setImage: [NSImage imageNamed: @"pauseencode"]]; // Tell the item what message to send when it is clicked [toolbarItem setTarget: self]; @@ -420,7 +420,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe if ((s.state == HB_STATE_PAUSED) || (s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) { enable = YES; - [toolbarItem setImage:[NSImage imageNamed: @"Stop"]]; + [toolbarItem setImage:[NSImage imageNamed: @"stopencode"]]; [toolbarItem setLabel: @"Stop"]; [toolbarItem setToolTip: @"Stop Encoding"]; } @@ -428,7 +428,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe else if (fPendingCount > 0) { enable = YES; - [toolbarItem setImage:[NSImage imageNamed: @"Play"]]; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; [toolbarItem setLabel: @"Start"]; [toolbarItem setToolTip: @"Start Encoding"]; } @@ -436,7 +436,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe else { enable = NO; - [toolbarItem setImage:[NSImage imageNamed: @"Play"]]; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; [toolbarItem setLabel: @"Start"]; [toolbarItem setToolTip: @"Start Encoding"]; } @@ -447,7 +447,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe if (s.state == HB_STATE_PAUSED) { enable = YES; - [toolbarItem setImage:[NSImage imageNamed: @"Play"]]; + [toolbarItem setImage:[NSImage imageNamed: @"encode"]]; [toolbarItem setLabel: @"Resume"]; [toolbarItem setToolTip: @"Resume Encoding"]; } @@ -455,14 +455,14 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING)) { enable = YES; - [toolbarItem setImage:[NSImage imageNamed: @"Pause"]]; + [toolbarItem setImage:[NSImage imageNamed: @"pauseencode"]]; [toolbarItem setLabel: @"Pause"]; [toolbarItem setToolTip: @"Pause Encoding"]; } else { enable = NO; - [toolbarItem setImage:[NSImage imageNamed: @"Pause"]]; + [toolbarItem setImage:[NSImage imageNamed: @"pauseencode"]]; [toolbarItem setLabel: @"Pause"]; [toolbarItem setToolTip: @"Pause Encoding"]; } @@ -839,66 +839,26 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; int itemRowNum = [outlineView rowForItem: item]; NSMutableDictionary *queueItemToCheck = [outlineView itemAtRow: itemRowNum]; - /* Check to see if we need to allow for mp4 opts */ - BOOL mp4OptsPresent = NO; - if ([[queueItemToCheck objectForKey:@"FileFormat"] isEqualToString: @"MP4 file"]) + /* Check to see if we need to allow for container options */ + if ([[queueItemToCheck objectForKey:@"MuxerOptionsSummary"] length]) { - - if( [[queueItemToCheck objectForKey:@"Mp4LargeFile"] intValue] == 1) - { - mp4OptsPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"Mp4HttpOptimize"] intValue] == 1) - { - mp4OptsPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"Mp4iPodCompatible"] intValue] == 1) - { - mp4OptsPresent = YES; - } - } - - if (mp4OptsPresent == YES) - { - itemHeightForDisplay += rowHeightNonTitle; + itemHeightForDisplay += rowHeightNonTitle; } /* check to see if we need to allow for the Picture Filters row */ - BOOL pictureFiltersPresent = NO; - if( [[queueItemToCheck objectForKey:@"PictureDetelecine"] intValue] > 0) - { - pictureFiltersPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"PictureDecomb"] intValue] > 0) - { - pictureFiltersPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"PictureDeinterlace"] intValue] > 0) + if ([[queueItemToCheck objectForKey:@"PictureFiltersSummary"] length]) { - pictureFiltersPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"PictureDenoise"] intValue] > 0) - { - pictureFiltersPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"PictureDeblock"] intValue] > 0) - { - pictureFiltersPresent = YES; - } - if( [[queueItemToCheck objectForKey:@"VideoGrayScale"] intValue] > 0) - { - pictureFiltersPresent = YES; + itemHeightForDisplay += rowHeightNonTitle; } - if (pictureFiltersPresent == YES) + /* check to see if we need a line to display x264/lavc options */ + if ([[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"H.264 (x264)"]) { - itemHeightForDisplay += rowHeightNonTitle; + itemHeightForDisplay += rowHeightNonTitle * 2; } - - /* check to see if we need a line to display x264 options */ - if ([[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"H.264 (x264)"]) + else if (![[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"VP3 (Theora)"]) { - itemHeightForDisplay += rowHeightNonTitle; + itemHeightForDisplay += rowHeightNonTitle; } /* check to see how many audio track lines to allow for */ @@ -915,7 +875,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; autoPassthruPresent = YES; } } - itemHeightForDisplay += (actualCountOfAudioTracks * rowHeightNonTitle); + itemHeightForDisplay += (actualCountOfAudioTracks * rowHeightNonTitle * 2); if (autoPassthruPresent == YES) { @@ -1113,33 +1073,14 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [finalString appendString: @"Format: " withAttributes:detailBoldAttr]; [finalString appendString: jobFormatInfo withAttributes:detailAttr]; - /* Optional String for mp4 options */ - if ([[item objectForKey:@"FileFormat"] isEqualToString: @"MP4 file"]) + /* Optional String for muxer options */ + if ([[item objectForKey:@"MuxerOptionsSummary"] length]) { - NSString * MP4Opts = @""; - BOOL mp4OptsPresent = NO; - if( [[item objectForKey:@"Mp4LargeFile"] intValue] == 1) - { - mp4OptsPresent = YES; - MP4Opts = [MP4Opts stringByAppendingString:@" - Large file size"]; - } - if( [[item objectForKey:@"Mp4HttpOptimize"] intValue] == 1) - { - mp4OptsPresent = YES; - MP4Opts = [MP4Opts stringByAppendingString:@" - Web optimized"]; - } - - if( [[item objectForKey:@"Mp4iPodCompatible"] intValue] == 1) - { - mp4OptsPresent = YES; - MP4Opts = [MP4Opts stringByAppendingString:@" - iPod 5G support "]; - } - if (mp4OptsPresent == YES) - { - [finalString appendString: @"MP4 Options: " withAttributes:detailBoldAttr]; - [finalString appendString: MP4Opts withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - } + NSString *containerOptions = [NSString stringWithFormat:@"%@", + [item objectForKey:@"MuxerOptionsSummary"]]; + [finalString appendString:@"Container Options: " withAttributes:detailBoldAttr]; + [finalString appendString:containerOptions withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; } /* Fourth Line (Destination Path)*/ @@ -1148,127 +1089,24 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [finalString appendString:@"\n" withAttributes:detailAttr]; /* Fifth Line Picture Details*/ - NSString * pictureInfo; - pictureInfo = [NSString stringWithFormat:@"%@", [item objectForKey:@"PictureSizingSummary"]]; + NSString *pictureInfo = [NSString stringWithFormat:@"%@", + [item objectForKey:@"PictureSettingsSummary"]]; if ([[item objectForKey:@"PictureKeepRatio"] intValue] == 1) { pictureInfo = [pictureInfo stringByAppendingString:@" Keep Aspect Ratio"]; } - - if ([[item objectForKey:@"VideoGrayScale"] intValue] == 1) - { - pictureInfo = [pictureInfo stringByAppendingString:@", Grayscale"]; - } - - [finalString appendString: @"Picture: " withAttributes:detailBoldAttr]; - [finalString appendString: pictureInfo withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; + [finalString appendString:@"Picture: " withAttributes:detailBoldAttr]; + [finalString appendString:pictureInfo withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; /* Optional String for Picture Filters */ - NSString * pictureFilters = @""; - BOOL pictureFiltersPresent = NO; - - if( [[item objectForKey:@"PictureDetelecine"] intValue] == 1) + if ([[item objectForKey:@"PictureFiltersSummary"] length]) { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[item objectForKey:@"PictureDetelecineCustom"]]]; - } - else if( [[item objectForKey:@"PictureDetelecine"] intValue] == 2) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Detelecine (Default)"]; - } - - if( [[item objectForKey:@"PictureDecombDeinterlace"] intValue] == 1) - { - if( [[item objectForKey:@"PictureDecomb"] intValue] == 1) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[item objectForKey:@"PictureDecombCustom"]]]; - } - else if( [[item objectForKey:@"PictureDecomb"] intValue] == 2) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Default)"]; - } - else if( [[item objectForKey:@"PictureDecomb"] intValue] == 3) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Fast)"]; - } - else if( [[item objectForKey:@"PictureDecomb"] intValue] == 4) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Bob)"]; - } - } - else - { - if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 1) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[item objectForKey:@"PictureDeinterlaceCustom"]]]; - } - else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 2) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Fast)"]; - } - else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 3) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slow)"]; - } - else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 4) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slower)"]; - } - else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 5) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Bob)"]; - } - } - - if ([[item objectForKey:@"PictureDenoise"] intValue] == 1) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[item objectForKey:@"PictureDenoiseCustom"]]]; - } - else if ([[item objectForKey:@"PictureDenoise"] intValue] == 2) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Weak)"]; - } - else if ([[item objectForKey:@"PictureDenoise"] intValue] == 3) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Medium)"]; - } - else if ([[item objectForKey:@"PictureDenoise"] intValue] == 4) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Strong)"]; - } - - if ([[item objectForKey:@"PictureDeblock"] intValue] != 0) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString: [NSString stringWithFormat:@" - Deblock (pp7) (%d)",[[item objectForKey:@"PictureDeblock"] intValue]]]; - } - - if ([[item objectForKey:@"VideoGrayScale"] intValue] == 1) - { - pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Grayscale"]; - } - - if (pictureFiltersPresent == YES) - { - [finalString appendString: @"Filters: " withAttributes:detailBoldAttr]; - [finalString appendString: pictureFilters withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; + NSString *pictureFilters = [NSString stringWithFormat:@"%@", + [item objectForKey:@"PictureFiltersSummary"]]; + [finalString appendString:@"Filters: " withAttributes:detailBoldAttr]; + [finalString appendString:pictureFilters withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; } /* Sixth Line Video Details*/ diff --git a/macosx/HBSubtitles.h b/macosx/HBSubtitles.h index 83c9a1d6f..9b001fe7a 100644 --- a/macosx/HBSubtitles.h +++ b/macosx/HBSubtitles.h @@ -15,6 +15,7 @@ hb_title_t *fTitle; NSMutableArray *subtitleArray; // contains the output subtitle track info NSMutableArray *subtitleSourceArray;// contains the source subtitle track info +NSString *foreignAudioSearchTrackName; NSMutableArray *languagesArray; // array of languages taken from lang.c int languagesArrayDefIndex; NSMutableArray *charCodeArray; // array of character codes diff --git a/macosx/HBSubtitles.m b/macosx/HBSubtitles.m index f84749303..94561a983 100644 --- a/macosx/HBSubtitles.m +++ b/macosx/HBSubtitles.m @@ -252,12 +252,11 @@ - (void)resetWithTitle:(hb_title_t *)title { - fTitle = title; - if (!title) { return; } + fTitle = title; /* reset the subtitle source array */ if (subtitleSourceArray) @@ -267,42 +266,71 @@ subtitleSourceArray = [[NSMutableArray alloc] init]; /* now populate the array with the source subtitle track info */ - if (fTitle) + int i; + hb_subtitle_t *subtitle; + NSMutableArray *forcedSourceNamesArray = [[NSMutableArray alloc] init]; + for (i = 0; i < hb_list_count(fTitle->list_subtitle); i++) + { + subtitle = (hb_subtitle_t*)hb_list_item(fTitle->list_subtitle, i); + + /* Subtitle source features */ + int canBeBurnedIn = hb_subtitle_can_burn(subtitle->source); + int supportsForcedFlags = hb_subtitle_can_force(subtitle->source); + /* Human-readable representation of subtitle->source */ + NSString *bitmapOrText = subtitle->format == PICTURESUB ? @"Bitmap" : @"Text"; + NSString *subSourceName = [NSString stringWithUTF8String:hb_subsource_name(subtitle->source)]; + /* if the subtitle track can be forced, add its source name to the array */ + if (supportsForcedFlags && + [forcedSourceNamesArray containsObject:subSourceName] == NO) { - hb_subtitle_t *subtitle; - hb_subtitle_config_t sub_config; - int i; - for(i = 0; i < hb_list_count( fTitle->list_subtitle ); i++ ) + [forcedSourceNamesArray addObject:subSourceName]; + } + + /* create a dictionary of source subtitle information to store in our array */ + NSMutableDictionary *newSubtitleSourceTrack = [[NSMutableDictionary alloc] init]; + /* Subtitle Source track name */ + [newSubtitleSourceTrack setObject:[NSString stringWithFormat:@"%d - %@ - (%@) (%@)", + i, [NSString stringWithUTF8String:subtitle->lang], + bitmapOrText,subSourceName] + forKey:@"sourceTrackName"]; + /* Subtitle Source track number, type and features */ + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:i] forKey:@"sourceTrackNum"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:subtitle->source] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:canBeBurnedIn] forKey:@"sourceTrackCanBeBurnedIn"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:supportsForcedFlags] forKey:@"sourceTrackSupportsForcedFlags"]; + [subtitleSourceArray addObject:newSubtitleSourceTrack]; + [newSubtitleSourceTrack autorelease]; + } + + /* now set the name of the Foreign Audio Search track */ + if ([forcedSourceNamesArray count]) + { + [forcedSourceNamesArray sortUsingComparator:^(id obj1, id obj2) + { + return [((NSString*)obj1) compare:((NSString*)obj2)]; + }]; + NSString *tempString; + NSString *tempList = @""; + NSEnumerator *enumerator = [forcedSourceNamesArray objectEnumerator]; + while (tempString = (NSString*)[enumerator nextObject]) + { + if ([tempList length]) { - subtitle = (hb_subtitle_t *) hb_list_item( fTitle->list_subtitle, i ); - sub_config = subtitle->config; - - int canBeBurnedIn = hb_subtitle_can_burn( subtitle->source ); - int supportsForcedFlags = hb_subtitle_can_force( subtitle->source ); - - /* create a dictionary of source subtitle information to store in our array */ - NSMutableDictionary *newSubtitleSourceTrack = [[NSMutableDictionary alloc] init]; - /* Subtitle Source track popup index */ - [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:i] forKey:@"sourceTrackNum"]; - /* Human-readable representation of subtitle->source */ - NSString *subSourceName = [NSString stringWithUTF8String:hb_subsource_name( subtitle->source )]; - NSString *bitmapOrText = subtitle->format == PICTURESUB ? @"Bitmap" : @"Text"; - /* Subtitle Source track name */ - NSString *popupName = [NSString stringWithFormat:@"%d - %@ - (%@) (%@)",i,[NSString stringWithUTF8String:subtitle->lang],bitmapOrText,subSourceName]; - [newSubtitleSourceTrack setObject:popupName forKey:@"sourceTrackName"]; - /* Subtitle Source track type (VobSub, Srt, etc.) */ - [newSubtitleSourceTrack setObject:subSourceName forKey:@"sourceTrackType"]; - /* Subtitle Source track canBeBurnedIn */ - [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:canBeBurnedIn] forKey:@"sourceTrackCanBeBurnedIn"]; - /* Subtitle Source track supportsForcedFlags */ - [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:supportsForcedFlags] forKey:@"sourceTrackSupportsForcedFlags"]; - - [subtitleSourceArray addObject:newSubtitleSourceTrack]; - [newSubtitleSourceTrack autorelease]; + tempList = [tempList stringByAppendingString:@", "]; } + tempList = [tempList stringByAppendingString:tempString]; } - - + [foreignAudioSearchTrackName release]; + foreignAudioSearchTrackName = [[NSString stringWithFormat:@"Foreign Audio Search - (Bitmap) (%@)", tempList] + retain]; + } + else + { + [foreignAudioSearchTrackName release]; + foreignAudioSearchTrackName = [[NSString stringWithString:@"Foreign Audio Search - (Bitmap)"] + retain]; + } + [forcedSourceNamesArray release]; /* reset the subtitle output array */ if (subtitleArray) @@ -355,8 +383,8 @@ /* Subtitle Source track name */ [newSubtitleSourceTrack setObject:displayname forKey:@"sourceTrackName"]; /* Subtitle Source track type (VobSub, Srt, etc.) */ - [newSubtitleSourceTrack setObject:@"SRT" forKey:@"sourceTrackType"]; - [newSubtitleSourceTrack setObject:@"SRT" forKey:@"subtitleSourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; /* Subtitle Source file path */ [newSubtitleSourceTrack setObject:filePath forKey:@"sourceSrtFilePath"]; /* Subtitle Source track canBeBurnedIn */ @@ -384,8 +412,8 @@ [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:[subtitleSourceArray count]] forKey:@"subtitleSourceTrackNum"]; } - [newSubtitleSrtTrack setObject:@"SRT" forKey:@"sourceTrackType"]; - [newSubtitleSrtTrack setObject:@"SRT" forKey:@"subtitleSourceTrackType"]; + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSrtTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; /* Subtitle Source track popup language */ [newSubtitleSrtTrack setObject:displayname forKey:@"subtitleSourceTrackName"]; /* Subtitle track forced state */ @@ -444,7 +472,7 @@ while ( tempObject = [enumerator nextObject] ) { /* We have an srt track */ - if ([[tempObject objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[tempObject objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { NSString *filePath = [tempObject objectForKey:@"subtitleSourceSrtFilePath"]; /* Start replicate the add new srt code above */ @@ -457,8 +485,8 @@ /* Subtitle Source track name */ [newSubtitleSourceTrack setObject:displayname forKey:@"sourceTrackName"]; /* Subtitle Source track type (VobSub, Srt, etc.) */ - [newSubtitleSourceTrack setObject:@"SRT" forKey:@"sourceTrackType"]; - [newSubtitleSourceTrack setObject:@"SRT" forKey:@"subtitleSourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"sourceTrackType"]; + [newSubtitleSourceTrack setObject:[NSNumber numberWithInt:SRTSUB] forKey:@"subtitleSourceTrackType"]; /* Subtitle Source file path */ [newSubtitleSourceTrack setObject:filePath forKey:@"sourceSrtFilePath"]; /* Subtitle Source track canBeBurnedIn */ @@ -522,7 +550,10 @@ /* Foreign Audio Search (index 1 in the popup) is only available for the first track */ if (rowIndex == 0) { - [[cellTrackPopup menu] addItemWithTitle: @"Foreign Audio Search - (Bitmap)" action: NULL keyEquivalent: @""]; + // TODO: hide the track when no force-able subtitles are present in the source + [[cellTrackPopup menu] addItemWithTitle:foreignAudioSearchTrackName + action:NULL + keyEquivalent:@""]; } int i; @@ -630,38 +661,49 @@ /* Set the array to track if we are vobsub (picture sub) */ if ([anObject intValue] != 0) { - int sourceSubtitleIndex; + /* The first row has an additional track (Foreign Audio Search) */ + int sourceSubtitleIndex = [anObject intValue] - 1 - (rowIndex == 0); - if (rowIndex == 0) - { - sourceSubtitleIndex = [anObject intValue] - 2; - } - else + if(rowIndex == 0 && [anObject intValue] == 1) { - sourceSubtitleIndex = [anObject intValue] - 1; - } - - if(rowIndex == 0 && [anObject intValue] == 1) // we are foreign lang search, which is inherently vobsub - { - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSString stringWithUTF8String:hb_subsource_name( VOBSUB )] forKey:@"subtitleSourceTrackType"]; - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackCanBeBurnedIn"]; - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + /* + * we are foreign lang search, which is inherently bitmap + * + * since it can be either VOBSUB or PGS and the latter can't be + * passed through to MP4, we need to know whether there are any + * PGS tracks in the source - otherwise we can just set the + * source track type to VOBSUB + */ + int subtitleTrackType = VOBSUB; + if ([foreignAudioSearchTrackName rangeOfString: + [NSString stringWithUTF8String: + hb_subsource_name(PGSSUB)]].location != NSNotFound) + { + subtitleTrackType = PGSSUB; + } + // now set the track type + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:subtitleTrackType] forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackSupportsForcedFlags"]; // foreign lang search is most useful when combined w/Forced Only - make it default - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackForced"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackForced"]; } /* check to see if we are an srt, in which case set our file path and source track type kvp's*/ - else if ([[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] isEqualToString:@"SRT"]) + else if ([[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] intValue] == SRTSUB) { - [[subtitleArray objectAtIndex:rowIndex] setObject:@"SRT" forKey:@"subtitleSourceTrackType"]; - [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceSrtFilePath"] forKey:@"subtitleSourceSrtFilePath"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:SRTSUB] + forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceSrtFilePath"] + forKey:@"subtitleSourceSrtFilePath"]; } else { - [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] forKey:@"subtitleSourceTrackType"]; - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackCanBeBurnedIn"] intValue]] - forKey:@"subtitleSourceTrackCanBeBurnedIn"]; - [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackSupportsForcedFlags"] intValue]] - forKey:@"subtitleSourceTrackSupportsForcedFlags"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackType"] + forKey:@"subtitleSourceTrackType"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackCanBeBurnedIn"] + forKey:@"subtitleSourceTrackCanBeBurnedIn"]; + [[subtitleArray objectAtIndex:rowIndex] setObject:[[subtitleSourceArray objectAtIndex:sourceSubtitleIndex] objectForKey:@"sourceTrackSupportsForcedFlags"] + forKey:@"subtitleSourceTrackSupportsForcedFlags"]; } if([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackCanBeBurnedIn"] intValue] == 0) @@ -761,9 +803,7 @@ */ if (container == HB_MUX_MP4 && [anObject intValue] != 0) { - NSString *subtitleSourceTrackType = [[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"]; - if ([subtitleSourceTrackType isEqualToString:[NSString stringWithUTF8String:hb_subsource_name( VOBSUB )]] || - [subtitleSourceTrackType isEqualToString:[NSString stringWithUTF8String:hb_subsource_name( PGSSUB )]]) + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == VOBSUB) { /* lets see if there are currently any burned in subs specified */ NSEnumerator *enumerator = [subtitleArray objectEnumerator]; @@ -852,8 +892,8 @@ { [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackForced"] intValue]]; /* Disable the "Forced Only" checkbox if a) the track is "None" or b) the subtitle track doesn't support forced flags */ - if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] == 0 || - [[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackSupportsForcedFlags"] intValue] == 0) + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + ![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackSupportsForcedFlags"] intValue]) { [aCell setEnabled:NO]; } @@ -865,9 +905,15 @@ else if ([[aTableColumn identifier] isEqualToString:@"burned"]) { [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackBurned"] intValue]]; - /* Disable the "Burned In" checkbox if a) the track is "None" or b) the subtitle track can't be burned in */ - if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] == 0 || - [[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackCanBeBurnedIn"] intValue] == 0) + /* + * Disable the "Burned In" checkbox if: + * a) the track is "None" OR + * b) the subtitle track can't be burned in OR + * c) the subtitle track can't be passed through (e.g. PGS w/MP4) + */ + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + ![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackCanBeBurnedIn"] intValue] || + !hb_subtitle_can_pass([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue], container)) { [aCell setEnabled:NO]; } @@ -878,13 +924,28 @@ } else if ([[aTableColumn identifier] isEqualToString:@"default"]) { - [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackDefault"] intValue]]; + /* + * Disable the "Default" checkbox if: + * a) the track is "None" OR + * b) the subtitle track can't be passed through (e.g. PGS w/MP4) + */ + if (![[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] || + !hb_subtitle_can_pass([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue], container)) + { + [aCell setState:NSOffState]; + [aCell setEnabled:NO]; + } + else + { + [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackDefault"] intValue]]; + [aCell setEnabled:YES]; + } } /* These next three columns only apply to srt's. they are disabled for source subs */ else if ([[aTableColumn identifier] isEqualToString:@"srt_lang"]) { /* We have an srt file so set the track type (Source or SRT, and the srt file path ) kvp's*/ - if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { [aCell setEnabled:YES]; if([[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtLanguageIndex"]) @@ -908,7 +969,7 @@ else if ([[aTableColumn identifier] isEqualToString:@"srt_charcode"]) { /* We have an srt file so set the track type (Source or SRT, and the srt file path ) kvp's*/ - if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { [aCell setEnabled:YES]; if ([[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackSrtCharCodeIndex"]) @@ -929,7 +990,7 @@ } else if ([[aTableColumn identifier] isEqualToString:@"srt_offset"]) { - if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"]) + if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackType"] intValue] == SRTSUB) { [aCell setEnabled:YES]; } @@ -939,8 +1000,63 @@ } } + /* + * Let's check whether any subtitles in the list cannot be passed through. + * Set the first of any such subtitles to burned-in, remove the others. + */ + id tempObject; + int subtitleTrackType; + BOOL convertToBurnInUsed = NO; + NSMutableArray *tracksToDelete = [[NSMutableArray alloc] init]; + NSEnumerator *enumerator = [subtitleArray objectEnumerator]; + /* convert any incompatible tracks to burn-in or remove them */ + while (tempObject = [enumerator nextObject]) + { + subtitleTrackType = [[tempObject objectForKey:@"subtitleSourceTrackType"] intValue]; + if (!hb_subtitle_can_pass(subtitleTrackType, container)) + { + if (convertToBurnInUsed == NO) + { + /* we haven't set any track to burned-in yet, so we can */ + [tempObject setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackBurned"]; + convertToBurnInUsed = YES; //remove any additional tracks + } + else + { + /* we already have a burned-in track, we must remove others */ + [tracksToDelete addObject:tempObject]; + } + } + } + /* if we converted a track to burned-in, unset it for tracks that support passthru */ + if (convertToBurnInUsed == YES) + { + enumerator = [subtitleArray objectEnumerator]; + while (tempObject = [enumerator nextObject]) + { + subtitleTrackType = [[tempObject objectForKey:@"subtitleSourceTrackType"] intValue]; + if (hb_subtitle_can_pass(subtitleTrackType, container)) + { + [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"]; + } + } + } + /* this is where the actual removal takes place */ + if ([tracksToDelete count] > 0) + { + [subtitleArray removeObjectsInArray:tracksToDelete]; + [aTableView reloadData]; + /* this must be called after reloadData so as to not block the UI */ + [[NSAlert alertWithMessageText:@"Subtitle tack(s) removed" + defaultButton:@"OK" + alternateButton:nil + otherButton:nil + informativeTextWithFormat:@"%d subtitle %@ could neither be converted to burn-in nor passed through", + [tracksToDelete count], + [tracksToDelete count] > 1 ? @"tracks" : @"track"] runModal]; + } + [tracksToDelete release]; } - } diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index bb73b72cf..df3329743 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -43,14 +43,10 @@ 273F20C914ADC5150021BE6D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202F14ADB9790021BE6D /* AudioToolbox.framework */; }; 273F20CB14ADC89A0021BE6D /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 273F20BF14ADC1250021BE6D /* Growl.framework */; }; 273F20CC14ADC8A10021BE6D /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 273F20C014ADC1250021BE6D /* Sparkle.framework */; }; - 273F214814ADCBF80021BE6D /* ActivityWindow.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F212114ADCBF70021BE6D /* ActivityWindow.tiff */; }; - 273F214914ADCBF80021BE6D /* AddToQueue.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F212214ADCBF70021BE6D /* AddToQueue.tiff */; }; - 273F214B14ADCBF80021BE6D /* Brushed_Window.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212414ADCBF70021BE6D /* Brushed_Window.png */; }; 273F214C14ADCBF80021BE6D /* Delete.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212514ADCBF70021BE6D /* Delete.png */; }; 273F214D14ADCBF80021BE6D /* DeleteHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212614ADCBF70021BE6D /* DeleteHighlight.png */; }; 273F214E14ADCBF80021BE6D /* DeleteHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */; }; 273F214F14ADCBF80021BE6D /* DeletePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212814ADCBF70021BE6D /* DeletePressed.png */; }; - 273F215014ADCBF80021BE6D /* Drawer.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F212914ADCBF80021BE6D /* Drawer.tiff */; }; 273F215114ADCBF80021BE6D /* EncodeCanceled.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */; }; 273F215214ADCBF80021BE6D /* EncodeComplete.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212B14ADCBF80021BE6D /* EncodeComplete.png */; }; 273F215314ADCBF80021BE6D /* EncodeWorking0.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */; }; @@ -59,23 +55,15 @@ 273F215614ADCBF80021BE6D /* EncodeWorking3.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */; }; 273F215714ADCBF80021BE6D /* EncodeWorking4.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213014ADCBF80021BE6D /* EncodeWorking4.png */; }; 273F215814ADCBF80021BE6D /* EncodeWorking5.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213114ADCBF80021BE6D /* EncodeWorking5.png */; }; - 273F215A14ADCBF80021BE6D /* JobLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213314ADCBF80021BE6D /* JobLarge.png */; }; 273F215B14ADCBF80021BE6D /* JobPassFirstSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */; }; 273F215D14ADCBF80021BE6D /* JobPassSecondSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */; }; 273F215F14ADCBF80021BE6D /* JobPassSubtitleSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */; }; 273F216014ADCBF80021BE6D /* JobPassUnknownSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */; }; 273F216114ADCBF80021BE6D /* JobSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F213A14ADCBF80021BE6D /* JobSmall.png */; }; - 273F216214ADCBF80021BE6D /* Pause.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F213B14ADCBF80021BE6D /* Pause.tiff */; }; - 273F216314ADCBF80021BE6D /* Play.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F213C14ADCBF80021BE6D /* Play.tiff */; }; - 273F216414ADCBF80021BE6D /* pref-audio.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F213D14ADCBF80021BE6D /* pref-audio.tiff */; }; - 273F216514ADCBF80021BE6D /* pref-picture.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F213E14ADCBF80021BE6D /* pref-picture.tiff */; }; - 273F216614ADCBF80021BE6D /* Queue.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F213F14ADCBF80021BE6D /* Queue.tiff */; }; 273F216714ADCBF80021BE6D /* Reveal.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214014ADCBF80021BE6D /* Reveal.png */; }; 273F216814ADCBF80021BE6D /* RevealHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214114ADCBF80021BE6D /* RevealHighlight.png */; }; 273F216914ADCBF80021BE6D /* RevealHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */; }; 273F216A14ADCBF80021BE6D /* RevealPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 273F214314ADCBF80021BE6D /* RevealPressed.png */; }; - 273F216B14ADCBF80021BE6D /* Source.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F214414ADCBF80021BE6D /* Source.tiff */; }; - 273F216C14ADCBF80021BE6D /* Stop.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 273F214514ADCBF80021BE6D /* Stop.tiff */; }; 273F218A14ADDDA10021BE6D /* AdvancedView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F217A14ADDDA10021BE6D /* AdvancedView.xib */; }; 273F218B14ADDDA10021BE6D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 273F217C14ADDDA10021BE6D /* InfoPlist.strings */; }; 273F218C14ADDDA10021BE6D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 273F217E14ADDDA10021BE6D /* MainMenu.xib */; }; @@ -143,6 +131,32 @@ 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 */; }; + D2BCB10916F5152C0084604C /* activity.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F616F515230084604C /* activity.png */; }; + D2BCB10A16F5152C0084604C /* activity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F716F515230084604C /* activity@2x.png */; }; + D2BCB10B16F5152C0084604C /* addqueue.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F816F515240084604C /* addqueue.png */; }; + D2BCB10C16F5152C0084604C /* addqueue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0F916F515240084604C /* addqueue@2x.png */; }; + D2BCB10D16F5152C0084604C /* advanced.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FA16F515250084604C /* advanced.png */; }; + D2BCB10E16F5152C0084604C /* advanced@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FB16F515250084604C /* advanced@2x.png */; }; + D2BCB10F16F5152C0084604C /* audio.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FC16F515260084604C /* audio.png */; }; + D2BCB11016F5152C0084604C /* audio@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FD16F515260084604C /* audio@2x.png */; }; + D2BCB11116F5152C0084604C /* encode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FE16F515270084604C /* encode.png */; }; + D2BCB11216F5152C0084604C /* encode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB0FF16F515270084604C /* encode@2x.png */; }; + D2BCB11316F5152C0084604C /* pauseencode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10016F515280084604C /* pauseencode.png */; }; + D2BCB11416F5152C0084604C /* pauseencode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10116F515280084604C /* pauseencode@2x.png */; }; + D2BCB11516F5152C0084604C /* picturesettings.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10216F515290084604C /* picturesettings.png */; }; + D2BCB11616F5152C0084604C /* picturesettings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10316F515290084604C /* picturesettings@2x.png */; }; + D2BCB11716F5152C0084604C /* presets.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10416F5152A0084604C /* presets.png */; }; + D2BCB11816F5152C0084604C /* presets@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10516F5152A0084604C /* presets@2x.png */; }; + D2BCB11916F5152C0084604C /* preview.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10616F5152B0084604C /* preview.png */; }; + D2BCB11A16F5152C0084604C /* preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10716F5152B0084604C /* preview@2x.png */; }; + D2BCB11B16F5152C0084604C /* settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB10816F5152C0084604C /* settings@2x.png */; }; + D2BCB12316F5154E0084604C /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11C16F5154A0084604C /* settings.png */; }; + D2BCB12416F5154E0084604C /* showqueue.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11D16F5154B0084604C /* showqueue.png */; }; + D2BCB12516F5154E0084604C /* showqueue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11E16F5154B0084604C /* showqueue@2x.png */; }; + D2BCB12616F5154E0084604C /* source.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB11F16F5154C0084604C /* source.png */; }; + D2BCB12716F5154E0084604C /* source@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12016F5154C0084604C /* source@2x.png */; }; + D2BCB12816F5154E0084604C /* stopencode.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12116F5154D0084604C /* stopencode.png */; }; + D2BCB12916F5154E0084604C /* stopencode@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D2BCB12216F5154D0084604C /* stopencode@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -237,14 +251,10 @@ 273F20BF14ADC1250021BE6D /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; 273F20C014ADC1250021BE6D /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; 273F20C714ADC4FF0021BE6D /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; - 273F212114ADCBF70021BE6D /* ActivityWindow.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = ActivityWindow.tiff; sourceTree = ""; }; - 273F212214ADCBF70021BE6D /* AddToQueue.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = AddToQueue.tiff; sourceTree = ""; }; - 273F212414ADCBF70021BE6D /* Brushed_Window.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Brushed_Window.png; sourceTree = ""; }; 273F212514ADCBF70021BE6D /* Delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Delete.png; sourceTree = ""; }; 273F212614ADCBF70021BE6D /* DeleteHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlight.png; sourceTree = ""; }; 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlightPressed.png; sourceTree = ""; }; 273F212814ADCBF70021BE6D /* DeletePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeletePressed.png; sourceTree = ""; }; - 273F212914ADCBF80021BE6D /* Drawer.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Drawer.tiff; sourceTree = ""; }; 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeCanceled.png; sourceTree = ""; }; 273F212B14ADCBF80021BE6D /* EncodeComplete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeComplete.png; sourceTree = ""; }; 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking0.png; sourceTree = ""; }; @@ -253,23 +263,15 @@ 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking3.png; sourceTree = ""; }; 273F213014ADCBF80021BE6D /* EncodeWorking4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking4.png; sourceTree = ""; }; 273F213114ADCBF80021BE6D /* EncodeWorking5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodeWorking5.png; sourceTree = ""; }; - 273F213314ADCBF80021BE6D /* JobLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobLarge.png; sourceTree = ""; }; 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassFirstSmall.png; sourceTree = ""; }; 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSecondSmall.png; sourceTree = ""; }; 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSubtitleSmall.png; sourceTree = ""; }; 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassUnknownSmall.png; sourceTree = ""; }; 273F213A14ADCBF80021BE6D /* JobSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobSmall.png; sourceTree = ""; }; - 273F213B14ADCBF80021BE6D /* Pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Pause.tiff; sourceTree = ""; }; - 273F213C14ADCBF80021BE6D /* Play.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Play.tiff; sourceTree = ""; }; - 273F213D14ADCBF80021BE6D /* pref-audio.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "pref-audio.tiff"; sourceTree = ""; }; - 273F213E14ADCBF80021BE6D /* pref-picture.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "pref-picture.tiff"; sourceTree = ""; }; - 273F213F14ADCBF80021BE6D /* Queue.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Queue.tiff; sourceTree = ""; }; 273F214014ADCBF80021BE6D /* Reveal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Reveal.png; sourceTree = ""; }; 273F214114ADCBF80021BE6D /* RevealHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealHighlight.png; sourceTree = ""; }; 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealHighlightPressed.png; sourceTree = ""; }; 273F214314ADCBF80021BE6D /* RevealPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RevealPressed.png; sourceTree = ""; }; - 273F214414ADCBF80021BE6D /* Source.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Source.tiff; sourceTree = ""; }; - 273F214514ADCBF80021BE6D /* Stop.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Stop.tiff; sourceTree = ""; }; 273F217B14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = AdvancedView.xib; sourceTree = ""; }; 273F217D14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = ""; }; 273F217F14ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = MainMenu.xib; sourceTree = ""; }; @@ -278,10 +280,6 @@ 273F218514ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = PictureSettings.xib; sourceTree = ""; }; 273F218714ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Preferences.xib; sourceTree = ""; }; 273F218914ADDDA10021BE6D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Queue.xib; sourceTree = ""; }; - 273F219614ADDE9A0021BE6D /* Brushed Window.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "Brushed Window.tiff"; sourceTree = ""; }; - 273F21A514ADDE9A0021BE6D /* Info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Info.png; sourceTree = ""; }; - 273F21A814ADDE9A0021BE6D /* JobPassLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassLarge.png; sourceTree = ""; }; - 273F21AA14ADDE9A0021BE6D /* JobPassSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSmall.png; sourceTree = ""; }; 275916DA14B2AB27007211E9 /* native.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = native.xcconfig; sourceTree = ""; }; 276941FA14B161B70027798C /* osx107.i386.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = osx107.i386.xcconfig; sourceTree = ""; }; 277A3FD014AE84C500A835E4 /* osx106.i386.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = osx106.i386.xcconfig; sourceTree = ""; }; @@ -321,6 +319,32 @@ A9E1467D16BC2AD800C307BC /* pause-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "pause-p.pdf"; sourceTree = ""; }; A9E1467E16BC2AD800C307BC /* play-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "play-p.pdf"; sourceTree = ""; }; A9E1467F16BC2AD800C307BC /* prev-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "prev-p.pdf"; sourceTree = ""; }; + D2BCB0F616F515230084604C /* activity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = activity.png; sourceTree = ""; }; + D2BCB0F716F515230084604C /* activity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "activity@2x.png"; sourceTree = ""; }; + D2BCB0F816F515240084604C /* addqueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = addqueue.png; sourceTree = ""; }; + D2BCB0F916F515240084604C /* addqueue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "addqueue@2x.png"; sourceTree = ""; }; + D2BCB0FA16F515250084604C /* advanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = advanced.png; sourceTree = ""; }; + D2BCB0FB16F515250084604C /* advanced@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "advanced@2x.png"; sourceTree = ""; }; + D2BCB0FC16F515260084604C /* audio.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio.png; sourceTree = ""; }; + D2BCB0FD16F515260084604C /* audio@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio@2x.png"; sourceTree = ""; }; + D2BCB0FE16F515270084604C /* encode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = encode.png; sourceTree = ""; }; + D2BCB0FF16F515270084604C /* encode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "encode@2x.png"; sourceTree = ""; }; + D2BCB10016F515280084604C /* pauseencode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pauseencode.png; sourceTree = ""; }; + D2BCB10116F515280084604C /* pauseencode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pauseencode@2x.png"; sourceTree = ""; }; + D2BCB10216F515290084604C /* picturesettings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = picturesettings.png; sourceTree = ""; }; + D2BCB10316F515290084604C /* picturesettings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "picturesettings@2x.png"; sourceTree = ""; }; + D2BCB10416F5152A0084604C /* presets.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = presets.png; sourceTree = ""; }; + D2BCB10516F5152A0084604C /* presets@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "presets@2x.png"; sourceTree = ""; }; + D2BCB10616F5152B0084604C /* preview.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = preview.png; sourceTree = ""; }; + D2BCB10716F5152B0084604C /* preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "preview@2x.png"; sourceTree = ""; }; + D2BCB10816F5152C0084604C /* settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings@2x.png"; sourceTree = ""; }; + D2BCB11C16F5154A0084604C /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = ""; }; + D2BCB11D16F5154B0084604C /* showqueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = showqueue.png; sourceTree = ""; }; + D2BCB11E16F5154B0084604C /* showqueue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "showqueue@2x.png"; sourceTree = ""; }; + D2BCB11F16F5154C0084604C /* source.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = source.png; sourceTree = ""; }; + D2BCB12016F5154C0084604C /* source@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "source@2x.png"; sourceTree = ""; }; + D2BCB12116F5154D0084604C /* stopencode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stopencode.png; sourceTree = ""; }; + D2BCB12216F5154D0084604C /* stopencode@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stopencode@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -575,18 +599,40 @@ 273F212014ADCBF70021BE6D /* icons */ = { isa = PBXGroup; children = ( + D2BCB11C16F5154A0084604C /* settings.png */, + D2BCB11D16F5154B0084604C /* showqueue.png */, + D2BCB11E16F5154B0084604C /* showqueue@2x.png */, + D2BCB11F16F5154C0084604C /* source.png */, + D2BCB12016F5154C0084604C /* source@2x.png */, + D2BCB12116F5154D0084604C /* stopencode.png */, + D2BCB12216F5154D0084604C /* stopencode@2x.png */, + D2BCB0F616F515230084604C /* activity.png */, + D2BCB0F716F515230084604C /* activity@2x.png */, + D2BCB0F816F515240084604C /* addqueue.png */, + D2BCB0F916F515240084604C /* addqueue@2x.png */, + D2BCB0FA16F515250084604C /* advanced.png */, + D2BCB0FB16F515250084604C /* advanced@2x.png */, + D2BCB0FC16F515260084604C /* audio.png */, + D2BCB0FD16F515260084604C /* audio@2x.png */, + D2BCB0FE16F515270084604C /* encode.png */, + D2BCB0FF16F515270084604C /* encode@2x.png */, + D2BCB10016F515280084604C /* pauseencode.png */, + D2BCB10116F515280084604C /* pauseencode@2x.png */, + D2BCB10216F515290084604C /* picturesettings.png */, + D2BCB10316F515290084604C /* picturesettings@2x.png */, + D2BCB10416F5152A0084604C /* presets.png */, + D2BCB10516F5152A0084604C /* presets@2x.png */, + D2BCB10616F5152B0084604C /* preview.png */, + D2BCB10716F5152B0084604C /* preview@2x.png */, + D2BCB10816F5152C0084604C /* settings@2x.png */, 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 */, 273F212514ADCBF70021BE6D /* Delete.png */, 273F212614ADCBF70021BE6D /* DeleteHighlight.png */, 273F212714ADCBF70021BE6D /* DeleteHighlightPressed.png */, 273F212814ADCBF70021BE6D /* DeletePressed.png */, - 273F212914ADCBF80021BE6D /* Drawer.tiff */, 273F212A14ADCBF80021BE6D /* EncodeCanceled.png */, 273F212B14ADCBF80021BE6D /* EncodeComplete.png */, 273F212C14ADCBF80021BE6D /* EncodeWorking0.png */, @@ -595,23 +641,15 @@ 273F212F14ADCBF80021BE6D /* EncodeWorking3.png */, 273F213014ADCBF80021BE6D /* EncodeWorking4.png */, 273F213114ADCBF80021BE6D /* EncodeWorking5.png */, - 273F213314ADCBF80021BE6D /* JobLarge.png */, 273F213414ADCBF80021BE6D /* JobPassFirstSmall.png */, 273F213614ADCBF80021BE6D /* JobPassSecondSmall.png */, 273F213814ADCBF80021BE6D /* JobPassSubtitleSmall.png */, 273F213914ADCBF80021BE6D /* JobPassUnknownSmall.png */, 273F213A14ADCBF80021BE6D /* JobSmall.png */, - 273F213B14ADCBF80021BE6D /* Pause.tiff */, - 273F213C14ADCBF80021BE6D /* Play.tiff */, - 273F213D14ADCBF80021BE6D /* pref-audio.tiff */, - 273F213E14ADCBF80021BE6D /* pref-picture.tiff */, - 273F213F14ADCBF80021BE6D /* Queue.tiff */, 273F214014ADCBF80021BE6D /* Reveal.png */, 273F214114ADCBF80021BE6D /* RevealHighlight.png */, 273F214214ADCBF80021BE6D /* RevealHighlightPressed.png */, 273F214314ADCBF80021BE6D /* RevealPressed.png */, - 273F214414ADCBF80021BE6D /* Source.tiff */, - 273F214514ADCBF80021BE6D /* Stop.tiff */, ); path = icons; sourceTree = ""; @@ -642,10 +680,6 @@ 273F219314ADDE9A0021BE6D /* icons */ = { isa = PBXGroup; children = ( - 273F219614ADDE9A0021BE6D /* Brushed Window.tiff */, - 273F21A514ADDE9A0021BE6D /* Info.png */, - 273F21A814ADDE9A0021BE6D /* JobPassLarge.png */, - 273F21AA14ADDE9A0021BE6D /* JobPassSmall.png */, ); path = icons; sourceTree = ""; @@ -761,14 +795,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 273F214814ADCBF80021BE6D /* ActivityWindow.tiff in Resources */, - 273F214914ADCBF80021BE6D /* AddToQueue.tiff in Resources */, - 273F214B14ADCBF80021BE6D /* Brushed_Window.png in Resources */, 273F214C14ADCBF80021BE6D /* Delete.png in Resources */, 273F214D14ADCBF80021BE6D /* DeleteHighlight.png in Resources */, 273F214E14ADCBF80021BE6D /* DeleteHighlightPressed.png in Resources */, 273F214F14ADCBF80021BE6D /* DeletePressed.png in Resources */, - 273F215014ADCBF80021BE6D /* Drawer.tiff in Resources */, 273F215114ADCBF80021BE6D /* EncodeCanceled.png in Resources */, 273F215214ADCBF80021BE6D /* EncodeComplete.png in Resources */, 273F215314ADCBF80021BE6D /* EncodeWorking0.png in Resources */, @@ -777,23 +807,15 @@ 273F215614ADCBF80021BE6D /* EncodeWorking3.png in Resources */, 273F215714ADCBF80021BE6D /* EncodeWorking4.png in Resources */, 273F215814ADCBF80021BE6D /* EncodeWorking5.png in Resources */, - 273F215A14ADCBF80021BE6D /* JobLarge.png in Resources */, 273F215B14ADCBF80021BE6D /* JobPassFirstSmall.png in Resources */, 273F215D14ADCBF80021BE6D /* JobPassSecondSmall.png in Resources */, 273F215F14ADCBF80021BE6D /* JobPassSubtitleSmall.png in Resources */, 273F216014ADCBF80021BE6D /* JobPassUnknownSmall.png in Resources */, 273F216114ADCBF80021BE6D /* JobSmall.png in Resources */, - 273F216214ADCBF80021BE6D /* Pause.tiff in Resources */, - 273F216314ADCBF80021BE6D /* Play.tiff in Resources */, - 273F216414ADCBF80021BE6D /* pref-audio.tiff in Resources */, - 273F216514ADCBF80021BE6D /* pref-picture.tiff in Resources */, - 273F216614ADCBF80021BE6D /* Queue.tiff in Resources */, 273F216714ADCBF80021BE6D /* Reveal.png in Resources */, 273F216814ADCBF80021BE6D /* RevealHighlight.png in Resources */, 273F216914ADCBF80021BE6D /* RevealHighlightPressed.png in Resources */, 273F216A14ADCBF80021BE6D /* RevealPressed.png in Resources */, - 273F216B14ADCBF80021BE6D /* Source.tiff in Resources */, - 273F216C14ADCBF80021BE6D /* Stop.tiff in Resources */, 273F218A14ADDDA10021BE6D /* AdvancedView.xib in Resources */, 273F218B14ADDDA10021BE6D /* InfoPlist.strings in Resources */, 273F218C14ADDDA10021BE6D /* MainMenu.xib in Resources */, @@ -807,6 +829,32 @@ A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */, A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */, A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */, + D2BCB10916F5152C0084604C /* activity.png in Resources */, + D2BCB10A16F5152C0084604C /* activity@2x.png in Resources */, + D2BCB10B16F5152C0084604C /* addqueue.png in Resources */, + D2BCB10C16F5152C0084604C /* addqueue@2x.png in Resources */, + D2BCB10D16F5152C0084604C /* advanced.png in Resources */, + D2BCB10E16F5152C0084604C /* advanced@2x.png in Resources */, + D2BCB10F16F5152C0084604C /* audio.png in Resources */, + D2BCB11016F5152C0084604C /* audio@2x.png in Resources */, + D2BCB11116F5152C0084604C /* encode.png in Resources */, + D2BCB11216F5152C0084604C /* encode@2x.png in Resources */, + D2BCB11316F5152C0084604C /* pauseencode.png in Resources */, + D2BCB11416F5152C0084604C /* pauseencode@2x.png in Resources */, + D2BCB11516F5152C0084604C /* picturesettings.png in Resources */, + D2BCB11616F5152C0084604C /* picturesettings@2x.png in Resources */, + D2BCB11716F5152C0084604C /* presets.png in Resources */, + D2BCB11816F5152C0084604C /* presets@2x.png in Resources */, + D2BCB11916F5152C0084604C /* preview.png in Resources */, + D2BCB11A16F5152C0084604C /* preview@2x.png in Resources */, + D2BCB11B16F5152C0084604C /* settings@2x.png in Resources */, + D2BCB12316F5154E0084604C /* settings.png in Resources */, + D2BCB12416F5154E0084604C /* showqueue.png in Resources */, + D2BCB12516F5154E0084604C /* showqueue@2x.png in Resources */, + D2BCB12616F5154E0084604C /* source.png in Resources */, + D2BCB12716F5154E0084604C /* source@2x.png in Resources */, + D2BCB12816F5154E0084604C /* stopencode.png in Resources */, + D2BCB12916F5154E0084604C /* stopencode@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/macosx/Info.plist.m4 b/macosx/Info.plist.m4 index c7bb3eeef..300c33720 100644 --- a/macosx/Info.plist.m4 +++ b/macosx/Info.plist.m4 @@ -50,7 +50,7 @@ dnl LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright - Copyright © 2003-2012 __HB_name Developers. + Copyright © 2003-2013 __HB_name Developers. All rights reserved. NSMainNibFile MainMenu diff --git a/macosx/PictureController.m b/macosx/PictureController.m index b15cd9b8c..0ad7e6e82 100644 --- a/macosx/PictureController.m +++ b/macosx/PictureController.m @@ -1041,12 +1041,11 @@ [fCropRightStepper setIntValue: job->crop[3]]; [fCropRightField setIntValue: job->crop[3]]; - //[fPreviewController SetTitle:fTitle]; - - /* Sanity Check Here for < 16 px preview to avoid - crashing hb_get_preview. In fact, just for kicks - lets getting previews at a min limit of 32, since - no human can see any meaningful detail below that */ + /* + * Sanity-check here for previews < 16 pixels to avoid crashing + * hb_get_preview(). In fact, let's get previews at least 64 pixels in both + * dimensions; no human can see any meaningful detail below that. + */ if (job->width >= 64 && job->height >= 64) { [self reloadStillPreview]; @@ -1073,11 +1072,8 @@ } - (void)reloadStillPreview -{ - hb_job_t * job = fTitle->job; - - [fPreviewController SetTitle:fTitle]; - +{ + [fPreviewController SetTitle:fTitle]; } @@ -1229,6 +1225,12 @@ are maintained across different sources */ - (void) decombDeinterlacePreviewImage { + /* XXX: make sure we actually have a title before de-referencing it */ + if (fTitle == NULL) + { + return; + } + if ([fDecombDeinterlaceSlider floatValue] < 0.50) { /* Since Libhb only shows a deinterlaced preview image via deinterlace .. for decomb we @@ -1259,8 +1261,6 @@ are maintained across different sources */ fTitle->job->deinterlace = [fDeinterlacePopUp indexOfSelectedItem]; [self reloadStillPreview]; } - - } #pragma mark - diff --git a/macosx/icons/ActivityWindow.tiff b/macosx/icons/ActivityWindow.tiff deleted file mode 100644 index c4f67c1bcd1dd94896d27a41856ec2e685bc67af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2456 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 diff --git a/macosx/icons/Brushed Window.tiff b/macosx/icons/Brushed Window.tiff deleted file mode 100644 index 30a820b1eb07945dba6bfd7e5a08bab2a1d1b8d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16120 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 diff --git a/macosx/icons/Drawer.tiff b/macosx/icons/Drawer.tiff deleted file mode 100644 index 7beb83075c50a648f71948933063d327e6af7e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2162 zcmb7^X;f3!8iw~FqmV#=pg;l%2uOiQ48cSu6M`g!AEza0OT5dS z+daDvvAuCn+(m`)M}fr*%h5X_0G8sXwTJUObJFGaE8#l?gjs;i2jSv+V70n=dWcqC z)7~CL9OxPd{Ea^QisGvMkG8Pp&rmMFNWsFBJr5U&E(I@siPN|jrJy|JY%;X+wg39& zgT0|HatGH+*z=SrZ7f$4e!Q@k1zyoXk0OE+$uqs5>N>hd+&8uD4KT-JI%c+MA452# zF^tJjNq5~uM^$nj3l&M3`VrNhrv0j5DER9H0$PI_L&Ox97vLs=e&MfnfK83Owbb8G z@XshGLA3%<q0=-{qy7K_N^0Wyyr$4O4qbTt&vg@!}YW>W}v)YQY)`+GLJGcz^|8sE@y4 zVXPNykC7xd)e(mSWX+}g7X*PhPkLpV;dS`rqfH|Y9eFNJYo|S$g=FI|AdnFQms@#A zWg_?X+>>m{?WS*?rFh@fzz{C|)V$L=e9s2oGhVJ*A$yZ4K3f)x5XM0rcAs-5sn-oW z1H=e3ufWp&odCX(2jZry3r|H2qHw8xP@4Eyo)c~7=6x&3vqBnrV!^iQ|wNSH$k&mNZW|{*Pae}vHKnv7xS0}fmp@9vMghSi8c58h$-!d-<;tNM*)LVhep?{M0&`)`otG& zjFi@TjUsyg%Oty((90&Hj0SE}(Wz~p$`kj4y`gi>7n~2DHTmPlBsZrZ_W0t_W+SES zg>?IVaeWMphHYZ=_VgkeW;~1;(N0#c|BwpSgZ%uTGFWv=IhpfPBzA`{pmEDt&(X!* zjmV!!&JRUHnyZ9p8#cjqnY_64LX38LM~-_3aK<>coUv+-jVF_VHl$V@00059`T>2! z8Xp)A0K5ufTh{V*9s{HWh` zh2PH%{HPxEf!}|_2>?(X0KKvx^*hx|_`k^n!w#tfsa_tvhIIXXAY};PsnUp%Pt4v{ ztPAD*64)E)7FA0e<<4!b--lwr*r2@)#?J*7<1E^Ug@Q#n(=?rg@Wz)b5I4 zfNTZpV*G(#zh~0aR6XNpi9l7ytV*_7TgJI_xz?y48(>>-xPk>!I`Ifpj5+ zt53*>1KRys%y&bwT|y+$)#}7SuZ9WA{?;r`bXCDqRbM9m9JltouQ)ZxtaK9it*a7i zFXrbD%#|}+DmI&!@mROMJ2IQ;{w?Ow0)v$&SLV(#{nqkT%mscpl??;=h>}NN?9d-X zFY7=TY-g5bgO6{&DLH|AsftHG@6QyvE%mq2!t~gcNhbIP-FUle9Lm#8I<7Pek47(D`Z4s4b5vD;Lkt>OD`XJ| zA#i9bjX@43Rta2#;YE&PZTb~Vmhwm^>SlHO zwEd`qA*9X}WF(FI$=KRPU(68-AdtXQhGxX#u zFP)T33}u>f?;6B10y0k!)@rGeyb&d#rD;xg94G5ARD*Ov+=RcS;X&58Lzf8n^R6LL zZK)~f!p@tjv6fXg=|2SVa@iRt0 zM0Jr7h*Y^#v{bY}I51zplWrS2nCz^Hx|kG6Lks}Iv*puiL;=2ltXB9hpAFS6{ps_2 l{*TY-9e?jLyz%dRMuezm{^hgo|K~G$w>mS_sqx=F{|kvb0+0Xz diff --git a/macosx/icons/Info.png b/macosx/icons/Info.png deleted file mode 100644 index 29e97438ec9d6b7efe062d3112e80283693d3db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1814 zcmV+x2kH2UP)xz9iW2~u1C=uGd-Z}Rfqx%d0dIrqNgl~?{B|FzN2)N6BeI=MDZ*9H{>JeeHG;C6_6(9 z!#C*yCPbZqz;AmV-@!ZbUlTU988uljbC;5dE;?9`wVyO0Ayl1L}i%So=d+ZsDWz}Kx{HQfHqi3x7TjIQ7uSut_KCe$8ah6fLa62sfu>Bg; zYSCrHpKL(H0S)(@#jVU~`h_eDHG(SdCwhH7BhI@gF_xvQT#e3$yBxc={GfHEp>0 z09-rTThP5)tQ~>d%OLOw&gwmT6LV{)z|%UmvzHyei$x^Tov4FP#e*~IIDzHI8X(_Q zhxvQd-1o@+YDDa-#ezLG2-{uFu`siajMT$v?kSxq&&=9*@9n(8C&m1T*c{gP8$F7L zQ|}`W)Z=_fGal)mmj7JgBLt;akysT%GOqW?5~{?cnDelA9v^PJ{O&QivW*3FobGTU zonZ#p28*E2%3DAiwf~9X1l-Uzb0Y8VG)~0+I>=Ir;OOyou2BO+#Ocaldb356+lVYp z7uX9XXlE_*tD152yF1AK{&vR(tk5)J?)FN|-+2x4jGhUh>c}&y;WTZz(x`#q(!-ii z>RCAJBg@tR+u8Enb%@JWE46oB(xYi@V z>6K)l9zx&uv_=isNU}8Z$SE@rnyE%8ea_3MLg0={4wi}kCKYnd{Z;;3+7>RmceYn{ z#PvkbjtV+CH5emaX}kjbDO;5RX~kqfgZaB_xkcx0tLT6&A|(R_)sHCqCmd%l-GgMK ziWBJ^+nvDo%P}*x3={n#jPC(c*T~%I3BORkYcYo=b>?kCmRgQQ`>UX9(svlx{D~T( zqC$oTNF5of7i)d<*9-UXJ0n1nLFtfwQ`#&P%lWBAg& zPxEdg{&)>$Y%If^t>w?m4MY&$cOiy@k(^k;5CmX%0x1-|Q*+_g_)0lXPW1$2D{BKl;8MeEBjDKZz6 zCGuuh*Ktb?>-F!82^KJbup)*M!>p`qWafk1ODtYjV075G@L5+*8%_l=iTD!iQ$*jr z6)H@9uK;fH9JqNeg4YyLv7McrjMf-J3?ldjBSuZI2mJ_h!j^C*#t^QA+i+XEWNX{8 z`Q}5tVdb_2mg85$c1kMj#al7xjTnsd2!p_NI@~=x^IcqAlGz+$EHRo87>w`?8oioe zrLs1duqPY{M?%Qp@pzuLwjt4pO<-0CSC^5j6VSY0RR630Kqc5$yCwgyZ`_I07*qoM6N<$ Ef;H8HWB>pF diff --git a/macosx/icons/JobLarge.png b/macosx/icons/JobLarge.png deleted file mode 100644 index 9b8f08d0b999ca701184042371b609ffd684a934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30157 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 diff --git a/macosx/icons/JobPassSmall.png b/macosx/icons/JobPassSmall.png deleted file mode 100644 index 9defc5e463e6b759c02b76ec0e87368e633a37be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 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 diff --git a/macosx/icons/Play.tiff b/macosx/icons/Play.tiff deleted file mode 100644 index 916ec8d316e6e79a25fe433faf8c93cf4673f97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18836 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 diff --git a/macosx/icons/Source.tiff b/macosx/icons/Source.tiff deleted file mode 100644 index 858a4c537242947d9a5033110ee0e8bce3d294ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4346 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/activity@2x.png b/macosx/icons/activity@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..9a6157f827dd6d3dd38cb1cedf9d68922816046a GIT binary patch literal 3128 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 VPXlgFkEZ|t002ovPDHLkV1fx#qZt4I literal 0 HcmV?d00001 diff --git a/macosx/icons/addqueue@2x.png b/macosx/icons/addqueue@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..af00717cd2de7a9bebd05580a3c82ef99b4a8e3e GIT binary patch literal 3998 zcmV;P4`J|$P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv000jSNkl z=EX(2dGn^>f|1`=yYSvc^jSykLcDPpj~vWu-eT6y`c`Z7ihWJ((qH86&wXaCiN1>Y z@KpHnLv+{_gl^&J`^YbGM1}7WT;Q9q`UP^L{I(qRa$fnQS!hJBWvMPyBOylc&SW-Z^U4t1-g$ zxiMbs%>B?fr$>5C*f;Sw)&u#_b8^oUZm?L)r}OjkDGWRc^Z53|{TP^0O^;$n@ljZ_ zy4M-4<9>o{}D9#*P0K}!RI{i+#ZH`eju;oczYQ3>@k>g z@Kzl2lSMt!&kB0h(LWYxI2=A04$mt@nYP@`qc%K8-TOlx6}8a=Sr478$9c}UuFr56 zbuDt2?GOq+>+&LRr4M=5@pT;Hdzhe`YwE`%4bc}kXIz30a491{2=;LQ1JE_>#K4U+J;0emhn#WYSph##b>rH>Hoxbyj<-eVW&Fb_OvV&Ie$AhU4uq>{!%*IM8zTSl5ywFMH~9-Zi8r z9Y%v5*!9)RTF$Y)`*MHgjWy#Jdgg^QrllVybmNwWC;SCy!QiYK0E~hb4AMY2vpDdD zgF!kYP|GIJ8>ki!X3=J94QON5^puNldX4!~e=wjId4iYHqs_-Gqr4hS*FBWpqvw%} zar{Kc)C5eSb_=)MJIK6sj<~2FZdG36U20hUmJ<@Bw0W-xtr^?gmDa1}s z9Td(vdZ!8BKVA!c*BskX>^JRl z_W)i8*Leqg)4$)to0#JPPEJp%)030xgyv3c*lMTf8JGi8CnqP5)FTHo!RNf?-U|(U zlW*LDU+>Uf?T-EKAv~SnI}khcUHZ+w{f5x6{g3D!-V)|`FXD+k03ttRkmxJ+{kt!s zfqDN{pS?afMCOm@rRJ5nYt()2?ZZRfpM8ll#;<*k-VhqRM>qBRx9VGPPv7oB4-e4C zQb(CXB%uy~h=`#F!BeDoF?)4xyoUC~xfjtR=R0_XuVN>?`#tu<#&_x;_p9UM<0>L^ z`#uH(P!0D-DdeXd6r%>k3G}U4)bKQ?!ms< zHK0XIPpH`#6cPRB<_)zJ}!jwDdz=?FxE4?v!A4f*@{$ohy!4)hXqFk^KA zIs2-iFSs`Jz^`>|#`uDI9;xG6@+K|!D1O|4n|N1v&EDLrd!slGI;@Tk>*G{Aw1pNA zomX=XV@@3QftW#lXfvvV>zq2WW}IS{^YuQ>Yu0t*p~`yRQ~Ja$sOzS~xGQ^W?nsBd zLy!Q)p5=zr0~k?fEPKj(HtRfbEbnQq4cr5s0$&1m(VNSf;$X(OBQULrn8-J-X*X_Y z+#|hSQ#+J@V1dQL{VL*|{g(*r8}Z z&-Faky(!Fm;ohD?Ybtvz<{P)Wi2zS?b&eyV?i_tnTgQT{Jpt|uY`%f~o7mrsTX(}> zp`ULlz2<#|5AI7F8#rWRL)h4KsJ6+TK;nit#@)a}kn3{^x$!m_H$2++CVPM)`y*Uv zv9^rfZ!PCO*R#DJaks#o^ca3OHlBh1rgZ65e0dj;e+@i@kFRZS?I&hX>|S=e-Kq=G zh#UCklI{lT?CHCV#w8D&gq%7CqG|Qv9-8aFN zKkm1OFt7UV>M{Nv`rI!+#V*z4$33tY9K_UJU;h-S)_KgjAB?!p8qn<;*k5N~_4;AZ zqXw3&r}YBR;`a{b2GFsi83BGn1O4tFztvKhXP~ z?bSZ{u!oj@!&~-hyX7OTch+yOuXn2T4uRtw9o5#W4!?PHk$3#t9;xF8A$B?mJ^Svg zzYaV>{tarsv7>`4&Yyi=`qEVF+(oMdyM?G%w6mJt+8)h^CR>>>0qyU ziv8O65Z}Kl_gcPI?_LWJYYBeU3r=S(a^s{m6oBi%BcS>L2#qoxPSE)`YE!_+KVV1r zx{ujc-E+C`8ftyu4)73o=3vg+z;};%P3`uYqdnDLYu|3S+xJnc+IS4)hBc4=y~aNB zHT$-CJtXt?>%h}I8yeDVe-U+`HErn^`$qQi!7#_!*KA({Z(;Vca$oox@z43e=sd($ zQ+u_YR##WkDuh?{ja=Y2mLaDYau`{y&;#&|XtM!otlmLQ4^(i#vl-2YM&_87>xrA^ z#ce->=Cb^SPsP2PQ4H4h*1M)SOy(#pz8jaBAo0xQT@3FhKpIIy}> zp=PF?OAhk>D(dQaA3ES!Z3TROD_6g+*_`#cM?B@i$22Q%{^KD3&@@fQv`jDNRj23J z>k;1{nBGcC%lL;_Sy^@LUfw7*HMRto|x#TFjHqJfW+ zYYVO0$g71G4{25C1Mv`+v&TB-8hP1MpYyIEJ?StS^uVV7t$8Rtwe$ei7dLyyY|X_@ z{0`V1;@SgnXRGyfng?lqeqMu&<#%hIHHaFfzLG{TlklcTkk9$Yrfs|ATRlUa;}-Jcrr=4JzO?hP9UYh}^0Hp%*TH?n zqkbC9HFW02b-AnI5u7{q?&dt}=r?bAzSmFE+}vE6n|CnhBY0FVa&p9-pF+Hinfu^k zp_^bnH&+97^?`Zj;uU>y%Nd!kIhvV&5+3H^%lBWvpY&os_ZB%{px1tRo)4BDvz_hbijPnMIF?IqEd|rV;wlw@4p(k35)W{X?if1&uG@5eGPC z=PK0V@ki&HKTP=}&Cc!n@ot<3{6Lv>=%~nxSl8@f^Z*UmvBu*=jP`wp>Z5)8wnufH zn4g;+LK8>F10d(Op{WH<-NQrGyf2}BEzQng0GQF>j2n)~9&>;ka)X1qeLFliov0N$ zn9IF#XP#p}Fv&})rT$-`X9vy90C6bt*_nzx=&5dbS`4sY_q>ceOJU`FL0d8~c& zvC6vfN-iHMYB8f))XUs;%j2`wq&>CvH5~CC<}UdN@aOQO^(c4<)fo-;P%|IL4KON2bPDNB8 zb~7$DE-^4L^m3s900ZesL_t(oN7a|hZrfH6hGQ)YBrg!ud#}ZtNXevR-AswLWbvk_ z=*H+yjUGVHpzgD2Q@?>%G5QkC##?QIIEfb1e-6bX%4SHma0Ar9hnX|;&wq}1vE>&p z{*OQN`Mf=!$A2My+`+l?-9Aek$4eZ5Vt|binRxl^2Z*BRD9<#GqMJCv0YDTZ0%&h? zwQ;^j;bFrttVL0{LVO>E;YlhEqwqEODU6~G`q(ri18>7HU{gZ=02Vjco zx1al5$%9>8U7di>fc`17;u-do&r{)*m`2yMfG@UZYMV!(EwTX-qk+W`cpno)z zcq}SCge-_xu9#92J|KPyGso=wV z-OB?E27@nv27@8snC4gy6NX9eRoN974u?Msd0xzM%)lOEExf)+uYSM(6;LU?e(3>v z{ocz`pJcE70eao;eYe}CLwX16URSJ3Z^0Qf-}LIGd%&yL-QR+<%#}&~e%|)VU{TbMpMxFna*U zwvTPc-r9~s4iM2!BI;x#hvpWvv3_aW00P8Yso!aNodKTqaoH6V{nOLaHK1=}Kk3=2 z-rmn8HL0!ktC$baY_=AyR*PCq&}xDtHg}Qh(1?0d_LFr|^&{z}I8$k6o~c&qCM>ADV#2e1IYV!hR2h(2-TzF`2N zsn3IwUwr6f9jep?;FgHQU6)f^bLB1oJ366=ozHdi?{|?PuHIdm8->5BSaY-4xbo00000NkvXXu0mjf(6KA< literal 0 HcmV?d00001 diff --git a/macosx/icons/advanced@2x.png b/macosx/icons/advanced@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..12c7d6eec30c8c01f8036ff59f998ab94e1e24b9 GIT binary patch literal 4437 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/audio.png b/macosx/icons/audio.png new file mode 100755 index 0000000000000000000000000000000000000000..5da9ca960a563b189273d1d02c94421d6b11351a GIT binary patch literal 926 zcmV;P17ZA$P)N2bPDNB8 zb~7$DE-^4L^m3s900SCHL_t(oN9~roZ_`i|#@ix@pz4SicnDY!Bg9Qo$8p>c>LiZi zN1WD{%EZJ_29UbI#)J@kjYy3A0Srh8RYH{z@DK11Q!5t4&>(d|NaXTeC)eECPT~l4 zLACVLJ^s%5&N;PPt7Bt_*WnZBJps>iQ=aFofn7ij2-Em%R zugAo`FM0iXWPyc+g*G4zmy3BldF%$gVm$500`v3pgmF;6mjh?CS}o!@4rzg;3p5>P z9G>x{^-jy_Kcm@f5=PR7P20X=+s(`2dfT>-$MqOE!?G=6SzVGYV42o3>Tl9|%QUaz zev-zfX)T$SRSx%I{bOgChCxij1jfDv48u6nZz1G1!Bd*Y`3T(V#V-+m07rSRf&P^6 z48Nw)(23q?_%M^M>!-jQFcDq?+9dc1KG7V`kKi+yqIyF|FI~UG`x@v?=TIU)RJ~p& z43^Y1O{bbx*KTv#Iq0)M^>dom0TS~fe!|6jnpQu}ym2#vMQXJgVKA{;tv;X{&OLA* z906Nk6Fg@1)oN{v_wzC8p0R#$GlB&wl?oYzs#acARP~-;qpBTMRlg7O49Z7d!Q9*& z8NxR5uM^Y_>*MDm3zW-c!eB|*aC@@mbIYFTf7xq46)i2N(N)ru2%N5iC+F zl?a20xWC)eHaP7Dv_-JOc^)Eu4?19#(|1axYsWZmWJa)nq9}yHMBHBhUle8b1pmlz zpMoxOo($rZSw(q{^CbA)%PsBqMP~$gS(XWdH_1i$V&r{6kmcey>c4_*)X>-|7Uc}B zMf?tY1N%P7{bu<6B}pPu0pN@q7^k6j6`mEED-;UBS5J}(_mNu;duZI3 zJ<===>5+WkNk_ec@S{6Ji2hqX>iayb|8JhaAG<*Mq$A|y0{{R307*qoM6N<$g5Zdy Av;Y7A literal 0 HcmV?d00001 diff --git a/macosx/icons/audio@2x.png b/macosx/icons/audio@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..72dbdf6f967fefe974a96a1ebe2960060601608d GIT binary patch literal 3551 zcmV<54IuJ~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv000e6Nkl zGmJ@6NmVMTKlxWlRZ>YRNmatKPfOD@!!QimHrjb;o^X^I6p+=bBJ95{`ELR9XLDnFc75t(j6SB zS%h!o=6Xdp)ni}Kki6DY51g-n=XkJ(sL%2PlMl=G%RYd<+K9M|^UKkcrI`d`Hr!`qSnryn=^D@L!_uE)c(c*#{VnMh=)g9gQvkKav3f zo?(ufK<}YeJVvQz%PP-$WO&nx%OrZH9rOcNXVJbe3pHcTJj9<12Y%c^xEJV|g$8%b z{{%*(A&U=(CJ^FiNP(dU4<+iEQSUf|6Zyik0h7GsL@NRBffH)xN9|$iJ=A;2$NIwz zQG1MM`G@u)PkDeL9$+|pF%+W!81fv4;lM?mXIUz8$YoE#i+nzo@U>qau;gVv(qDLv z&m#|(`q{&b>&AQG@d7!A-uwd$PloPfIJ`O;o_GRx0FeTSCvxY|RzvAp@!`zejXO?#0EjvYPXTMc0C>z_#Q!DQ zDR-KWK2ioUSN4zK@$s=cIX?D?0zIGj;}bbMoE^>((DMoJ?1A91K>8&Yc)SOm zBJ$uJ*^-P>Q(fr`wUCo&b=B7XluHfigMRQ3y*Q7~6=szAFgGIhupQzaI)C;XKyfw{ z7}$B>2WEbBG>{<}B{$Hs^_FX~M+c8Q^spD0L4GFcjA<2~)}QrKt+IdE19K0Oee^8c z>;nu2SY*JaEF9|-;3AUeAZb11Gd+b)9le#TZq6(CFb1!ZXUWUC%8j6^D%UuX%Db3qJCc*_apZA zac2$K-`@ww+t=Z=2N8MZ5S0fAC-Ajb?%)G=z`I88_j)%y)%p^(`_V(|Z$a}FxG#a3 z;HR@#zv!!Xv4`z~9iV}ol$-qt^!NL2zu)&5v<%JJ@@ecl=@B5`*Vr#{lUiSEQt$7d z0bc$3?^2_$^%-bhLg$HUs~_@R@)3y#RZkFm9rP>DZg}nqF#F*eZzv^uiFf-PS;;PH``pCHnxoySotB^;5vwI6BJheTO)^+bh?5ll;*C{+P#q677pv z>+Sv^y1To=hn|N=nC}|7iuCn*x!GR3NA>}F5CZ%Zur`j*67J(r=RjlJ8QkZR+=DTX zYuw)k?q|IJgxn_~5AAfmm&j9F{dP;fuiYd20Nrlab$eZp=z9QT0w?t{{?+aFy!7O8N zU5_|{uGA**;~4iP?z3aOIoz*|*MQCp&aW~apThe^%y%be(Ava&mpk2^JMlz?Ufg%gOX9cayPl%y;h)SE z`eN=p@eK26PqKq)%O2SW=yW;`@SV;!kVFXS{WaK*wJY%MQ)|1^d6M?vevSKAKdUvx z2mLZbh(D`iGm)S4aK|YRu(jp3wzhl@oeuJZ)H{ZR8*5Vk2E3zGr!%fw;^%beF`ggG zCG`n?nK7L?YB_N853sqp={C1EJtDB>i!<&qAL`}Y7WvXAz1N7}@w~;m^oDxMOSH%h z9u}oH_D`81dZr#_-7ve&=%AZ_fQ^k!2l$PR4ZpDoNF2K}7dUcG5xI}Sxxcxwc~#V{ z2L7h?pf3I4Uh*B|s1Es9PI@Nw(pgHHmD>)Nxvc7^!C+SP@w zPl*4eKG2EU;cSm>x_VM9~l1% z`9E5&;3-FYnytH`4(%^e57B5f&s)N4R$DFgM|=t}*ENpJX1!OK<6UZ6A0p4-Yfsz( zcRkCa=sekPK%?1k4GCs^D1qm>u9X| zdVR&$(NM>ErB2A*;p|W&M}|dR?wVsgMC8d4zD3rPKAgMMH=hoAov- z$vpM@qAQv@m&_A#^iAjI@?j^NC;I>ts4v(3GE8VhEc3p+?2#7(oWWVPhD$Xz(K{7+zMsp^)hOMYnyU=&m}E-j&kIypeKiaT;u$s-axmv~7J`3a{QG&qp- ziFcx}9^}QoSXZy$t$oIo`NT_RhlcL6gfkGdvfqHErA4R{hC`$?$RSm27ba7PuxW>=p_8uC$mKkd&DC=dg4pJxW{67AMIPpe*+dPBI+x^ zVx{7FMh;QV4tX)vSSjw>7ZG^E4Ye_j@+;*Y;S@QW$2iOAYP5IW(vuVX%=}}J5j(wu7 zK4BjHK!Uc_qAxWHuIPyN`~`P=?E`@940jRn2sD|qC6e=8Vb1!TJp%bWr+3j1exVcV znf%qpZ^BH9K|_#1jJd~AA$UwLxn|<_YoYHOV}dH z)B1emv2MAzNVx0c1wHD>Sssm1^);Gy;t}eqA9%%wfZPl8JwhGdYU~z(9kc%maQPeI z!yEE$s`oqae!~NNc(X_P9hSP$hi7wTA0Q-eQ;ffb+q87L>zfC-t)KjxzXA5Y=5PH^ Z;Q!R?Wx;Ud5AXm0002ovPDHLkV1i+Y9Tflo literal 0 HcmV?d00001 diff --git a/macosx/icons/encode.png b/macosx/icons/encode.png new file mode 100755 index 0000000000000000000000000000000000000000..2f581354c3a82429e3a16b4430bf249d4de49826 GIT binary patch literal 1394 zcmV-&1&#WNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv000ExNklrY!{9Ns4rzxp5S(-Msf zW+ukOxFzF*OVqgNMkcM4A`G`d5eGvt&`|`|3ztH1TsFwKUu0nmEild~bOYyLW3sU^ z20BDSj4aW`m__5`@Asbb9txCF785^clP5hn@B4e6=XW_hZ?^&1#`xDh{~Op!1*}%< zc0v|GA&e3J)WFw#kJq+ushyD+Akx!tu-^F3bUJ+wDK z*d39Pa0ZCv8A7?kS%|<`7k>I<1h;=_fq%(`z8`JqoJ&Usp?ATC!6hdqX^r>rUXI~d z<_K$KBLfup9A{nE;KAZ=0o-_0kMj>RN$_K|3#6@JHVthWzM9Lx_;Q_y;aKKit_@9u zGC%>(60UXioW&2nDHq9oQHB--|X3@@x1Wau z8%fHKM%jQ#7j+MsNStulgv#M0FgI0TAzTHXDBoAoBwO^Jia{dL#;IdyxP25=Unl9J z!3N~@KI2RHwDuh#DxjE9MsO?fU~V$-B&-47Y$=-WT69q%OoMf1JXuVC1(i0Gu)Oz1 zY!tG{0E==p7^VEJn8Dne8CdB2wg}BrX+o626J2>FLGLH`G?W2uL1NxsxO_%kwDeLO zBr5!gVD8OYpwtiLq3O;iI7j6^GnPylo8i_5N%nKCf&Iy^z}9|HWGV$qNL)w%2lz7Z z5$gPTn+{=qS!)g&CNpt*G*KNOZHQz)xu?=Vbj(hqm%q88XfX*F_o=A)#scQv>@keW zcjV&iLsT`&4kY9CK)!8M@vQSIp_qAbklGs1o~4$QIT1Bqrr9Le%L87S}**<}NX8$?;xWhzB!C>`Ed zoKg%ThGU=VNG1n`g85KdYc2d7CtDB0=8r+4atNpTV`1-&6;A=f?jupUS1@o0w!s*& zmt#ci(;iBLrn+a literal 0 HcmV?d00001 diff --git a/macosx/icons/encode@2x.png b/macosx/icons/encode@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..d1b3960df546ae14117ffe628a7cfd977639f013 GIT binary patch literal 3223 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 JPDHLkV1nGM5_kXr literal 0 HcmV?d00001 diff --git a/macosx/icons/pauseencode.png b/macosx/icons/pauseencode.png new file mode 100755 index 0000000000000000000000000000000000000000..bd318db005630a0bfccf1006de082e710667d274 GIT binary patch literal 1318 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 IM6N<$g7V(=6951J literal 0 HcmV?d00001 diff --git a/macosx/icons/picturesettings.png b/macosx/icons/picturesettings.png new file mode 100755 index 0000000000000000000000000000000000000000..46017e9a67efe4a47a5e5358c263440f65fd8c9b GIT binary patch literal 1401 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/pref-audio.tiff b/macosx/icons/pref-audio.tiff deleted file mode 100644 index c8078a5487e85296df31cfba9ebdb8d947ec8b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2860 zcmb7`YgAKL7J&E3y*D?6SAu{MLUIuhL`4vX6>HTHk(XE_2!c{30V;1rMSSbMArMpw zk*WnzlAsnJh_BY-JD?+AYemZlTC9Phpn?@ei`K`)j-7FSb#!%IlH?Tx<)266Z+v#EctW6r41tt~+;%SR0xgDOs{8;^czO zrF+ucPXvdhIkkny8AKerpwoAHWD4(3r)k|BOB7h$BR*W|@juzm+9fp1@oL=^)lg

    ^ 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 diff --git a/macosx/icons/pref-picture.tiff b/macosx/icons/pref-picture.tiff deleted file mode 100644 index 975ca560806fbe07f219fc6fb6da2aac2fa35cd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/presets@2x.png b/macosx/icons/presets@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..c70543e20461713c8564ddaa3c0d337498a7e92f GIT binary patch literal 3211 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/preview.png b/macosx/icons/preview.png new file mode 100755 index 0000000000000000000000000000000000000000..45f711c4519a5ce1cddf152072a7f828e85f1cb5 GIT binary patch literal 1005 zcmVN2bPDNB8 zb~7$DE-^4L^m3s900U`BL_t(oN9|Y3PTNovL_(BB)itfE>?j{l+ad47vGcIwG;tCV zn|=9%mY-k&ddr{FM z2L}i2UqZSAqv41RM?(Re!AC>l!I|oa&cZW7B|WI51)R@?Ib099@Q@FX78nc$Y)yO_ z42DO;!C(*m7Xo|WN9aRaFGpIy?e|%q;JTu?{hPDg$OmTj>Jmd$L-zOiikSvt_N ztV;l1dkTLBKEl+do@ISX`=M>Yi!81)+qU_2q&v`Vw^@LesBL}TGjFw8zl8TysDtlN z58BUpGthL(ZIMS@NAfkBO%_L^(P+*KgXcH-AioTCoOi_R{k$2G|WZbWFF-ROfdPg)?C z&#_#NkQX(_@|?#JYBNvdkIhSST+53*n$62^!u|dIdw>zb?H-HAuMypeY&LrZu&ky< z3uqcRdZCHy*_j^jw7!~a+3cP42vkkOzxD@(sRUJHnyNDN0**@OBmzC~0GLtvjF^wl zkp@m0u5>>4)1;`1t*GiZ3Q-k>hp7sMi8JvKydMBF$-dB(Lkj+{f+^QhFb(j800000NkvXXu0mjfFDTJZ literal 0 HcmV?d00001 diff --git a/macosx/icons/preview@2x.png b/macosx/icons/preview@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..012c3bd78849c80ab0a780b04d4c7ac7523930a7 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/settings.png b/macosx/icons/settings.png new file mode 100755 index 0000000000000000000000000000000000000000..d1e9757e74f64b2a81df9e885a29d1e9f5023f40 GIT binary patch literal 1151 zcmV-_1c3XAP)N2bPDNB8 zb~7$DE-^4L^m3s900a9;L_t(oN99*bZsS-Ce5+i@ilxYZJ5HRhf3hw4JPiaGV9w)J zZqvX3xdf+J1_s>MWM)Iu^zQl5Rvec_|eDp!+Ah;tU^@*;A34MO#_YY8xSmr zGI2bzH|>ZXHDI$A>)gFDqu#5Izv2Id9&hO}M?0Xb%21ZoTUnL@HdLil>?2Imp1RiF zmw1pqve)3|enoGbm2a5wT^?{K58-e)d;kJWflxYFbB+Z-d-ZFr9`+9F-P4-6j%%KcH;2W}UQ#hwtDG&UnDK*oN(PD-NvY58uO?rLt}5O9(aX2zRxV~*P6beZ*hkQELW?rTCHTc zTnSifYUq8o{PZ;D^un`RVooL`YB8(H%jFX90IMb6;Q_C&uL^O*-uT5~wR)hxe9mmQ z33>Udoz0u?@POy%XN5Roe~IP!h29okn!V=yIm6zfhX*`9J^_yc1|GG(j3@P6o;|7l z#M!w=HPa&meeK}^i^W1Aj@Uatga?}g53+dhI&wXW9_F+%xEpgcqxSHCySqE!Ucd_P zBj2;XH(l=T=@Im(>m6vQeFko2eD>V4eR_Dn?d`2Xh`HADsI_=5^IL^`otr&tW?aHN zG`#fifa!D^rn9Ml71k58FteF4=HTdKUH7^_oB3?k$oS0D4EpIcod-3+I#Q0W!gIidU!yVWg*Q{$z>6*(1xGz}Q=NBl7#K+D zZ^L)!MeRG>bD&;erf+=k4S0CK_4T#l4UmgSt|j?y_Kp6*p>K^ Rkv#wa002ovPDHLkV1n@-FggGL literal 0 HcmV?d00001 diff --git a/macosx/icons/settings@2x.png b/macosx/icons/settings@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..350f4bfd57ca2fa73ebb0b867c6dc4849c2849c7 GIT binary patch literal 3304 zcmVWi>P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv000bENkl+D)J2i`gwB|(7*tFYCvxgzz57prx-JH_sGbsD2kdn^g%ipJi-?<^Qfe5N;&8B zGvlXTo7q7iU-TPnEHxKJ0CuTKo zv2YiD%k^rNUZ1=67iah9J_}dVm-WVT&8HsrO^rLpLA5%oUOkIDf)opJCt|kl)4&>cGo$hJaA_ z_wMLX%_DS6Z);Y(H6Q1KLwT#$8aRIgKI6eYq5gqCl6}G7{Q_oantcS}-?IfvGao3% zW;8O(&k?<+XMBb_dxE#>t@AD2ndXdtk*`iGG%TY3Z_IrJ%GcNY0%o&W0zN#?W?z6j zlRT`otUO919;5~Yx=6d9w*4k6M_jG(d zJQVIhpXWdMkG$Xkrg(tq^v|h;0<+IJk6lcfqV7tAQVg89Ot_nZn=WFWVQsriPUJ;uDhl5g(Q`~n^yAJfz0V@4G0{FEM_ zlz+uJ;|xNbkwc9$Fz_g-PdS`l(I*b{70%!mzqrV0yySOH(+Lmc60hl*mTQ}5=8GP+ zqqpA2wdK3{01po$l3ASd6I7Ffj=~)Q+a@wukx;5o;k06c^1sS@(Uio20Bc5MsAWO4-cm}zv2w= ztXz7SSl#*pss&FkuO7^BR`U_bGvM-i$J5j*JnoMk<<)#os(tJ%&E^A4CRk)L$%r*T zLZSuW0;xEWNv*oe)=Ar`1 z+?n^<1b2Y<=;Q1?%(IU*K^!(4^UR4~b?ecCYEJ#~Qszout<}w!xvsD5!@bPoeftZz zySqd2F5e0F`R-0g1cz8hE!}(68DR9;I%f2d$7jGnE}z#zx*KortRB-vO

    E&bhAU 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 literal 0 HcmV?d00001 diff --git a/macosx/icons/showqueue@2x.png b/macosx/icons/showqueue@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..2cbe097e1abf08ed01fb40b8cba20c0533e89a40 GIT binary patch literal 3884 zcmV+{57Y38P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv000h~Nkl1P=5xrn&2p9|oLtwUs zKvu!}Zb{v(mRjH6QmZxk2LXY$hO7dH{06VG@+uH83}h7$49qGppjE&tgJEE{27_SW z<(yMh_ubd(mdEj!1jdF#)vY>p>eOp_IjO3u^giRgKAu1PuOHxj{`3F!FM$6GJiWR~ zPoF+DTru)(wJYykMW1!luEcu?I}nUa_yKUHXgM{khMqHPKfwAD#+d zeuxfhLFgJs-y*-q5f$EJxWb#T`W14bd|QrsIj?-uEHt85a;`#C@gBIPHvk^}pyFfd zV;4W1eL(vmCjC%lEeKCge3=ivgkb{5TzZW6)2ElYC;lbgw$deCApUgH&`s@)8*x53j=py9&bO~kAWH0^ik|6eiYWM?zP58 z@WaXTkCeGSS8K$FuJxpuKYZ-W{X1y#uQeZ{gD-jDrF|IY`2%?!$J>Wt&prlo4qnGG z?=0#g{i2{}9sP5WMx)X5(de>5lxfS|JZhs$)V)9AQBfN|koC~XdYtEs>-r3LQP(1O z*$$!Lvo0_4R{D@<9bd;0-lGKFTvIJgQTPp(CqHHa6;8a@L(^?Ww=O3!wgH~Dgy*X*si z&-JJqe(2rb^ddgBv4aMAY&9Gr1}=vB07Hik8FJyUfFG#3aqVDo>f?Vj_j%KA!Zqcu z3G+7<)GB=qYfrUL^O}Z3h~aR40Oms+Zy&>sMGeq_ExfOh-=cRPbI3Ip8u3<*TGC_R zIsCZ(hNkWG4{v$hw;#r8O|I9>?>+SB=^ALst6)b*4xZh@=s7=K8e6njX!MW*LXWm%tNxrhjk~ zJSgh;bJU{e5d;&M0QQI$aQ6sr+I&$zYjDn{@65a=r#VkAk7&>E5^4V;=OtDT`IJXak!6%RdfkO!ahmU}NW@Fw55 z1;5^*z1ki7-9vaf)m}sF(7W`TeLLqAo^|9Y?@PQzxo%=ajeSHu>@eU&@xgb3=M>@R7(-9T`s*`7219Hxyk0>KYE#%k0E$a8u$-3l2n>$oDt@zkkQ@dDq zFNmDczKGOuEqRlcdlWxz@cnrgJjvVfwY(n5b4s@SusS-dk5las$MHbb(Jzi?e#qX@ zp>qzOAb(kF9HJjH%&F&ZkE|KT!99UupJu~j;UVgIPw5l6>Wpz$dEepDOYDVbe1O9P z7=$T{2bLSs0bqHfUiS~wZ-I9g9OSN*b+RUV>X-Xsf4z6wzGCj7HZ@IqqSyMagWQMb z!&W*#VG7XWM?jy*JS?)DJ*KB}B%6F~@hX;-2v6nuOXFtVk)+{`dSNpRY_+#Wd zG|%^V&F_Tww70ic?d|W`0eb<|_V&@^M_@h%*7o-j`0U?vo}A!PXHR<4@tkHt$8z>- zkVoC%`J40d=+XVw`|7#uQ`+R0J%5LuZr!_2d%HBXTQTk;?s5TZyL;&Erd`(Ut+>1E zoV{IsJoRf0=uit9&_NILi~zX?%%QGXK|AO}eDzt&{aVL7xlR$ahx6k*y=MEeFT2A$ zR$N-`?(9@M!0yg&wZpd|At&t39yz;&cnNcu_ct||i(~Wb8;=HSfaluY$2<6wqBO(- zs0B1?K2Kfw&K&5w2i_s*PI|SwLD*I?V|%CCwl{lehi}!ky`K3AwZxugBi1?kJM8CZ zdfQ#hJp=z0`ro4VHRk7SAGzQ#-}dNrtC?2z79LB^#2h|#Q++Gn1PtP^2DYm0E!4Jn z9D%p`Th&(Z8vSjnZv`*(wtPNx6u+qT>b;nMgWl)1&wyHv%CjHKqhHQIn|_PEjXdAM zd$#l_qb4}@tUPdD8e{e1UG%nsYyJzL4{oT^U@)i#gUxEN$=Jxz+e}tR zU%df7M(_rlO`CZZABuhFVGcdx3}|97xX&8Fqn18u)_pBL_h!V~wL&v^*h6mKrG4(r zqxs~n>^>@4-ewPS{-ZLJPC%gD37_W_4Q|XyRJvqfVO`K?&R^@Zyy0OAENdRYG1>T z`nKD6=9TvZ{9gD?>;3)G#*F z{u%-Ejy2W#)f(S4UF2)_mQl^>DAQ0c`p!WuxL?GFt)u4Ofb%)^u-CaUaDG{@VH|Exf(*R$k%#aN381!JR;98y3lxr zxmVzRhxj$#^R89$GzZT3eEI$@=3bkJUhMt>dY_mc_V)6;IBUJQ#eAn;4@-KzC%_$0 z{RG79w3+DtlJOr?{QlYRDtAxxnY!Jcquc8Cx;Nc!_ZGFPi;sca(DUf;9{b&H>H)?v zey_=6uK@P+>bK8YO?CRn{XX(P1fRz=wZyy5{>)DX{JqBeH+jbPHaPJ{qm#OwZt8S8 zsRIKYy^#xiW3bcFu<~xFLJzPR%rbYNjy`K#UT|EKM!3iIGspLv-Y3}i3iHoxzxj|y z@#XV(h(BxYi^_#62)a8CWGVUD{$0RNv^v$J}|y1-d_>vUSczvxH4up2speDEWfr*BaE zfVa30^^9*Hjq_;*;>7CeiUauya=`2Nt1A#*S@91MakW}uohFL7vWh;rK5rVKul!@+ zJJi3&&flviF0iutCuxQrc<6mN=I<}|gRE4j%Y*G?bU$@GT;VO$me1Nd=j{V<`7)Oi z%VSaX7XTLhWTa(jmil`Cwb1%E@{h;?m;b%Vz2&^`FSW0gZi53)n0w3{z57jLJl9Xl z%gasRBaGEeV~%StFCS(d%;LjCbLH=-eS-LH*(>sU=zI!%1U@*i zzwng3xktTuu-_E4KS_qCs)_7&&Ui$33i&xq^D8oGfnE;YH|`)Dks zr6rOOb#U9>Kz_H|Pmte%Q=tcer3!uJOOeY6`fiFEp=+8;UvZ|r6tjrpGuk0BE1ur2 zSL}?QJY+xqAxa)KZ69~@o~*|`sA*nJVbNo}JucS$7I-(nEov1(k*RP!pFdezT6~;8 zuC?ge5r1so^nTn};l}Ji{_#$Wi;EyEDlWpbMFT%du8G4BHOANC#R@$LGU8CnL*rxg zUPn)T@-;)Q@%gr#J-nr5CM_@cxj)XWd4--lQ_EmKMC54!&4q;pnPn{Biwmq_I3OW% zoX5D}OBWWZMPhNGf(9394w`=}4`6OH#)B5-@CKM?J=OW9X0d~HzI~VU^bU>4eKu|i zp6}Bhz>W^g7kOEKJeSD{XlhT?m~U|A-(qKz)12oWk7!Kvndax`G2~#*kKj?g$jK2G zOJW9G%$o50LWOz_@yX>!HGRdb8U1pHbF(Mkg*Wu`e)$W1*L<+U`}r35gctY6XnC5W z*xY=YbC|(7N7FF5;x&$#zsI{G=I7=RiTDt6T2j9)p92p&9IP1+J~F?qd9V1mrdMcS zuH0c-59b;`knQ{4kDtR)0FKkg(4qJU4(r*wjGn*19FFo2z>kn&$Le62EPGM6L!{B@ z`-jm-b)D!JQ6HkQb4+Vov*2RxMVgz%QNXN@o7I7JWREp~9CCw$y1nOabmXiZ1fBW= z%+3}cW47**3y7QN*bh)6X2)abmwMp1j?Gz*da;aMX+r zW1K+@)OGt1lfhZx2|vQjOkq~}Of}00Ko=2j85xhp$sf&g=>^6<1odK{#To5rc+k$; z$Bgz0_`&2kB@Ezb`v@~L_y~I22Z7=IVU(jskQaP?IMrubsNX>AR>#s%KHQJT2LMN~ zk5WW8&zd-V>nJlFN7_fVde+fLvX82rF&`g1`ZKf7(Z6x8y1|d;5pRLd-h%TsI{!zU uw>$hN8~*GU(tYN2bPDNB8 zb~7$DE-^4L^m3s900KryL_t(oN9|N?ZsITy?Z2L&C&7V&AS^;GOFl?!LgH|&9;3Y( zKel^=*|CWyPBC$%XxTp?J=rtw&AhQK^7QohJ#GMRpss7^;B@N7UwKD-`iAD>(e|dx zmq(3d{5xhIK4KT z4cr?)(UT6dUa!Hxcfz5((`&U_fx%D%U%k_7xm<$64}`D5P~Lc{m3oDX1uQ}Yu0suc z^`Y_!L-Yz;ulalq{{uAaY&HV}-wB5DPOs^73L3A|fBpo@=k=@CWHJGRp(pg!JH5u^ z@h1ZAjNdeD5Cm@sFkk_reZbm$VCOq~TXSpAfT4$h@}vP6W6y{;#3vh#V8oaP#vQnF wN~7~w$41vRx`&lV?VrZ$+4o!z{w_E07iWn+CJbpi7ytkO07*qoM6N<$f=Jj#YybcN literal 0 HcmV?d00001 diff --git a/macosx/icons/source@2x.png b/macosx/icons/source@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..a212d4e58026f5d865f0db3e4a2a1dbbc5eee470 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/make/configure.py b/make/configure.py index e0e252edc..8dbe78a56 100644 --- a/make/configure.py +++ b/make/configure.py @@ -766,7 +766,7 @@ class Project( Action ): self.vmajor = 0 self.vminor = 9 - self.vpoint = 6 + self.vpoint = 9 def _action( self ): ## add architecture to URL only for Mac diff --git a/pkg/linux/debian/control.raring b/pkg/linux/debian/control.raring new file mode 100644 index 000000000..4fff9a296 --- /dev/null +++ b/pkg/linux/debian/control.raring @@ -0,0 +1,30 @@ +Source: handbrake +Section: graphics +Priority: optional +Maintainer: John Stebbins +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/ + +Package: handbrake-cli +Architecture: i386 amd64 +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: handbrake +Description: versatile DVD ripper and video transcoder - command line + HandBrake is a versatile, easy-to-use tool for converting DVDs and other videos + into H.264, MPEG-4, or OGG formatted media. It's particularly useful for making + videos that are compatible with portable video devices such as the Apple + iPod/iPhone. This package contains the command-line variant, + HandBrakeCLI + +Package: handbrake-gtk +Architecture: i386 amd64 +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 + into H.264, MPEG-4, or OGG formatted media. It's particularly useful for making + videos that are compatible with portable video devices such as the Apple + iPod/iPhone. This package contains the graphical variant, ghb. + + diff --git a/pkg/linux/debian/rules.raring b/pkg/linux/debian/rules.raring new file mode 100755 index 000000000..2545b4de6 --- /dev/null +++ b/pkg/linux/debian/rules.raring @@ -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.defs b/pkg/linux/module.defs index e4232b343..2570d0857 100644 --- a/pkg/linux/module.defs +++ b/pkg/linux/module.defs @@ -3,6 +3,15 @@ PKG.rpm.machine = `rpm -E "%_target_cpu"` PKG.release = 1 PKG.rpm.dist = `rpm -E "%dist"` + +############################################################################### + +PKG.cli.tar = $(PKG.out/)$(HB.name)-$(HB.version)-$(BUILD.machine)_CLI.tar.gz + +STAGE.out.cli/ = $(STAGE.out/)cli/ + +############################################################################### + PKG.rpm.src.tar.bz2 = $(STAGE.out.src/)rpm/$(PKG.basename).tar.bz2 STAGE.out.rpm.src/ = $(STAGE.out.src/)rpm/ @@ -36,3 +45,4 @@ BUILD.out += $(PKG.cli.deb) BUILD.out += $(PKG.gui.deb) BUILD.out += $(PKG.cli.rpm) BUILD.out += $(PKG.gui.rpm) +BUILD.out += $(PKG.cli.tar) diff --git a/pkg/linux/module.rules b/pkg/linux/module.rules index af38b061a..16524364d 100644 --- a/pkg/linux/module.rules +++ b/pkg/linux/module.rules @@ -1,6 +1,21 @@ pkg.create.deb:: $(PKG.gui.deb) $(PKG.cli.deb) pkg.create.rpm:: $(PKG.gui.rpm) pkg.create.src.deb:: $(PKG.src.deb.stamp) +pkg.create.tar:: pkg.create $(PKG.cli.tar) + +# +# CLI Tar Package +# + +$(PKG.cli.tar): | $(dir $(PKG.cli.tar)) +$(PKG.cli.tar): | $(STAGE.out.cli/) + cd $(STAGE.out.cli/) && $(TAR.exe) cjf $(call fn.ABSOLUTE,$(PKG.cli.tar)) . + + +$(STAGE.out.cli/): + -$(MKDIR.exe) -p $@ + $(CP.exe) HandBrakeCLI $(STAGE.out.cli/) + $(call STAGE.doc,$(STAGE.out.cli/)) # # RPM binary package rules @@ -61,14 +76,26 @@ $(PKG.cli.deb): $(PKG.gui.tmp.deb) # Debian source package rules # pkg.push.src.deb:: $(PKG.src.deb.stamp) + (cd $(STAGE.out.src/)raring && dput handbrake-snapshots handbrake_$(HB.version)ppa1~raring1_source.changes ) (cd $(STAGE.out.src/)quantal && dput handbrake-snapshots handbrake_$(HB.version)ppa1~quantal1_source.changes ) (cd $(STAGE.out.src/)precise && dput handbrake-snapshots handbrake_$(HB.version)ppa1~precise1_source.changes ) (cd $(STAGE.out.src/)oneiric && dput handbrake-snapshots handbrake_$(HB.version)ppa1~oneiric1_source.changes ) - (cd $(STAGE.out.src/)natty && dput handbrake-snapshots handbrake_$(HB.version)ppa1~natty1_source.changes ) $(PKG.src.deb.stamp): GNUmakefile -$(RM.exe) -rf $(STAGE.out.src/) make contrib.fetch + svn co -r$(HB.repo.rev) $(HB.repo.url) $(STAGE.out.src/)raring/$(PKG.deb.basename) + $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)raring/$(PKG.deb.basename) + cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)raring/$(PKG.deb.basename) + $(CP.exe) $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/control.raring $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/control + $(CP.exe) $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/rules.raring $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/rules + echo "handbrake ($(HB.version)ppa1~raring1) raring; urgency=low" > $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/changelog + echo " * Snapshot" >> $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/changelog + echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/changelog + echo "" >> $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/changelog + echo " -- John Stebbins Sun, 11 Apr 2010 9:51:07 -0800" >> $(STAGE.out.src/)raring/$(PKG.deb.basename)/debian/changelog + $(TAR.exe) czf $(STAGE.out.src/)raring/$(PKG.src.deb.tar) -C $(STAGE.out.src/)raring $(PKG.deb.basename) + (cd $(STAGE.out.src/)raring/$(PKG.deb.basename) && debuild -S -kjstebbins.hb) svn co -r$(HB.repo.rev) $(HB.repo.url) $(STAGE.out.src/)quantal/$(PKG.deb.basename) $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)quantal/$(PKG.deb.basename) cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)quantal/$(PKG.deb.basename) @@ -105,15 +132,3 @@ $(PKG.src.deb.stamp): GNUmakefile echo " -- John Stebbins Sun, 11 Apr 2010 9:51:07 -0800" >> $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog $(TAR.exe) czf $(STAGE.out.src/)oneiric/$(PKG.src.deb.tar) -C $(STAGE.out.src/)oneiric $(PKG.deb.basename) (cd $(STAGE.out.src/)oneiric/$(PKG.deb.basename) && debuild -S -kjstebbins.hb) - svn co -r$(HB.repo.rev) $(HB.repo.url) $(STAGE.out.src/)natty/$(PKG.deb.basename) - $(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 - echo "" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog - echo " -- John Stebbins Sun, 11 Apr 2010 9:51:07 -0800" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog - $(TAR.exe) czf $(STAGE.out.src/)natty/$(PKG.src.deb.tar) -C $(STAGE.out.src/)natty $(PKG.deb.basename) - (cd $(STAGE.out.src/)natty/$(PKG.deb.basename) && debuild -S -kjstebbins.hb) diff --git a/pkg/module.defs b/pkg/module.defs index 11dae99f7..2bc6081c4 100644 --- a/pkg/module.defs +++ b/pkg/module.defs @@ -3,8 +3,9 @@ $(eval $(call import.MODULE.defs,PKG,pkg)) PKG.in/ = $(SRC/)pkg/ PKG.out/ = $(BUILD/)pkg/ -PKG.basename = $(HB.name)-$(HB.version) -PKG.src.tar.bz2 = $(PKG.out/)$(PKG.basename).tar.bz2 +PKG.basename = $(HB.name)-$(HB.version) +PKG.src.tar.bz2 = $(PKG.out/)$(PKG.basename).tar.bz2 +PKG.src-contrib.tar.bz2 = $(PKG.out/)$(PKG.basename)-contrib.tar.bz2 STAGE.out/ = $(BUILD/)stage/ STAGE.out.src/ = $(STAGE.out/)src/ diff --git a/pkg/module.rules b/pkg/module.rules index f841fd93b..da46620f1 100644 --- a/pkg/module.rules +++ b/pkg/module.rules @@ -6,6 +6,8 @@ $(eval $(call import.MODULE.rules,PKG)) pkg.create:: $(PKG.src.tar.bz2) +pkg.createx:: pkg.create $(PKG.src-contrib.tar.bz2) + pkg.clean: $(RM.exe) -fr $(STAGE.out/) $(RM.exe) -fr $(PKG.out/) @@ -20,6 +22,10 @@ $(STAGE.out.src/): $@/$(PKG.basename)/make/configure.py > $@/$(PKG.basename)/make/configure.py.tmp $(MV.exe) $@/$(PKG.basename)/make/configure.py.tmp $@/$(PKG.basename)/make/configure.py +$(PKG.src-contrib.tar.bz2): + $(TAR.exe) cjf $@ -C $(CONTRIB.download/) \ + $(foreach f,$(MODULES.NAMES),$(notdir $($f.FETCH.tar))) + ############################################################################### ## include optional platform packaging diff --git a/test/parsecsv.c b/test/parsecsv.c index f0c2a1ac5..8b287d08b 100644 --- a/test/parsecsv.c +++ b/test/parsecsv.c @@ -1,8 +1,11 @@ -/* $Id: parsecsv.c $ +/* parsecsv.c - This file is part of the HandBrake source code. + Copyright (c) 2003-2013 HandBrake Team + This file is part of the HandBrake source code Homepage: . - It may be used under the terms of the GNU General Public License. */ + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ #include #include "hb.h" diff --git a/test/parsecsv.h b/test/parsecsv.h index ef20792e7..180da178a 100644 --- a/test/parsecsv.h +++ b/test/parsecsv.h @@ -1,8 +1,11 @@ -/* $Id: parsecsv.h $ +/* parsecsv.c - This file is part of the HandBrake source code. + Copyright (c) 2003-2013 HandBrake Team + This file is part of the HandBrake source code Homepage: . - It may be used under the terms of the GNU General Public License. */ + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ /* A very simple CSV file parser. diff --git a/test/test.c b/test/test.c index 5b0b85b0a..0a0e1e558 100644 --- a/test/test.c +++ b/test/test.c @@ -1,8 +1,11 @@ -/* $Id: test.c,v 1.82 2005/11/19 08:25:54 titer Exp $ +/* test.c - This file is part of the HandBrake source code. + Copyright (c) 2003-2013 HandBrake Team + This file is part of the HandBrake source code Homepage: . - It may be used under the terms of the GNU General Public License. */ + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ #include #include @@ -255,7 +258,9 @@ int main( int argc, char ** argv ) titleindex = 0; } - hb_scan( h, input, titleindex, preview_count, store_previews, min_title_duration * 90000LL ); + hb_system_sleep_prevent(h); + hb_scan(h, input, titleindex, preview_count, store_previews, + min_title_duration * 90000LL); /* Wait... */ while( !die ) @@ -270,11 +275,14 @@ int main( int argc, char ** argv ) die = 1; break; case 'p': - fprintf( stdout, "\nEncoding Paused by user command, 'r' to resume\n" ); - hb_pause( h ); + fprintf(stdout, + "\nEncoding Paused by user command, 'r' to resume\n"); + hb_pause(h); + hb_system_sleep_allow(h); break; case 'r': - hb_resume( h ); + hb_system_sleep_prevent(h); + hb_resume(h); break; case 'h': ShowCommands(); @@ -318,11 +326,14 @@ int main( int argc, char ** argv ) die = 1; break; case 'p': - fprintf( stdout, "\nEncoding Paused by user command, 'r' to resume\n" ); - hb_pause( h ); + fprintf(stdout, + "\nEncoding Paused by user command, 'r' to resume\n"); + hb_pause(h); + hb_system_sleep_allow(h); break; case 'r': - hb_resume( h ); + hb_system_sleep_prevent(h); + hb_resume(h); break; case 'h': ShowCommands(); @@ -1882,7 +1893,9 @@ static int HandleEvents( hb_handle_t * h ) int i = atoi( token ) - 1; if( hb_list_item( title->list_audio, i ) == NULL ) { - fprintf( stderr, "Warning: could not find audio track %d, skipped\n", i + 1 ); + fprintf(stderr, + "Warning: Could not find audio track '%s', skipped\n", + token); continue; } audio = calloc( 1, sizeof( *audio ) ); @@ -2542,7 +2555,9 @@ static int HandleEvents( hb_handle_t * h ) subtitle = hb_list_item(title->list_subtitle, track); if( subtitle == NULL ) { - fprintf( stderr, "Warning: Could not find subtitle track %d, skipped\n", track+1 ); + fprintf(stderr, + "Warning: Could not find subtitle track '%s', skipped\n", + token); continue; } sub_config = subtitle->config; @@ -3287,7 +3302,11 @@ static void ShowHelp() "### Filters---------------------------------------------------------\n\n" " -d, --deinterlace Deinterlace video with yadif/mcdeint filter\n" + " or omitted (default settings)\n" + " or\n" " (default 0:-1:-1:1)\n" + " -5, --decomb Selectively deinterlaces when it detects combing\n" + " or omitted (default settings)\n" " or\n" " (default 1:1:4:4:0:0:-1)\n" " -8, --denoise Denoise video with hqdn3d filter\n" - " (default 4:3:6:4.5)\n" + " or omitted (default settings)\n" " or\n" - " \n" + " (default 4:3:6:4.5)\n" " -7, --deblock Deblock video with pp7 filter\n" " (default 5:2)\n" " --rotate Flips images axes\n" diff --git a/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs b/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs index 2a4aa18c0..7e3ee4583 100644 --- a/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs +++ b/win/CS/HandBrake.ApplicationServices/ASUserSettingConstants.cs @@ -49,11 +49,6 @@ namespace HandBrake.ApplicationServices /// public const string SaveLogCopyDirectory = "SaveLogCopyDirectory"; - ///

    - /// HandBrakes version - /// - public const string HandBrakeVersion = "HandBrakeVersion"; - /// /// HandBrakes build /// diff --git a/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs b/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs index e47a76115..6e738351a 100644 --- a/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs +++ b/win/CS/HandBrake.ApplicationServices/Factories/PlistPresetFactory.cs @@ -127,10 +127,10 @@ namespace HandBrake.ApplicationServices.Factories preset.Task.Cropping.Right = kvp.Value; break; case "PictureHeight": - preset.Task.Height = kvp.Value; + preset.Task.Height = kvp.Value == null || kvp.Value == 0 ? null : kvp.Value; break; case "PictureWidth": - preset.Task.Width = kvp.Value; + preset.Task.Width = kvp.Value == null || kvp.Value == 0 ? null : kvp.Value; break; case "PictureKeepRatio": preset.Task.KeepDisplayAspect = kvp.Value == 1; @@ -138,6 +138,9 @@ namespace HandBrake.ApplicationServices.Factories case "PicturePAR": preset.Task.Anamorphic = (Anamorphic)kvp.Value; break; + case "PictureModulus": + preset.Task.Modulus = kvp.Value; + break; // Filters case "PictureDeblock": diff --git a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj index efeeffb47..445b09c36 100644 --- a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj +++ b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj @@ -106,6 +106,7 @@ + @@ -160,6 +161,7 @@ + diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs index eb0313317..00870552f 100644 --- a/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs +++ b/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs @@ -72,9 +72,8 @@ namespace HandBrake.ApplicationServices.Parsing public static Chapter Parse(StringReader output) { // TODO add support for reading chapter names to the regex. - Match m = Regex.Match( - output.ReadLine(), - @"^ \+ ([0-9]*): cells ([0-9]*)->([0-9]*), ([0-9]*) blocks, duration ([0-9]{2}:[0-9]{2}:[0-9]{2})"); + string line = output.ReadLine(); + Match m = Regex.Match(line, @"^ \+ ([0-9]*): cells ([0-9]*)->([0-9]*), ([0-9]*) blocks, duration ([0-9]{2}:[0-9]{2}:[0-9]{2})"); if (m.Success) { var thisChapter = new Chapter diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs index f834c4fa9..af5788f41 100644 --- a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs +++ b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs @@ -167,20 +167,17 @@ namespace HandBrake.ApplicationServices.Parsing { nextLine = output.ReadLine(); } - + // Multi-Angle Support if LibDvdNav is enabled - if (!isDvdNavDisabled) + m = Regex.Match(nextLine, @" \+ angle\(s\) ([0-9]*)"); + if (m.Success) { - m = Regex.Match(nextLine, @" \+ angle\(s\) ([0-9])"); - if (m.Success) - { - string angleList = m.Value.Replace("+ angle(s) ", string.Empty).Trim(); - int angleCount; - int.TryParse(angleList, out angleCount); - - thisTitle.AngleCount = angleCount; - nextLine = output.ReadLine(); - } + string angleList = m.Value.Replace("+ angle(s) ", string.Empty).Trim(); + int angleCount; + int.TryParse(angleList, out angleCount); + + thisTitle.AngleCount = angleCount; + nextLine = output.ReadLine(); } // Get duration for this title diff --git a/win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.Nightly.tmpl b/win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.Nightly.tmpl new file mode 100644 index 000000000..faa879725 --- /dev/null +++ b/win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.Nightly.tmpl @@ -0,0 +1,42 @@ +/* AssemblyInfo.cs $ + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("HandBrake")] +[assembly: AssemblyDescription("HandBrake is a GPL-licensed, multiplatform, multithreaded video transcoder.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("HandBrake Team")] +[assembly: AssemblyProduct("HandBrake")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5e4e3f97-5252-41f6-aae9-3846f62cbc66")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.0.0.$WCREV$")] +[assembly: NeutralResourcesLanguage("")] diff --git a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs index 555b004f2..db4ef3abd 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs @@ -66,9 +66,7 @@ namespace HandBrake.ApplicationServices.Services.Base this.userSettingService = userSettingService; this.logBuffer = new StringBuilder(); header = - GeneralUtilities.CreateCliLogHeader( - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion), - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeBuild)); + GeneralUtilities.CreateCliLogHeader(); this.LogIndex = 0; } diff --git a/win/CS/HandBrake.ApplicationServices/Services/LibScan.cs b/win/CS/HandBrake.ApplicationServices/Services/LibScan.cs index 850c3b860..55aefd7ea 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/LibScan.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/LibScan.cs @@ -71,19 +71,14 @@ namespace HandBrake.ApplicationServices.Services /// /// Initializes a new instance of the class. /// - /// - /// The user Setting Service. - /// /// /// The hand Brake Instance. /// - public LibScan(IUserSettingService userSettingService, IHandBrakeInstance handBrakeInstance) + public LibScan(IHandBrakeInstance handBrakeInstance) { logging = new StringBuilder(); - header = GeneralUtilities.CreateCliLogHeader( - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion), - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeBuild)); + header = GeneralUtilities.CreateCliLogHeader(); instance = handBrakeInstance; instance.Initialize(1); diff --git a/win/CS/HandBrake.ApplicationServices/Services/PresetService.cs b/win/CS/HandBrake.ApplicationServices/Services/PresetService.cs index ee6efedad..0155220d7 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/PresetService.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/PresetService.cs @@ -307,7 +307,7 @@ namespace HandBrake.ApplicationServices.Services { Category = category, Name = presetName[0].Replace("+", string.Empty).Trim(), - Version = this.userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion), + Version = VersionHelper.GetVersion(), Description = string.Empty, // Maybe one day we will populate this. IsBuildIn = true, UsePictureFilters = true, @@ -355,7 +355,7 @@ namespace HandBrake.ApplicationServices.Services List preset = this.presets.Where(p => p.IsBuildIn).ToList(); if (preset.Count > 0) { - if (preset[0].Version != this.userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion)) + if (preset[0].Version != VersionHelper.GetVersion()) { this.UpdateBuiltInPresets(); return true; diff --git a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs index 172fe7291..79b348ae4 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs @@ -215,7 +215,7 @@ namespace HandBrake.ApplicationServices.Services /// public bool CheckForDestinationPathDuplicates(string destination) { - return this.queue.Any(checkItem => checkItem.Task.Destination.Contains(destination.Replace("\\\\", "\\"))); + return this.queue.Any(job => job.Task != null && job.Task.Destination.Contains(destination.Replace("\\\\", "\\"))); } /// @@ -514,7 +514,7 @@ namespace HandBrake.ApplicationServices.Services Win32.LockWorkStation(); break; case "Quit HandBrake": - Application.Exit(); + Execute.OnUIThread(Application.Exit); break; } } diff --git a/win/CS/HandBrake.ApplicationServices/Services/ScanService.cs b/win/CS/HandBrake.ApplicationServices/Services/ScanService.cs index 40329f14d..1ad531dfe 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/ScanService.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/ScanService.cs @@ -74,9 +74,7 @@ namespace HandBrake.ApplicationServices.Services this.userSettingService = userSettingService; this.logBuffer = new StringBuilder(); - header = GeneralUtilities.CreateCliLogHeader( - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion), - userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeBuild)); + header = GeneralUtilities.CreateCliLogHeader(); } #region Events diff --git a/win/CS/HandBrake.ApplicationServices/Services/ServerService.cs b/win/CS/HandBrake.ApplicationServices/Services/ServerService.cs index d8966c192..199e371a9 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/ServerService.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/ServerService.cs @@ -173,8 +173,8 @@ namespace HandBrake.ApplicationServices.Services // Setup the services we are going to use. IHandBrakeInstance instance = new HandBrakeInstance(); - scanService = new LibScan(new UserSettingService(), instance); // TODO this needs wired up with castle - encodeService = new LibEncode(new UserSettingService(), instance); + scanService = new LibScan(instance); + encodeService = new LibEncode(new UserSettingService(), instance); // TODO this needs wired up with castle shutdownFlag = new ManualResetEvent(false); shutdownFlag.WaitOne(); diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/GeneralUtilities.cs b/win/CS/HandBrake.ApplicationServices/Utilities/GeneralUtilities.cs index 35ecec7af..826ddd03a 100644 --- a/win/CS/HandBrake.ApplicationServices/Utilities/GeneralUtilities.cs +++ b/win/CS/HandBrake.ApplicationServices/Utilities/GeneralUtilities.cs @@ -82,20 +82,14 @@ namespace HandBrake.ApplicationServices.Utilities /// /// Add the CLI Query to the Log File. /// - /// - /// The version. - /// - /// - /// The build. - /// /// /// The create cli log header. /// - public static StringBuilder CreateCliLogHeader(string version, int build) + public static StringBuilder CreateCliLogHeader() { var logHeader = new StringBuilder(); - logHeader.AppendLine(String.Format("HandBrake {0} {1}", version, build)); + logHeader.AppendLine(String.Format("HandBrake {0} - {1}", VersionHelper.GetVersion(), VersionHelper.GetPlatformBitnessVersion())); logHeader.AppendLine(String.Format("OS: {0}", Environment.OSVersion)); logHeader.AppendLine(String.Format("CPU: {0}", SystemInfo.GetCpuCount)); logHeader.Append(String.Format("Ram: {0} MB, ", SystemInfo.TotalPhysicalMemory)); diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/PlistUtility.cs b/win/CS/HandBrake.ApplicationServices/Utilities/PlistUtility.cs index 3df28820f..4ddcda7f9 100644 --- a/win/CS/HandBrake.ApplicationServices/Utilities/PlistUtility.cs +++ b/win/CS/HandBrake.ApplicationServices/Utilities/PlistUtility.cs @@ -33,7 +33,7 @@ namespace HandBrake.ApplicationServices.Utilities /// The preset. /// /// - /// The build. + /// The build.PictureModulusPictureModulus /// public static void Export(string path, Preset preset, string build) { @@ -266,7 +266,7 @@ namespace HandBrake.ApplicationServices.Utilities AddEncodeElement(xmlWriter, "VideoAvgBitrate", "string", parsed.VideoBitrate.ToString()); AddEncodeElement(xmlWriter, "VideoEncoder", "string", EnumHelper.GetDisplay(parsed.VideoEncoder)); AddEncodeElement(xmlWriter, "VideoFramerate", "string", parsed.Framerate == null ? "Same as source" : parsed.Framerate.ToString()); - AddEncodeElement(xmlWriter, "VideFrameratePFR", "integer", parsed.FramerateMode == FramerateMode.PFR ? "1" : "0"); + AddEncodeElement(xmlWriter, "VideoFramerateMode", "string", parsed.FramerateMode.ToString().ToLower()); AddEncodeElement(xmlWriter, "VideoGrayScale", "integer", parsed.Grayscale ? "1" : "0"); AddEncodeElement(xmlWriter, "VideoQualitySlider", "real", parsed.Quality.ToString()); AddEncodeElement(xmlWriter, "h264Level", "string", parsed.H264Level); diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/VersionHelper.cs b/win/CS/HandBrake.ApplicationServices/Utilities/VersionHelper.cs new file mode 100644 index 000000000..b1a90d3e0 --- /dev/null +++ b/win/CS/HandBrake.ApplicationServices/Utilities/VersionHelper.cs @@ -0,0 +1,68 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Version Utility +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrake.ApplicationServices.Utilities +{ + using System; + using System.Reflection; + + /// + /// Version Utility + /// + public class VersionHelper + { + /// + /// The get build. + /// + /// + /// The . + /// + public static string GetVersion() + { + Version version = Assembly.GetEntryAssembly().GetName().Version; + return IsNightly() ? string.Format("svn{0} (Nightly Build)", version.Revision) : string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision); + } + + /// + /// The is nightly. + /// + /// + /// The . + /// + public static bool IsNightly() + { + Version version = Assembly.GetEntryAssembly().GetName().Version; + + // The MSBuild.xml script sets 0.0.0 for nightly builds. + return version.Major == 0 && version.Minor == 0 && version.Build == 0; + } + + /// + /// The get platform bitness. + /// + /// + /// The . + /// + public static string GetPlatformBitnessVersion() + { + return System.Environment.Is64BitProcess ? "64bit Version" : "32bit Version"; + } + + /// + /// Is a 64 bit app. + /// + /// + /// The . + /// + public static bool Is64Bit() + { + return System.Environment.Is64BitProcess; + } + } +} diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs index 1dc2a1e74..e7f172e32 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/Converters.cs @@ -17,10 +17,10 @@ namespace HandBrake.Interop using HandBrake.Interop.SourceData; using HandBrake.Interop.Model; - /// - /// The converters. - /// - public static class Converters + /// + /// Converters for various encoding values. + /// + public static class Converters { /// /// Video Frame Rates @@ -35,7 +35,7 @@ namespace HandBrake.Interop {24, 1125000}, {25, 1080000}, {29.97, 900900}, - {30, 900000}, + {30, 900000}, {50, 540000}, {59.94, 450450}, {60, 450000} @@ -94,8 +94,8 @@ namespace HandBrake.Interop return NativeConstants.HB_ACODEC_DCA_HD_PASS; case AudioEncoder.Vorbis: return NativeConstants.HB_ACODEC_VORBIS; - case AudioEncoder.ffflac: - return NativeConstants.HB_ACODEC_FFFLAC; + case AudioEncoder.ffflac: + return NativeConstants.HB_ACODEC_FFFLAC; } return 0; @@ -128,8 +128,8 @@ namespace HandBrake.Interop case NativeConstants.HB_ACODEC_CA_AAC: case NativeConstants.HB_ACODEC_CA_HAAC: return AudioCodec.Aac; - case NativeConstants.HB_ACODEC_FFFLAC: - return AudioCodec.Flac; + case NativeConstants.HB_ACODEC_FFFLAC: + return AudioCodec.Flac; default: return AudioCodec.Other; } @@ -204,11 +204,31 @@ namespace HandBrake.Interop public static HBMixdown NativeToMixdown(hb_mixdown_s mixdown) { return new HBMixdown - { + { Id = mixdown.amixdown, ShortName = mixdown.short_name, DisplayName = mixdown.human_readable_name - }; + }; + } + + /// + /// Converts the PTS amount to a TimeSpan. There may be some accuracy loss here. + /// + /// The PTS to convert. + /// The timespan for it. + public static TimeSpan PtsToTimeSpan(ulong pts) + { + return TimeSpan.FromTicks((long)((pts * 10000000) / 90000)); + } + + /// + /// Converts the PTS amount to seconds. + /// + /// The PTS to convert. + /// The corresponding number of seconds. + public static double PtsToSeconds(ulong pts) + { + return (double)pts / 90000; } } } diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/EventArgs/ScanProgressEventArgs.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/EventArgs/ScanProgressEventArgs.cs index b342c8f12..56c3c116a 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/EventArgs/ScanProgressEventArgs.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/EventArgs/ScanProgressEventArgs.cs @@ -9,21 +9,36 @@ namespace HandBrake.Interop.EventArgs { - using System; + using System; - /// - /// The Scan Progress Event Args - /// - public class ScanProgressEventArgs : EventArgs + /// + /// The Scan Progress Event Args + /// + public class ScanProgressEventArgs : EventArgs { - /// - /// Gets or sets CurrentTitle. - /// - public int CurrentTitle { get; set; } + /// + /// Gets or sets the total progress fraction for the scan. + /// + public float Progress { get; set; } - /// - /// Gets or sets Titles. - /// - public int Titles { get; set; } + /// + /// Gets or sets the current preview being processed on the scan. + /// + public int CurrentPreview { get; set; } + + /// + /// Gets or sets the total number of previews to process. + /// + public int Previews { get; set; } + + /// + /// Gets or sets the current title being processed on the scan. + /// + public int CurrentTitle { get; set; } + + /// + /// Gets or sets the total number of titles to process. + /// + public int Titles { get; set; } } } diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeInstance.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeInstance.cs index 0a1c8a32c..a65ca3e10 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeInstance.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeInstance.cs @@ -109,6 +109,11 @@ namespace HandBrake.Interop /// private List encodeAllocatedMemory; + /// + /// A value indicating whether this object has been disposed or not. + /// + private bool disposed; + /// /// Finalizes an instance of the HandBrakeInstance class. /// @@ -427,8 +432,8 @@ namespace HandBrake.Interop if (!string.IsNullOrEmpty(profile.X264Profile)) { - nativeJob.x264_profile = Marshal.StringToHGlobalAnsi(profile.X264Profile); - this.encodeAllocatedMemory.Add(nativeJob.x264_profile); + nativeJob.h264_profile = Marshal.StringToHGlobalAnsi(profile.X264Profile); + this.encodeAllocatedMemory.Add(nativeJob.h264_profile); } if (!string.IsNullOrEmpty(profile.X264Preset)) @@ -600,6 +605,11 @@ namespace HandBrake.Interop /// public void Dispose() { + if (this.disposed) + { + return; + } + this.Dispose(true); GC.SuppressFinalize(this); } @@ -620,6 +630,8 @@ namespace HandBrake.Interop Marshal.WriteIntPtr(handlePtr, this.hbHandle); HBFunctions.hb_close(handlePtr); Marshal.FreeHGlobal(handlePtr); + + this.disposed = true; } /// @@ -754,9 +766,16 @@ namespace HandBrake.Interop { if (this.ScanProgress != null) { - int currentTitle = state.param.scanning.title_cur; - int totalTitles = state.param.scanning.title_count; - this.ScanProgress(this, new ScanProgressEventArgs { CurrentTitle = currentTitle, Titles = totalTitles }); + hb_state_scanning_anon scanningState = state.param.scanning; + + this.ScanProgress(this, new ScanProgressEventArgs + { + Progress = scanningState.progress, + CurrentPreview = scanningState.preview_cur, + Previews = scanningState.preview_count, + CurrentTitle = scanningState.title_cur, + Titles = scanningState.title_count + }); } } else if (state.state == NativeConstants.HB_STATE_SCANDONE) @@ -930,8 +949,9 @@ namespace HandBrake.Interop { switch (job.RangeType) { + case VideoRangeType.All: + break; case VideoRangeType.Chapters: - if (job.ChapterStart > 0 && job.ChapterEnd > 0) { nativeJob.chapter_start = job.ChapterStart; @@ -950,9 +970,13 @@ namespace HandBrake.Interop throw new ArgumentException("Seconds range " + job.SecondsStart + "-" + job.SecondsEnd + " is invalid.", "job"); } - // For some reason "pts_to_stop" actually means the number of pts to stop AFTER the start point. - nativeJob.pts_to_start = (int)(job.SecondsStart * 90000); - nativeJob.pts_to_stop = (int)((job.SecondsEnd - job.SecondsStart) * 90000); + // If they've selected the "full" title duration, leave off the arguments to make it clean + if (job.SecondsStart > 0 || job.SecondsEnd < title.Duration.TotalSeconds) + { + // For some reason "pts_to_stop" actually means the number of pts to stop AFTER the start point. + nativeJob.pts_to_start = (int) (job.SecondsStart * 90000); + nativeJob.pts_to_stop = (int) ((job.SecondsEnd - job.SecondsStart) * 90000); + } break; case VideoRangeType.Frames: if (job.FramesStart < 0 || job.FramesEnd < 0 || job.FramesStart >= job.FramesEnd) @@ -1005,7 +1029,7 @@ namespace HandBrake.Interop nativeJob.crop[2] = crop.Left; nativeJob.crop[3] = crop.Right; - var filterList = new List(); + var filterList = new List(); // FILTERS: These must be added in the correct order since we cannot depend on the automatic ordering in hb_add_filter . Ordering is determined // by the order they show up in the filters enum. @@ -1115,7 +1139,7 @@ namespace HandBrake.Interop } string vfrSettings = string.Format(CultureInfo.InvariantCulture, "{0}:{1}:{2}", nativeJob.cfr, nativeJob.vrate, nativeJob.vrate_base); - this.AddFilter(filterList, (int) hb_filter_ids.HB_FILTER_VFR, vfrSettings, allocatedMemory); + this.AddFilter(filterList, (int)hb_filter_ids.HB_FILTER_VFR, vfrSettings, allocatedMemory); // Deblock if (profile.Deblock > 0) @@ -1296,12 +1320,9 @@ namespace HandBrake.Interop nativeJob.crop[1], nativeJob.crop[2], nativeJob.crop[3]); - this.AddFilter(filterList, (int) hb_filter_ids.HB_FILTER_CROP_SCALE, cropScaleSettings, allocatedMemory); + this.AddFilter(filterList, (int)hb_filter_ids.HB_FILTER_CROP_SCALE, cropScaleSettings, allocatedMemory); + - // Construct final filter list - NativeList filterListNative = InteropUtilities.CreateIntPtrList(filterList); - nativeJob.list_filter = filterListNative.ListPtr; - allocatedMemory.AddRange(filterListNative.AllocatedMemory); @@ -1432,8 +1453,17 @@ namespace HandBrake.Interop } } } + + bool hasBurnedSubtitle = job.Subtitles.SourceSubtitles.Any(s => s.BurnedIn); + if (hasBurnedSubtitle) + { + this.AddFilter(filterList, (int)hb_filter_ids.HB_FILTER_RENDER_SUB, string.Format(CultureInfo.InvariantCulture, "{0}:{1}:{2}:{3}", crop.Top, crop.Bottom, crop.Left, crop.Right), allocatedMemory); + } } + // Construct final filter list + nativeJob.list_filter = this.ConvertFilterListToNative(filterList, allocatedMemory).ListPtr; + if (profile.OutputFormat == Container.Mp4) { nativeJob.mux = NativeConstants.HB_MUX_MP4; @@ -1526,18 +1556,42 @@ namespace HandBrake.Interop /// The type of filter. /// Settings for the filter. /// The list of allocated memory. - private void AddFilter(List filterList, int filterType, string settings, List allocatedMemory) + private void AddFilter(List filterList, int filterType, string settings, List allocatedMemory) { IntPtr settingsNativeString = Marshal.StringToHGlobalAnsi(settings); hb_filter_object_s filter = InteropUtilities.ReadStructure(HBFunctions.hb_filter_init(filterType)); filter.settings = settingsNativeString; - IntPtr filterPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(hb_filter_object_s))); - Marshal.StructureToPtr(filter, filterPtr, false); - - filterList.Add(filterPtr); allocatedMemory.Add(settingsNativeString); - allocatedMemory.Add(filterPtr); + filterList.Add(filter); + } + + /// + /// Converts the given filter list to a native list. + /// + /// Sorts the list by filter ID before converting to a native list, as HB expects it that way. + /// The list memory itself will be added to the allocatedMemory list. + /// The filter list to convert. + /// The list of allocated memory to add to. + /// The converted list. + private NativeList ConvertFilterListToNative(List filterList, List allocatedMemory) + { + var filterPtrList = new List(); + + var sortedList = filterList.OrderBy(f => f.id); + foreach (var filter in sortedList) + { + IntPtr filterPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(hb_filter_object_s))); + Marshal.StructureToPtr(filter, filterPtr, false); + + allocatedMemory.Add(filterPtr); + filterPtrList.Add(filterPtr); + } + + NativeList filterListNative = InteropUtilities.CreateIntPtrList(filterPtrList); + allocatedMemory.AddRange(filterListNative.AllocatedMemory); + + return filterListNative; } /// @@ -1682,7 +1736,8 @@ namespace HandBrake.Interop Playlist = title.playlist, Resolution = new Size(title.width, title.height), ParVal = new Size(title.pixel_aspect_width, title.pixel_aspect_height), - Duration = TimeSpan.FromSeconds(title.duration / 90000), + Duration = Converters.PtsToTimeSpan(title.duration), + DurationPts = title.duration, AutoCropDimensions = new Cropping { Top = title.crop[0], @@ -1794,7 +1849,8 @@ namespace HandBrake.Interop var newChapter = new Chapter { ChapterNumber = chapter.index, - Duration = TimeSpan.FromSeconds(((double)chapter.duration) / 90000) + Duration = Converters.PtsToTimeSpan(chapter.duration), + DurationPts = chapter.duration }; newTitle.Chapters.Add(newChapter); diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs index 568e41a31..6833dfc36 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HandBrakeUtils.cs @@ -197,7 +197,8 @@ namespace HandBrake.Interop throw new ArgumentException("height must be positive."); } - return HBFunctions.hb_x264_param_unparse( + HBFunctions.hb_init(0, 0); + IntPtr ptr = HBFunctions.hb_x264_param_unparse( preset, string.Join(",", tunes), extraOptions, @@ -205,6 +206,11 @@ namespace HandBrake.Interop level, width, height); + + string x264Settings = Marshal.PtrToStringAnsi(ptr); + + + return x264Settings; } /// @@ -217,6 +223,8 @@ namespace HandBrake.Interop { switch (job.RangeType) { + case VideoRangeType.All: + return title.Duration.TotalSeconds; case VideoRangeType.Chapters: TimeSpan duration = TimeSpan.Zero; for (int i = job.ChapterStart; i <= job.ChapterEnd; i++) diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/HbFunctions.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/HbFunctions.cs index cd4ca877d..00130a902 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/HbFunctions.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/HbFunctions.cs @@ -338,7 +338,7 @@ namespace HandBrake.Interop.HbLib public static extern int hb_check_h264_level([In] [MarshalAs(UnmanagedType.LPStr)] string level, int width, int height, int fps_num, int fps_den, int interlaced, int fake_interlaced); [DllImport("hb.dll", EntryPoint = "hb_x264_param_unparse", CallingConvention = CallingConvention.Cdecl)] - public static extern string hb_x264_param_unparse( + public static extern IntPtr hb_x264_param_unparse( [In] [MarshalAs(UnmanagedType.LPStr)] string x264_preset, [In] [MarshalAs(UnmanagedType.LPStr)] string x264_tune, [In] [MarshalAs(UnmanagedType.LPStr)] string x264_encopts, diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/Misc.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/Misc.cs index fd464b7c8..c34f5daf5 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/Misc.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/Misc.cs @@ -145,6 +145,12 @@ namespace HandBrake.Interop.HbLib [StructLayout(LayoutKind.Sequential)] public struct hb_state_scanning_anon { + public float progress; + + public int preview_cur; + + public int preview_count; + /// int public int title_cur; diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/NativeConstants.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/NativeConstants.cs index e7a841251..23181e7fe 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/NativeConstants.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/NativeConstants.cs @@ -12,7 +12,7 @@ namespace HandBrake.Interop.HbLib { public partial class NativeConstants { - public const uint HB_ACODEC_MASK = 0x001FFF00; + public const uint HB_ACODEC_MASK = 0x00FFFF00; public const uint HB_ACODEC_FAAC = 0x00000100; public const uint HB_ACODEC_LAME = 0x00000200; public const uint HB_ACODEC_VORBIS = 0x00000400; @@ -26,7 +26,9 @@ namespace HandBrake.Interop.HbLib public const uint HB_ACODEC_DCA_HD = 0x00040000; public const uint HB_ACODEC_MP3 = 0x00080000; public const uint HB_ACODEC_FFFLAC = 0x00100000; - public const uint HB_ACODEC_FF_MASK = 0x001f2000; + public const uint HB_ACODEC_FDK_AAC = 0x00400000; + public const uint HB_ACODEC_FDK_HAAC = 0x00800000; + public const uint HB_ACODEC_FF_MASK = 0x00FF2000; public const uint HB_ACODEC_PASS_FLAG = 0x40000000; public const uint HB_ACODEC_PASS_MASK = (HB_ACODEC_MP3 | HB_ACODEC_FFAAC | HB_ACODEC_DCA_HD | HB_ACODEC_AC3 | HB_ACODEC_DCA); public const uint HB_ACODEC_AUTO_PASS = (HB_ACODEC_PASS_MASK | HB_ACODEC_PASS_FLAG); diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio.cs index 26b836094..a219c3db9 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_audio.cs @@ -69,6 +69,8 @@ namespace HandBrake.Interop.HbLib public int normalize_mix_level; + public int dither_method; + public IntPtr name; } diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_job_s.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_job_s.cs index d4c95d904..e9f08fe47 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_job_s.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/HbLib/hb_job_s.cs @@ -92,14 +92,14 @@ namespace HandBrake.Interop.HbLib public int fastfirstpass; - public IntPtr advanced_opts; - - public IntPtr x264_profile; - public IntPtr x264_preset; public IntPtr x264_tune; + public IntPtr advanced_opts; + + public IntPtr h264_profile; + public IntPtr h264_level; /// int diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/Model/VideoRangeType.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/Model/VideoRangeType.cs index a99005e77..afde441e5 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/Model/VideoRangeType.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/Model/VideoRangeType.cs @@ -9,29 +9,35 @@ namespace HandBrake.Interop.Model { - using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations; - /// - /// The video range type. - /// - public enum VideoRangeType - { - /// - /// The chapters. - /// - [Display(Name = "Chapters")] - Chapters, + /// + /// The video range type. + /// + public enum VideoRangeType + { + /// + /// The entire title. + /// + [Display(Name = "All")] + All, - /// - /// The seconds. - /// - [Display(Name = "Seconds")] - Seconds, + /// + /// A chapter range. + /// + [Display(Name = "Chapters")] + Chapters, - /// - /// The frames. - /// - [Display(Name = "Frames")] - Frames - } + /// + /// A timespan range in seconds. + /// + [Display(Name = "Seconds")] + Seconds, + + /// + /// A frame range. + /// + [Display(Name = "Frames")] + Frames + } } \ No newline at end of file diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/Properties/AssemblyInfo.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/Properties/AssemblyInfo.cs index 7536fd261..936eb0fa9 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/Properties/AssemblyInfo.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.35.0.0")] -[assembly: AssemblyFileVersion("1.35.0.0")] +[assembly: AssemblyVersion("1.40.0.0")] +[assembly: AssemblyFileVersion("1.40.0.0")] diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Chapter.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Chapter.cs index efec79d75..411a8d851 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Chapter.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Chapter.cs @@ -23,10 +23,15 @@ namespace HandBrake.Interop.SourceData public int ChapterNumber { get; set; } /// - /// Gets or sets the length in time this Chapter spans + /// Gets or sets the duration of this chapter. /// public TimeSpan Duration { get; set; } + /// + /// Gets or sets the duration of this chapter in PTS. + /// + public ulong DurationPts { get; set; } + /// /// Override of the ToString method to make this object easier to use in the UI /// diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs index 57201e847..8c7d65412 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs @@ -84,10 +84,15 @@ namespace HandBrake.Interop.SourceData public int Playlist { get; set; } /// - /// Gets or sets the length in time of this Title + /// Gets or sets the duration of this title. /// public TimeSpan Duration { get; set; } + /// + /// Gets or sets the duration of the title in PTS. + /// + public ulong DurationPts { get; set; } + /// /// Gets or sets the resolution (width/height) of this Title /// diff --git a/win/CS/HandBrakeWPF/Constants.cs b/win/CS/HandBrakeWPF/Constants.cs new file mode 100644 index 000000000..862f08011 --- /dev/null +++ b/win/CS/HandBrakeWPF/Constants.cs @@ -0,0 +1,27 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// +// +// Application Constants +// +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrakeWPF +{ + /// + /// Application Constants + /// + public class Constants + { + /// + /// The appcast 64. + /// + public const string Appcast64 = "http://handbrake.fr/appcast.x86_64.xml"; + + /// + /// The appcast 32. + /// + public const string Appcast32 = "http://handbrake.fr/appcast.i386.xml"; + } +} diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index 7622293d2..d7c81d861 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -130,6 +130,7 @@ + TimeSpanBox.xaml @@ -207,8 +208,6 @@ - - @@ -317,6 +316,7 @@ + SettingsSingleFileGenerator diff --git a/win/CS/HandBrakeWPF/Helpers/CliCheckHelper.cs b/win/CS/HandBrakeWPF/Helpers/CliCheckHelper.cs index ee0df3b88..2e69eacec 100644 --- a/win/CS/HandBrakeWPF/Helpers/CliCheckHelper.cs +++ b/win/CS/HandBrakeWPF/Helpers/CliCheckHelper.cs @@ -77,25 +77,16 @@ namespace HandBrakeWPF.Helpers while ((line = stdOutput.ReadLine()) != null) { Match m = Regex.Match(line, @"HandBrake ([svnM0-9.]*) \(([0-9]*)\)"); - Match platform = Regex.Match(line, @"- ([A-Za-z0-9\s ]*) -"); if (m.Success) { - string version = m.Groups[1].Success ? m.Groups[1].Value : string.Empty; string build = m.Groups[2].Success ? m.Groups[2].Value : string.Empty; int buildValue; int.TryParse(build, out buildValue); userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeBuild, buildValue); - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeVersion, version); success = true; } - - if (platform.Success) - { - userSettingService.SetUserSetting( - UserSettingConstants.HandBrakePlatform, platform.Value.Replace("-", string.Empty).Trim()); - } } while (!cliProcess.HasExited) @@ -118,8 +109,6 @@ namespace HandBrakeWPF.Helpers catch (Exception e) { userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeBuild, 0); - userSettingService.SetUserSetting(UserSettingConstants.HandBrakePlatform, string.Empty); - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeVersion, string.Empty); userSettingService.SetUserSetting(UserSettingConstants.HandBrakeExeHash, string.Empty); errorService.ShowError( diff --git a/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs index a202e0bbb..77106e397 100644 --- a/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs +++ b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs @@ -56,5 +56,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.9.9.5314")] +[assembly: AssemblyVersion("0.0.0.5311")] [assembly: NeutralResourcesLanguage("")] \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs.Nightly.tmpl b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs.Nightly.tmpl new file mode 100644 index 000000000..0a30129c7 --- /dev/null +++ b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs.Nightly.tmpl @@ -0,0 +1,60 @@ +/* AssemblyInfo.cs $ + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("HandBrake")] +[assembly: AssemblyDescription("HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("HandBrake")] +[assembly: AssemblyProduct("HandBrake")] +[assembly: AssemblyCopyright("Copyright © HandBrake Team 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.0.0.$WCREV$")] +[assembly: NeutralResourcesLanguage("")] \ 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 e2ccbcbda..7db59a4d0 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs +++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs @@ -386,7 +386,8 @@ namespace HandBrakeWPF.Properties { } /// - /// Looks up a localized string similar to The full x264 list of parameters: {0}. + /// Looks up a localized string similar to The full x264 list of parameters: + ///{0}. /// public static string Video_x264ExtraArgs { get { diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx index b39ace5a5..fed5d3923 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.resx @@ -238,7 +238,8 @@ may have problems with Weighted P-frame prediction: the Apple TV is completely i ..\Resources\logo64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - The full x264 list of parameters: {0} + The full x264 list of parameters: +{0} Reduce decoder CPU usage. diff --git a/win/CS/HandBrakeWPF/Services/Interfaces/IUpdateVersionService.cs b/win/CS/HandBrakeWPF/Services/Interfaces/IUpdateVersionService.cs deleted file mode 100644 index 3a84e68fc..000000000 --- a/win/CS/HandBrakeWPF/Services/Interfaces/IUpdateVersionService.cs +++ /dev/null @@ -1,22 +0,0 @@ -// -------------------------------------------------------------------------------------------------------------------- -// -// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. -// -// -// Defines the IUpdateVersionService type. -// -// -------------------------------------------------------------------------------------------------------------------- - -namespace HandBrakeWPF.Services.Interfaces -{ - /// - /// The IUpdateVersionService Interface - /// - public interface IUpdateVersionService - { - /// - /// Get's HandBrakes version data from the CLI. - /// - void SetCliVersionData(); - } -} \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Services/ScanServiceWrapper.cs b/win/CS/HandBrakeWPF/Services/ScanServiceWrapper.cs index 9cb6707f9..f66aff538 100644 --- a/win/CS/HandBrakeWPF/Services/ScanServiceWrapper.cs +++ b/win/CS/HandBrakeWPF/Services/ScanServiceWrapper.cs @@ -68,7 +68,7 @@ namespace HandBrakeWPF.Services else { HandbrakeInstance = new HandBrakeInstance(); - this.scanService = new LibScan(userSettingService, HandbrakeInstance); + this.scanService = new LibScan(HandbrakeInstance); } } catch(Exception exc) diff --git a/win/CS/HandBrakeWPF/Services/UpdateService.cs b/win/CS/HandBrakeWPF/Services/UpdateService.cs index 112493ac7..b95a1d862 100644 --- a/win/CS/HandBrakeWPF/Services/UpdateService.cs +++ b/win/CS/HandBrakeWPF/Services/UpdateService.cs @@ -87,10 +87,9 @@ namespace HandBrakeWPF.Services try { string url = - this.userSettingService.GetUserSetting(UserSettingConstants.HandBrakePlatform) - .Contains("x86_64") - ? this.userSettingService.GetUserSetting(UserSettingConstants.Appcast_x64) - : this.userSettingService.GetUserSetting(UserSettingConstants.Appcast_i686); + VersionHelper.Is64Bit() + ? Constants.Appcast64 + : Constants.Appcast32; var currentBuild = this.userSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeBuild); diff --git a/win/CS/HandBrakeWPF/Services/UpdateVersionService.cs b/win/CS/HandBrakeWPF/Services/UpdateVersionService.cs deleted file mode 100644 index e0de1d88a..000000000 --- a/win/CS/HandBrakeWPF/Services/UpdateVersionService.cs +++ /dev/null @@ -1,146 +0,0 @@ -// -------------------------------------------------------------------------------------------------------------------- -// -// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. -// -// -// Defines the UpdateVersionService type. -// -// -------------------------------------------------------------------------------------------------------------------- - -namespace HandBrakeWPF.Services -{ - using System; - using System.Diagnostics; - using System.IO; - using System.Security.Cryptography; - using System.Text.RegularExpressions; - using System.Windows; - - using HandBrake.ApplicationServices; - using HandBrake.ApplicationServices.Services.Interfaces; - - using HandBrakeWPF.Services.Interfaces; - - /// - /// Update Version Service - Handlers Update and Versioning. - /// - public class UpdateVersionService : IUpdateVersionService - { - /// - /// The Backing field for the user setting service - /// - private readonly IUserSettingService userSettingService; - - /// - /// The Error Service Backing field. - /// - private readonly IErrorService errorService; - - /// - /// Initializes a new instance of the class. - /// - /// - /// The user setting service. - /// - /// - /// The error Service. - /// - public UpdateVersionService(IUserSettingService userSettingService, IErrorService errorService) - { - this.userSettingService = userSettingService; - this.errorService = errorService; - } - - /// - /// Get's HandBrakes version data from the CLI. - /// - public void SetCliVersionData() - { - string line; - - // 0 = SVN Build / Version - // 1 = Build Date - - // Get the SHA1 Hash of HandBrakeCLI - byte[] hash; - string starupPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); - - using (Stream stream = File.OpenRead(Path.Combine(starupPath, "HandBrakeCLI.exe"))) - { - hash = SHA1.Create().ComputeHash(stream); - } - string base64Hash = Convert.ToBase64String(hash); - - // Compare the hash with the last known hash. If it's the same, return. - if (userSettingService.GetUserSetting(UserSettingConstants.HandBrakeExeHash) == base64Hash) - { - return; - } - - // It's not the same, so start the CLI to get it's version data. - Process cliProcess = new Process(); - ProcessStartInfo handBrakeCli = new ProcessStartInfo("HandBrakeCLI.exe", " -u -v0") - { - UseShellExecute = false, - RedirectStandardError = true, - RedirectStandardOutput = true, - CreateNoWindow = true - }; - cliProcess.StartInfo = handBrakeCli; - - try - { - cliProcess.Start(); - - // Retrieve standard output and report back to parent thread until the process is complete - TextReader stdOutput = cliProcess.StandardError; - - while (!cliProcess.HasExited) - { - line = stdOutput.ReadLine() ?? string.Empty; - Match m = Regex.Match(line, @"HandBrake ([svnM0-9.]*) \(([0-9]*)\)"); - Match platform = Regex.Match(line, @"- ([A-Za-z0-9\s ]*) -"); - - if (m.Success) - { - string version = m.Groups[1].Success ? m.Groups[1].Value : string.Empty; - string build = m.Groups[2].Success ? m.Groups[2].Value : string.Empty; - - int buildValue; - int.TryParse(build, out buildValue); - - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeBuild, buildValue); - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeVersion, version); - } - - if (platform.Success) - { - userSettingService.SetUserSetting(UserSettingConstants.HandBrakePlatform, platform.Value.Replace("-", string.Empty).Trim()); - } - - if (cliProcess.TotalProcessorTime.Seconds > 10) // Don't wait longer than 10 seconds. - { - Process cli = Process.GetProcessById(cliProcess.Id); - if (!cli.HasExited) - { - cli.Kill(); - } - } - } - - userSettingService.SetUserSetting(UserSettingConstants.HandBrakeExeHash, base64Hash); - } - catch (Exception e) - { - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeBuild, string.Empty); - userSettingService.SetUserSetting(UserSettingConstants.HandBrakePlatform, string.Empty); - userSettingService.SetUserSetting(ASUserSettingConstants.HandBrakeVersion, string.Empty); - userSettingService.SetUserSetting(UserSettingConstants.HandBrakeExeHash, string.Empty); - - this.errorService.ShowError("Unable to Initialise HandBrake", "This error is unrecoverable. Maybe try restarting.", e); - - Application.Current.Shutdown(); - } - } - } -} diff --git a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs index ae0369d7f..6f3428de3 100644 --- a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs +++ b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs @@ -76,7 +76,6 @@ namespace HandBrakeWPF.Startup this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); - this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); this.windsorContainer.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Singleton)); diff --git a/win/CS/HandBrakeWPF/UserSettingConstants.cs b/win/CS/HandBrakeWPF/UserSettingConstants.cs index 030cdedac..1f4c02fce 100644 --- a/win/CS/HandBrakeWPF/UserSettingConstants.cs +++ b/win/CS/HandBrakeWPF/UserSettingConstants.cs @@ -21,16 +21,6 @@ namespace HandBrakeWPF /// public const string AddOnlyOneAudioPerLanguage = "addOnlyOneAudioPerLanguage"; - /// - /// Appcast i686 - /// - public const string Appcast_i686 = "appcast_i686"; - - /// - /// Appcast 64 - /// - public const string Appcast_x64 = "appcast_x64"; - /// /// Auto name format /// @@ -196,11 +186,6 @@ namespace HandBrakeWPF /// public const string X264Step = "X264Step"; - /// - /// HandBrakes build - /// - public const string HandBrakePlatform = "HandBrakePlatform"; - /// /// The show advanced tab. /// @@ -211,6 +196,11 @@ namespace HandBrakeWPF /// public const string LastPreviewDuration = "LastPreviewDuration"; + /// + /// Disable LibHb Features + /// + public const string DisableLibHbFeatures = "DisableLibHbFeatures"; + #endregion } } \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/AboutViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AboutViewModel.cs index 2fa4913a6..cb9cef3e7 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AboutViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AboutViewModel.cs @@ -9,7 +9,7 @@ namespace HandBrakeWPF.ViewModels { - using HandBrake.ApplicationServices; + using HandBrake.ApplicationServices.Utilities; using HandBrakeWPF.ViewModels.Interfaces; @@ -33,12 +33,7 @@ namespace HandBrakeWPF.ViewModels { get { - string nightly = UserSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion).Contains("svn") ? " (SVN / Nightly Build)" : string.Empty; - return string.Format( - "{0} ({1}) {2}", - UserSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeVersion), - UserSettingService.GetUserSetting(ASUserSettingConstants.HandBrakeBuild), - nightly); + return string.Format("{0} - {1}", VersionHelper.GetVersion(), VersionHelper.GetPlatformBitnessVersion()); } } diff --git a/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs index aa447e2e2..f4f496fcb 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs @@ -12,8 +12,6 @@ namespace HandBrakeWPF.ViewModels using System.Collections.Generic; using System.Windows; - using Caliburn.Micro; - using HandBrake.ApplicationServices.Model; using HandBrake.ApplicationServices.Services; using HandBrake.ApplicationServices.Services.Interfaces; @@ -27,6 +25,8 @@ namespace HandBrakeWPF.ViewModels /// public class AddPresetViewModel : ViewModelBase, IAddPresetViewModel { + /* TODO this window is up for redesign. Quite a few nippy edge cases that can cause odd behaviour with importing presets. */ + /// /// Backing field for the Preset Service /// @@ -50,16 +50,13 @@ namespace HandBrakeWPF.ViewModels /// /// Initializes a new instance of the class. /// - /// - /// The window manager. - /// /// /// The Preset Service /// /// /// The Error Service /// - public AddPresetViewModel(IWindowManager windowManager, IPresetService presetService, IErrorService errorService) + public AddPresetViewModel(IPresetService presetService, IErrorService errorService) { this.presetService = presetService; this.errorService = errorService; @@ -151,6 +148,12 @@ namespace HandBrakeWPF.ViewModels } } + if (this.SelectedPictureSettingMode == PresetPictureSettingsMode.SourceMaximum && (this.Preset.Task.Width == null || this.Preset.Task.Width == 0)) + { + this.errorService.ShowMessageBox("You must first scan a source to use the 'Source Maximum' Option.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + return; + } + this.Preset.UsePictureFilters = this.Preset.UsePictureFilters; this.Preset.PictureSettingsMode = this.SelectedPictureSettingMode; diff --git a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs index 516fc7642..2146b1c6c 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs @@ -9,6 +9,7 @@ namespace HandBrakeWPF.ViewModels { + using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; @@ -37,6 +38,8 @@ namespace HandBrakeWPF.ViewModels /// private IEnumerable