[mythtv] Adaptive streaming.

Kunal Kandekar kunalkandekar at gmail.com
Thu Oct 14 20:30:48 UTC 2010


I haven't messed around with the code base that much, but at a high level
whatever the backend does is in <mythtv-src-root>/programs/mythbackend, and
whatever the frontend does is in <mythtv-src-root>/programs/mythfrontend. A
lot of common code is in <mythtv-src-root>/libs/ however, so I kinda see
your problem.

I can try to help you with part of your request. Disclaimer: I have not
worked with the codebase since v 0.24-fixes, so this may be a little
outdated.

For Recording:
* <mythtv-src-root>/programs/mythbackend/encoderlink.cpp - manages tuners
and encoders. It is mostly a wrapper around TVRec
in <mythtv-src-root>/libs/libmythtv/tv_rec.h/cpp, which has most of the
complexity (look at EncoderLink::StartRecording, EncoderLink::StopRecording
and EncoderLink::SpawnLiveTV).
* <mythtv-src-root>/programs/mythbackend/mainserver.cpp - receives commands
from frontend or other clients and executes them (look at
MainServer::HandleRemoteEncoder).
* <mythtv-src-root>/libs/libmyth/programinfo.cpp - represents a program to
be recorded, and has some methods to load the program you want (look
at ProgramInfo::LoadProgramAtDateTime)

For Playback (backend part of it... I haven't worked with the frontend part
much, so I can't help much there):
<mythtv-src-root>/programs/mythbackend/mainserver.cpp - receives request
from clients for recorded files and streams it (look
at MainServer::HandleFileTransferQuery)

These are by no means the only files you may need to look at. Each one
references and uses multiple other classes that you may have to look
through.

This link helps in explaining some of the protocol involved in recording and
streaming TV (again, it may be outdated):
http://www.mythtv.org/wiki/Myth_Protocol/Guide
Looking at the messages exchanged and finding them in the MainServer source
can give you an idea of the flow control at the backend. In general, you
have to find free recorders, find one that can tune in to your required
channel, instruct it to start recording, and check if it succeeded.

As for adaptive streaming, I don't see the value of using it on a home
network.

Hope this helps.

Kunal


On Thu, Oct 14, 2010 at 3:47 AM, James Courtier-Dutton <
james.dutton at gmail.com> wrote:

> On 14 October 2010 00:24, Jean-Yves Avenard <jyavenard at gmail.com> wrote:
> >
> > Not working on your changing channel time improvement anymore?
>
> I am, but the mythtv source code base is really difficult to understand.
> There is no separation between frontend code and backend code, so it
> is difficult to work out if a particular section of source code is
> executed at the backend or the frontend. Is there a wiki page that
> explains the architecture of the code a bit.
>
> Something along the lines of:
> For Recording:
> Method X reads the media stream from the DVB card, it then sends it to
> method Y which stores it on the HD.
> For Playback:
> Method X reads the media stream from the HD, it then sends it to
> method Y which sends it over the network to the frontend.
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mythtv.org/pipermail/mythtv-dev/attachments/20101014/f82d906b/attachment.htm>


More information about the mythtv-dev mailing list