[mythtv-users] Re: PVR350 Timing issues? (WatchingLiveTV->None->RecordingOnly and vice-versa)

Chris Delis chris at delis.net
Tue Oct 21 05:25:43 EDT 2003


I am really racking my brain on this one :-(

Are there many folks using the PVR350 for both encoding and decoding
successfully?  I've had no problems in the past when using the card for
encoding while using my nVidia FX 5200 for decoding/tvout.  However,
when seeing the amazing results of PVR350 tvout, I am having a really
difficult time switching back to the nVidia.

Currently, I now have my system in a "livable state".  After applying
the aforementioned hacks to tv_rec.cpp, I can now watch LiveTV and not
have mythfrontend freeze up on me when a scheduled recording kicks in.

However, there exists on more REALLY annoying problem.  When I exit LiveTV,
mythbackend randomly dies.  The following messages apear on mythfrontend:

Changing from WatchingLiveTV to None
Changing from None to None
Partial WriteStringList 0
Partial WriteStringList 0
Partial WriteStringList 0
Partial WriteStringList 0
Partial WriteStringList 0
Partial WriteStringList 0
Partial WriteStringList 0
...

I am running myth version 0.12.  I have an ASUS A7M266 motherboard
with AMD 761 chipset, so I don't _think_ I'm experiencing the dreaded
VIA chipset bug.  However it appears that I do have a "VIA vt82c686b"
IDE controller.  Does this mean anything?  I'm not a "hardware person"
so I have no clue, just being suspicious:

% dmesg | grep -i via
VP_IDE: VIA vt82c686b (rev 40) IDE UDMA100 controller on pci00:04.1
    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:DMA
hda: 240121728 sectors (122942 MB) w/7936KiB Cache, CHS=14946/255/63, UDMA(100)
hdb: 60030432 sectors (30736 MB) w/2048KiB Cache, CHS=3736/255/63, UDMA(66)
ivtv-fb: ivtvfb_alloc_user_dma_to_device

Also in dmesg, I happen to see the following from time to time:

ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: DMA interrupt, but no err and no success. odd.
ivtv: Got DMA-done, but not expecting one

These occur not so frequently and do not appear to be crashing
mythbackend or freezing up mythfrontend.

Thanks for reading all of this!

Chris



> > 
> > Hello,
> > 
> > Has anyone else noticed a problem with the PVR350 decoder when switching
> > between modes?
> > 
> > When I am watching live tv and a scheduled recording is about to start,
> > mythfrontend seems to lockup.  Also, there are times when I simply leave
> > live tv to get to the main menu and mythbackend dies.
> > 
> > Note that all of this happens only when using the decoder (/dev/video16)
> > with the ivtv-fb framebuffer device.  All seems to work ok when I use
> > the Xv display (my monitor).
> > 
> > The reason I suspect a timing issue of sorts, is twofold: 1) When I
> > pause live tv or prerecorded show, the OSD reflects the wrong time
> > (when I first start up myth and go live tv and hit pause right away,
> > I notice the OSD says its 4 minutes behind).  2) In tv_rec.cpp, I was
> > able to get things working by adding time to the usleep() system calls
> 
> 
> 
> Sorry, but I have mispoken a bit here.  I didn't add time to the usleep(),
> but instead I added time for the state change polling in tv_rec.cpp 
> (where the timeout variable is being set below):
> 
>     if (internalState == kState_WatchingLiveTV && !cancelNextRecording)
>     {
>         QDateTime timeout;
> 
>         QString message = QString("QUIT_LIVETV %1").arg(m_capturecardnum);
> 
>         MythEvent me(message);
>         gContext->dispatch(me);
> 
>         //timeout = QDateTime::currentDateTime().addSecs(3);
>         timeout = QDateTime::currentDateTime().addSecs(10);
> 
>         while (internalState != kState_None &&
>                QDateTime::currentDateTime().secsTo(timeout) > 0)
>             usleep(100);
> 
>         if (internalState != kState_None)
>         {
>             gContext->dispatch(me);
> 
>             //timeout = QDateTime::currentDateTime().addSecs(3);
>             timeout = QDateTime::currentDateTime().addSecs(10);
> 
>             while (internalState != kState_None &&
>                    QDateTime::currentDateTime().secsTo(timeout) > 0)
>                 usleep(100);
>         }
> 
> 	...
> 
> 
> 
> > in TVRec::StartRecording (I haven't yet figured out how to fix the crash
> > when leaving live tv).
> > 
> > --Chris
> > 
> > 
> > 
> > 
> > 
> 
> 



More information about the mythtv-users mailing list