I recently started using handbrake to solve the common annoyance of .wmv audio sync problems which I discovered were due to the source being (foolishly) encoded using a variable frame rate (VFR) MeGUI/Avisynth could not convert to CFR without audio sync problems, et voila! Handbrake apparently can, so I like.
- [Aside: For the love of all mankind, video sharers please STOP using variable frame rate for normal video! The advantages do not outweigh the disadvantages unless your video is mostly a cartoon or a slide show, modern codecs can deal with duplicate frames very efficiently. It's also best to avoid proprietary Microsoft wmv codecs and containers when possible, period, for many reasons.]
So I'd like to help. I'm a software engineer (Assembly/C/C++/C# mostly), and like most the guys here my time is limited, but I'm sure I can contribute. I'm using the latest Win32 (x86) build, but my thinking is cross-platform here. I quickly realized one of the strengths -- and weaknesses -- of Handbrake is its UI. While fairly robust, it has some areas of confusion which would be really easy to address with fairly little code.
Near as I can tell the UI design is an attempt to simplify the many complex options involved in video transcoding. Unfortunately, the effort is mostly ineffective because the user must constantly second-guess the UI and there are so many basic options unavailable, supplanted by ones made unnecessarily complex by Handbrake's particular interpretation of what's important and what isn't.
- "Picture settings" inclusion in saved profile. This is a rather confusing label, I'd suggest instead "Crop/Resizing" or "Dimensions" something similar, but more importantly there appears to be no option to simply disable it. In the query string, there's always -w -h and related options. I tried putting both zero and -1 in for options in the GUI, but that didn't work.
Solution: Re-label and add an enable/disable checkbox that greys out the entire tab.
Missing or confusing x264 options + advanced string section This could solve a lot of confusion problems, as many new Handbrake users are going to be familiar with x264 options but not Handbrake's new way of viewing them (fortunately the Tooltips are some of the best I've seen).
a. Framerate: Include an additional option to convert to a specified CFR that is the same as the source.
b. Quantizer: It took me an hour to figure out there's no way to specify quantizer mode vs. quality mode
c. deblock: Add an enable/disable checkbox. Setting both to -6 seems to be a workaround. Took me awhile on this one, too.
d. Cropping: Add an enable/disable checkbox. Only because automatic cropping is an inherently unreliable function, would suggest disabled by default.
e. Filters: Add an enable/disable checkbox, suggest disabled by default (I think deint was enabled by default (???))
f. Advanced: Many options missing, I'd suggest megui's x264 multi-tab dialog box for a model here, duplicating it, ideally. Codecs should probably have their own dialog box popped by pressing an "advanced" option.
g. Custom x264 options textbox: This was discussed some here: viewtopic.php?f=6&t=19426 , but this is a workaround, not a solution. Other apps (including megui) will generate a custom x264 command line string, users should be able to just simply paste it, and not have to reconstruct the string to meet Handbrake's peculiarities. The textbox is also not labeled (in ver 0.98 at least).
h. Motion Estimation Range: Curiously seems unavailable unless Uneven-Multi-Hexagon or a higher search method is chosen. It's missing for Diamond and [simple] Hexagon.
Audio tab: Is it just me, or does the audio want to mix to 6 channels by default, even with auto set?
Solution: (Generally) It seems there's a lot that could be done better with this tab, including clarification on what passthrough ("passthru") does and does not, more codec configuration options.
Queue: Excellent. One minor fix (above issues are obviously MUCH higher priority) Move up/down is excruciatingly slow, and there does not appear a way to simply move multiple slots or drag and drop.
Solution: Add drag-and-drop moving of selected queue items, including ones which are not a sequence (i.e. 1, 3, 4-7 vs. 2-6). Lower priority. Another useful option would be to display the command line and allow editing either in text or in the GUI.
Add Folder function: Users must "physically" browse to the folder, and only the entire folder and no subfolders are processed
Solution: Use a multi-file-select open dialog box which has a checkbox to include subfolders. The starting point path can simply be pasted in that way. Obviously lower priority than the crop/resize + x264 options discussed above.
Settings tied to source video files (More generally) It should not be necessary to specify a source file in order to configure encoding options and save a preset
Solution: (Generally) De-couple the dependency, set anything source-dependent with some "undetermined" designator, settings to be populated for each file at enqueue-time.
Hope this helps. I realize like most open-source projects, Handbrake is a team effort which has evolved over years, and was not designed initially as a robust x264 GUI from the get-go. Evolution is, of course, hardly a new problem in app dev. It's a good app, and it's nice to see something not tied to the now archaic avi container like VirtualDub and MeGUI.
Lastly, a trivial, but nagging qeustion... why is it called "Handbrake?" How does the pineapple drink a relate? I couldn't find anything after a few minutes of searching a couple weeks ago.