Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: More V4 Demux API Q's



On Thu, Apr 01, 2004 at 01:58:21PM +0000, Rob.McConnell@Zarlink.Com wrote:
> 
> Johannes Stezenbach wrote:
> > Rob.McConnell@Zarlink.Com wrote:
> > > Johannes Stezenbach wrote:
> > > > I think usually there is one DMA buffer per section filter, whether
> > > > they are on the same PID, same fd or not. (The av7110 driver uses
> > > > software section filtering now, but usually one would use hardware
> > > > section filters if they are available.) The common PID filter for
> > > > multiple section filters on the same PID is handled within the
> > > > driver and not visible in the API. The V3 implementation has
> > > > a layer of additional buffers for the "kernel demux API" thing,
> > > > but I try to get rid of that in V4. But if one would allow
> > > > the output of multiple filters on the same fd, one would need an
> > > > additional output ringbuffer, plus copying.
> > >
> > > OK, so the AV7110 functions differently to the h/w that I am familiar
> with.
> > > In fact, on this h/w there isn't one DMA buffer per section filter but
> > > rather the output of all section filters attached to a single PID feed
> get
> > > DMAed to a single h/w buffer.  In this case, the s/w would have to do
> the
> > > additional work of separating the tables by their ID and copying the
> data
> > > to separate circular kernel buffers each associated with a process on a
> > > different fd.  There is certainly more s/w overhead in the driver to
> > > implement this, rather than allowing the complete section tables to be
> > > allowed up to user space and the middleware to perform the filtering on
> the
> > > single fd.
> 
> > Hm, I checked the docs for some hw and it seems that you are damn right!
> > Thanks for pointing this out.
> 
> > It seems that if we want to match the API up with the hw caps we need
> > to have multiple section filters on one fd, but only if they are
> > on the same PID. We would also have to disallow multiple filters
> > for the same PID on different fds.
> 
> > But I know that this would be a pita for desktop Linux users, it's
> > just too inconvenient if only one application can read PAT/PMT at
> > the same time...
> 
> What is the current status for multiple section filters on a single fd?
> Are you intending to support this, as there is a lot of h/w out there with
> this requirement?
> 
> If we are to support it (which I strongly suggest we do), then we would
> need the ability to ADD/DEL section filters to an fd (extra few ioctls).
> 
> Please let me know which direction we are going with this.

After some discussion we decided that the bandwidth handled by
section filters is usually low, so that we can afford the overhead
of keeping a flexible section filter layer in the driver core.

- one section filter per fd
- multiple section filters for the same PID (on different fds)
- section data is copied from hw DMA buffer of the PID filter
  to the output buffer of the corresponding section filter fd

Note: The (non-av7110) hw I know puts tags into the section ringbuffer
of the PID filter, so software can determine which section filter
matched.

Regards,
Johannes


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index