On Fri, Dec 02, 2005 at 02:54:03PM -0500, Daniel Kristjansson wrote:
> On Fri, 2005-12-02 at 18:20 +0000, Stuart Auchterlonie wrote:
> > On Fri, Dec 02, 2005 at 06:03:51PM -0000, MythTV wrote:
> > > #743: Fix "program not found in PAT" problem.
>> > My initial thought was to track the required transportid.
> > Since we have a channel change, we therefore know the destination
> > mplex, from dtv_multiplex we know the transportid. So getting
> > a tsid != target tsid would detect this.
> Unfortunately the ATSC tsid's are often the same across transports,
> probably because they aren't used for tuning.
I figured something like that might occur...
>> > Another option is that PAT's should be transmitted at a minimum
> > every 300ms (? - not sure the exact figure), so if we haven't
> > found the correct PAT in this time throw an error. Perhaps this
> > could be combined with my patch. After 300ms feed the PAT through
> > CreatePATSingleProgram regardless??
> This would work, PAT's are required every 100 ms for ATSC streams.
> PMT's are required every 400 ms. In practice you need to add a
> little slop. But since this is just to be able to watch broken
> channels I don't mind a 1 or 2 second delay; maybe it will
> encourage people to call the station and complain.
>> It does seem a little hacky, can you see if it would work to send a
> DMX_STOP ioctl to the demux before closing it in
> DVBRecorder::CloseFilters(void) ?
>> replace:
> close(_pid_filters[i]);
> with:
> {
> ioctl(_pid_filters[i], DMX_STOP);
> close(_pid_filters[i]);
> }
>> This should be implicit in the close(). But I find making
> assumptions about DVB drivers tends to bring trouble.
>
****Preliminary**** Testing shows that this is working.
I will recheck the logs tommorrow morning and see if there
are any further occurances. This is without my patch and
only with this change.
Not knowing the DVB API very well it would seem vaguely
logical to be able to add and remove pids without stopping
the demux. ???
Stuart