[vdr] OSD and subtitles trouble

Marko Mäkelä 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.

Best regards,


More information about the vdr mailing list