[vdr] OSD and subtitles trouble
marko.makela at iki.fi
Tue Nov 12 12:46:46 CET 2013
On Sat, Nov 09, 2013 at 01:57:37AM +0200, Marko Mäkelä wrote:
>(1) The bottom 1% lines of the OSD are not being cleared when the OSD
>extends that low. (I can choose up to 99% height and 0% vertical
This looks like a bug in DirectFB or the way how softdevice is using it.
There is a comment related to Matrox in video-dfb.c, AFAIU related to
the video layer, not the OSD layer.
I did a short test recording of a 4:3 program. Depending on the
softdevice crop mode, the garbage area at the bottom shrinks (from about
3 lines to 1 or even 0).
>(2) Changes in DVB subtitles will flash the OSD layer (make it empty
>for a very short time) if an OSD is active. I suppose that DVB
>subtitles should not be displayed at all when OSD layer is active.
This is a bug in SoftOsd.c or in video-dfb.c. The OpenOSD call in the
cSoftOsd constructor was clearing the OSD layer on the physical screen,
even when !cOsd::Active(). To fix this, I made cDFBVideoOut::OpenOSD() a
no-op, or renamed it to cDFBVideoOut::ClearOSD(), which is where this
clearing should have been done.
I also moved some of the initialization to cSoftOsd::Action(), which
seems to be a more appropriate place. cSoftOsd derives from both cOsd
and cThread, to do the intensive work in a background thread.
Now I have some trouble with VDR crashing every now and then when I
press Recordings or Menu. I fixed most Valgrind warnings in Softdevice,
so that it is silent when I press buttons to hide or show the OSD. There
are some warnings left in cRect::Intersects() or similar, seemingly not
related to softdevice code. I will investigate further.
Also, on VDR 2.0.4 startup, cRecordings::ScanVideoDir() is calling
cRecording::cRecording(), which according to Valgrind is reading past
some strdup() buffer. I do have libc6-dbg installed, so I hope it is not
a false alarm. I only had 2 short test recordings in my video directory,
so this should be easy to debug, once I rebuild vdr in debug mode. I
only had debug symbols for softdevice in my session, and I did not yet
try vgdb-server, which is better for multi-threaded programs.
More information about the vdr