Initial packaging of handbrake for Debian (WIP)

Fabian Greffrath fabian at greffrath.com
Wed May 16 11:39:28 UTC 2012


Am Dienstag, den 15.05.2012, 08:20 -0300 schrieb Rogério Brito:
> The only ones that are functional changes are the ones regarding
> libdvdnav/libdvdread.

I have investigated this a bit more.

The patch A08-dvdnav-dup.patch applied by handbrake against libdvdnav
introduces two new functions, dvdnav_dup() and dvdnav_dup_free(). The
first one duplicates a dvdnav_t struct by calling memcpy() on it, the
second one frees such duplicate from memory - roughly.

For this it needs to allocate memory and for this in turn it needs to
know sizeof() the dvdnav_t struct. This struct, however, is not part of
libdvdnav's public API is thus not exposed anywhere. It is defined in
src/dvdnav_internal.h in the libdvdnav source code. All functions
defined in the public headers work on pointers to dvdnav_t structs,
which is the most reasonable thing, of course.

So, struct dvdnav_t is subject to change and it is thus not reasonable
to hard-code its declaration into handbrake, e.g. by including the
dvdnav_internal.h header. :(

I see three possible ways out of this:
1) We convince libdvdnav upstream to either (a) make struct dvdnav_t
part of the public API or (b) apply the handbrake patch and include the
two new aforementioned functions.
2) We carry the handbrake patch as a distro patch against libdvdnav.
3) We hard-code the included information about sizeof(dvdnav_t) into
handbrake, risking breakage whenever libdvdnav is upgraded in Debian.

Of course, solution (1b) is the preferred one. Does anyone have contact
to the libdvdnav devs?

 - Fabian




More information about the pkg-multimedia-maintainers mailing list