[linux-dvb] Several TS streams from DVR device?

Johannes Stezenbach js at linuxtv.org
Mon Jul 11 13:55:08 CEST 2005


Felix Domke wrote:
> ok, my simple proposal is:
> 
> - make dmx_pes_type_t union with another enum:
> 
> struct dmx_pes_filter_params
> {
> ...
>   union {
>     dmx_pes_type_t pes_type;
>     dmx_tap_type_t tap_type;
>   };
> ..
> };
> 
> - and add, backward compatible, the different TAP types.
> 
> typedef enum
> {
>   DMX_TAP_PES = DMX_PES_OTHER, /* for backward binary compat. */
>   DMX_TAP_TS
> } dmx_tap_type_t;
> 
> implementation of this in the core would be probably as easy as
> 
> linux/drivers/media/dvb/dvb-core/dmxdev.c:
> @@ -643,7 +643,11 @@ static int dvb_dmxdev_filter_start(struc
>                         ts_type |= TS_PACKET;
> 
>                 if (otype == DMX_OUT_TAP)
> -                       ts_type |= TS_PAYLOAD_ONLY|TS_PACKET;
> +               {
> +                       ts_type |= TS_PACKET;
> +                       if (ts_pes == DMX_TAP_PES)/*i.e. DMX_PES_OTHER*/

I'm a bit confused, but I guess this should be:
  +                       if (ts_pes != DMX_TAP_TS)

> +                               ts_type |= TS_PAYLOAD_ONLY;
> +               }
> 
> (untested)
> this would solve the first problem, getting the TS data.
> 
> (I know the naming of "pes filters" sucks, but that's comes from the
> very old "napi" legacy. this one at least cleans up the "pes_type" mess
> and makes this field useful again. :)
> 
> thoughts?
> 
> for the second one (only one DVR device), i'd like to completely stop
> using DVR devices for reading data, it just doesn't belong there. (of
> course it must be kept for backward compatibility).
> 
> so my proposal is to add a DMX_ADD_PES_FILTER, which, as the name says,
> adds a filter. it could be used instead of DMX_SET_PES_FILTER, just that
> it doesn't reset other filters. to reset the filter, you have to close
> the fd or use DMX_SET_PES_FILTER. implementation of this isn't so easy,
> as currently exactly one filter is associated with each fd (or am i
> wrong here? i'm not soo familiar with the core), and a dvr buffer must
> be allocated (as some hardware devices can't do multi pid filtering into
> one queue - well, most hardware devices can't ;)

I'm pondering if it would not be better to add the full
recording filter API from v4. OTOH, v4 rec filters are
somewhat overfeatured and complicated, and the public
PCI/USB drivers would not really benefit from the additional
features because of missing hardware, so maybe your propsal
is better. I need to sleep over this...

Opinions?

Johannes




More information about the linux-dvb mailing list