[mythtv-users] DVB-T tzap versus mythtv 0.19

Doug Scoular dscoular at cisco.com
Sat Mar 11 01:57:44 UTC 2006


Hi All,
    I've upgraded to release-0.19-fixes (9277) and am still
    having problems with channel tuning and the Nova-T.

DanielK wrote:
 > The Nova-T DVB driver hasn't been fixed yet. Until it is, I can say 
it's broken :)

    I bow to your greater knowledge... however, I've asked Patrick 
Boettcher on
    the linux DVB mailing list to confirm or refute this problem being 
with the
    Nova-T driver. Hope this is okay.

    The 0.19-fixes (9277) release does seem a little faster to change 
channels (not that
    this is my concern in this thread) but it is just as unreliable at 
tuning. I get
    amazingly incoherent results from the OSD signal monitor... sometimes
    giving me terrible figures for BE (65535), sometimes BE (0), 
sometimes I get
    No Lock, sometimes partial, sometimes full... and every combination of
    the above can randomly lead to a picture or not. Sometimes I get a
    picture but the frontend no longer accepts input. Also, I occasionally
    get a completely blank OSD signal monitor timeout dialog (this is
    new to me post 0.19-fixes).

    I'm going through the code right now trying to figure it out. It appears
    0.18.1 simply waited for FE_HAS_LOCK. 0.19.1 is much more complex;
    interrogating the card via ioctls for the features it supports and then
    using these in combination to see if they are "allgood".

Neil wrote:
 > If you're jumping into the code in the near future, maybe you could 
point
 > me to the right place as that was pretty much *my* next stop. I want 
to try
 > to find out if there's anywhere around the start of DVB recordings that
 > *doesn't* log if it's not working. I've not touched the Myth code 
before ...

    Me neither but here's what I've gleaned so far... please correct me
    if I'm wrong...

    It looks like tv_play.cpp calls TV::RunTV which starts an event loop
    running. Each time the loop iterates it calls TV::UpdateSignalOSD.
    UpdateSignalOSD calls SignalMonitorValue::Parse which uses extra
    "SIGNAL" event data to determine what card parameters are to
    be monitored.

    Oops, maybe I'm getting ahead of myself... when we
    change channels the event triggers a call to TV::ChangeChannel
    which in turn calls TV::SetChannel. This adds a tuning request
    to a queue and waits for it to tune. TVRec::HandleTuning
    in tv_rec.cpp deals with this request.

    TVRec::HandleTuning, in turn, calls TVRec::TuningFrequency.
    This figures out the channel name, and possibly the
    input name we need to pass to "channel" and then calls
    channel appropriately. Then it adds any filters and sets any
    video capture attributes that need to be set.

    The card specific signal monitoring is started. When the
    signal monitor determines that all monitored card parameters
    are "good" then it switches the channel and stops the OSD
    monitor. I think it is the combination of what parameters are
    being monitored and the IsAllGood() method that is the
    crux of the code. The IsAllGood method ensures that all the
    monitored card parameters meet the IsGood() method's
    criteria of what is good. The IsGood method checks a
    value against a previously set threshold.

 > Have a read through the archives, look for Aafloy's posts.
 > The code in question is in dvbchannel.cpp, mostly in the
 > wait_for_backend() function.

    Thanks for the pointer... I did look through Kenneth's posts
    but I'm pretty out my depth now.

    Ooh... my head hurts. I want to debug what the thresholds are
    and how they are being combined in IsAllGood()... but I need
    to lie down now :^/

    Anyway, I'll get back to the thread on what I find (if anything).

    Cheers,

    Doug


More information about the mythtv-users mailing list