[mythtv] DVB integration - first attempt!
Ben Bucksch
linux.news at bucksch.org
Wed Apr 23 13:43:24 EDT 2003
Edward Wildgoose wrote:
>Ben, this sounds great. I would like to get a look at it so far
>
OK, I created a patch, it's at
<http://www.bucksch.org/xfer/dvb-1.tar.bz2> (it's 80K, not sure if that
is appropriate as attachment for this list). Note that the DVB part is
*not* useable - as I said, it's unfinished and doesn't work yet.
What should work, though, is the analog part - I made a change how
normal analog cards are tuned, and it's of course that I didn't cause
regressions there, so it would be nice, if you could test for any bugs
that are not in normal CVS.
Other than that, I'd be happy to get feedback on the general approach I
took. But, as I said, the details of the code are still quite a mess at
some places, so keep in mind that it's a work in progress.
>and I will see what I can do about a shell account.
>
>I'm not sure that I quite understand what you are doing though
>
What you described is more or less the second ("stream" in the code)
approach. Just that I don't work with unix socket, but will try to
accept a stream from stdout of a help app (e.g. dvbstream) directly.
>- Use an external daemon program to provide the tuning. This is effectively going to be a thin wrapper around dvbstream
>
I don't think that dvbstream is appropriate in that usage. In Myth, the
tuning is independent from the data stream (you can change the channel
of an ongoing recording, if I understood it correctly), and dvbstream
takes tuning param on the commandline. Of course, that would mean to
restart dvbstream during each tuning, and that doesn't line up with
MythTV's internal workings. I first thought (when I replied to Richard
King) that this complete negates that whole pipe approach, but then I
realized that dvbsteam has a telnet interface, so you could write a
little wrapper (using netcat or whatever) which tells a running
dvbstream to change the channel using its telnet interface. A hack, for
sure, but it could work.
The same approach - one external program for the stream, via stdout,
another external program for tuning, like cardinput.externalcommand
today - could work for completely different kinds of inputs as well,
that's why I thought that code would be useful in general and added it.
It would probably be a hack in all cases, but a hack that a user can do
without changes to the MythTV source code, which has considerable
advantages.
Because that's a hack, my other approach is to try to integrate this all
into MythTV. I do that by partially using dvbstream source code.
>Anyway, the main question is how to modify myth???
>
See the attached code :).
>Do you think it is a simple matter to just alter the MpegRecord.cpp module to ditch the v4l2 stuff, or is something more complicated needed?
>
That, and we have the same problem in channel.cpp. I subclassed both
MpegRecorder and Channel to StreamRecorder and StreamChannel, overriding
all the methods accessing /dev/video with either alternate versions or
empty functions (because they are not needed or don't make sense for
us). Then I changed tv_rec.cpp to create these classes in the case of
cardtype DVB or Stream, basically the same Isaac did for the PVR250
(cardtype "MPEG").
Ben
More information about the mythtv-dev
mailing list