avidemux 2.5.6 on Linux no longer builds when libxml2 is compiled with ICU >=59

Started by Sophira, April 04, 2018, 09:21:31 AM

Previous topic - Next topic



ICU is an internationalisation library which can be used by libxml2. However, as of ICU >=59, it made a breaking change to the API. While avidemux-2.5.6 doesn't directly use ICU, it does use libxml2, which uses ICU.

libxml2 itself builds fine, but trying to compile avidemux-2.5.6 now results in errors such as these:

In file included from /usr/include/unicode/utypes.h:39:0,
                 from /usr/include/unicode/ucnv_err.h:88,
                 from /usr/include/unicode/ucnv.h:52,
                 from /usr/include/libxml2/libxml/encoding.h:31,
                 from /usr/include/libxml2/libxml/parser.h:810,
                 from /usr/include/libxml2/libxml/globals.h:18,
                 from /usr/include/libxml2/libxml/threads.h:35,
                 from /usr/include/libxml2/libxml/xmlmemory.h:218,
                 from /usr/include/libxml2/libxml/tree.h:1307,
                 from /var/tmp/portage/media-video/avidemux-2.5.6-r2/work/avidemux_2.5.6/avidemux/ADM_filter/filter_saveload.cpp:24:
/usr/include/unicode/uversion.h:167:55: error: 'UChar' does not name a type
u_versionFromUString(UVersionInfo versionArray, const UChar *versionString);

(Note: Gentoo removed avidemux-2.5.6 from their repository some time ago, but I'm maintaining a local copy in my overlay as I find the frame-based method of working very useful.)

The workaround for this (on source-based distros such as Gentoo, at least) is to compile libxml2 without ICU. avidemux-2.5.6 will then build successfully.

Unfortunately I can't tell what the proper fix for this is, and even if I could, I imagine the avidemux 2.5.6 code base isn't being maintained, right?

Just in case I need to migrate in the future, can anyone recommend a good editor on Linux that does what avidemux does? (Knowing exact frames is very useful as I often need to do work which involves exact cuts.)


What is the issue with Avidemux 2.7.0 / git master? 2.6 and older are EOL and unsupported. Frame-based approach is incompatible with modern codecs (H.264, HEVC etc.).

BTW, cuts are exact (at least with the current git master) if you re-encode. They cannot be always exact in copy mode, depending on frame type. You can also patch Avidemux to display the frame number in the stream order (which may be very different from the display order!), but what should it be good for?