konablend [Tue, 1 Oct 2013 01:38:19 +0000 (01:38 +0000)]
BuildSystem: fix Xcode when building w/ clang targeting 10.6
When using clang (the new project default compiler), disable
implicit objc-runtime linking for 10.6 only.
Before fix, the following error is produced:
Undefined symbols for architecture x86_64:
"_objc_retain", referenced from:
___ARCLite__load in libarclite_macosx.a(arclite.o)
(maybe you meant: _objc_retainedObject)
ld: symbol(s) not found for architecture x86_64
WinGui: All the hardware acceleration options are now available view a new tab on the Options screen. This includes the OpenCL scaling, QuickSync and DXVA decode support.
Unlike the maximum limit, which is HandBrake-specific, this is not our bug, and we can't fix it, short of dropping support for all old Haswell drivers.
Tested on MacOSX 10.8.5 w/ Xcode 5.0, 4.6.3 and 4.5.2, various builds,
including terminal Xcode, terminal no Xcode and Xcode IDE,
and permutations with/without mp4v2 and mkv.
- push defs for optional static libraries (OSL) to respective modules
- adjust make-driven linking to use OSL
- adjust Xcode-driven linking to use OSL via ld -filelist option
- add Xcode project group for all OSL
- set Xcode project to use clang compiler
- add osx 10.8 xcconfig files
- add "supplemental" xcconfig file where EXTERNAL_CONFIGURE may be used
to specify configure-time options
- patch mp4v2 to compile with clang
Intructions for custom configure-options within Xcode IDE:
1. edit macosx/xcconfig/supplemental.xcconfig
2. save file (unsure how long it takes IDE to see change but it does)
3. build clean
4. build
5. never commit supplemental.xcconfig to repository - it is meant to
exist but not effect the build on a clean checkout, and to be used
only as a developer transient developer customization file.
This makes libhb expect all strings passed to it to be in utf8 format.
The cli converts the converts from the current code page to utf8. libhb
converts back to the current code page when necessary for libraries that
expect it.
WinGui: Added a new tab in Options to host "Video" related settings including hardware acceleration. Only showing the QuickSync options. DXVA/OpenCl options are hidden for now.
Merging-in the OpenCL Scaling code from the OpenCL branch to trunk.
Patch originally by the Multicoreware Inc team, followed by improvements and fixes by Micheal Wootton from AMD Inc,
OpenCL:
This patch implements Bicubic Scaling in OpenCL.
Note that HandBrake currently uses Lanczos so the performance difference appears to be much more significant. We may offer an option of BiCubic in software later.
Bicubic scaling may appear a bit sharper than the equivalent Lanczos encode and may increase file size a bit. Quality may be better or worse depending on the scaling and content and personal preference towards sharpness.
When comparing performance with a custom HandBrake build that runs Software Bicubic to OpenCL Bicubic, performance increase is about 5~7% on average on a modern GPU.
Hardware Decode via DXVA:
We also have optional DXVA decoding which may come in useful for slower/lower end systems that have a capable GPU.
This is only available on input sources that use the libav decode path.
Most GPU hardware for decoding is designed for playback, so if you are running on a high end CPU, it will bottleneck the encode process.
Requires OpenCL 1.1 or later supporting GPU.
Front end changes and testing framework are not included in this patch. This will be resolved later.
Patch will be revised further before the UI is implemented.
libhb: fix scanning some dvds
e.g. star trek into darkness
This reverts part of a patch that was originally written for dvdread
access. So we need to watch for regressions.
The patch was originally written for dvdread access and my not actually be
a bug in dvdnav. So I have reverted it in dvdnav only. I also tried to
reproduce the original bug in dvdread, but was unsuccessful. So I'm
wondering if the original bug also got "fixed" by subsequent changes.
The original bug report is here:
https://forum.handbrake.fr/viewtopic.php?f=4&t=9758&start=0
The original fix is here:
https://trac.handbrake.fr/changeset/2256
Interop: Removed unused structs and constants and added warnings in libhb code to update the ones that are used. Broke out types for each struct into their own file. Switched all references to hb_handle_s to IntPtr and deleted that non-working struct.
Interop: Various fixes/improvements
* Exposed container list and changing compatible containers from an enum to an int to allow pulling the container list dynamically.
* Removed a few unused and out-of-date functions and structs.
* Updated a few structs to better track with the QSV changes.
* Added a method to create a pointer to a UTF-8 encoded string.
* Dither now is chosen automatically rather than turned off, which helps with FDK AAC.
* Fixed unicode custom chapter names.
WinGui: Fix the Automatic Auto selection when a preset is selected. Honour the preset using the primary track, then follow the rules of the automatic selection.
WinGui: Change the implementation of the Source Menu Image handling. Hopefully this might workaround a crash some people are seeing in the .NET BitmapDecoder object.
WinGui: Fix around logging when the TextWriter is closed and Removed an unneeded error handler in Interop library. (libavformat mp4 muxer does not have a large file size option)
WinGui: Fix an issue with cropping param not being send to the CLI in AutoMode. This is an issue where scan previewer count >10.
Fixed an Auto-Name issue for DVD drives.
QSV: choose and re-use a "preferred" implementation instead of using MFX_IMPL_AUTO_ANY.
This fixes a rare issue where hardware support was detected as available and used in encqsvInit, but MFXInit silently fell back to software in qsv_enc_init (still don't know what that's all about though).
sr55 [Fri, 23 Aug 2013 22:01:06 +0000 (22:01 +0000)]
WinGui: Implement hb_qsv_available in the UI so that the encoder isn't shown when the build hasn't been built with quicksync support or the system doesn't support it.
randomengy [Fri, 23 Aug 2013 03:06:23 +0000 (03:06 +0000)]
Interop: Updated some structs to keep up with libhb. Exposed video quality limits. Exposed libhb language list. Suppressed a non-fatal avformat seek error. Fixed localization error in video rates list. Fixed missing sample rate for encoder-specific passthroughs. Fixed "disabled" quality level.
sr55 [Thu, 22 Aug 2013 21:11:19 +0000 (21:11 +0000)]
WinGui: Improved Audio Listbox Item style. Moved to a single line design. Since most people generally don't use the DRC, Gain and Sample rate controls, these have been moved into the expandable area instead.
sr55 [Thu, 22 Aug 2013 16:45:03 +0000 (16:45 +0000)]
WinGui: Use LibHB for scanning. CLI is no longer used. It seems to be stable enough now and it's quite a bit quicker at scanning. Encode is still optionally libhb.
sr55 [Wed, 21 Aug 2013 16:07:48 +0000 (16:07 +0000)]
WinGui: Initial work around around a when done countdown.
When a queue finishes it will now popup a window giving the user 60 seconds to cancel the when done operation.
ritsuka [Mon, 19 Aug 2013 14:26:23 +0000 (14:26 +0000)]
MacGui: use FSEvent api to create a FSEventStream to keep track of when a file inside the Queue folder is update. Move Queue.plist inside a folder because FSEvent can only track changes at folder level, so we have a folder with just a file inside.
Whenever something happens inside the Queue folder, HandBrake reload Queue.plist.