Opened 14 years ago

Closed 13 years ago

Last modified 13 years ago

#1461 closed defect (fixed)

XvMC OSD does not fade away cleanly

Reported by: htpc@… Owned by: danielk
Priority: minor Milestone: 0.20
Component: mythtv Version: head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

When I'm using XvMC, OSD doesn't fade away cleanly.

To replicate: 1) Start recording, fast foward a few seconds, set playback to normal; 2) Start live TV, press "i".

In both situations, OSD will pop up and fade away. However, remants of the OSD are still visible faintly, like a watermark.

I'm using SVN revision 9265. Video card is a 6600GT, Nvidia drivers 8178. (not using Chromakey OSD).

Attached a frontend log generated with "mythfrontend -v osd -l osd.log". Not sure if it's any use at all..

Attachments (1)

osd.log (12.8 KB) - added by htpc@… 14 years ago.
mythfrontend log

Download all attachments as: .zip

Change History (12)

Changed 14 years ago by htpc@…

Attachment: osd.log added

mythfrontend log

comment:1 Changed 14 years ago by mythdev@…

I have see the same behaviour. Using the OpenChrome? drivers on X7.0 modular. But that seems irrelevant.

I am also NOT using the ChromaKey? OSD, but I am using XvMC_VLD (via hardware decoding).

How can I help?

comment:2 Changed 14 years ago by mythdev@…

Further investigation showed me that it occurs when I skip forward or backwards, or I pause the recording. When I adjust the audio volume level, the OSD fades away correctly. I hopes this helps debugging.

comment:3 Changed 14 years ago by Colin Guthrie <mythtv@…>

Slightly different to you, but I find that pressing "i" will actually clean a non-faded OSD for me. e.g. if I jump ahead in a stream, I get the "ghost", but pressing "i" and bringing up info and letting it fade away "cleans" the display for me. I am using the "VIA XvMC" decoder and the Ithamus OSD theme.

comment:4 Changed 14 years ago by mrvanes@…

Since my reported ticket #1516 was probably correctly marked as a duplicate of this I can add that I also have non-clearing OSD on my via system. For me however, it doesn't depend on the 'via XvMC' output. The problem is also there when I use normal 'XvMC' or 'standard' mpeg2 decoding (both not accelerated ofcourse). Luckily pressing the new 'clear OSD' key (backspace) allways clears every OSD completely. The channel information bar (o) cleanly disappears after 30 seconds (but it should after 3). btw: I have set fadeaway to 0 in osd.xml.

comment:5 Changed 14 years ago by mrvanes@…

Just looked into the problem and found the solution (for me at least). I allways have fadeout set to 0 (osd.xml) because my system is too slow to have long transparent fadeout (or at least was with old code). The behaviour for fadeout=0 is now broken in HEAD:

Looking into the OSD code I finally reached osdtypes.cpp with the method: void OSDSet::Draw(OSDSurface *surface, bool actuallydraw)

In this method the fadeout/timeouts are handled around line 364:

if (m_fadetime > 0) {

[cut]

if (m_fadetime <= 0) {

m_fadetime = 0; if (currentOSDFunctionalType) {

emit OSDClosed(currentOSDFunctionalType); currentOSDFunctionalType = 0;

}

}

}

if (m_timeleft <= 0 && m_fadetime <= 0)

m_displaying = false;

As you can see, in the case of (m_timeleft <= 0 && m_fadetime <= 0) OSDClosed is never emitted! I have NO idea if setting m_displaying = false is supposed to clear the OSD (I guess so) but it obviously doesn't.

Changing fadeout to 1 in my osd.xml fixed the problem for me.

Grtz. Martin

comment:6 Changed 14 years ago by skd5aner@…

I also see this behavior. I noticed it when I turned on XVMC and started watching TV at > 1.0x speed. When it's fading away, it almost turns into a watermark. I only does it when the OSD is brought up automatically (after commercial skip). If I bring up the OSD and clear it out by hitting "i" enough times, it goes completely away.

comment:7 Changed 13 years ago by danielk

Milestone: 0.20
Owner: changed from Isaac Richards to danielk
Version: head

comment:8 Changed 13 years ago by danielk

(In [9890]) Refs #1461. This fixes the XvMC IA44 OSD fade problem.

There were a couple patches floating around but both had problems in my testing. The code for doing the fade had a few undocumented sentinels and required things to happen in a very particular order for things to work. This documents the code in OSDSet::Draw() and simplifies the fade code (using just one well documented sentinel value).

Please test the code in the mythtv-vid branch if you were having this problem.

comment:9 Changed 13 years ago by danielk

Resolution: fixed
Status: newclosed

I can't reproduce this problem anymore...

comment:10 Changed 13 years ago by mythdev@…

I am using the myhtv-vid branch since the patches for this came in and the problem dissappeared. Will this patches be included in the trunk soon? I do not seem to have any problems with these patches.

comment:11 Changed 13 years ago by anonymous

mythtv-vid was merged to svn-head in r9915 I believe. Since then the only commits to have been made to mythtv-vid branch are head syncs in r9916, r9941, r9951 and a the commit of video profiles patch in r9953. I doubt r9953 affects your XvMC tho'.

Note: See TracTickets for help on using tickets.