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 <[EMAIL PROTECTED]> 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. -- Daniel
_______________________________________________ mythtv-dev mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
