dynaflash [Wed, 13 Jun 2007 16:07:42 +0000 (16:07 +0000)]
MacGui: Add Turbo option for x264 two pass encoding
- Adds a Turbo checkbox under the 2-pass checkbox in the video tab if x264 is selected and 2-pass is checked, otherwise the Turbo checkbox is hidden and deselected
- Appends ":ref=1:subme=1:me=dia:analyse=none:weightb=0:trellis=0:no-fast-pskip=0:8x8dct=0" to a given x264 option string on the first pass of a two pass encode if the Turbo checkbox is checked.
- in testing, roughly doubles the first pass encoding speed using the HB-AppleTV preset opt string on a 2 pass encode.
jbrjake [Tue, 12 Jun 2007 03:39:39 +0000 (03:39 +0000)]
Disables extra audio tracks so they don't all play over the main audio track in QuickTime. They can be re-enabled from the Properties menu in QT Pro or with Dumpster. Shouldn't have any affect on people who use sane video players. Props to eddyg for reporting the issue, identifying the atom in question, and castigating me for my lazy and unkempt coding ways.
cleaner [Sun, 10 Jun 2007 17:07:43 +0000 (17:07 +0000)]
MacGui: Proposal for replacing UpdateUI timer in HBController. HBCore is a more ObjC-like interface to the core libhb library. It provides notifications of libhb state changes via NSNotificationCenter. Interfaces for scanning, encoding, bindings etc. can be added later. Note: this class is not used in HB (yet).
cleaner [Wed, 6 Jun 2007 17:12:12 +0000 (17:12 +0000)]
- Moved preferences window from MainMenu.nib to Preferences.nib
- Moved languages from PrefsController.m to Preferences.nib
- Renamed PrefsController to HBPreferencesController
- Implemented bindings in Preferences.nib
- Enabled autocomplete in audio language combobox
jbrjake [Wed, 6 Jun 2007 02:09:41 +0000 (02:09 +0000)]
A big batch of patches from eddyg.
Adds following options to the CLI:
--subtitle-scan for auto-selecting subtitles for foreign language segments in native language audio tracks
--native-language for auto-selecting subtitles for foreign language audio without knowing the track number
--longest for auto-selecting the longest title like in the MacGui
--turbo for improving speed on the first pass of a two pass encode with x264 (based on superdump's turbo x264 options in mencoder).
cleaner [Tue, 5 Jun 2007 20:09:13 +0000 (20:09 +0000)]
Moved initialization of default preferences from [PrefsController awakeFromNib] to class method [PrefsController registerUserDefaults], which is called from [HBController init].
This fixes problem with preferences when using HB for the first time, or after deleting the user defaults file.
jbrjake [Sun, 27 May 2007 20:24:11 +0000 (20:24 +0000)]
MacGui: switches the x264 option widgets for mixed-refs, weightb, brdo, bime, b-pyramid, no-dct-decimate, and no-fast-pskip to be checkboxes, which makes more sense than popup buttons for booleans.
I've never worked with switches before, so hopefully I didn't break anything. Also never checked in this many GUI changes at once. So maybe I did break something =)
jbrjake [Tue, 22 May 2007 16:42:46 +0000 (16:42 +0000)]
MacGui: adds deblocking widgets for the x264 advanced options tab. God this one was a pain. Haven't decided yet whether to include a boolean to turn deblocking on and off. Not sure where I'd stick it right now, at least.
dynaflash [Mon, 21 May 2007 16:50:21 +0000 (16:50 +0000)]
MacGui: Debug Window to read libhb output like cli in inspector window
- Thank You Cleaner!!
- Adds Debug Output to Window menu
- Adds Verbose pref to preferences menu
- MacGui now reads output from libhb like cli
- May add pref to open Debug Output window upon launch
- All credit goes to Cleaner, Thank You!
jbrjake [Wed, 16 May 2007 18:34:29 +0000 (18:34 +0000)]
MacGui: adds x264 option widgets for b-rdo, weight, and b-pyramid. And a little layout reorganization to take advantage of the space freed up by dynaflash's last commit. Yes, I know the dividing lines are ugly. They are temporary.
dynaflash [Wed, 16 May 2007 14:43:08 +0000 (14:43 +0000)]
macGui: move "Duration" to the title/chapter line for source and move "Output" section up into that space.
Increase the height of the tabbed views to free up space for more tabbed info.
jbrjake [Tue, 15 May 2007 20:49:03 +0000 (20:49 +0000)]
MacGui: use subq for subpixel motion estimation instead of subme. This helps avoid those string-searching issues touched on in the past two commits.
This will have to be revisited when I add a "bime" option, because that will probably conflict with what dynaflash added in the last commit to sort this problem out.
dynaflash [Tue, 15 May 2007 20:33:42 +0000 (20:33 +0000)]
macGui: fix bug in Advanced x264 option widgets
Modify the test to see if an optName already exists to avoid conflict with similar name patterns in the -X264AdvancedOptionsChanged: method where we test for the presence of the optNameToChange in the existing string.
jbrjake [Tue, 15 May 2007 19:11:17 +0000 (19:11 +0000)]
MacGui: x264 options widget for motion estimation. This is the first widget to use strings for values instead of numbers, so it's a little wonky. Right now, if you don't have a motion est. value specified, but you do have another option with "me" in the name (like "subME" or "b-fraMEs"), the widget will be unresponsive.
Hopefully I'm not accidentally breaking anything with this commit. Had to revert, update, and rewire some stuff after I tried to commit and realized I'd missed a revision.
jbrjake [Tue, 15 May 2007 16:24:30 +0000 (16:24 +0000)]
MacGui: pretty up the x264 option section of controller.mm by using uniform white space (soft 4-space tabs) and adding a few carriage returns in clutch places for human legibility.
jbrjake [Wed, 9 May 2007 21:41:13 +0000 (21:41 +0000)]
Removes thread limitation for iPod encoding. With x264's new-ish sliceless threading method, there is no longer any need, if there ever was, of keeping the video to 1 slice. This should significantly speed up iPod encodes and shut up the people claiming HB can't use more than 70% of a processor.
dynaflash [Wed, 9 May 2007 17:31:31 +0000 (17:31 +0000)]
MacGui: Advanced Tab only shows x264 opt widgets when x264 is selected as the codec. Otherwise, displays a message to that effect.
- Put the x264 options in a custom NSView which hides it and its contents unless x264 is selected
- add field at the top to show the status of the Advanced Tabs contents which is triggered in the - CodecsPopUpChanged method.
dynaflash [Wed, 9 May 2007 15:05:26 +0000 (15:05 +0000)]
MacGui: Main Window Layout Change
- Moved the Codecs popup from below Format to the right of Format. They are now on one line.
- Expanded the height of the NSTabView to allow for more controls in each tab
jbrjake [Wed, 9 May 2007 00:37:49 +0000 (00:37 +0000)]
MacGui: rearranges the x264 option widgets in preparation for adding more, and gives them tool tips so they're a little more accessible to the average user. Oh yeah, and instead of "Unspecified" I've hard-coded in for display what the default option values are.
dynaflash [Tue, 8 May 2007 17:16:20 +0000 (17:16 +0000)]
macGui: Advanced Tab - Initial Implementation
- add gui "widgets" to control the x264 advanced option string.
- Not all options are "widgetized" yet.
- Modifies those it has widgets for, leaves the rest of the string intact.
- This rev, only sets opts that have an integer value.
- Adding widgets requires adding values to controller.h as well as these methods in controller.mm:
-X264AdvancedOptionsSet: adds the actual values for the given outlet in the nib
-X264AdvancedOptionsStandardizeOptNames: standardizes the opt names that have multiple connotations
-X264AdvancedOptionsSetCurrentSettings: Reads and sets the widgets according to the current string whether pasted in by user, set by preset, or set by field in preferences
-X264AdvancedOptionsChanged: Changes the string based on the widget used, including "Unspecified" which just removes it from the string altogether.
maurj [Sun, 6 May 2007 21:32:01 +0000 (21:32 +0000)]
Updated the input channel layouts to store the source LFE information as well as the non-LFE layout. This is so muxavi.c can output the correct channel count for AC3 passthru for all AC3 sources. Updated Controller.mm, scan.c and work.c to use these revised layouts.
Added a new property to the work object, to remember the source audio codec for audio work objects. This enables encfaac to detect an 6-channel AC3 source to apply the QuickTime 6-channel audio mapping (as opposed to a DTS source, which doesn't need it).
Fixed the Dolby Pro Logic I/II downmix mappings in libdca and updated the libdca patch. Uploaded a new set of pre-built darwin contribs (0014) with this patch applied.
maurj [Fri, 4 May 2007 20:25:54 +0000 (20:25 +0000)]
Updated do_job() in work.c to remove any non-AC3 audio tracks from the job before performing AC3 passthru. This prevents Bad Things from happening when a DTS, MPEG2 or LPCM audio track is selected and AC3 passthru to AVI is selected.
maurj [Fri, 4 May 2007 20:06:33 +0000 (20:06 +0000)]
Reverted the rev567 "configure" change, as of course you don't need to run configure if you're just doing a make, so my change was inaccurate. So, this reverts back to the rev566 version of configure, albeit with the "MediaFork" reference changed to "HandBrake".
maurj [Fri, 4 May 2007 20:02:03 +0000 (20:02 +0000)]
Changed a few "MediaFork" references in the textfile docs to say "HandBrake" instead. Amended the "configure" success output to recommend "make" over "jam" for Mac OS X builds, as this is a better option for the average SVN checkout user now that the UB precompiled contribs system is working well.
maurj [Fri, 4 May 2007 19:53:10 +0000 (19:53 +0000)]
Updated BUILD to include information about the updated version of libtool, autoconf and automake needed to jam libdca on Mac OS X. Updated AUTHORS to give me credit for the DTS integration, and updated CREDITS to give credit to the libdca authors.
maurj [Fri, 4 May 2007 17:23:47 +0000 (17:23 +0000)]
Enabled DTS channel mixdowns by moving to a more generic input channel layout set of constants. Updated Controller.mm to use these generic input layout constants when deciding which mixdowns to offer.
jbrjake [Wed, 2 May 2007 23:26:18 +0000 (23:26 +0000)]
Tells x264 to use threads=cpus*1.5 instead of threads=cpus. This is because x264 implemented sliceless threading since we last updated the revision we use. The codec now works best with more threads than processors, as odd as that seems at first blush.
jbrjake [Wed, 2 May 2007 16:58:15 +0000 (16:58 +0000)]
Updates x264 from r604 to r654, giving HandBrake sliceless threading, among other things. Updates the MacIntel patch to continue working (needs testing), comments out the Linux patch since it seems all its changes have been merged into the x264 source (needs testing). New Mac and Cygwin contrib binary packs will have to be made.
maurj [Wed, 2 May 2007 15:56:39 +0000 (15:56 +0000)]
Added support for DTS audio. DTS audio streams (of 5.1 audio and below) will be detected and decoded. This requires a new library - libdca (and patch) - which is included (in patched form) in a new version of the pre-built UB Darwin contribs (0012). These have been uploaded to download.m0k.org/handbrake/contrib/ .
I haven't yet added any code to Controller.mm to recognise the DTS streams as supporting mono / 6ch DPL1 / DPL2 downmixes.
Note: running Jam on the new library required me to update some tools on Mac OS X - possibly libtool, autoconf, automake. Not sure which made the difference, but these were the ones I updated. it won't jam successfully without this.
macGui: x264 Advanced preset strings, if user has specified a default string in prefs, it is used and the most recent one (whether manually entered or from a preset) is not used.
-Built in presets now use all values in their dictionary to make the .plist more compatible for export to the CLI
MacGui: Advanced Tab initial implementation
- Sets groundwork for more robust x264 advanced options implementation
- currently strings are displayed and editable via textfield for x264 encodes
- for right now, the x264 string from preferences is ignored, need to figure out best way to implement that string.
- New Preset now takes the value from that field in advanced, negating the need for the field in "Add new Preset" window.
- NOTE: this also implements the new "Use Picture Settings" in presets to allow for "None", Use Current","Use Max from source".
macGui: Growl Support initial implementation
- include Growl.framework in xcode project
- Growl notify when encode is done
- fix cancelled encode finished bug
- may want a user pref to let them select if they want a notification and what type, on screen or grow. or both
- right now, its both.
macGui: Encode Done Notification initial implementation
- System alert sound as well as an NSAlert window to notify the user their encode is completed.
- No dock icon bounce yet.
Various fixes:
- Include parsecsv.c in the Jamfile so we can compile the CLI with Jam
- Quiet some compiler warnings in parsecsv.{c,h}
- Check some return values in muxmp4.c and encfaac.c and die gracefully if there is a problem.
- Correctly set the number of audio channels in the stsd atom.
MacGui: Queue modifications
- Queue is now integral to encoding
- removed "Enable Queue" Checkbox
- made "Add to Queue" and "Show queue" always usable
- Rip method in controller.mm always calls addToQueue even for one rip, but then automatically rips it.
- Added queue status field.
- fixes bug in 0.8.5 where having queue enabled and clicking rip with nothing in the queue causes HB to do nothing.
Named Chapter Markers build fix
- xcode project required to successfully build.
- failed on previous commit.
- This should be last thing for successful build
Getting the Jamrules and Makefile.config ready for the return of the update checker.
- Ends HB_BUILD with an odd number, denoting an unstable (beta) build
- Updates HB_VERSION in Jamrules to 0.8.5b1
The LATEST file still needs to be iterated on the webserver, after which update checking can be switched on.
Improved the bitrate in Controller.mm to deal with different bitrates for different codecs, to avoid disappointed users, and applications crashes.
Instated a max of 320 kbps for MP3, as it won't encode at 384. Instated a min of 48 kbps for Vorbis, as it crashes if anything lower is selected.
Changed the approach to setting and retrieving the bitrates slightly, to use the NSPopUpButton's menuitem tags to store the bitrate for each item (since not all menus will have all items).
MacGui: Initial implementation of capping avialable bitrates depending on audio track mixdown
- added AudioTrackMixdownChanged method to controller.mm which evaluates other selections and adjusts available bitrates to choose from
- currently just caps bitrates at 160 for anything other than 6 channel discrete
- 6 channel discrete in either audio track mixdown enables bitrates up to 384.
- Will likely need to add other conditions as well
Small change to Controller.mm to ensure that Stereo is offered as a mixdown when we have a mono audio source but a non-mono-supporting output codec. Previously, no mixdown was being offered in this situation.
This change stops Presets from saving and loading "language / audio format" track selections (the "Track 1/2" popups) and mixdowns (the "Track 1/2 Mix" popups) in the Mac OS GUI. In practice, this was causing more confusion than the default behaviour.
Add 384 kbps to Audio Bitrates selection for use with 6 channel discrete
- We still need to filter out which bitrates are available depending on mixdown. Right now, you can select 320 in gui for a stereo track even though libhb limits it to 160, so its misleading.
MacGui: Replace the "Rip" button with "Start". As we are generally removing reference to ripping in regard to HandBrake ... even though it sort of still can.
MacGui: Minor cosmetic changes
- Change preset buttons "+", "-", and drawer toggle buttons to the Small Square type
- Blame jbrjake if you don't like them :)
MacGui: Cosmetic change and default pref change
- Make CRF the default method for Constant Quality encodes
- Change the "Audio" tab to "Audio & Subtitles" so people dont get all in an uproar about where the subtitles are located
MacGui: Clean up a few things w/x264optstring prefs and presets
- Change abr of AppleTV built in preset to 2500 kbps
- Note: as usual, after updating your copy, use "Update Built-In Presets" in the presets menu for changes to take effect.
- Fix so that closing picture window does not reset the preset chosen display to "Custom"
- Add a user preference to show or hide the chosen x264 option strings in the main gui window. Defaults to off.
Improved the Mac OS GUI's handling of language / audio track settings in presets. It is now much better placed to deal with scenarios where the preset's saved language / audio setting doesn't have a match in the selected title's audio list.
So, e.g. if you insert a disk with a title with only mono AC3 tracks, but the preset is "English AC3 5.1", then it will default to selecting the first audio track rather than selecting "None".
In making these changes, I've also added some utility functions to Controller.mm - one to add all audio tracks for a title to a popup menu, and one to select a track in a popup menu based on a search prefix string. These are really just tidying up what was already there in a reusable way.
Removed all references to the old job->surround variable, as it is no longer used. Also, removed the "Extract 5.1 Dolby Digital to 6-Channel AAC" preference option from the Mac OS GUI prefs window and controller, as it is no longer needed. It may be worth adding in a new "Default mixdown" preference in its place for a future version of Handbrake?
MacGui: Picture Preview - Anamorphic
- Properly show the anamorhic height instead of output height.
- This distorts the preview picture in HB's Picture Preview, but is actually correct.
MacGui: Fix Presets mangling the x264 option strings for the umpteenth time.
- Replace the Optional x264 string NSTextView with an NSTextField
- Change when the field is emptied after creation.
- Reset the value of the ChickenSandwich.
Much better B-frame muxing frame-reordering. This will preserve the sps/pps info, properly offset the first frame, and flush any remaining frames at the end of the encode.
Fixed a bug in the Mac GUI (Controller.mm), introduced in rev 511, whereby selecting "none" on an audio popup when "none" was already selected on the other audio popup would cause an infinite loop, leading to a crash.
Changed the audio popup logic in PrepareJob to use the second audio track settings as the first audio track when the first audio track is set to "none" but the second audio track has a source track selected.
Amended controller.mm to prevent the user from selecting the same audio track twice in the Mac GUI. This is because we are currently unable to extract the same track twice without ending up with silence in the second audio.
Amended a few calls to AudioTrackPopUpChanged to use the convenience version of this function, which passes in a mixdownToUse value of 0.