‏إظهار الرسائل ذات التسميات GTK. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات GTK. إظهار كافة الرسائل

الثلاثاء، 2 سبتمبر 2008

How to Compile HandBrake GTK GUI from SVN

UPDATE (3/4/09): These directions no longer work on code checked out from the SVN. I've left them here for future reference (and for folks attempting to build the stable 0.9.3 code), but updated build instructions are available here.

Update (5/15/09): I have working binaries available in my PPA repository. Directions for adding it to your package manager are available here.

This information has been gleaned from my and others' posts on the ubuntu forums. I have reproduced it here for ease of access and to avoid having to read all 14+ (at the time of this writing) pages of that thread. This process requires at least a standard Intrepid Ibex (8.10) Ubuntu installation, but it can certainly be adapted for other distros (users of OpenSuSE will need to download the additional dependencies zypper and in to build the CLI, as well as gtkhml2 and gtkhtml2-devel to build the GUI). If you just want precompiled binaries, see my post here.

Update (11/9/08): there's a new dependency added as of the last couple of days: libgtkhtml3.14-dev. I added it to the list, but be sure you install it if you've suddenly run into problems. Update (11/24/08): 2 more dependencies--libgstreamer0.10-dev and libgstreamerplugins-base0.10-dev. Update (2/2/09): another dependency--libdbus-glib-1-dev

Step 1: download the dependencies (in a terminal, type):
sudo aptitude install libgtk2.0-dev libglib2.0-dev libhal-storage1 libhal-storage-dev libhal-dev automake build-essential jam libtool subversion zlib1g-dev libbz2-dev lib64bz2-1.0 libbz2-1.0 xmlto texinfo subversion gfortran doxygen libsdl1.2-dev gfortran-multilib gcc-multilib g++-multilib libesd0-dev libgtk1.2-dev libfftw3-dev electric-fence linux-kernel-devel libgtkhtml3.14-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev yasm intltool libdbus-glib-1-dev
Step 2: install libdvdcss2 from the medibuntu repository (all on one line):
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list
then type (again, all on one line):
wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add - && sudo apt-get update
and finally:
sudo aptitude install libdvdcss2
Step 3: check out the latest HandBrake code from the project's SVN repository:
svn co svn://svn.handbrake.fr/HandBrake/trunk HandBrake
Step 4: navigate to the newly created HandBrake directory:
cd HandBrake
Step 5: compile the HandBrakeCLI binary:
make
Step 6: navigate to the gtk directory:
cd gtk
Step 7: prepare the source to compile the GUI against the newly built CLI binary:
./autogen.sh
Step 8: compile and install the GUI:
make && sudo make install
This should add all the relevant menu shortcuts and so forth on a standard Ubuntu install. Leave me a comment if you have any questions/problems and I'll try to help.

32-bit HandBrake GTK GUI and Yasm deb Binary for Ubuntu

Update (5/15/09): I have working binaries of the latest code available in my PPA repository. Directions for adding it to your package manager are available here.

Download HandBrake GTK GUI (GHB) 32-bit deb
Download HandBrake GTK GUI (GHB) 64-bit deb
Download Yasm 0.7.1 32-bit deb
(they're compressed into a tarball, but the debs are inside)

Update: These binaries include a new version of the x264 codec that no longer requires as many options to do the same thing. From Dark Shikari (a main x264 developer):
x264 is removing b-rdo and bime options this week. GUI makers, take note, and prepare patches. bime will be enabled at subme >=5 automatically. New subme options will be organized as follows:
subme6: RD on I/P frames
subme7: RD on all frames
subme8: RD refinement on I/P frames
subme9: RD refinement on all frames

new subme 6 = old subme 6
new subme 7 = old subme 6 + b-rdo
new subme 8 = old subme 7 + b-rdo
new subme 9 = didn't exist, RD refinement in B-frames is completely new.

RD refinement in B-frames consists of qpel-RD as in P-frames, and also RD-bime for bidir blocks. Overall the speed cost for this option should be less than old subme6->7 (new subme7->8).

This is a first step on the road to decreasing the number of unnecessary options in x264.
I finally got my 32-bit Hardy Heron build environment set up, so first thing I did was crank out a couple of debs for the yasm assembler and HandBrake's official GTK GUI (known as GHB) from SVN.

Yasm is version 0.7.1 and GHB is version svn 1911.

Leave me a comment if these do/don't work.

الاثنين، 11 أغسطس 2008

HandBrake GUI Roundup

I previously posted all of this information in a thread at the Ubuntu forums, but I wanted to post it here, too, so I could update it as new versions/information arise. This is a list of all of the GUIs/frontends (that I know of) for HandBrake, along with information regarding features/limitations and development progress for each.

1. GHB is the official GTK GUI that is included with the HandBrake source code (currently just available in the SVN repository). It was written by a swell guy known as JohnAStebbins from the HandBrake forums and it's nearly on par with the OS X GUI in features. However, some people have trouble getting it to compile. On Ubuntu, it requires at least Hardy. (you can download 32-bit and 64-bit deb binaries from here or you can compile from source using HandBrake's official SVN repository [directions here]).

2. qtHB (aka qHandBrake) is an early, yet promising GUI based on the official QT4 HandBrake code that languished in SVN until a HandBrake forums user known as gonza updated it recently. It is still in early development and not yet included in the official SVN code, but it is nearly as complete as GHB and significantly easier to compile (fewer dependencies). (You can read about it here or download and compile it using my instructions here).

3. HandBrakeGTK (aka RippedWire) is a port of a Windows CLI wrapper that requires mono-devel to run. It has a bug that causes it to not pass advanced x264 options to the CLI, which is a total deal-breaker for me. However, its queue feature works well, so it can be useful for batch rips if you don't mind using baseline AVC. It also works well with other codecs, such as xvid, that don't suffer from the adv. x264 opts bug. Another advantage is that you can easily update the HandBrakeCLI backend without affecting the graphical frontend. RippedWire does not appear to be in active development. (read about its history here or download it here. 64-bit users can try this one, which I built from the author's mono project files on my 64-bit system [just install mono-devel, move the executable into the same directory as your HandBrakeCLI binary and type mono HandBrakeGTK.exe]).

4. gHandBrake is a GTK CLI wrapper written from scratch by a guy that goes by Derrik81787. I later added x264 options to it, but I'm a terrible programmer and it ended up really unstable. Derrik seems to have dropped the project because his site for it is gone (Update: he's too busy with classes to work on it now but plans to revisit development in the future), but I would love to see someone tweak the code for better stability (the big issue appears to be with malloc, which I know nothing about; leave a comment if you'd like to pitch in). The major advantage to this frontend is that it is really easy to compile and it has very simple dependencies, unlike the official GTK GUI. (read about it here or download it here).

If you have anything to add, or if you have any corrections, please leave me a comment.