[mythtv-users] (ATTN: John Pullan) HD-3000 HD Digital TV over Cable Working - But I had to hack to do it...

Christiaan Lutzer mythtv.lutzer at gmail.com
Tue Jun 21 02:44:06 UTC 2005


Greetings,

I just joined the list, so please forgive me if I'm posting this on an
incorrect list.

I've been using MythTV for a while now, and have for the last month or
so been trying to get a new system built using only an HD-3000
(www.pchdtv.com).  No matter what configuration I tried, the Channel
Editor's scanning facility simply would fail with tuning errors.  I
took a step back from MythTV and learned how the DVB drivers work and
even created a program (based on dtvstream) called dvbrecord that
tunes to a specified frequency, parses the Multi-Program Transport
Stream (MPTS), uses a specified program number to filter out a single
program and stores the resultant Single Program Transport Stream
(SPTS) to disk.

Dvbrecord works great.  I added a scanning feature that has it go
through all of the US Cable frequencies and a reasonable set of
program numbers, and captures SPTSs to disk for review.  This allowed
me to start associating frequency/program numbers with Digital TV
channels.  NOTE: I thought it was very cool that I could capture and
view both SD and HD streams with dvbrecord/mplayer.

FYI: I live in Cambridge, MA near MIT, and have Comcast Digital Cable.
 I have not yet completed my catalogue of Digital TV programs, but
here is what I've learned so far:

http://mandalore.dyndns.biz/~clutzer/dtv.txt

Anyway, onto why this message is appropriate for this email list: I
had to alter my libmythtv library sources in order to get this to
work.  The HD-3000 card is recognized as an ATSC card.  For the life
of me I could not get scanning to work, so I had to figure out
something else to do.  I noticed that if the card was a QAM (FE_QAM)
card, that you could supply a "channels.conf" file in lieu of
scanning.  However, with ATSC, the GUI components are not there to
allow you to enter a channels.conf file if the card is ATSC.  So, I
hacked the code to:

1.) Allow one to specify a channels.conf file if your card is of type ATSC, and

(scanwizardhelpers.cpp)
    case CardUtil::ATSC:
        addSelection(tr("Full Scan"),
                     QString::number(FullScan_ATSC),true);
+       addSelection(tr("Import channels.conf"),
+                    QString::number(Import));

2.) Modified the DVBConfParser to read in the program number from
channels.conf if the card type is ATSC.

(dvbconfparser.cpp)
bool DVBConfParser::parseConfATSC(QStringList& tokens)
{
    cerr << "DVBConfParser::parseConfATSC(): parsing tokens..." << endl;

    Channel c;
    QStringList::Iterator i = tokens.begin();
    QStringList::Iterator end = tokens.end();
    if (i != end) c.name = *i++; else return false;
    if (i != end) c.frequency = (*i++).toInt(); else return false;
    if (i == end || !c.modulation.parseConf(*i++)) return false;
+   // We need the program number in the transport stream, otherwise we cannot
+   // "tune" to the program.
+   if (i != end) c.serviceid = (*i++).toInt(); else return false;

    channels.append(c);

    return true;
}

And, the channels.conf file that I used simply looked like:
[root at localhost ~]# cat channels.conf
PBS HDTV:585000000:QAM_256:1
CBS HDTV:603000000:QAM_256:2
ABC HDTV:597000000:QAM_256:1
NBC HDTV:597000000:QAM_256:2
FOX HDTV:603000000:QAM_256:1
TNT HDTV:681000000:QAM_256:1
GBH Kids DTV:591000000:QAM_256:2

Now, to me, if you want to use MythTV to record and view HD and SD
Digital TV, it would be very difficult programmatically to determine
what frequency and program number corresponded to what XMLTV ID.  So,
to me anyway, channels.conf seems like the way to go.

Does this hack make sense?  Is there a better way to do it?  Am I nuts?

Side question: You may have noticed that I added a non-HD stream, "GBH
Kids DTV".  This captures and plays fine using VLC, but locks up
mythfrontend.  Any idea why HD would work, but SD would lock up the
frontend?

Thanks!

Christiaan.


More information about the mythtv-users mailing list