[mythtv] DVB EIT Implementation
danielk at cuymedia.net
Wed Oct 12 10:56:02 UTC 2005
On Wed, 2005-10-12 at 11:18 +0100, Stuart Auchterlonie wrote:
> On Wed, Oct 12, 2005 at 11:01:44AM +0100, John Pullan wrote:
> > On 12/10/05, Stuart Auchterlonie <stuarta at squashedfrog.net> wrote:
> This is where it falls down. GetEmitID only returns keys for the
> current mplex. I've a quick patch which dumps numbers of the event
> maps in the form keyid(Events[keyid].size()). It gets called quite
> often so you only need run it for 2 minutes.
Hmm, I'm pretty sure EITHelper can handle events for the whole
transport. But it is possible I added that feature and this
restriction used to be needed.
> This is also how I worked out the Events were not being cleared.
> This is why we do need to simplify the event handling (for 0.20)
> The events are currently double buffered.
If you just keep an event signature you don't need to keep the
event around in SIParser, and you can pass ownership of the Event
instance to the EITHelper instead of making a copy. (i.e. you
can make a shallow copy rather than a deep copy in EITHelper
as long as SIParser's event map is cleared in HandleEIT().
An event signature for ATSC EIT could be:
EIT pid + EIT sourceid + EIT eventid + EIT version + EIT start_time
An event signature for ATSC ETT could be:
ETT pid + ETT extended_text_table_id + ETT version +
EIT sourceid + EIT eventid
An EIT is complete when it has all it's ETT's.
I'm not sure whether the EIT pid is needed or useful, I believe
that every three hours the EIT pid of an EIT is changed, while
the event remains the same (unless there was a schedule change
of course, but that would be indicated by the version). The pids
for EIT and ETT are also used so you can select only a certain
3 hour block for event capture, say before starting a recording.
But I don't think you need or the ETT pid for the signature, for
the same reason as the EIT. There may be a little additional info
in atsctables.h (or at least pointers to the documentation...)
> GetEmitID returns key which eventually emits a signal to
> EventsReady with a QMap_Events on just that key.
> That goes into the EIThelper which then copies the events
> to it's own list which is then processed on the EITScanner
> run queue.
> I'd like to skip the middle step.
The copy right? I can't help you with constructing a signature
for DVB EIT events, but it is probably something like ATSC. And
probably a little bit simpler if the past is any guide...
Try just having GetEmitID return true as soon as an event is
complete not just for a single channel. I don't expect that it
would cause any problems in EITHelper.
More information about the mythtv-dev