This Time Self-Hosted
dark mode light mode Search

Internal vs Shared

Ok another blog entry caused by a bug report.. this time bug #102843’s reporter is safe, to be honest, he was quite friendly…

What really pissed me off is Carsten telling me to use shared libraries. Carsten I don’t want to rant about you, it’s just that I know the problem of internal libraries, and I’m doing all the reasonable steps to avoid them. If you really want to talk about them, take gstreamer and mplayer, and let their maintainers to disagree with upstream and use external libraries….

I know that usually shared external libs are better than internal libs. One central way to fix bugs, no need to rebuild the user project when something changes, no code redundancy and so on. I was the one pushing for external ffmpeg in xine (that now is no more possible as we need a newer ffmpeg snapshot, I hope to re-add ffmpeg useflag for 1.1.0-r2), I was the one (before being a dev) that tried to use external libdvdnav with it (and that was an unfortunate choice, xine started crashing too often with DVDs), so I know that shared libs are preferable.

In particular, about mad and a52, I wrote the patches to enable external libraries based on changes done on FreeBSD’s ports.. I though of doing a slow migration from internal library to external, seeing if it was working well. It’s not something that you can simply say “Damn you, use the external library!”, as libdvdnav case shown.
Also external ffmpeg had slight problems, for example it took priority on wmv3 decoding over win32codecs, but this was easily solvable.

Although xine’s upstream is way friendlier than mplayer’s, our package is not exactly “vanilla”: my patch is 13KB worth of patches, plus 6.3K from PIC/PIC changes and now another 7.4K of external libraries. I can’t forward bugs directly to upstream because of that, so I refrain from changing things “on the fly” just because someone say that to me.. I must manage the bugs by myself, at least until the changes are backported upstream, and also then, the external libs makes me unable to tell “the problem is xine’s”…

So, I’m sorry, but the next time someone will tell me to use external libraries somewhere, it will just be ignored without answer, I know we should use them, but such a change is never trivial.

At the end, remember to enable mad support if you want be able to play single mp3 files, FFMPEG is able to decode audio tracks in video files but seems unable to play single mp3 files right now. If you want to watch DVD is also the case that you enable a52 and dts useflags. If you don’t have a DVD reader, you can safely disable dts, although it’s not always the case to disable a52 (there are divx/video files that uses a52 audio encoding, but I think nobody is using dts as it requires proprietary codecs that doesn’t seems to be available at all).

Now I just need to find how to avoid the plugins to link to freetype and similar libraries …

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.