All pastes #49981 Raw Edit

Unnamed

public text v1 · immutable
#49981 ·published 2006-04-19 18:09 UTC
rendered paste body
Hi, I've been lurking in the archives of both -users and -dev for a while, as 
well as seeking help on #mythtv-users, but I'm running into an issue I'd like a 
wider audience with.

First my hardware/software:

Asus A8V motherboard (socket 939)
AMD Athlon 64 3000+ (1800Mhz, 1000Mhz HyperTransport)
2x512MB DDR400 DIMMs
MythTV Storage: 120GB ATA100 and 160GB ATA100 drives on separate IDE channels
Hauppauge WinTV PVR-350
Air2PC 1st Generation

I'm running .19-fixes branch, checked out 20060407, built with the settings 
following this message.  Distribution is debian x86_64, lirc 0.8.0, ivtv 0.4.3, 
in-kernel dvb for the Air2PC.  Latest versions of the 1394 libs and libiec61883.

A little history.  I recently switched to this hardware from an old Athlon XP 
1733Mhz, which was just barely keeping up with 1080i content using Bob 
deinterlacing.  For the longest time I could not get 1080i using Bob 
deinterlacing to work properly on the new AMD64 hardware, but at the suggestion 
of mchou on #mythtv-users, I tried booting with "noapic" in the kernel command 
line.  This dropped all my CPU use for playback roughly in half, and all sorts 
of glitching went away - at this point I considered the machine to be be 
performing with MythTV as it should.  I probably should have left well enough 
alone and not tried to add more.   :) 

The primary problem I'm now encountering and can seem to find no solution to is 
adding a firewire card to pull SD and HD mpeg2 streams off my cable 
set-top-box.  I have gotten all the requisite libraries built and rebuilt 
mythtv to support firewire capture.  When using the libiec61883's test-mpeg2 
command, I can pull and perfectly playback streams from both SD and HD channels 
from the set-top-box using mplayer like so:
./test-mpeg2 -r 0 | mplayer -vo xv -
Playing like this works perfectly.  I have also dumped to the same disk mythtv 
uses and separately played with mplayer, which again, works perfectly.  I have 
not tested running test-mpeg2 to disk and playing mplayer from the same file 
simultaneously, but I can do that later today.

Given that what above worked fine, I would have expected it to work well as a 
capture card in mythtv.  Once I set mythtv up to use the firewire as a capture 
card and got the channel changing program working, I ran into lots of problems. 
  Playing back LiveTV in mythtv results in mythfrontend spewing lots of 
information about motion errors and other mpeg stream problems.  I 
simultaneously get IOBOUND messages from ThreadedFileWriter.cpp in the 
backend's log.  The channels "play" but there is lots of blocking and errors 
when doing so, and the playback is extremely stuttered and jerky, regardless of 
whether the content is SD or HD.  While doing this the load on the machine goes 
through the roof - >7 at times, with top reporting CPU usage at 98% or so.  I 
have been working with both kernel 2.6.13.1 and kernel 2.6.16.1, both with 
identical results.

The firewire card I'm using is at least 6 years old, probably more like 7 or 8. 
  It is a TI chipset "Pyro DV" card that was purchased when capturing dv from 
camcorders was beginning to become doable on consumer PCs.  Looking at it with 
lspci (sorry, don't have exact output handy), it has two NON-prefetchable 
memory regions, one is 2k, the other is 16k.  Seems like a small amount of 
buffer for pulling multiple GB/hr.

I'm going to pick up another firewire card today and see if it makes a 
difference, but I'm curious if anyone has suggestions for how to resolve this 
type of problem.  I've not had to do irq tuning on a PC before.  As it stands, 
the only superfluous thing left is the on-board USB, and I'd like to leave at 
least one of the controllers enabled.

Anyone have practical advice for solving this type of issue?  Does my problem 
sound like irq contention?  I had thought about PCI latency issues, here's how 
things are currently looking:

PATA IDE controllers are at 32, geforce 6200 is at 248 (!?), and everything 
else on the PCI bus that isn't one of the chipset/bridges is at 64.  I don't 
know offhand what the firewire card is at, but can check it later.  Might this 
be an area for investigation?

Thanks in advance for any assistance!



-matt


# Basic Settings
Compile type     release
Compiler cache   yes
DistCC           no
Install prefix   /usr/local
CPU              x86_64 (model name     : AMD Athlon(tm) 64 Processor 3000+)
Big Endian       no
MMX enabled      yes
Vector Builtins  yes

# Input Support
Joystick menu    no
lirc support     yes
Video4Linux sup. yes
ivtv support     yes
FireWire support yes
DVB support      yes [/usr/include]
DBox2 support    yes

# Sound Output Support
OSS support      yes
ALSA support     yes
aRts support     no
JACK support     no
DTS passthrough  no

# Video Output Support
x11 support      yes
xrandr support   no
xv support       yes
XvMC support     yes
XvMC VLD support yes
XvMC pro support no
XvMC libs        -lXvMCW
OpenGL vsync     yes
DirectFB         no

# Misc Features
DVD playback     yes
Frontend         yes
Backend          yes