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