Ubuntu

VLC 3.X / Ubuntu 14.04 / saa7134 saga …

Ubuntu 14.04.2 LTS again messed up my tvtuner / VLC setup. After few recent updates, nothing worked anymore and the logs were useless.

After rebuilding various VLC versions, activating debug logging (and assertions) and pouring through the logs, I was able to get everything back on track. There were many things changed (but not my config that used to work for many years until few months ago).

Below is the sequence of errors that had to be fixed to get everything behaving …

a)

[0xa08e4e0] lua interface error: password not configured
[0xa08e4e0] lua interface: Please specify the password in the preferences.
[0xa08e4e0] main interface debug: no interface modules matched
[0xa08e4e0] main interface error: no suitable interface module
[0x9ff3aa0] main libvlc error: interface "default" initialization failed

Fix: I never had the --telnet-password in my command line for many years, as VLC assumed to be ‘admin’ if missing. Now it seemed it magically became mandatory somehow.

b) many of the VLC modules are enabled-auto. In the huge log of configure, it is really hard to tell if a missing -dev library cancels a module or not – so the best is to force it enabled, then you get an error.

My configure arguments are (for VLC 3.0.0 )

./configure --prefix=/usr/local --enable-dvbpsi --disable-swscale --enable-realrtsp --enable-merge-ffmpeg --enable-debug --enable-libmpeg2

c)

[0xb6e02850] main mux debug: looking for sout mux module matching "ts": 9 candidates
[0x8326dc8] main input debug: EOF reached
[0xb6e02850] main mux debug: no sout mux modules matched

I found that I needed the libmux_ts_plugin.la to be built, but some how it wasn’t. Checking the modules/mux/Makefile, it seemed that it was commented out!

#am__append_2 = libmux_ts_plugin.la

Checking further into modules/mux/Makefile.in we find:

@HAVE_DVBPSI_TRUE@am__append_2 = libmux_ts_plugin.la

It was like I didn’t have the --enable-dvbpsi added as argument to the configure script although it is set to auto:

# ./configure --help | grep dvb
  --enable-dvbpsi         build with dvbpsi support enabled [default=auto]

(by now it looks that the auto mode is more like don't care if it is built or not mode)

Anyway, the fix was simple – install the missing lib dependency so that the TS module as all requirements met, as well as adding the --enable-dvbpsi argument to the configure command line just to make sure.

apt-get install libdvbpsi-dev

d)

There was a problem that I could not put my finger on it. Everything was starting up, telnet interface, streaming, etc, BUT a second later, all the modules were starting to be deactivated and shut down and VLC exit. By now I learned the configure --help and in one of the rebuilds, I have activated the debug logging (assertions).

[b1505788] x264 encoder debug: version x264 0.94.X
vlc: misc/variables.c:259: var_Create: Assertion `!"unreachable"' failed.

I had the file where the error occurred – but not the variable name. A printf statement later, and it turned out that the variable name that triggered the assertion was sout-x264-opengop.

This is another problem with the VLC code. Although it did detect the existing x264 encoder version, it did not complain that it was NOT handled within the multitude of #defines that litter the code:

# cat x264.c | grep X264_BU
#if X264_BUILD < 115
#if X264_BUILD >= 102 && X264_BUILD <= 114
#elif X264_BUILD > 114
#if X264_BUILD >= 87
#if X264_BUILD >= 111
#if X264_BUILD >= 89
    msg_Dbg ( p_enc, "version x262 0.%d.X", X264_BUILD );
    msg_Dbg ( p_enc, "version x264 0.%d.X", X264_BUILD );
#if X264_BUILD >= 118
#endif //X264_BUILD
#if X264_BUILD >= 111
#if X264_BUILD >= 102
#if X264_BUILD >= 102 && X264_BUILD <= 114
#elif X264_BUILD >= 115
#if X264_BUILD >= 89
#if X264_BUILD >= 98

I realized that I have no chance of getting through this other than by purging existing x264 encoder and building from source the x264 provided by VLC: https://wiki.videolan.org/Git#Getting_VLC_or_x264_source_code_via_Git

e) approaching the finish, but not quite there yet.

Now everything was starting to come alive. Modules were loaded, I could connect, but only sound was streamed, no video. Checking the vlc -vvv logs:

...
rawvideo decoder warning: invalid frame size (460800 < 691200)
rawvideo decoder warning: invalid frame size (460800 < 691200)
rawvideo decoder warning: invalid frame size (460800 < 691200)
rawvideo decoder warning: invalid frame size (460800 < 691200)
...

Few Google searches later, I found https://forum.videolan.org/viewtopic.php?t=119531 where people blame the driver. OK, it might be the driver, but a recent update of Ubuntu changed that then, since everything worked fine for the past few years. The workaround seems to set the chroma option to YUYV :v4l2-chroma=YUYV

f) There were still few errors in the logs, related to lua :

[0a02bc10] [telnet] lua interface error: Error loading script /usr/local/src/vlc/share/lua/intf/telnet.luac: /usr/local/src/vlc/share/lua/intf/telnet.luac: bad header in precompiled chunk

Here it turned out that I had a version mismatch. lua compiler version 5.2 installed, but the both libs 5.1 as well as 5.2. Somehow VLC picked up the old lib ? Anyway, I had to cleanup just to make sure only version 5.2 is installed.

apt-get purge liblua5.1-0-dev
apt-get purge lua5.1
apt-get install liblua5.2-dev
apt-get install lua5.2

Now everything is back on track, but I'm afraid of updating Ubuntu again, who knows what next ?

1 Comment

  1. Thank you. Actually i got the same problem ( invalid frame size ) but it worked by replacing v4l2:// for v4l2c://

Leave a Reply