All of lore.kernel.org
 help / color / mirror / Atom feed
* DVB-S2 multistream support
@ 2011-12-25  1:06 Georgi Chorbadzhiyski
  2011-12-25  8:23 ` Antti Palosaari
  0 siblings, 1 reply; 26+ messages in thread
From: Georgi Chorbadzhiyski @ 2011-12-25  1:06 UTC (permalink / raw)
  To: linux-media

Guys are there any news on DVB-S2 multistream support. I have
found test patches at http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874
and judging by report on dvblast-devel ML they seem to work.

What is holding them back, perhaps nobody submitted them?

-- 
Georgi Chorbadzhiyski
http://georgi.unixsol.org/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25  1:06 DVB-S2 multistream support Georgi Chorbadzhiyski
@ 2011-12-25  8:23 ` Antti Palosaari
  2011-12-25 10:17   ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 26+ messages in thread
From: Antti Palosaari @ 2011-12-25  8:23 UTC (permalink / raw)
  To: Georgi Chorbadzhiyski; +Cc: linux-media

On 12/25/2011 03:06 AM, Georgi Chorbadzhiyski wrote:
> Guys are there any news on DVB-S2 multistream support. I have
> found test patches at http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874
> and judging by report on dvblast-devel ML they seem to work.
>
> What is holding them back, perhaps nobody submitted them?

Ok, there seems to be now TS IDs for ISDB-S, DVB-T2 and DVB-S2. I wonder 
who those are defined in our DVB API as own parameter for each standard...

Antti


-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25  8:23 ` Antti Palosaari
@ 2011-12-25 10:17   ` Mauro Carvalho Chehab
  2011-12-25 10:55     ` Konstantin Dimitrov
  0 siblings, 1 reply; 26+ messages in thread
From: Mauro Carvalho Chehab @ 2011-12-25 10:17 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: Georgi Chorbadzhiyski, linux-media

On 25-12-2011 06:23, Antti Palosaari wrote:
> On 12/25/2011 03:06 AM, Georgi Chorbadzhiyski wrote:
>> Guys are there any news on DVB-S2 multistream support. I have
>> found test patches at http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874
>> and judging by report on dvblast-devel ML they seem to work.
>>
>> What is holding them back, perhaps nobody submitted them?

I don't remember seeing any patches submitted for it.

The patch "budget-omicom.patch" seems to be a hack that will likely break support
for other supported devices.

The patch stv090x-mis.patch also seems wrong, as "props->dvbs2_mis_id" is probably
initialized with 0 by the core, so, by default, the MIS filter will be enabled.
That's said, the approach there assumes that just one mis can be filtered. I'm wandering
if it wouldn't be better to use the same approach taken inside dvb-core for PIP filtering.

In any case, the dvb properties cache should be initialized to have the MIS filter
disabled, and only enable it if userspace requests it via FE_SET_PROPERTY.

> Ok, there seems to be now TS IDs for ISDB-S, DVB-T2 and DVB-S2. I wonder who those are 
> defined in our DVB API as own parameter for each standard...

The per-standard parameters were introduced by ISDB-T. It probably makes sense for
the ISDB specific parameters, as no other delivery system looks like that, but we should
avoid propagating it for other delivery systems, expecially DVB-*, as the new parameters
may be used on other delivery systems on that family.

It would be great to fix this as soon as possible, in order to avoid propagating it.
The fix should be simple: just rename the parameter, and create an alias to the
previous name.

Regards,
Mauro

> 
> Antti
> 
> 


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25 10:17   ` Mauro Carvalho Chehab
@ 2011-12-25 10:55     ` Konstantin Dimitrov
  2011-12-25 11:18       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 26+ messages in thread
From: Konstantin Dimitrov @ 2011-12-25 10:55 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Antti Palosaari, Georgi Chorbadzhiyski, linux-media

On Sun, Dec 25, 2011 at 12:17 PM, Mauro Carvalho Chehab
<mchehab@redhat.com> wrote:

> That's said, the approach there assumes that just one mis can be filtered. I'm wandering
> if it wouldn't be better to use the same approach taken inside dvb-core for PIP filtering.

i'm not sure that i understand correctly what you mean, but i can't
see way how to filter more that one mis stream at the same time,
because their id is stored in the bbheader. so, even if we assume it's
possible to send two ids for filtering to the hardware and then it
outputs ts packets from both of them there is still no way to know
which ts packet to which mis stream belongs, because the bbheader is
stripped inside the demodulator before the data are outputted. in fact
if you don't set any id for filtering to mis capable hardware then
usually it outputs the ts packets from all of the streams and that's
why the outputted stream looks corrupted, because it contains ts
packets from all mis streams and that's why you what to set id for
filtering to the hardware in the first place - to make it output ts
packets just from one selected stream. however, if dvb-core has
support for bbframes like the following unfortunately lost work:

http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html

then instead setting mis filtering in the hardware you can force it to
output bbframes (at least currently all mis capable hardware is
supposed to be able to output bbframes) and then filter all streams in
the software, which would be significantly more flexible, because that
way all streams can be filtered and used in the same time.

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25 10:55     ` Konstantin Dimitrov
@ 2011-12-25 11:18       ` Mauro Carvalho Chehab
  2011-12-25 12:37         ` Konstantin Dimitrov
  2011-12-27 10:12         ` Christian Prähauser
  0 siblings, 2 replies; 26+ messages in thread
From: Mauro Carvalho Chehab @ 2011-12-25 11:18 UTC (permalink / raw)
  To: Konstantin Dimitrov; +Cc: Antti Palosaari, Georgi Chorbadzhiyski, linux-media

On 25-12-2011 08:55, Konstantin Dimitrov wrote:
> On Sun, Dec 25, 2011 at 12:17 PM, Mauro Carvalho Chehab
> <mchehab@redhat.com> wrote:
> 
>> That's said, the approach there assumes that just one mis can be filtered. I'm wandering
>> if it wouldn't be better to use the same approach taken inside dvb-core for PIP filtering.
> 
> i'm not sure that i understand correctly what you mean, but i can't
> see way how to filter more that one mis stream at the same time,
> because their id is stored in the bbheader. so, even if we assume it's
> possible to send two ids for filtering to the hardware and then it
> outputs ts packets from both of them there is still no way to know
> which ts packet to which mis stream belongs, because the bbheader is
> stripped inside the demodulator before the data are outputted. in fact
> if you don't set any id for filtering to mis capable hardware then
> usually it outputs the ts packets from all of the streams and that's
> why the outputted stream looks corrupted, because it contains ts
> packets from all mis streams and that's why you what to set id for
> filtering to the hardware in the first place - to make it output ts
> packets just from one selected stream. however, if dvb-core has
> support for bbframes like the following unfortunately lost work:
> 
> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html

Yes, I'm meaning something like what it was described there. I think
that the code written by Christian were never submitted upstream.

> then instead setting mis filtering in the hardware you can force it to
> output bbframes (at least currently all mis capable hardware is
> supposed to be able to output bbframes) and then filter all streams in
> the software, which would be significantly more flexible, because that
> way all streams can be filtered and used in the same time.

While your hardware supports filtering only one MIS, other hardware may
support more. Anyway, it makes sense to add a software filter, and to
add a way to deliver the mis information to userspace, if more than one
mis is filtered.

Regards,
Mauro

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25 11:18       ` Mauro Carvalho Chehab
@ 2011-12-25 12:37         ` Konstantin Dimitrov
  2011-12-27 10:12         ` Christian Prähauser
  1 sibling, 0 replies; 26+ messages in thread
From: Konstantin Dimitrov @ 2011-12-25 12:37 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Antti Palosaari, Georgi Chorbadzhiyski, linux-media

On Sun, Dec 25, 2011 at 1:18 PM, Mauro Carvalho Chehab
<mchehab@redhat.com> wrote:
> On 25-12-2011 08:55, Konstantin Dimitrov wrote:
>> On Sun, Dec 25, 2011 at 12:17 PM, Mauro Carvalho Chehab
>> <mchehab@redhat.com> wrote:
>>
>>> That's said, the approach there assumes that just one mis can be filtered. I'm wandering
>>> if it wouldn't be better to use the same approach taken inside dvb-core for PIP filtering.
>>
>> i'm not sure that i understand correctly what you mean, but i can't
>> see way how to filter more that one mis stream at the same time,
>> because their id is stored in the bbheader. so, even if we assume it's
>> possible to send two ids for filtering to the hardware and then it
>> outputs ts packets from both of them there is still no way to know
>> which ts packet to which mis stream belongs, because the bbheader is
>> stripped inside the demodulator before the data are outputted. in fact
>> if you don't set any id for filtering to mis capable hardware then
>> usually it outputs the ts packets from all of the streams and that's
>> why the outputted stream looks corrupted, because it contains ts
>> packets from all mis streams and that's why you what to set id for
>> filtering to the hardware in the first place - to make it output ts
>> packets just from one selected stream. however, if dvb-core has
>> support for bbframes like the following unfortunately lost work:
>>
>> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html
>
> Yes, I'm meaning something like what it was described there. I think
> that the code written by Christian were never submitted upstream.
>

no doubt, a lot of work could be saved if the repository of
Christian's project wasn't dead or his work was upstream, but it is
how it is. BTW, Christian is also co-author of an article called "A
Second Generation Architecture for Linux DVB Networking" :

http://202.194.20.8/proc/ASMS2008/DATA/B-14-03.PDF

which in my opinion could be used as source of both ideas and general
information.

>> then instead setting mis filtering in the hardware you can force it to
>> output bbframes (at least currently all mis capable hardware is
>> supposed to be able to output bbframes) and then filter all streams in
>> the software, which would be significantly more flexible, because that
>> way all streams can be filtered and used in the same time.
>
> While your hardware supports filtering only one MIS, other hardware may
> support more.

i agree, that's of course true in theory, but in my opinion in
practice it entirely depends on how you're going to treat hardware
having more than one data output at the same time - currently such
hardware is treated as creating as many /dev/dvb/adapterX for it as
there are data outputs. so, if that way is assumed, thinking about it,
there are only few possible cases:

1) the hardware has one data output:

1.1) which is set to output bbframes - then if there is bbframe
support in dvb-core, that's the best case, because all streams can be
used at the same time with software filtering, otherwise we're stuck
with setting the output to either ts mode (case 1.2) or some
custom/proprietary mode (case 1.3)

1.2) it is set to output ts (or dvb-core doesn't have bbframe support)
then we're limited to only one ts stream and that's what actually is
even currently possible, i.e. this case is the closest to the current
status of dvb-core no matter of any existing or future hardware

1.3) it can be set to filter and output more than one ts stream : then
to do it via one data output the hardware must use some
custom/proprietary output format to preserve the ids. so, in such case
the driver must be responsible to deal with that custom/proprietary
output format and output the different streams as separate ts streams,
but then my point is we're in case 2, which is the initial assumption

2) the hardware has 2 or more data outputs: then for each of them
there is separate adapterX created to handle the data for each output

3) something else, i'm missing to think about it

if we're talking for real and existing hardware only, what i've seen so far is:

- no mis filtering is set: then all streams are outputted by the
hardware, but the data are useless, because it's not possible to tell
which ts packet to which stream belongs, i.e. it's not possible to
reconstruct the different ts streams

- no mis filtering is set: then the hardware sets as default id for
the filter the id of the first bbheader that is received and only ts
packets of that steam are outputted, i.e. one ts output

- mis filter is set: one id is selected and one ts stream of that
selected id is outputted

in any case at least from my point of view case 1 and 2 cover all options.

> Anyway, it makes sense to add a software filter, and to
> add a way to deliver the mis information to userspace, if more than one
> mis is filtered.
>
> Regards,
> Mauro

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-25 11:18       ` Mauro Carvalho Chehab
  2011-12-25 12:37         ` Konstantin Dimitrov
@ 2011-12-27 10:12         ` Christian Prähauser
  2011-12-27 16:08           ` Antti Palosaari
                             ` (3 more replies)
  1 sibling, 4 replies; 26+ messages in thread
From: Christian Prähauser @ 2011-12-27 10:12 UTC (permalink / raw)
  To: linux-media

> 
> Yes, I'm meaning something like what it was described there. I think
> that the code written by Christian were never submitted upstream.
> 

Hello Mauro,

Konstantin drew my attention to this discussion. Indeed, some time ago I wrote 
a base-band demux for LinuxDVB. It was part of a project to integrate support 
for second-generation IP/DVB encapsulations (GSE). The BB-demux allows to
register filters for different ISIs and data types (raw, generic stream,
transport stream).

I realized that the repo hosted at our University is down. If there is interest,
I can update my patches to the latest LinuxDVB version and we can put them on a 
public repo e.g. at linuxdvb.org.

Kind regards,
Christian.
 






^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-27 10:12         ` Christian Prähauser
@ 2011-12-27 16:08           ` Antti Palosaari
  2012-01-19 13:34           ` Marek Ochaba
                             ` (2 subsequent siblings)
  3 siblings, 0 replies; 26+ messages in thread
From: Antti Palosaari @ 2011-12-27 16:08 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media

On 12/27/2011 12:12 PM, Christian Prähauser wrote:
>>
>> Yes, I'm meaning something like what it was described there. I think
>> that the code written by Christian were never submitted upstream.
>>
>
> Hello Mauro,
>
> Konstantin drew my attention to this discussion. Indeed, some time ago I wrote
> a base-band demux for LinuxDVB. It was part of a project to integrate support
> for second-generation IP/DVB encapsulations (GSE). The BB-demux allows to
> register filters for different ISIs and data types (raw, generic stream,
> transport stream).
>
> I realized that the repo hosted at our University is down. If there is interest,
> I can update my patches to the latest LinuxDVB version and we can put them on a
> public repo e.g. at linuxdvb.org.
>
> Kind regards,
> Christian.

I have a question which is a little bit off-topic for that thread but I 
would like to ask since I think you could have some idea.

FEC Code Rate is often given as k/n, for example FEC 1/4. But nowadays 
there is also seen 0.x like FEC 0.8.
I have feeling that this is due to new inner coding used, LDPC instead 
of traditional convolutional codes. When convolution codes were used it 
was correct to define 1/2 as basic rate and puncture rest from that. But 
as now with LDPC we have larger blocks we cannot represent so easily. 
For example DTMB uses LDPC(7488,6016) = 6016/7488 = ~0.8034 => FEC 0.8 
is used.

I am adding DTMB support for DVB API and that's why I have to think if I 
extend old k/n FECs or define new ones as FEC 0.4/0.6/0.8.

regards
Antti

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-27 10:12         ` Christian Prähauser
  2011-12-27 16:08           ` Antti Palosaari
@ 2012-01-19 13:34           ` Marek Ochaba
  2012-01-21 10:29             ` Christian Prähauser
  2012-01-22  2:13           ` Mauro Carvalho Chehab
       [not found]           ` <CAF0Ff2mf0tYs3UG3M6Cahep+_kMToVaGgPhTqR7zhRG0UXWuig@mail.gmail.com>
  3 siblings, 1 reply; 26+ messages in thread
From: Marek Ochaba @ 2012-01-19 13:34 UTC (permalink / raw)
  To: linux-media; +Cc: cpraehaus

Hello Christian,

we interest to your patch for BBFrame demux (we want to read some BBF
header flags and read GS decapsulated data). Could you please publish
latest version of it ? And send link to it ?

Is there also need adaptation in device driver ? We want to us it by DVB-S2
card TBS-6925, which use STV0900 chip.

-- 
Marek Ochaba

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-01-19 13:34           ` Marek Ochaba
@ 2012-01-21 10:29             ` Christian Prähauser
  2012-01-23 13:58               ` Marek Ochaba
  0 siblings, 1 reply; 26+ messages in thread
From: Christian Prähauser @ 2012-01-21 10:29 UTC (permalink / raw)
  To: Marek Ochaba; +Cc: linux-media, Konstantin Dimitrov

Dear Marek,

Konstantin and I are currently work on making the BB-demux work with  
recent version of Linux DVB
and the TBS 6925. We well let you know as soon as a working patch is  
available (early february).

In the meantime, maybe you want to tell me more about your use-case,  
for helping us understand
what the user-space API requirements are. I assume you need the data  
in user-space? Would it be
enough for you if you receive the BBFrames (header + data field)?

Kind regards,
Christian.

Am 19.01.2012 um 14:34 schrieb Marek Ochaba:

> Hello Christian,
>
> we interest to your patch for BBFrame demux (we want to read some BBF
> header flags and read GS decapsulated data). Could you please publish
> latest version of it ? And send link to it ?
>
> Is there also need adaptation in device driver ? We want to us it by  
> DVB-S2
> card TBS-6925, which use STV0900 chip.
>
> -- 
> Marek Ochaba

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2011-12-27 10:12         ` Christian Prähauser
  2011-12-27 16:08           ` Antti Palosaari
  2012-01-19 13:34           ` Marek Ochaba
@ 2012-01-22  2:13           ` Mauro Carvalho Chehab
  2012-01-22 12:44             ` Christian Prähauser
       [not found]           ` <CAF0Ff2mf0tYs3UG3M6Cahep+_kMToVaGgPhTqR7zhRG0UXWuig@mail.gmail.com>
  3 siblings, 1 reply; 26+ messages in thread
From: Mauro Carvalho Chehab @ 2012-01-22  2:13 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media

Hi Christian,

Em 27-12-2011 08:12, Christian Prähauser escreveu:
>>
>> Yes, I'm meaning something like what it was described there. I think
>> that the code written by Christian were never submitted upstream.
>>
> 
> Hello Mauro,
> 
> Konstantin drew my attention to this discussion. Indeed, some time ago I wrote 
> a base-band demux for LinuxDVB. It was part of a project to integrate support 
> for second-generation IP/DVB encapsulations (GSE). The BB-demux allows to
> register filters for different ISIs and data types (raw, generic stream,
> transport stream).
> 
> I realized that the repo hosted at our University is down. If there is interest,
> I can update my patches to the latest LinuxDVB version and we can put them on a 
> public repo e.g. at linuxdvb.org.

Sorry, I didn't notice your comment on this thread until today. It sounds
interesting. Please post the patches at the ML, when they're available, for
us to review.

Thanks!
Mauro
> 
> Kind regards,
> Christian.
>  
> 
> 
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-01-22  2:13           ` Mauro Carvalho Chehab
@ 2012-01-22 12:44             ` Christian Prähauser
  0 siblings, 0 replies; 26+ messages in thread
From: Christian Prähauser @ 2012-01-22 12:44 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media

Hello Mauro,

Am 22.01.2012 um 03:13 schrieb Mauro Carvalho Chehab:

> Hi Christian,
>
> Em 27-12-2011 08:12, Christian Prähauser escreveu:
>>>
>>> Yes, I'm meaning something like what it was described there. I think
>>> that the code written by Christian were never submitted upstream.
>>>
>>
>> Hello Mauro,
>>
>> Konstantin drew my attention to this discussion. Indeed, some time  
>> ago I wrote
>> a base-band demux for LinuxDVB. It was part of a project to  
>> integrate support
>> for second-generation IP/DVB encapsulations (GSE). The BB-demux  
>> allows to
>> register filters for different ISIs and data types (raw, generic  
>> stream,
>> transport stream).
>>
>> I realized that the repo hosted at our University is down. If there  
>> is interest,
>> I can update my patches to the latest LinuxDVB version and we can  
>> put them on a
>> public repo e.g. at linuxdvb.org.
>
> Sorry, I didn't notice your comment on this thread until today. It  
> sounds
> interesting. Please post the patches at the ML, when they're  
> available, for
> us to review.

No problem, I'll keep you informed about the status of the patches.

Thanks and kind regards,
Christian.

>
> Thanks!
> Mauro
>>
>> Kind regards,
>> Christian.
>>
>>
>>
>>
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux- 
>> media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-01-21 10:29             ` Christian Prähauser
@ 2012-01-23 13:58               ` Marek Ochaba
  0 siblings, 0 replies; 26+ messages in thread
From: Marek Ochaba @ 2012-01-23 13:58 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media, Konstantin Dimitrov, statelov

Hello Christian & Konstantin,
we look forward for your patch. Here are some hints, what we want to do.

Now we read TS packets from standard userspace API (/dev/dvb/adapter0/dvr0,
for video data processing) or use libdvbapi/dvbnet.h (for IP over DVB data,
MPE decapsulation). In future we want to receive ACM/GSE data. So we plan
to read whole BBFrame data and decapsulate it. But if there will be GSE
decapsulation in linuxtv.org kernel layer, then we don't need whole BBFrame.

It would be nice to have acces to some usefull data from BBF headers
particularly: TS/GS field, SIS/MIS flag, CCM/ACM flag, it should be
statical value throught several BBF. Other usefull data which is diffrent
from more BBF is Imput stream ID (ISI). Can it be accesible as list of
received values ?
This values could be accessible throught standard S2API sytem call
ioctl(FE_GET_PROPERTY, struct dtv_property)
or if whole BBFrame/BBFheader will be accessible, we can read it ourself
from BBF header.

BTW: We have GPL source code for GSE decapsulation from Karsten Siebert. If
you don't have implement yet, this one can be used, it is in "kernel space"
compatible format.

--
Marek Ochaba

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
       [not found]               ` <CAF0Ff2ncv0PJWSOOw=7WeGyqX3kKiQitY52uEOztfC8Bwj6LgQ@mail.gmail.com>
@ 2012-01-25 13:12                 ` Christian Prähauser
  2012-02-01 18:49                   ` Konstantin Dimitrov
  0 siblings, 1 reply; 26+ messages in thread
From: Christian Prähauser @ 2012-01-25 13:12 UTC (permalink / raw)
  To: Konstantin Dimitrov; +Cc: linux-media

Hi Konstantin!

I received your "present" :-) - many thanks! I already ported my base- 
band
demux code to the current linux media master branch (in the v4l-dvb  
git repo).
It currently allows drivers/frontends to pass base-band frames to the  
bb-demux.
The bb-demux allows user-space filtering for BBFrames, TS packets, etc  
via
the demux handle or dvr device. It also allows other kernel components  
to do
base-band filtering (e.g. receive BBFrames on a specific ISI).

Currently, the bb-demux only accepts a single, complete BBFrame in a  
single buffer, but I think
it should also be able to cope with a stream of data (for ease of  
driver integration), including
synchronization (search for frame start) and buffering (for assembling  
frames).

Besides checking whether the current user-space API for base-band  
filtering is useful,
there are a few remaining design questions to think about:

  * How to allow pes/section filtering when receiving multiple TSs in  
parallel (on different ISIs)
	- allow to "stack" filters, e.g. a bb-demux filter delivers TS from a  
certain
	ISI and forwards it to a section filter (which then passes sections  
to user-space).
	- dmx / dvr device for each?
  * When and how to bring frontend into base-band data mode (a mode  
where it delivers
	BBFrames instead of TS)?
	- Should this be set by the user or happen automatically?
  * How to set ISI on demux if we receive TS on a channel with MIS
	(if this is not already possible, didn't check it yet)
	- this could be covered by the bb-demux filtering API, although the  
base-band
	demux is not directly involved in this case (since TS data is  
delivered to dvb-core).

For now, I'm working to setup a public GIT repository, so you can have  
a look at the current status.
Do you have a repository for the TBS drivers or should I use the  
official ones? Do you have
an idea of how to program the STV900 to output BBFrames?

Thanks again and kind regards,
Christian.

Am 17.01.2012 um 21:04 schrieb Konstantin Dimitrov:

> hi Christian,
>
> it's great that you find it interesting too. i already prepared the
> package and i will send it tomorrow - you should get in shorty - i
> believe even with the most inexpensive shipping service within Europe
> you will get in just a week or so. i hope you will have fun with the
> TBS 6925 board - even if not for anything else just to receive DVB-S2
> in Linux.
>
> kind regards,
> konstantin
>
> On Thu, Jan 12, 2012 at 3:06 PM, Christian Prähauser
> <cpraehaus@cosy.sbg.ac.at> wrote:
>> Hi Konstantin!
>>
>> Thank you, and a happy new year to you too!
>>
>> The way to proceed you suggested sounds very interesting too me! I'd
>> be more than happy if you could send me the TBS 6925 card to my  
>> university
>> address:
>>
>> Christian Prähauser
>> c/o Department of Computer Sciences
>> University of Salzburg
>> Jakob Haringer Str. 2
>> A 5020 Salzburg
>> AUSTRIA
>>
>> I will start to update my patches to match recent LinuxDVB sources  
>> and
>> try to integrate Baseband demux support into the TBS linux driver.
>> If this works, we can also put in GSE-support (S2-native  
>> encapsulation for
>> carrying IP packets in DVB). This would then probably start to be
>> interesting
>> for some people...
>>
>> Thanks and kind regards,
>> Christian.
>>
>> Am 10.01.2012 um 20:40 schrieb Konstantin Dimitrov:
>>
>>
>>> hello Christian,
>>>
>>> and Happy New Year to you!
>>>
>>> thank you for joining the discussion, but apparently and  
>>> unfortunately
>>> Mauro current priorities are not to bring V4L to a next-level, as  
>>> you
>>> call it in your article to next-generation. anyway, i think your  
>>> work
>>> is very interesting and the least i can do is to offer you, if you
>>> agree and give me your address, to send you as gift one TBS 6925  
>>> card
>>> - i had two samples of such card, because i made the Linux drivers  
>>> for
>>> it and i can send you one of those two boards to you. what is
>>> interesting about the card that in Windows TBS has tool called "TBS
>>> Recorder" that can capture BBFrames - i'm not sure if the capture is
>>> entirely correct, but at least checking with hex-editor the BBFrames
>>> headers are present in the data dump. also, datasheets of the
>>> demodulator in use on the board confirm that it can output  
>>> BBFreames.
>>> so, we can try just for fun to merge your work on BB-demux to V4L  
>>> tree
>>> with TBS 6925 support and see if we can get real hardware take use  
>>> of
>>> the BB-demux. what you think about such idea?
>>>
>>> kind regards,
>>> konstantin
>>>
>>> On Tue, Dec 27, 2011 at 12:12 PM, Christian Prähauser
>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>>
>>>>>
>>>>> Yes, I'm meaning something like what it was described there. I  
>>>>> think
>>>>> that the code written by Christian were never submitted upstream.
>>>>>
>>>>
>>>> Hello Mauro,
>>>>
>>>> Konstantin drew my attention to this discussion. Indeed, some  
>>>> time ago I
>>>> wrote
>>>> a base-band demux for LinuxDVB. It was part of a project to  
>>>> integrate
>>>> support
>>>> for second-generation IP/DVB encapsulations (GSE). The BB-demux  
>>>> allows to
>>>> register filters for different ISIs and data types (raw, generic  
>>>> stream,
>>>> transport stream).
>>>>
>>>> I realized that the repo hosted at our University is down. If  
>>>> there is
>>>> interest,
>>>> I can update my patches to the latest LinuxDVB version and we can  
>>>> put
>>>> them on a
>>>> public repo e.g. at linuxdvb.org.
>>>>
>>>> Kind regards,
>>>> Christian.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux- 
>>>> media" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>
>> ---
>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>
>> || //\\//\\ || Multimedia Communications Group,
>> ||//  \/  \\|| Department of Computer Sciences, University of  
>> Salzburg
>> http://www.cosy.sbg.ac.at/~cpraehaus/
>> http://www.network-research.org/
>> http://www.uni-salzburg.at/

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-01-25 13:12                 ` Christian Prähauser
@ 2012-02-01 18:49                   ` Konstantin Dimitrov
  2012-02-18 19:06                     ` Christian Prähauser
  0 siblings, 1 reply; 26+ messages in thread
From: Konstantin Dimitrov @ 2012-02-01 18:49 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media

hi Christian,

sorry for the very late reply - unfortunately i'm very busy lately.
so, what i can tell you about your questions:

* for setting MIS filter you can follow the link in the first email
that started the discussion here:

http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/42312

or more specifically what's posted here:

http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874

i don't know if you have access to some signal modulator/generator
with MIS support, but if not there are several good live MIS signals,
e.g.

Atlantic Bird 1 @ 12.5 W, 12718 H, 36510, FEC 5/6

it's 8PSK MIS transponder with four TS, ISIs of them are: 33, 34, 35 36

if you can't get 12.5W let me know and i will look for some other live
signal useful for test purposes.

*  STV900AAC needs to be put on BBFrame mode, by default it strips the
BB data and outputs TS. however, the necessary settings for are
BBFrame mode not very clear - i need to do some trial and errors until
i hopefully get the BBFrame mode working. however, what is useful as a
starter is to parse/analyze for errors data dump made in Windows with
"TBS Recorder" tool - i believe i mentioned it to you - the data dump
made with that tool seems as valid BBFrames at least at first glance
with hex-editor, i.e. valid BBHeader data are observed. so, is there
some tool from your work (maybe 'bb-demux') that can parse/analyze
data dump of supposedly BBFrames.

anyway, let me know what help you need - i will look at BBFrame mode
for STV900AAC, because i can identify that task as open.

best wishes,
konstantin

On Wed, Jan 25, 2012 at 3:12 PM, Christian Prähauser
<cpraehaus@cosy.sbg.ac.at> wrote:
> Hi Konstantin!
>
> I received your "present" :-) - many thanks! I already ported my base-band
> demux code to the current linux media master branch (in the v4l-dvb git
> repo).
> It currently allows drivers/frontends to pass base-band frames to the
> bb-demux.
> The bb-demux allows user-space filtering for BBFrames, TS packets, etc via
> the demux handle or dvr device. It also allows other kernel components to do
> base-band filtering (e.g. receive BBFrames on a specific ISI).
>
> Currently, the bb-demux only accepts a single, complete BBFrame in a single
> buffer, but I think
> it should also be able to cope with a stream of data (for ease of driver
> integration), including
> synchronization (search for frame start) and buffering (for assembling
> frames).
>
> Besides checking whether the current user-space API for base-band filtering
> is useful,
> there are a few remaining design questions to think about:
>
>  * How to allow pes/section filtering when receiving multiple TSs in
> parallel (on different ISIs)
>        - allow to "stack" filters, e.g. a bb-demux filter delivers TS from a
> certain
>        ISI and forwards it to a section filter (which then passes sections
> to user-space).
>        - dmx / dvr device for each?
>  * When and how to bring frontend into base-band data mode (a mode where it
> delivers
>        BBFrames instead of TS)?
>        - Should this be set by the user or happen automatically?
>  * How to set ISI on demux if we receive TS on a channel with MIS
>        (if this is not already possible, didn't check it yet)
>        - this could be covered by the bb-demux filtering API, although the
> base-band
>        demux is not directly involved in this case (since TS data is
> delivered to dvb-core).
>
> For now, I'm working to setup a public GIT repository, so you can have a
> look at the current status.
> Do you have a repository for the TBS drivers or should I use the official
> ones? Do you have
> an idea of how to program the STV900 to output BBFrames?
>
> Thanks again and kind regards,
> Christian.
>
> Am 17.01.2012 um 21:04 schrieb Konstantin Dimitrov:
>
>
>> hi Christian,
>>
>> it's great that you find it interesting too. i already prepared the
>> package and i will send it tomorrow - you should get in shorty - i
>> believe even with the most inexpensive shipping service within Europe
>> you will get in just a week or so. i hope you will have fun with the
>> TBS 6925 board - even if not for anything else just to receive DVB-S2
>> in Linux.
>>
>> kind regards,
>> konstantin
>>
>> On Thu, Jan 12, 2012 at 3:06 PM, Christian Prähauser
>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>
>>> Hi Konstantin!
>>>
>>> Thank you, and a happy new year to you too!
>>>
>>> The way to proceed you suggested sounds very interesting too me! I'd
>>> be more than happy if you could send me the TBS 6925 card to my
>>> university
>>> address:
>>>
>>> Christian Prähauser
>>> c/o Department of Computer Sciences
>>> University of Salzburg
>>> Jakob Haringer Str. 2
>>> A 5020 Salzburg
>>> AUSTRIA
>>>
>>> I will start to update my patches to match recent LinuxDVB sources and
>>> try to integrate Baseband demux support into the TBS linux driver.
>>> If this works, we can also put in GSE-support (S2-native encapsulation
>>> for
>>> carrying IP packets in DVB). This would then probably start to be
>>> interesting
>>> for some people...
>>>
>>> Thanks and kind regards,
>>> Christian.
>>>
>>> Am 10.01.2012 um 20:40 schrieb Konstantin Dimitrov:
>>>
>>>
>>>> hello Christian,
>>>>
>>>> and Happy New Year to you!
>>>>
>>>> thank you for joining the discussion, but apparently and unfortunately
>>>> Mauro current priorities are not to bring V4L to a next-level, as you
>>>> call it in your article to next-generation. anyway, i think your work
>>>> is very interesting and the least i can do is to offer you, if you
>>>> agree and give me your address, to send you as gift one TBS 6925 card
>>>> - i had two samples of such card, because i made the Linux drivers for
>>>> it and i can send you one of those two boards to you. what is
>>>> interesting about the card that in Windows TBS has tool called "TBS
>>>> Recorder" that can capture BBFrames - i'm not sure if the capture is
>>>> entirely correct, but at least checking with hex-editor the BBFrames
>>>> headers are present in the data dump. also, datasheets of the
>>>> demodulator in use on the board confirm that it can output BBFreames.
>>>> so, we can try just for fun to merge your work on BB-demux to V4L tree
>>>> with TBS 6925 support and see if we can get real hardware take use of
>>>> the BB-demux. what you think about such idea?
>>>>
>>>> kind regards,
>>>> konstantin
>>>>
>>>> On Tue, Dec 27, 2011 at 12:12 PM, Christian Prähauser
>>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Yes, I'm meaning something like what it was described there. I think
>>>>>> that the code written by Christian were never submitted upstream.
>>>>>>
>>>>>
>>>>> Hello Mauro,
>>>>>
>>>>> Konstantin drew my attention to this discussion. Indeed, some time ago
>>>>> I
>>>>> wrote
>>>>> a base-band demux for LinuxDVB. It was part of a project to integrate
>>>>> support
>>>>> for second-generation IP/DVB encapsulations (GSE). The BB-demux allows
>>>>> to
>>>>> register filters for different ISIs and data types (raw, generic
>>>>> stream,
>>>>> transport stream).
>>>>>
>>>>> I realized that the repo hosted at our University is down. If there is
>>>>> interest,
>>>>> I can update my patches to the latest LinuxDVB version and we can put
>>>>> them on a
>>>>> public repo e.g. at linuxdvb.org.
>>>>>
>>>>> Kind regards,
>>>>> Christian.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe linux-media"
>>>>> in
>>>>> the body of a message to majordomo@vger.kernel.org
>>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>>
>>>
>>> ---
>>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>>
>>> || //\\//\\ || Multimedia Communications Group,
>>> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
>>> http://www.cosy.sbg.ac.at/~cpraehaus/
>>> http://www.network-research.org/
>>> http://www.uni-salzburg.at/
>
>
> ---
> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>
> || //\\//\\ || Multimedia Communications Group,
> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
> http://www.cosy.sbg.ac.at/~cpraehaus/
> http://www.network-research.org/
> http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-02-01 18:49                   ` Konstantin Dimitrov
@ 2012-02-18 19:06                     ` Christian Prähauser
  2012-02-19 23:12                       ` Konstantin Dimitrov
  0 siblings, 1 reply; 26+ messages in thread
From: Christian Prähauser @ 2012-02-18 19:06 UTC (permalink / raw)
  To: Konstantin Dimitrov; +Cc: linux-media

Hello Konstantin!

I was on holiday, so no problem at all. I wanted to tell you that I
managed to get the base-band demux working with the TBS6925 card.
Actually, I needed to modify the configuration of the STV0900
packet delineator to switch the circuit to frame mode. The SAA716x
PCI adapter chip seems to forward the base-band frame without errors.
I haven't verified if all frames are received, will do that in the next
couple of days. From that point on, I'm going to complete some open  
issues
and clean up the rest of the stuff and open a public repository for  
the bb-demux.

Thanks for the link to the MIS filter patch. I will include it in the  
base-band filtering code
and try to enhance it to support filtering on multiple ISIs, as the  
STV0900 seems to support this.

Thanks and kind regards,
Christian.

Am 01.02.2012 um 19:49 schrieb Konstantin Dimitrov:

> hi Christian,
>
> sorry for the very late reply - unfortunately i'm very busy lately.
> so, what i can tell you about your questions:
>
> * for setting MIS filter you can follow the link in the first email
> that started the discussion here:
>
> http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/42312
>
> or more specifically what's posted here:
>
> http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874
>
> i don't know if you have access to some signal modulator/generator
> with MIS support, but if not there are several good live MIS signals,
> e.g.
>
> Atlantic Bird 1 @ 12.5 W, 12718 H, 36510, FEC 5/6
>
> it's 8PSK MIS transponder with four TS, ISIs of them are: 33, 34, 35  
> 36
>
> if you can't get 12.5W let me know and i will look for some other live
> signal useful for test purposes.
>
> *  STV900AAC needs to be put on BBFrame mode, by default it strips the
> BB data and outputs TS. however, the necessary settings for are
> BBFrame mode not very clear - i need to do some trial and errors until
> i hopefully get the BBFrame mode working. however, what is useful as a
> starter is to parse/analyze for errors data dump made in Windows with
> "TBS Recorder" tool - i believe i mentioned it to you - the data dump
> made with that tool seems as valid BBFrames at least at first glance
> with hex-editor, i.e. valid BBHeader data are observed. so, is there
> some tool from your work (maybe 'bb-demux') that can parse/analyze
> data dump of supposedly BBFrames.
>
> anyway, let me know what help you need - i will look at BBFrame mode
> for STV900AAC, because i can identify that task as open.
>
> best wishes,
> konstantin
>
> On Wed, Jan 25, 2012 at 3:12 PM, Christian Prähauser
> <cpraehaus@cosy.sbg.ac.at> wrote:
>> Hi Konstantin!
>>
>> I received your "present" :-) - many thanks! I already ported my  
>> base-band
>> demux code to the current linux media master branch (in the v4l-dvb  
>> git
>> repo).
>> It currently allows drivers/frontends to pass base-band frames to the
>> bb-demux.
>> The bb-demux allows user-space filtering for BBFrames, TS packets,  
>> etc via
>> the demux handle or dvr device. It also allows other kernel  
>> components to do
>> base-band filtering (e.g. receive BBFrames on a specific ISI).
>>
>> Currently, the bb-demux only accepts a single, complete BBFrame in  
>> a single
>> buffer, but I think
>> it should also be able to cope with a stream of data (for ease of  
>> driver
>> integration), including
>> synchronization (search for frame start) and buffering (for  
>> assembling
>> frames).
>>
>> Besides checking whether the current user-space API for base-band  
>> filtering
>> is useful,
>> there are a few remaining design questions to think about:
>>
>>  * How to allow pes/section filtering when receiving multiple TSs in
>> parallel (on different ISIs)
>>        - allow to "stack" filters, e.g. a bb-demux filter delivers  
>> TS from a
>> certain
>>        ISI and forwards it to a section filter (which then passes  
>> sections
>> to user-space).
>>        - dmx / dvr device for each?
>>  * When and how to bring frontend into base-band data mode (a mode  
>> where it
>> delivers
>>        BBFrames instead of TS)?
>>        - Should this be set by the user or happen automatically?
>>  * How to set ISI on demux if we receive TS on a channel with MIS
>>        (if this is not already possible, didn't check it yet)
>>        - this could be covered by the bb-demux filtering API,  
>> although the
>> base-band
>>        demux is not directly involved in this case (since TS data is
>> delivered to dvb-core).
>>
>> For now, I'm working to setup a public GIT repository, so you can  
>> have a
>> look at the current status.
>> Do you have a repository for the TBS drivers or should I use the  
>> official
>> ones? Do you have
>> an idea of how to program the STV900 to output BBFrames?
>>
>> Thanks again and kind regards,
>> Christian.
>>
>> Am 17.01.2012 um 21:04 schrieb Konstantin Dimitrov:
>>
>>
>>> hi Christian,
>>>
>>> it's great that you find it interesting too. i already prepared the
>>> package and i will send it tomorrow - you should get in shorty - i
>>> believe even with the most inexpensive shipping service within  
>>> Europe
>>> you will get in just a week or so. i hope you will have fun with the
>>> TBS 6925 board - even if not for anything else just to receive DVB- 
>>> S2
>>> in Linux.
>>>
>>> kind regards,
>>> konstantin
>>>
>>> On Thu, Jan 12, 2012 at 3:06 PM, Christian Prähauser
>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>
>>>> Hi Konstantin!
>>>>
>>>> Thank you, and a happy new year to you too!
>>>>
>>>> The way to proceed you suggested sounds very interesting too me!  
>>>> I'd
>>>> be more than happy if you could send me the TBS 6925 card to my
>>>> university
>>>> address:
>>>>
>>>> Christian Prähauser
>>>> c/o Department of Computer Sciences
>>>> University of Salzburg
>>>> Jakob Haringer Str. 2
>>>> A 5020 Salzburg
>>>> AUSTRIA
>>>>
>>>> I will start to update my patches to match recent LinuxDVB  
>>>> sources and
>>>> try to integrate Baseband demux support into the TBS linux driver.
>>>> If this works, we can also put in GSE-support (S2-native  
>>>> encapsulation
>>>> for
>>>> carrying IP packets in DVB). This would then probably start to be
>>>> interesting
>>>> for some people...
>>>>
>>>> Thanks and kind regards,
>>>> Christian.
>>>>
>>>> Am 10.01.2012 um 20:40 schrieb Konstantin Dimitrov:
>>>>
>>>>
>>>>> hello Christian,
>>>>>
>>>>> and Happy New Year to you!
>>>>>
>>>>> thank you for joining the discussion, but apparently and  
>>>>> unfortunately
>>>>> Mauro current priorities are not to bring V4L to a next-level,  
>>>>> as you
>>>>> call it in your article to next-generation. anyway, i think your  
>>>>> work
>>>>> is very interesting and the least i can do is to offer you, if you
>>>>> agree and give me your address, to send you as gift one TBS 6925  
>>>>> card
>>>>> - i had two samples of such card, because i made the Linux  
>>>>> drivers for
>>>>> it and i can send you one of those two boards to you. what is
>>>>> interesting about the card that in Windows TBS has tool called  
>>>>> "TBS
>>>>> Recorder" that can capture BBFrames - i'm not sure if the  
>>>>> capture is
>>>>> entirely correct, but at least checking with hex-editor the  
>>>>> BBFrames
>>>>> headers are present in the data dump. also, datasheets of the
>>>>> demodulator in use on the board confirm that it can output  
>>>>> BBFreames.
>>>>> so, we can try just for fun to merge your work on BB-demux to  
>>>>> V4L tree
>>>>> with TBS 6925 support and see if we can get real hardware take  
>>>>> use of
>>>>> the BB-demux. what you think about such idea?
>>>>>
>>>>> kind regards,
>>>>> konstantin
>>>>>
>>>>> On Tue, Dec 27, 2011 at 12:12 PM, Christian Prähauser
>>>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Yes, I'm meaning something like what it was described there. I  
>>>>>>> think
>>>>>>> that the code written by Christian were never submitted  
>>>>>>> upstream.
>>>>>>>
>>>>>>
>>>>>> Hello Mauro,
>>>>>>
>>>>>> Konstantin drew my attention to this discussion. Indeed, some  
>>>>>> time ago
>>>>>> I
>>>>>> wrote
>>>>>> a base-band demux for LinuxDVB. It was part of a project to  
>>>>>> integrate
>>>>>> support
>>>>>> for second-generation IP/DVB encapsulations (GSE). The BB-demux  
>>>>>> allows
>>>>>> to
>>>>>> register filters for different ISIs and data types (raw, generic
>>>>>> stream,
>>>>>> transport stream).
>>>>>>
>>>>>> I realized that the repo hosted at our University is down. If  
>>>>>> there is
>>>>>> interest,
>>>>>> I can update my patches to the latest LinuxDVB version and we  
>>>>>> can put
>>>>>> them on a
>>>>>> public repo e.g. at linuxdvb.org.
>>>>>>
>>>>>> Kind regards,
>>>>>> Christian.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> To unsubscribe from this list: send the line "unsubscribe linux- 
>>>>>> media"
>>>>>> in
>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>> More majordomo info at  http://vger.kernel.org/majordomo- 
>>>>>> info.html
>>>>
>>>>
>>>>
>>>> ---
>>>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>>>
>>>> || //\\//\\ || Multimedia Communications Group,
>>>> ||//  \/  \\|| Department of Computer Sciences, University of  
>>>> Salzburg
>>>> http://www.cosy.sbg.ac.at/~cpraehaus/
>>>> http://www.network-research.org/
>>>> http://www.uni-salzburg.at/
>>
>>
>> ---
>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>
>> || //\\//\\ || Multimedia Communications Group,
>> ||//  \/  \\|| Department of Computer Sciences, University of  
>> Salzburg
>> http://www.cosy.sbg.ac.at/~cpraehaus/
>> http://www.network-research.org/
>> http://www.uni-salzburg.at/
> --
> To unsubscribe from this list: send the line "unsubscribe linux- 
> media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-02-18 19:06                     ` Christian Prähauser
@ 2012-02-19 23:12                       ` Konstantin Dimitrov
  2012-03-07 16:33                         ` Bob Winslow
  0 siblings, 1 reply; 26+ messages in thread
From: Konstantin Dimitrov @ 2012-02-19 23:12 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media

hello Christian,

that's really great news! i'm looking forward to look at the code when
the public repository is ready. i'm sure i'm not the only one and the
news would be especially exciting for TBS 6925 owners, which use
Linux, but it's away beyond that, because the real news here is
working base-band support in 'dvb-core' of V4L. also, it's really good
that SAA716x code seems to just work with BBFrames and no further
changes are required there.

kind regards,
konstantin

On Sat, Feb 18, 2012 at 9:06 PM, Christian Prähauser
<cpraehaus@cosy.sbg.ac.at> wrote:
> Hello Konstantin!
>
> I was on holiday, so no problem at all. I wanted to tell you that I
> managed to get the base-band demux working with the TBS6925 card.
> Actually, I needed to modify the configuration of the STV0900
> packet delineator to switch the circuit to frame mode. The SAA716x
> PCI adapter chip seems to forward the base-band frame without errors.
> I haven't verified if all frames are received, will do that in the next
> couple of days. From that point on, I'm going to complete some open issues
> and clean up the rest of the stuff and open a public repository for the
> bb-demux.
>
> Thanks for the link to the MIS filter patch. I will include it in the
> base-band filtering code
> and try to enhance it to support filtering on multiple ISIs, as the STV0900
> seems to support this.
>
>
> Thanks and kind regards,
> Christian.
>
> Am 01.02.2012 um 19:49 schrieb Konstantin Dimitrov:
>
>
>> hi Christian,
>>
>> sorry for the very late reply - unfortunately i'm very busy lately.
>> so, what i can tell you about your questions:
>>
>> * for setting MIS filter you can follow the link in the first email
>> that started the discussion here:
>>
>>
>> http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/42312
>>
>> or more specifically what's posted here:
>>
>> http://www.tbsdtv.com/forum/viewtopic.php?f=26&t=1874
>>
>> i don't know if you have access to some signal modulator/generator
>> with MIS support, but if not there are several good live MIS signals,
>> e.g.
>>
>> Atlantic Bird 1 @ 12.5 W, 12718 H, 36510, FEC 5/6
>>
>> it's 8PSK MIS transponder with four TS, ISIs of them are: 33, 34, 35 36
>>
>> if you can't get 12.5W let me know and i will look for some other live
>> signal useful for test purposes.
>>
>> *  STV900AAC needs to be put on BBFrame mode, by default it strips the
>> BB data and outputs TS. however, the necessary settings for are
>> BBFrame mode not very clear - i need to do some trial and errors until
>> i hopefully get the BBFrame mode working. however, what is useful as a
>> starter is to parse/analyze for errors data dump made in Windows with
>> "TBS Recorder" tool - i believe i mentioned it to you - the data dump
>> made with that tool seems as valid BBFrames at least at first glance
>> with hex-editor, i.e. valid BBHeader data are observed. so, is there
>> some tool from your work (maybe 'bb-demux') that can parse/analyze
>> data dump of supposedly BBFrames.
>>
>> anyway, let me know what help you need - i will look at BBFrame mode
>> for STV900AAC, because i can identify that task as open.
>>
>> best wishes,
>> konstantin
>>
>> On Wed, Jan 25, 2012 at 3:12 PM, Christian Prähauser
>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>
>>> Hi Konstantin!
>>>
>>> I received your "present" :-) - many thanks! I already ported my
>>> base-band
>>> demux code to the current linux media master branch (in the v4l-dvb git
>>> repo).
>>> It currently allows drivers/frontends to pass base-band frames to the
>>> bb-demux.
>>> The bb-demux allows user-space filtering for BBFrames, TS packets, etc
>>> via
>>> the demux handle or dvr device. It also allows other kernel components to
>>> do
>>> base-band filtering (e.g. receive BBFrames on a specific ISI).
>>>
>>> Currently, the bb-demux only accepts a single, complete BBFrame in a
>>> single
>>> buffer, but I think
>>> it should also be able to cope with a stream of data (for ease of driver
>>> integration), including
>>> synchronization (search for frame start) and buffering (for assembling
>>> frames).
>>>
>>> Besides checking whether the current user-space API for base-band
>>> filtering
>>> is useful,
>>> there are a few remaining design questions to think about:
>>>
>>>  * How to allow pes/section filtering when receiving multiple TSs in
>>> parallel (on different ISIs)
>>>       - allow to "stack" filters, e.g. a bb-demux filter delivers TS from
>>> a
>>> certain
>>>       ISI and forwards it to a section filter (which then passes sections
>>> to user-space).
>>>       - dmx / dvr device for each?
>>>  * When and how to bring frontend into base-band data mode (a mode where
>>> it
>>> delivers
>>>       BBFrames instead of TS)?
>>>       - Should this be set by the user or happen automatically?
>>>  * How to set ISI on demux if we receive TS on a channel with MIS
>>>       (if this is not already possible, didn't check it yet)
>>>       - this could be covered by the bb-demux filtering API, although the
>>> base-band
>>>       demux is not directly involved in this case (since TS data is
>>> delivered to dvb-core).
>>>
>>> For now, I'm working to setup a public GIT repository, so you can have a
>>> look at the current status.
>>> Do you have a repository for the TBS drivers or should I use the official
>>> ones? Do you have
>>> an idea of how to program the STV900 to output BBFrames?
>>>
>>> Thanks again and kind regards,
>>> Christian.
>>>
>>> Am 17.01.2012 um 21:04 schrieb Konstantin Dimitrov:
>>>
>>>
>>>> hi Christian,
>>>>
>>>> it's great that you find it interesting too. i already prepared the
>>>> package and i will send it tomorrow - you should get in shorty - i
>>>> believe even with the most inexpensive shipping service within Europe
>>>> you will get in just a week or so. i hope you will have fun with the
>>>> TBS 6925 board - even if not for anything else just to receive DVB-S2
>>>> in Linux.
>>>>
>>>> kind regards,
>>>> konstantin
>>>>
>>>> On Thu, Jan 12, 2012 at 3:06 PM, Christian Prähauser
>>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>>
>>>>>
>>>>> Hi Konstantin!
>>>>>
>>>>> Thank you, and a happy new year to you too!
>>>>>
>>>>> The way to proceed you suggested sounds very interesting too me! I'd
>>>>> be more than happy if you could send me the TBS 6925 card to my
>>>>> university
>>>>> address:
>>>>>
>>>>> Christian Prähauser
>>>>> c/o Department of Computer Sciences
>>>>> University of Salzburg
>>>>> Jakob Haringer Str. 2
>>>>> A 5020 Salzburg
>>>>> AUSTRIA
>>>>>
>>>>> I will start to update my patches to match recent LinuxDVB sources and
>>>>> try to integrate Baseband demux support into the TBS linux driver.
>>>>> If this works, we can also put in GSE-support (S2-native encapsulation
>>>>> for
>>>>> carrying IP packets in DVB). This would then probably start to be
>>>>> interesting
>>>>> for some people...
>>>>>
>>>>> Thanks and kind regards,
>>>>> Christian.
>>>>>
>>>>> Am 10.01.2012 um 20:40 schrieb Konstantin Dimitrov:
>>>>>
>>>>>
>>>>>> hello Christian,
>>>>>>
>>>>>> and Happy New Year to you!
>>>>>>
>>>>>> thank you for joining the discussion, but apparently and unfortunately
>>>>>> Mauro current priorities are not to bring V4L to a next-level, as you
>>>>>> call it in your article to next-generation. anyway, i think your work
>>>>>> is very interesting and the least i can do is to offer you, if you
>>>>>> agree and give me your address, to send you as gift one TBS 6925 card
>>>>>> - i had two samples of such card, because i made the Linux drivers for
>>>>>> it and i can send you one of those two boards to you. what is
>>>>>> interesting about the card that in Windows TBS has tool called "TBS
>>>>>> Recorder" that can capture BBFrames - i'm not sure if the capture is
>>>>>> entirely correct, but at least checking with hex-editor the BBFrames
>>>>>> headers are present in the data dump. also, datasheets of the
>>>>>> demodulator in use on the board confirm that it can output BBFreames.
>>>>>> so, we can try just for fun to merge your work on BB-demux to V4L tree
>>>>>> with TBS 6925 support and see if we can get real hardware take use of
>>>>>> the BB-demux. what you think about such idea?
>>>>>>
>>>>>> kind regards,
>>>>>> konstantin
>>>>>>
>>>>>> On Tue, Dec 27, 2011 at 12:12 PM, Christian Prähauser
>>>>>> <cpraehaus@cosy.sbg.ac.at> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Yes, I'm meaning something like what it was described there. I think
>>>>>>>> that the code written by Christian were never submitted upstream.
>>>>>>>>
>>>>>>>
>>>>>>> Hello Mauro,
>>>>>>>
>>>>>>> Konstantin drew my attention to this discussion. Indeed, some time
>>>>>>> ago
>>>>>>> I
>>>>>>> wrote
>>>>>>> a base-band demux for LinuxDVB. It was part of a project to integrate
>>>>>>> support
>>>>>>> for second-generation IP/DVB encapsulations (GSE). The BB-demux
>>>>>>> allows
>>>>>>> to
>>>>>>> register filters for different ISIs and data types (raw, generic
>>>>>>> stream,
>>>>>>> transport stream).
>>>>>>>
>>>>>>> I realized that the repo hosted at our University is down. If there
>>>>>>> is
>>>>>>> interest,
>>>>>>> I can update my patches to the latest LinuxDVB version and we can put
>>>>>>> them on a
>>>>>>> public repo e.g. at linuxdvb.org.
>>>>>>>
>>>>>>> Kind regards,
>>>>>>> Christian.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> To unsubscribe from this list: send the line "unsubscribe
>>>>>>> linux-media"
>>>>>>> in
>>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---
>>>>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>>>>
>>>>> || //\\//\\ || Multimedia Communications Group,
>>>>> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
>>>>> http://www.cosy.sbg.ac.at/~cpraehaus/
>>>>> http://www.network-research.org/
>>>>> http://www.uni-salzburg.at/
>>>
>>>
>>>
>>> ---
>>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>>
>>> || //\\//\\ || Multimedia Communications Group,
>>> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
>>> http://www.cosy.sbg.ac.at/~cpraehaus/
>>> http://www.network-research.org/
>>> http://www.uni-salzburg.at/
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
> ---
> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>
> || //\\//\\ || Multimedia Communications Group,
> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
> http://www.cosy.sbg.ac.at/~cpraehaus/
> http://www.network-research.org/
> http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-02-19 23:12                       ` Konstantin Dimitrov
@ 2012-03-07 16:33                         ` Bob Winslow
  2012-03-13  9:36                           ` Marek Ochaba
  2012-03-13 15:22                           ` Konstantin Dimitrov
  0 siblings, 2 replies; 26+ messages in thread
From: Bob Winslow @ 2012-03-07 16:33 UTC (permalink / raw)
  To: linux-media


> that's really great news! i'm looking forward to look at the code when
> the public repository is ready. i'm sure i'm not the only one and the
> news would be especially exciting for TBS 6925 owners, which use
> Linux, but it's away beyond that, because the real news here is
> working base-band support in 'dvb-core' of V4L. also, it's really good
> that SAA716x code seems to just work with BBFrames and no further
> changes are required there.
> 

Hi Christian, Konstantin,


  Well, my TBS 6925 just came in the mail yesterday and I am excited to plug it
in and start playing with it.  Your work on the bb-demux looks like a good place
to start playing with the card under linux.

 Have you setup a public repo yet for the band band support (bb-demux) ?

Also, I downloaded the linux drivers for the card from the TBS dtv site, and put
them on my ubuntu 11.10 pc.  They seem to work.   Is this the best place to get
drivers for the card??  the front end driver files seem to be just .o's and the
source is not in the tarball.  

Sorry, I'm a bit new to the dvb world and I am still learning where to find
stuff.  Any pointers/help to finding the latest code/drivers would be very much
appreciated.


Kind regards, 

  Bob






^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-07 16:33                         ` Bob Winslow
@ 2012-03-13  9:36                           ` Marek Ochaba
  2012-03-13 12:30                             ` Bob W
  2012-03-13 15:22                           ` Konstantin Dimitrov
  1 sibling, 1 reply; 26+ messages in thread
From: Marek Ochaba @ 2012-03-13  9:36 UTC (permalink / raw)
  To: bob.news; +Cc: linux-media

Compilation and instalation process is described in README_TBS6921 file.

- extract linux-tbs-drivers.tar.bz2 archive
- run configuration script v4l/tbs-x86_r3.sh or v4l/tbs-x86_64.sh
- compile by make
- make install
  this put driver to right place

I downloaded source of driver from TBS dtv site and it work well for me (on
Debian 5.0)

--
Marek Ochaba


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-13  9:36                           ` Marek Ochaba
@ 2012-03-13 12:30                             ` Bob W
  0 siblings, 0 replies; 26+ messages in thread
From: Bob W @ 2012-03-13 12:30 UTC (permalink / raw)
  To: Marek Ochaba; +Cc: linux-media

On 3/13/2012 4:36 AM, Marek Ochaba wrote:
> Compilation and instalation process is described in README_TBS6921 file.
> 

Thanks Marek.

  Yep, that is what I did and it worked just fine for me on Ubuntu.  I
was just wondering where the .c files were for the precompiled .o's that
those scripts are moving around.  Then after posting I realized I just
wasnt' looking hard enough.. I think all the source is in the tarball
and I just need to get the kernel source to compile.  So in the end, my
fault for not looking before typing.

Still hoping that Christian will put the bb-demux code up somewhere so
can start playing with it.

Bob


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-07 16:33                         ` Bob Winslow
  2012-03-13  9:36                           ` Marek Ochaba
@ 2012-03-13 15:22                           ` Konstantin Dimitrov
  2012-03-13 15:47                             ` Bob W
  1 sibling, 1 reply; 26+ messages in thread
From: Konstantin Dimitrov @ 2012-03-13 15:22 UTC (permalink / raw)
  To: Bob Winslow; +Cc: linux-media, Christian Prähauser

hi Bob,

all work to support BBFrames in the Linux kernel is done by Christian
- in fact it's a long lost work from 5 years ago:

http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html

and i hope it won't be lost again. i just encouraged Christian that
his work is important and there are people interested in it - you're
one such example. so, i offered Christian to help him with i can. i
guess more people appreciating what his doing and encourage him will
give him better motivation to release the code to the public. however,
i guess the delay is more, because it's not easy and it requires time
to prepare the code for initial public release and that's why the
delay. so, i don't have Christian's code and i'm eager as you're to be
able to try it out, but we need to be patient. i'm sure that after
there is some public release and repository more people will be
interested to contribute to that work.

best regards,
konstantin

On Wed, Mar 7, 2012 at 6:33 PM, Bob Winslow <bob.news@non-elite.com> wrote:
>
>> that's really great news! i'm looking forward to look at the code when
>> the public repository is ready. i'm sure i'm not the only one and the
>> news would be especially exciting for TBS 6925 owners, which use
>> Linux, but it's away beyond that, because the real news here is
>> working base-band support in 'dvb-core' of V4L. also, it's really good
>> that SAA716x code seems to just work with BBFrames and no further
>> changes are required there.
>>
>
> Hi Christian, Konstantin,
>
>
>  Well, my TBS 6925 just came in the mail yesterday and I am excited to plug it
> in and start playing with it.  Your work on the bb-demux looks like a good place
> to start playing with the card under linux.
>
>  Have you setup a public repo yet for the band band support (bb-demux) ?
>
> Also, I downloaded the linux drivers for the card from the TBS dtv site, and put
> them on my ubuntu 11.10 pc.  They seem to work.   Is this the best place to get
> drivers for the card??  the front end driver files seem to be just .o's and the
> source is not in the tarball.
>
> Sorry, I'm a bit new to the dvb world and I am still learning where to find
> stuff.  Any pointers/help to finding the latest code/drivers would be very much
> appreciated.
>
>
> Kind regards,
>
>  Bob
>
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-13 15:22                           ` Konstantin Dimitrov
@ 2012-03-13 15:47                             ` Bob W
  2012-03-15  9:40                               ` Christian Prähauser
  0 siblings, 1 reply; 26+ messages in thread
From: Bob W @ 2012-03-13 15:47 UTC (permalink / raw)
  To: Konstantin Dimitrov; +Cc: linux-media, Christian Prähauser



Hi Konstantin,


> all work to support BBFrames in the Linux kernel is done by Christian
> - in fact it's a long lost work from 5 years ago:
> 
> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html

yep, I have followed the history back...  and like Christian said, the
old repo is nolonger working.  :(

> 
> and i hope it won't be lost again. i just encouraged Christian that
> his work is important and there are people interested in it - you're
> one such example. so, i offered Christian to help him with i can. i
> guess more people appreciating what his doing and encourage him will
> give him better motivation to release the code to the public. however,
> i guess the delay is more, because it's not easy and it requires time
> to prepare the code for initial public release and that's why the
> delay. so, i don't have Christian's code and i'm eager as you're to be
> able to try it out, but we need to be patient. i'm sure that after
> there is some public release and repository more people will be
> interested to contribute to that work.
> 
> best regards,
> konstantin


Agreed, I understand the pressure of releasing publicly.  Once released,
the nit picking begins.. lol.   I will keep watch on the list.
Christian, if you want an extra tester to help yah, count me in.  I'll
help also with what I can.

Bob





^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-13 15:47                             ` Bob W
@ 2012-03-15  9:40                               ` Christian Prähauser
  2012-03-19  8:46                                 ` Christian Prähauser
  0 siblings, 1 reply; 26+ messages in thread
From: Christian Prähauser @ 2012-03-15  9:40 UTC (permalink / raw)
  To: Bob W; +Cc: Konstantin Dimitrov, linux-media

Dear all,

First, thanks for your interest in this functionality. I think the  
modifications
are in a shape where they begin to be useful for others. Currently
I'm (still) trying to get some GIT repo where I can host the whole  
stuff.

Thank you all for your support, testing will indeed by important after  
the first
version is "in the wild" :-). I definitely want to keep this going and  
be sure
that I tell you as soon as the code can be accessed.

Kind regards,
Christian.

Am 13.03.2012 um 16:47 schrieb Bob W:

>
>
> Hi Konstantin,
>
>
>> all work to support BBFrames in the Linux kernel is done by Christian
>> - in fact it's a long lost work from 5 years ago:
>>
>> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html
>
> yep, I have followed the history back...  and like Christian said, the
> old repo is nolonger working.  :(
>
>>
>> and i hope it won't be lost again. i just encouraged Christian that
>> his work is important and there are people interested in it - you're
>> one such example. so, i offered Christian to help him with i can. i
>> guess more people appreciating what his doing and encourage him will
>> give him better motivation to release the code to the public.  
>> however,
>> i guess the delay is more, because it's not easy and it requires time
>> to prepare the code for initial public release and that's why the
>> delay. so, i don't have Christian's code and i'm eager as you're to  
>> be
>> able to try it out, but we need to be patient. i'm sure that after
>> there is some public release and repository more people will be
>> interested to contribute to that work.
>>
>> best regards,
>> konstantin
>
>
> Agreed, I understand the pressure of releasing publicly.  Once  
> released,
> the nit picking begins.. lol.   I will keep watch on the list.
> Christian, if you want an extra tester to help yah, count me in.  I'll
> help also with what I can.
>
> Bob
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux- 
> media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-15  9:40                               ` Christian Prähauser
@ 2012-03-19  8:46                                 ` Christian Prähauser
  2012-03-19 15:19                                   ` Konstantin Dimitrov
  0 siblings, 1 reply; 26+ messages in thread
From: Christian Prähauser @ 2012-03-19  8:46 UTC (permalink / raw)
  To: linux-media; +Cc: Bob W, Konstantin Dimitrov, Marek Ochaba

Dear all,

I decided to post a patch against the TBS drivers for all those who  
want to experiment
with the very preliminary base-band demultiplexer until I have a  
repository to properly host
this stuff. Currently it only works for the
TBS 6925 card. The bb-dmx was created for Linux v3.3, so the patch  
also contains some
changes that made it into Linux since TBS driver release v111118. You  
can get the TBS source
code via this direct link (I know there's a newer version but the  
patch is against the old driver package):

http://www.tbsdtv.com/download/document/common/tbs-linux-drivers_v111118.zip

And then you can download the bb-dmx patch from here:

http://www.cosy.sbg.ac.at/~cpraehaus/download/tbs_v111118_bb-dmx_2012-03-19.patch.gz


Tuning and configuration of the card is as normal, notice however that  
the card is currently
put in base-band data mode irrespective of any configuration. This  
means that you probably wont
be able to receive DVB-S.

To test the bb-dmx support, there is a patch against dvbsnoop 1.4.5.  
You can get the source from the SF site:

http://dvbsnoop.sourceforge.net/

and the patch from here:

http://www.cosy.sbg.ac.at/~cpraehaus/download/dvbsnoop-1.4.50_bb-dmx_2012-03-19.patch

Usage:
dvbsnoop -s bb <ISI>	(receive bbframes from <ISI>)

dvbsnoop -s bb -tsraw	(receive everything)


Sorry, its still all very experimental and DVB-S2 specific, but I'd be  
happy to get feedback from those interested.
Thanks and kind regards,
Christian.


Am 15.03.2012 um 10:40 schrieb Christian Prähauser:

> Dear all,
>
> First, thanks for your interest in this functionality. I think the  
> modifications
> are in a shape where they begin to be useful for others. Currently
> I'm (still) trying to get some GIT repo where I can host the whole  
> stuff.
>
> Thank you all for your support, testing will indeed by important  
> after the first
> version is "in the wild" :-). I definitely want to keep this going  
> and be sure
> that I tell you as soon as the code can be accessed.
>
> Kind regards,
> Christian.
>
> Am 13.03.2012 um 16:47 schrieb Bob W:
>
>>
>>
>> Hi Konstantin,
>>
>>
>>> all work to support BBFrames in the Linux kernel is done by  
>>> Christian
>>> - in fact it's a long lost work from 5 years ago:
>>>
>>> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html
>>
>> yep, I have followed the history back...  and like Christian said,  
>> the
>> old repo is nolonger working.  :(
>>
>>>
>>> and i hope it won't be lost again. i just encouraged Christian that
>>> his work is important and there are people interested in it - you're
>>> one such example. so, i offered Christian to help him with i can. i
>>> guess more people appreciating what his doing and encourage him will
>>> give him better motivation to release the code to the public.  
>>> however,
>>> i guess the delay is more, because it's not easy and it requires  
>>> time
>>> to prepare the code for initial public release and that's why the
>>> delay. so, i don't have Christian's code and i'm eager as you're  
>>> to be
>>> able to try it out, but we need to be patient. i'm sure that after
>>> there is some public release and repository more people will be
>>> interested to contribute to that work.
>>>
>>> best regards,
>>> konstantin
>>
>>
>> Agreed, I understand the pressure of releasing publicly.  Once  
>> released,
>> the nit picking begins.. lol.   I will keep watch on the list.
>> Christian, if you want an extra tester to help yah, count me in.   
>> I'll
>> help also with what I can.
>>
>> Bob
>>
>>
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux- 
>> media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> ---
> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>
> || //\\//\\ || Multimedia Communications Group,
> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
> http://www.cosy.sbg.ac.at/~cpraehaus/
> http://www.network-research.org/
> http://www.uni-salzburg.at/
> --
> To unsubscribe from this list: send the line "unsubscribe linux- 
> media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

---
Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>

|| //\\//\\ || Multimedia Communications Group,
||//  \/  \\|| Department of Computer Sciences, University of Salzburg
http://www.cosy.sbg.ac.at/~cpraehaus/
http://www.network-research.org/
http://www.uni-salzburg.at/

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-19  8:46                                 ` Christian Prähauser
@ 2012-03-19 15:19                                   ` Konstantin Dimitrov
  2012-04-24 22:18                                     ` Bob W
  0 siblings, 1 reply; 26+ messages in thread
From: Konstantin Dimitrov @ 2012-03-19 15:19 UTC (permalink / raw)
  To: Christian Prähauser; +Cc: linux-media, Bob W, Marek Ochaba

[-- Attachment #1: Type: text/plain, Size: 8068 bytes --]

hello Christian,

first of all thank you for the great work. so, i have few follow-ups about it:

1. since your current patch contains patches that are kernel-specific
changes (i.e. some general changes to the V4L code for the kernel you
use), changes related to the BBFrame-support and hardware-specific
changes (i.e. related to the TBS 6925 card, which at the moment is the
only affordable hardware at least i know that can handle BBFrames) in
order for more easy use in different kernels as well for the purpose
of others to review the changes related to the BBFrame-support in V4L
'dvb-core' i split your patch to 3 separate patches (they are attached
to this email):

- 01-bb-dmx.patch : it's supposed to contains all changes you made to
the demux part of V4L 'dvb-core' - i didn't make any further changes -
just collected your original changes in the patch; it should apply
clean to all recent kernel released in the last several months (i
believe at least in the last 6 months), because no changes in this
parts of 'dvb-core' were made recently

- 02-bb-fe.patch : those are changes for BBFrame-support related to
the frontend - i separated those changes and i didn't include them in
'01-bb-dmx.patch', because recently a lot of changes were made to that
part of V4L. so, this patch will apply clean to
"tbs-linux-drivers_v120206" and to other V4L trees most probably it
will require to manually apply the changes to the respective files,
but since it changes less than 10 lines in only 3 files that's just
fine for manual patching

- 03-bb-tbs.patch : those are all changes specific to the TBS 6925
hardware. additionally to your changes i defined "tsout" module
parameter to both 'stv090x' and 'saa716x_tbs-dvb' - that's convenient
to change between TS and BB mode just with reloading the modules with
rmmod/modprobe

2. so i used the above 3 patches with "tbs-linux-drivers_v120206" and
after i applied them:

# cd linux-tbs-drivers
# patch -p1 < ../01-bb-dmx.patch
# patch -p1 < ../02-bb-fe.patch
# patch -p1 < ../03-bb-tbs.patch

the driver builds successfully, but i'm not sure if i didn't miss
something from your original patch. also, i put file called
'tbs6925.conf' in /etc/modprobe.d with lines in it:

options stv090x tsout=0
options saa716x_tbs-dvb tsout=0

for easy enable/disable of the BB mode with just reloading the modules
in order to make the testing easier.

3. so on the test i did every few seconds i get the following errors:

_dvb_dmx_swfilter_bbframe: invalid use of reserved TS/GS value 1

_dvb_dmx_swfilter_bbframe: invalid data field length (length 0, left 10)

and hex-dump of the BBFrame data. is that supposed to happen? please,
can you confirm if it happens or not in your environment with your
original patch or i messed-up something when i prepared the 3 patches
from point 1. so, that request is in relation to my seconds request -
please, review the 3 patches from point 1 and confirm they are correct
and i didn't miss anything - if they are correct patch 01 and 02 can
be used for review of the code.

many thanks,
konstantin

On Mon, Mar 19, 2012 at 10:46 AM, Christian Prähauser
<cpraehaus@cosy.sbg.ac.at> wrote:
> Dear all,
>
> I decided to post a patch against the TBS drivers for all those who want to
> experiment
> with the very preliminary base-band demultiplexer until I have a repository
> to properly host
> this stuff. Currently it only works for the
> TBS 6925 card. The bb-dmx was created for Linux v3.3, so the patch also
> contains some
> changes that made it into Linux since TBS driver release v111118. You can
> get the TBS source
> code via this direct link (I know there's a newer version but the patch is
> against the old driver package):
>
> http://www.tbsdtv.com/download/document/common/tbs-linux-drivers_v111118.zip
>
> And then you can download the bb-dmx patch from here:
>
> http://www.cosy.sbg.ac.at/~cpraehaus/download/tbs_v111118_bb-dmx_2012-03-19.patch.gz
>
>
> Tuning and configuration of the card is as normal, notice however that the
> card is currently
> put in base-band data mode irrespective of any configuration. This means
> that you probably wont
> be able to receive DVB-S.
>
> To test the bb-dmx support, there is a patch against dvbsnoop 1.4.5. You can
> get the source from the SF site:
>
> http://dvbsnoop.sourceforge.net/
>
> and the patch from here:
>
> http://www.cosy.sbg.ac.at/~cpraehaus/download/dvbsnoop-1.4.50_bb-dmx_2012-03-19.patch
>
> Usage:
> dvbsnoop -s bb <ISI>    (receive bbframes from <ISI>)
>
> dvbsnoop -s bb -tsraw   (receive everything)
>
>
> Sorry, its still all very experimental and DVB-S2 specific, but I'd be happy
> to get feedback from those interested.
>
> Thanks and kind regards,
> Christian.
>
>
> Am 15.03.2012 um 10:40 schrieb Christian Prähauser:
>
>
>> Dear all,
>>
>> First, thanks for your interest in this functionality. I think the
>> modifications
>> are in a shape where they begin to be useful for others. Currently
>> I'm (still) trying to get some GIT repo where I can host the whole stuff.
>>
>> Thank you all for your support, testing will indeed by important after the
>> first
>> version is "in the wild" :-). I definitely want to keep this going and be
>> sure
>> that I tell you as soon as the code can be accessed.
>>
>> Kind regards,
>> Christian.
>>
>> Am 13.03.2012 um 16:47 schrieb Bob W:
>>
>>>
>>>
>>> Hi Konstantin,
>>>
>>>
>>>> all work to support BBFrames in the Linux kernel is done by Christian
>>>> - in fact it's a long lost work from 5 years ago:
>>>>
>>>> http://www.linuxtv.org/pipermail/linux-dvb/2007-December/022217.html
>>>
>>>
>>> yep, I have followed the history back...  and like Christian said, the
>>> old repo is nolonger working.  :(
>>>
>>>>
>>>> and i hope it won't be lost again. i just encouraged Christian that
>>>> his work is important and there are people interested in it - you're
>>>> one such example. so, i offered Christian to help him with i can. i
>>>> guess more people appreciating what his doing and encourage him will
>>>> give him better motivation to release the code to the public. however,
>>>> i guess the delay is more, because it's not easy and it requires time
>>>> to prepare the code for initial public release and that's why the
>>>> delay. so, i don't have Christian's code and i'm eager as you're to be
>>>> able to try it out, but we need to be patient. i'm sure that after
>>>> there is some public release and repository more people will be
>>>> interested to contribute to that work.
>>>>
>>>> best regards,
>>>> konstantin
>>>
>>>
>>>
>>> Agreed, I understand the pressure of releasing publicly.  Once released,
>>> the nit picking begins.. lol.   I will keep watch on the list.
>>> Christian, if you want an extra tester to help yah, count me in.  I'll
>>> help also with what I can.
>>>
>>> Bob
>>>
>>>
>>>
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>
>> ---
>> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>>
>> || //\\//\\ || Multimedia Communications Group,
>> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
>> http://www.cosy.sbg.ac.at/~cpraehaus/
>> http://www.network-research.org/
>> http://www.uni-salzburg.at/
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
> ---
> Dipl.-Ing. Christian Praehauser <cpraehaus@cosy.sbg.ac.at>
>
> || //\\//\\ || Multimedia Communications Group,
> ||//  \/  \\|| Department of Computer Sciences, University of Salzburg
> http://www.cosy.sbg.ac.at/~cpraehaus/
> http://www.network-research.org/
> http://www.uni-salzburg.at/

[-- Attachment #2: 01-bb-dmx.patch --]
[-- Type: text/x-patch, Size: 36366 bytes --]

--- a/linux/include/linux/dvb/dmx.h	2012-03-19 14:39:46.185144879 +0200
+++ b/linux/include/linux/dvb/dmx.h	2012-03-19 14:38:26.913145875 +0200
@@ -141,6 +141,52 @@
 	__u64 stc;		/* output: stc in 'base'*90 kHz units */
 };
 
+/**
+ * Base-band filter output types.
+ */
+typedef enum {
+	/// Only deliver Transport Stream packets received with frames using TS compatibility mode
+	DMX_BB_TSCOMPAT = 0,
+	/// Output raw BBFrames
+	DMX_BB_FRAME,
+	/// Only deliver generic continuous stream data (not including BBFrame header)
+	DMX_BB_CONT,
+	/// Only deliver generic packetized stream data (not including BBFrame header)
+	DMX_BB_PACK
+} dmx_bb_type_t;
+
+/**
+ * @brief Special ISI value for receiving only SIS-mode streams.
+ * @note this filter wont deliver any data if the channel uses multiple 
+ * input stream mode (MIS-mode),
+ */
+#define DMX_ISI_SIS	-1
+/**
+ * @brief Special ISI value for receiving all available input sreams.
+ * @note This value is only allowed for base-band filter type DMX_BB_FRAME
+ */
+#define DMX_ISI_ALL	-2
+
+struct dmx_bb_filter_params
+{
+	/**
+	 * @brief Identifies a single base-band stream multiplexed on a single channel.
+	 * This may be an input stream for DVB-S2 or a physical layer pipe (PLP) in the case
+	 * of DVB-T2.
+	 */
+	__s16		isi;
+	dmx_input_t	input;
+	/**
+	 * @brief Tells the filter where the data should be routed to (e.g. dvr device or 
+	 * demux file handle.
+	 */
+	dmx_output_t	output;
+	/**
+	 * @brief Specifies what type of data should be delivered by this filter.
+	 */
+	dmx_bb_type_t	type;
+	__u32		flags;
+};
 
 #define DMX_START                _IO('o', 41)
 #define DMX_STOP                 _IO('o', 42)
@@ -153,5 +199,6 @@
 #define DMX_GET_STC              _IOWR('o', 50, struct dmx_stc)
 #define DMX_ADD_PID              _IOW('o', 51, __u16)
 #define DMX_REMOVE_PID           _IOW('o', 52, __u16)
+#define DMX_SET_BB_FILTER       _IOW('o', 53, struct dmx_bb_filter_params)
 
 #endif /*_DVBDMX_H_*/
--- a/linux/drivers/media/dvb/dvb-core/demux.h	2012-03-19 14:39:46.117144880 +0200
+++ b/linux/drivers/media/dvb/dvb-core/demux.h	2012-03-19 14:38:26.893145875 +0200
@@ -173,6 +173,32 @@
 };
 
 /*--------------------------------------------------------------------------*/
+/* Base-band frame reception */
+/*--------------------------------------------------------------------------*/
+
+/// @brief Deliver full BBFrames (incl. header) to demux feed (default)
+#define BB_FRAME	0x01
+/// @brief Deliver Packetized Generic Stream to demux feed
+#define BB_PACK_GS	0x00
+/// @brief Deliver Continues Generic Stream to demux feed
+#define BB_CONT_GS	0x40		
+/// @brief Deliver Transport Stream (if stream is using TS-Compatibility mode) to demux feed
+#define BB_TS		0xc0
+
+#define BB_ISI_ALL	DMX_ISI_ALL
+#define BB_ISI_SIS	DMX_ISI_SIS
+
+struct dmx_bb_feed {
+	int is_filtering; /* Set to non-zero when filtering in progress */
+	struct dmx_demux *parent; /* Back-pointer */
+	void *priv; /* Pointer to private data of the API client */
+	int (*set) (struct dmx_bb_feed *feed, int isi, int type, 
+		size_t circular_buffer_size, struct timespec timeout);
+	int (*start_filtering) (struct dmx_bb_feed* feed);
+	int (*stop_filtering) (struct dmx_bb_feed* feed);
+};
+
+/*--------------------------------------------------------------------------*/
 /* Callback functions */
 /*--------------------------------------------------------------------------*/
 
@@ -190,6 +216,9 @@
 				struct dmx_section_filter * source,
 				enum dmx_success success);
 
+typedef void (*dmx_bb_cb)(const u8 *buffer, size_t len, size_t upl, 
+	struct dmx_bb_feed* source, enum dmx_success success);
+
 /*--------------------------------------------------------------------------*/
 /* DVB Front-End */
 /*--------------------------------------------------------------------------*/
@@ -258,6 +287,11 @@
 				      dmx_section_cb callback);
 	int (*release_section_feed) (struct dmx_demux* demux,
 				     struct dmx_section_feed* feed);
+	int (*allocate_bb_feed) (struct dmx_demux* demux,
+				 struct dmx_bb_feed** feed,
+				 dmx_bb_cb callback);
+	int (*release_bb_feed) (struct dmx_demux* demux,
+				struct dmx_bb_feed* feed);
 	int (*add_frontend) (struct dmx_demux* demux,
 			     struct dmx_frontend* frontend);
 	int (*remove_frontend) (struct dmx_demux* demux,
--- a/linux/drivers/media/dvb/dvb-core/dmxdev.c	2012-03-19 14:39:46.117144880 +0200
+++ b/linux/drivers/media/dvb/dvb-core/dmxdev.c	2012-03-19 14:38:26.893145875 +0200
@@ -428,6 +428,36 @@
 	return 0;
 }
 
+static void dvb_dmxdev_bb_callback(const u8 *buf, size_t len, size_t upl, 
+	struct dmx_bb_feed *feed, enum dmx_success success)
+{
+	struct dmxdev_filter *dmxdevfilter = feed->priv;
+	struct dvb_ringbuffer *buffer;
+	int ret;
+
+	dprintk("dmxdev: bb callback len=%u, upl=%u\n",
+			(unsigned) len, (unsigned) upl);
+
+	spin_lock(&dmxdevfilter->dev->lock);
+
+	if (dmxdevfilter->params.bb.output == DMX_OUT_TAP)
+		buffer = &dmxdevfilter->buffer;
+	else
+		buffer = &dmxdevfilter->dev->dvr_buffer;
+	if (buffer->error) {
+		spin_unlock(&dmxdevfilter->dev->lock);
+		wake_up(&buffer->queue);
+		return;
+	}
+	ret = dvb_dmxdev_buffer_write(buffer, buf, len);
+	if (ret < 0) {
+		dvb_ringbuffer_flush(buffer);
+		buffer->error = ret;
+	}
+	spin_unlock(&dmxdevfilter->dev->lock);
+	wake_up(&buffer->queue);
+}
+
 /* stop feed but only mark the specified filter as stopped (state set) */
 static int dvb_dmxdev_feed_stop(struct dmxdev_filter *dmxdevfilter)
 {
@@ -444,6 +474,9 @@
 		list_for_each_entry(feed, &dmxdevfilter->feed.ts, next)
 			feed->ts->stop_filtering(feed->ts);
 		break;
+	case DMXDEV_TYPE_BB:
+		dmxdevfilter->feed.bb->stop_filtering(dmxdevfilter->feed.bb);
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -470,6 +503,8 @@
 			}
 		}
 		break;
+	case DMXDEV_TYPE_BB:
+		return filter->feed.bb->start_filtering(filter->feed.bb);
 	default:
 		return -EINVAL;
 	}
@@ -527,6 +562,15 @@
 			feed->ts = NULL;
 		}
 		break;
+	case DMXDEV_TYPE_BB:
+		if (!dmxdevfilter->feed.bb)
+			break;
+		dvb_dmxdev_feed_stop(dmxdevfilter);
+		dmxdevfilter->dev->demux->
+		    release_bb_feed(dmxdevfilter->dev->demux,
+				    dmxdevfilter->feed.bb);
+		dmxdevfilter->feed.bb = NULL;
+		break;
 	default:
 		if (dmxdevfilter->state == DMXDEV_STATE_ALLOCATED)
 			return 0;
@@ -724,6 +768,46 @@
 			}
 		}
 		break;
+	case DMXDEV_TYPE_BB:
+	{
+		static const int bb_types[] = { BB_TS, BB_FRAME, BB_CONT_GS, BB_PACK_GS };
+		struct timespec timeout = { 0 };
+		struct dmx_bb_filter_params *para = &filter->params.bb;
+		struct dmx_demux *demux = dmxdev->demux;
+		int ret;
+		struct dmx_bb_feed **feed = &filter->feed.bb;
+		
+		ret = demux->allocate_bb_feed(demux, feed, dvb_dmxdev_bb_callback);
+		if (ret < 0) {
+			printk("DVB (%s): could not alloc bb feed\n",
+				       __FUNCTION__);
+			return ret;
+		}
+		
+		(*feed)->priv = filter;
+		ret = (*feed)->set(*feed,
+				para->isi,		/* isi */
+				bb_types[para->type],	/* type */
+				10*7274,   		/* circular buffer size */
+				timeout			/* timeout */
+				);
+		if (ret < 0) {
+			printk("DVB (%s): could not set bb feed\n",
+				       __FUNCTION__);
+			demux->release_bb_feed(demux, *feed);
+			return ret;
+		}
+		
+		ret = (*feed)->start_filtering(*feed);
+		if (ret < 0) {
+			printk("DVB (%s): could not start filtering on bb feed\n",
+				       __FUNCTION__);
+			dmxdev->demux->release_bb_feed(dmxdev->demux,
+						       *feed);
+			return ret;
+		}
+		break;
+	}
 	default:
 		return -EINVAL;
 	}
@@ -901,6 +985,29 @@
 	return 0;
 }
 
+static int dvb_dmxdev_bb_filter_set(struct dmxdev *dmxdev,
+				     struct dmxdev_filter *dmxdevfilter,
+				     struct dmx_bb_filter_params *params)
+{
+	dvb_dmxdev_filter_stop(dmxdevfilter);
+
+	if (params->output != DMX_OUT_TAP && params->output != DMX_OUT_TS_TAP)
+		return -EINVAL;
+	else if (params->type < DMX_BB_TSCOMPAT || params->type > DMX_BB_PACK)
+		return -EINVAL;
+	
+	dmxdevfilter->type = DMXDEV_TYPE_BB;
+	memcpy(&dmxdevfilter->params, params,
+	       sizeof(struct dmx_bb_filter_params));
+
+	dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_SET);
+
+	if (params->flags & DMX_IMMEDIATE_START)
+		return dvb_dmxdev_filter_start(dmxdevfilter);
+
+	return 0;
+}
+
 static ssize_t dvb_dmxdev_read_sec(struct dmxdev_filter *dfil,
 				   struct file *file, char __user *buf,
 				   size_t count, loff_t *ppos)
@@ -1014,6 +1121,15 @@
 		mutex_unlock(&dmxdevfilter->mutex);
 		break;
 
+	case DMX_SET_BB_FILTER:
+		if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
+			mutex_unlock(&dmxdev->mutex);
+			return -ERESTARTSYS;
+		}
+		ret = dvb_dmxdev_bb_filter_set(dmxdev, dmxdevfilter, parg);
+		mutex_unlock(&dmxdevfilter->mutex);
+		break;
+
 	case DMX_SET_BUFFER_SIZE:
 		if (mutex_lock_interruptible(&dmxdevfilter->mutex)) {
 			mutex_unlock(&dmxdev->mutex);
--- a/linux/drivers/media/dvb/dvb-core/dmxdev.h	2012-03-19 14:39:46.117144880 +0200
+++ b/linux/drivers/media/dvb/dvb-core/dmxdev.h	2012-03-19 14:38:26.893145875 +0200
@@ -43,6 +43,7 @@
 	DMXDEV_TYPE_NONE,
 	DMXDEV_TYPE_SEC,
 	DMXDEV_TYPE_PES,
+	DMXDEV_TYPE_BB
 };
 
 enum dmxdev_state {
@@ -69,11 +70,13 @@
 		/* list of TS and PES feeds (struct dmxdev_feed) */
 		struct list_head ts;
 		struct dmx_section_feed *sec;
+		struct dmx_bb_feed *bb;
 	} feed;
 
 	union {
 		struct dmx_sct_filter_params sec;
 		struct dmx_pes_filter_params pes;
+		struct dmx_bb_filter_params bb;
 	} params;
 
 	enum dmxdev_type type;
--- a/linux/drivers/media/dvb/dvb-core/dvb_demux.c	2012-03-19 14:39:46.117144880 +0200
+++ b/linux/drivers/media/dvb/dvb-core/dvb_demux.c	2012-03-19 14:38:26.897145875 +0200
@@ -21,6 +21,7 @@
  *
  */
 
+#include <linux/version.h>
 #include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/slab.h>
@@ -32,6 +33,8 @@
 #include <asm/uaccess.h>
 #include <asm/div64.h>
 
+#include <linux/dvb/frontend.h>
+
 #include "dvb_demux.h"
 
 #define NOBUFS
@@ -40,6 +43,16 @@
 */
 // #define DVB_DEMUX_SECTION_LOSS_LOG
 
+/**
+ * @brief Use table-driven CRC-8 calculation for Base-band demultiplexer
+ */
+#define BB_CRC8_TABLE_DRIVEN	1
+
+/**
+ * Define this to enable verbose debugging information from the Base-band demux
+ */
+//#define DVB_DEMUX_DEBUG_BB
+
 static int dvb_demux_tscheck;
 module_param(dvb_demux_tscheck, int, 0644);
 MODULE_PARM_DESC(dvb_demux_tscheck,
@@ -55,6 +68,35 @@
 			printk(x);                              \
 	} while (0)
 
+#ifdef BB_CRC8_TABLE_DRIVEN
+
+/* CRC-8 table for generator polynom 0xd5
+ * Created with PYCRC (http://www.tty1.net/pycrc/) using the following commandline:
+ * python pycrc.py --generate table -o /tmp/bb-crc8-table.c --width=8 --poly=0xd5 
+ *	--reflect-in=false --reflect-out=false --xor-in=0xff --xor-out=0x00
+ */
+static const u8 bb_crc8_table[256] = {
+	0x00, 0xd5, 0x7f, 0xaa, 0xfe, 0x2b, 0x81, 0x54, 0x29, 0xfc, 0x56, 0x83, 0xd7, 0x02, 0xa8, 0x7d,
+	0x52, 0x87, 0x2d, 0xf8, 0xac, 0x79, 0xd3, 0x06, 0x7b, 0xae, 0x04, 0xd1, 0x85, 0x50, 0xfa, 0x2f,
+	0xa4, 0x71, 0xdb, 0x0e, 0x5a, 0x8f, 0x25, 0xf0, 0x8d, 0x58, 0xf2, 0x27, 0x73, 0xa6, 0x0c, 0xd9,
+	0xf6, 0x23, 0x89, 0x5c, 0x08, 0xdd, 0x77, 0xa2, 0xdf, 0x0a, 0xa0, 0x75, 0x21, 0xf4, 0x5e, 0x8b,
+	0x9d, 0x48, 0xe2, 0x37, 0x63, 0xb6, 0x1c, 0xc9, 0xb4, 0x61, 0xcb, 0x1e, 0x4a, 0x9f, 0x35, 0xe0,
+	0xcf, 0x1a, 0xb0, 0x65, 0x31, 0xe4, 0x4e, 0x9b, 0xe6, 0x33, 0x99, 0x4c, 0x18, 0xcd, 0x67, 0xb2,
+	0x39, 0xec, 0x46, 0x93, 0xc7, 0x12, 0xb8, 0x6d, 0x10, 0xc5, 0x6f, 0xba, 0xee, 0x3b, 0x91, 0x44,
+	0x6b, 0xbe, 0x14, 0xc1, 0x95, 0x40, 0xea, 0x3f, 0x42, 0x97, 0x3d, 0xe8, 0xbc, 0x69, 0xc3, 0x16,
+	0xef, 0x3a, 0x90, 0x45, 0x11, 0xc4, 0x6e, 0xbb, 0xc6, 0x13, 0xb9, 0x6c, 0x38, 0xed, 0x47, 0x92,
+	0xbd, 0x68, 0xc2, 0x17, 0x43, 0x96, 0x3c, 0xe9, 0x94, 0x41, 0xeb, 0x3e, 0x6a, 0xbf, 0x15, 0xc0,
+	0x4b, 0x9e, 0x34, 0xe1, 0xb5, 0x60, 0xca, 0x1f, 0x62, 0xb7, 0x1d, 0xc8, 0x9c, 0x49, 0xe3, 0x36,
+	0x19, 0xcc, 0x66, 0xb3, 0xe7, 0x32, 0x98, 0x4d, 0x30, 0xe5, 0x4f, 0x9a, 0xce, 0x1b, 0xb1, 0x64,
+	0x72, 0xa7, 0x0d, 0xd8, 0x8c, 0x59, 0xf3, 0x26, 0x5b, 0x8e, 0x24, 0xf1, 0xa5, 0x70, 0xda, 0x0f,
+	0x20, 0xf5, 0x5f, 0x8a, 0xde, 0x0b, 0xa1, 0x74, 0x09, 0xdc, 0x76, 0xa3, 0xf7, 0x22, 0x88, 0x5d,
+	0xd6, 0x03, 0xa9, 0x7c, 0x28, 0xfd, 0x57, 0x82, 0xff, 0x2a, 0x80, 0x55, 0x01, 0xd4, 0x7e, 0xab,
+	0x84, 0x51, 0xfb, 0x2e, 0x7a, 0xaf, 0x05, 0xd0, 0xad, 0x78, 0xd2, 0x07, 0x53, 0x86, 0x2c, 0xf9
+};
+
+#endif 
+
+
 /******************************************************************************
  * static inlined helper functions
  ******************************************************************************/
@@ -95,6 +137,44 @@
 	memcpy(d, s, len);
 }
 
+#ifndef BB_CRC8_TABLE_DRIVEN
+
+// CRC8 bit-by-bit
+
+#define BB_CRC8_POLY    0xd5
+static u8 bb_crc8_single(u8 crc, u8 data)
+{
+        int i;
+	for (i = 0x80; i > 0; i >>= 1) {
+		bit = crc & 0x80;
+		if (data & i) {
+			bit = !bit;
+		}
+		crc <<= 1;
+		if (bit) {
+			crc ^= BB_CRC8_POLY;
+		}
+	}
+        return crc;
+}
+
+#endif
+
+/**
+ * @brief CRC-8 for DVB-S2 Base-band demultiplexer
+ */
+static u8 bb_crc8(u8 crc, const u8 *src, size_t len)
+{
+	const unsigned char *end = src + len;
+	while(src < end)
+#ifdef BB_CRC8_TABLE_DRIVEN
+		crc = bb_crc8_table[crc ^ *src++];
+#else
+		crc = bb_crc8_single(crc, *src++);
+#endif
+        return crc;
+}
+
 /******************************************************************************
  * Software filter functions
  ******************************************************************************/
@@ -447,7 +527,8 @@
 	};
 
 	list_for_each_entry(feed, &demux->feed_list, list_head) {
-		if ((feed->pid != pid) && (feed->pid != 0x2000))
+		if (feed->type != DMX_TYPE_TS || (
+			(feed->pid != pid) && (feed->pid != 0x2000)))
 			continue;
 
 		/* copy each packet only once to the dvr device, even
@@ -455,8 +536,11 @@
 		if ((DVR_FEED(feed)) && (dvr_done++))
 			continue;
 
-		if (feed->pid == pid)
+		if (feed->pid == pid) {
 			dvb_dmx_swfilter_packet_type(feed, buf);
+			if (DVR_FEED(feed))
+				continue;
+		}
 		else if (feed->pid == 0x2000)
 			feed->cb.ts(buf, 188, NULL, 0, &feed->feed.ts, DMX_OK);
 	}
@@ -568,6 +652,362 @@
 }
 EXPORT_SYMBOL(dvb_dmx_swfilter_204);
 
+/***********************************
+ * DVB-S2 Base-band demultiplexer  *
+ ***********************************/
+
+#define dprintk(x...) do { printk(x); } while (0)
+/**
+ * @brief Process a stream of (possibly fragmented) User Packets (UPs) from a
+ * Generic Packetized Stream or Transport Sream for a specific demux feed.
+ * @param feed The feed on which the UPs should be delivered
+ * @param df Pointer to the data field (df) of a BBFrame containing (fragments of) UPs
+ * @param dfl The length of the data field
+ * @param upl User Packet Length as stated in the BBHEADER
+ * @param upl Sync Distance as stated in the BBHEADER
+ * @param upl Sync Byte as stated in the BBHEADER
+ * @return
+ *	@retval 0 in case of success
+ *	@retval <0 in case of errors
+ * @todo Add support for feed callback timeouts
+ */
+int dvb_dmx_swfilter_bbups(struct dvb_demux_feed *feed, const u8 *df, u16 dfl, 
+	u16 upl, u16 syncd, u8 sync)
+{
+	u8 crc8;
+	u16 rupl = !sync ? upl-1 : upl; /*real upl */
+	size_t len, maxlen;
+#ifdef DVB_DEMUX_DEBUG_BB	
+	dprintk("%s: feed=%p, df=%p, dfl=%hu, upl=%hu, syncd=%hu, sync=%02x\n",
+				__FUNCTION__, feed, df, dfl, upl, syncd, 
+				(unsigned int) sync);
+#endif
+	if (!upl || syncd >= dfl)
+		return -EINVAL;
+	else if (!feed->buffer || upl > feed->buffer_size)
+		return -ENOBUFS;
+	
+	/* NOTE: if the original input stream does not contain a sync byte,
+	 * the DVB-S2 mode adaptation layer inserts a dummy sync byte (value 0) 
+	 * for holding the CRC-8 and also increments the upl.
+	 * We respect that by using the "real upl" (rupl) variable for packets
+	 * in the feed buffer.
+	 */
+		
+	// Limit size of usable buffer part to always store an integral number of packets
+	maxlen = (feed->buffer_size/upl) * upl;
+		
+	if (syncd == (u16) -1) {
+		// No packet starts here, so just copy the df to our buffer
+		len = min((size_t) dfl, maxlen-feed->bb.bufpos);
+		if (len > 0) {
+			memcpy(&feed->buffer[feed->bb.bufpos], df, len);
+			feed->bb.bufpos += len;
+		} else 
+			feed->bb.bufpos = 0;
+	} else {
+		const u8 *pkt = df;
+		const u8 *const dfend = df+dfl;
+		size_t partlen = feed->bb.bufpos % rupl;
+		/* If at least one packet starts in this data field,
+		 * check, if the data until the start of this packet
+		 * completes a partial packet in our buffer
+		 */
+		 if (syncd > 0) {
+			if ((partlen+syncd) == rupl && syncd <= (maxlen-feed->bb.bufpos)) {
+				memcpy(&feed->buffer[feed->bb.bufpos], pkt, syncd);
+				feed->bb.bufpos += syncd;
+			} else {
+				/* Assume that we lost a fragment of the partial 
+				 * packet contained in the buffer and thus
+				 * drop the partial packet.
+				 */
+				BUG_ON(feed->bb.bufpos < partlen); 
+				feed->bb.bufpos -= partlen;
+			}
+			pkt += syncd;
+		} else if (partlen > 0) {
+			/* Assume that we lost a fragment of the partial 
+			 * packet contained in the buffer and thus
+			 * drop the partial packet.
+			 */
+			feed->bb.bufpos -= partlen;
+		}
+		
+		
+		/* NOTE: pkt is synced to a packet start, i.e. *pkt contains the
+		 * CRC-8 of the last packet on this feed.
+		 */
+		while (pkt < dfend) {
+#ifdef DVB_DEMUX_DEBUG_BB			
+			dprintk("%s: pkt=%p, dfend=%p, bufpos=%u (of %u), upl=%hu, rupl=%hu\n",
+				__FUNCTION__, pkt, dfend, feed->bb.bufpos, maxlen, upl, rupl);
+#endif			
+			if ((feed->bb.bufpos-feed->bb.crcpos) >= rupl) {
+				/* verify the last packet in the buffer (not including the sync byte) */
+				crc8 = bb_crc8(0x00, 
+					&feed->buffer[feed->bb.crcpos+1], upl-1);
+				if (crc8 != *pkt) {
+					// discard packet
+					feed->bb.bufpos -= upl;
+				} else if (feed->bb.bufpos >= maxlen) {
+					// Flush feed buffer 
+			
+					/* NOTE: at this point, all packets in the feed 
+					 * buffer have been verified, so we're allowed to deliver
+					 * them to the feed callback.
+					 */
+				
+					// Invoke feed callback
+					feed->cb.bb(feed->buffer, feed->bb.bufpos, 
+						rupl, &feed->feed.bb, DMX_OK);
+					
+					feed->bb.crcpos = feed->bb.bufpos = 0;
+				}
+				else
+					feed->bb.crcpos = feed->bb.bufpos;
+			}
+			
+			BUG_ON(feed->bb.bufpos+rupl > maxlen);
+			
+			if (sync) // Sync byte present?
+				feed->buffer[feed->bb.bufpos++] = sync;
+			pkt++;
+			
+			len = min((u16) (upl-1), (u16) (dfend-pkt));
+			/* NOTE: we do not check for len == 0, as it hopefully does not
+			 * happen too often.
+			 */
+			memcpy(&feed->buffer[feed->bb.bufpos], pkt, len);
+			pkt += len;
+			feed->bb.bufpos += len;
+		}
+	}
+	return 0;
+}
+
+/* Structure of a Base-Band frame:
+ 
+ *  < ------------------------------ BBFrame ----------------------------------- >
+ *    2 bytes 2 bytes  2 bytes  1 B  2 bytes  1 B            DFL bits
+ *  |--------|--------|--------|----|--------|----|------------------------------|
+ *  +--------+--------+--------+----+--------+----+-------------//---------------+
+ *  | MATYPE |   UPL  |   DFL  |SYNC| SYNCD  |CRC8|          Data Field          |
+ *  +--------+--------+--------+----+--------+----+-------------//---------------+
+ *
+ * Sub-structure of the MATYPE field:
+ *  +--------+----+----+----+----+--------+------------------------------------+
+ *  | TS/GS  |SIS/|CCM/|IS- |NPD |   RO   |           ISI or unused            |
+ *  |        |MIS |ACM |SYI |    |        |                                    |
+ *  +--------+----+----+----+----+--------+------------------------------------+
+ *
+ */
+
+
+/**
+ * @todo Invoke feed callbacks in case of an error 
+ * @todo If mode == BB_TS and SIS-mode is active then we could by default forward
+ * the TS to the TS demux. This would avoid the need to explicitely setup 
+ * TS compatibility mode using dvb_dmx_set_ts_compat().
+ * @note assumes that the caller has locked demux->lock.
+ */
+ssize_t _dvb_dmx_swfilter_bbframe(struct dvb_demux *demux, const u8 *frame, size_t len)
+{
+	ssize_t rv = -1;
+	u16 framelen;
+	int isi, mode;
+	struct dvb_demux_feed *feed;
+	u8 crc8;
+	
+	if (len < 10 || len > 7274) {
+		// No complete BBHEADER present
+		rv = -EINVAL;
+		goto done;
+	}
+	
+	// Verify CRC-8 of BBHEADER (frame[9])
+	crc8 = bb_crc8(0x00, frame, 9);
+	if (crc8 != frame[9]) {
+		printk(KERN_NOTICE "%s: CRC check failed for BBHEADER "
+			"(calculated %02x, received %02x)\n", __FUNCTION__, 
+			(int) crc8, (int) frame[9]);
+		goto done;
+	}
+	
+	if (frame[0] & 0x20) { // Single Input Stream (SIS)
+		isi = -1;
+	} else { // Multiple Input Stream (MIS)
+		isi = frame[1];
+	}
+	mode = (frame[0] & 0xc0);
+	
+	//  length values are measured in bits -> convert to bytes
+	framelen = (frame[4] << 8) | frame[5];
+	framelen >>= 3;
+	
+	if (!framelen || ((len-10) < framelen)) {
+		printk(KERN_NOTICE "%s: invalid data field length (length %hu, left %u)\n",
+			__FUNCTION__, framelen, len);
+		rv = -1;
+		goto done;
+	}
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: received frame for input stream %d (df length %u)\n",
+		__FUNCTION__, isi, (unsigned int) framelen);
+#endif	
+	// First, give the raw frame to all BB_FRAME feeds 
+	list_for_each_entry(feed, &demux->feed_list, list_head) {
+		if (feed->type != DMX_TYPE_BB || feed->bb.type != BB_FRAME)
+			continue;
+		else if (feed->bb.isi != isi && feed->bb.isi != BB_ISI_ALL)
+			continue;
+		else 
+			feed->cb.bb(frame, framelen+10, 0, &feed->feed.bb, DMX_OK);
+	}
+	
+	if (mode == BB_TS || mode == BB_PACK_GS) {
+		// Packetized stream
+		u16 upl = ((frame[2] << 8) | frame[3]) >> 3;
+		u16 syncd = ((frame[7] << 8) | frame[8]) >> 3;
+		if (!upl) {
+			if (mode == BB_TS)
+				upl = 188;
+			else {
+				printk(KERN_NOTICE "%s: invalid user packet length of zero\n",
+					__FUNCTION__);
+				goto done;
+			}
+		}
+		
+		list_for_each_entry(feed, &demux->feed_list, list_head) {
+			if (feed->type != DMX_TYPE_BB || feed->bb.type != mode)
+				continue;
+			else if (feed->bb.isi != isi && feed->bb.isi != BB_ISI_ALL)
+				continue;
+			else
+				dvb_dmx_swfilter_bbups(feed, frame+10, framelen, 
+					upl, syncd, frame[6]);
+		}
+	} else if (mode == BB_CONT_GS) {
+		// Continuos stream
+		list_for_each_entry(feed, &demux->feed_list, list_head) {
+			if (feed->type != DMX_TYPE_BB || feed->bb.type != BB_CONT_GS)
+				continue;
+			else if (feed->bb.isi != isi && feed->bb.isi != BB_ISI_ALL)
+				continue;
+			else
+				feed->cb.bb(frame+10, framelen, 0, &feed->feed.bb, DMX_OK);
+		}
+	} else {
+		printk(KERN_NOTICE "%s: invalid use of reserved TS/GS value 1\n",
+			__FUNCTION__);
+		goto done;
+	}
+
+	rv = framelen+10;
+	
+done:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+	///@todo Make this configurable via sysfs or module param
+	if (rv < 0) {
+		print_hex_dump(KERN_DEBUG, "[BBFrame] ", DUMP_PREFIX_OFFSET, 16, 
+			1, (void*) frame,  len, 0);
+	}
+#endif
+	return rv;
+}
+
+ssize_t dvb_dmx_swfilter_bbframe(struct dvb_demux *demux, const u8 *frame, size_t len)
+{
+	ssize_t rv;
+	spin_lock(&demux->lock);
+	rv = _dvb_dmx_swfilter_bbframe(demux, frame, len);
+	spin_unlock(&demux->lock);
+	return rv;
+}
+EXPORT_SYMBOL(dvb_dmx_swfilter_bbframe);
+
+#define BB_FRAME_LEN(ptr) (10 + ((((ptr)[4] << 8) | (ptr)[5]) >> 3))
+void dvb_dmx_swfilter_data(struct dvb_demux *demux, fe_data_format_t dfmt, 
+	const u8 *data, size_t len)
+{
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: demux=%p, dfmt=%d, data=%p, len=%u\n",
+				__FUNCTION__, demux, dfmt, data,
+				(unsigned int) len);
+#endif
+	spin_lock(&demux->lock);
+
+	if(dfmt == FE_DFMT_BB_FRAME) {
+		// A sequence of base-band frames as a stream of bytes
+		u16 bblen;
+		ssize_t res;
+		size_t clen;
+		while(demux->bb.wr > 0 && len > 0) {
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: wr=%u, data=%p, len=%u\n",
+				__FUNCTION__, demux->bb.wr, data, (unsigned int) len);
+#endif
+			if(demux->bb.wr < 10) {
+				clen = min(10-demux->bb.wr, len);
+				clen = min(clen, DMX_BB_BUFSZ-demux->bb.wr);
+				memcpy(&demux->bb.buf[demux->bb.wr], data, clen);
+				demux->bb.wr += clen;
+				data += clen;
+				len -= clen;
+			} else {
+				if(bb_crc8(0x00, &demux->bb.buf[0], 10) != 0) {
+					demux->bb.wr -= 1;
+					memmove(&demux->bb.buf[0], &demux->bb.buf[1], demux->bb.wr);
+					continue;
+				}
+				bblen = BB_FRAME_LEN(demux->bb.buf);
+				if(demux->bb.wr < bblen) {
+					clen = min(bblen-demux->bb.wr, len);
+					clen = min(clen, DMX_BB_BUFSZ-demux->bb.wr);
+					memcpy(&demux->bb.buf[demux->bb.wr], data, clen);
+					demux->bb.wr += clen;
+					data += clen;
+					len -= clen;
+				}
+				if(demux->bb.wr >= bblen) {
+					res = _dvb_dmx_swfilter_bbframe(demux, &demux->bb.buf[0], bblen);
+					demux->bb.wr -= bblen;
+					if(demux->bb.wr > 0)
+						memmove(&demux->bb.buf[0], &demux->bb.buf[bblen], demux->bb.wr);
+				}
+			}
+			if(demux->bb.wr == DMX_BB_BUFSZ)
+				demux->bb.wr = 0;
+		}
+		if(demux->bb.wr == 0) {
+			while(len > 9) {
+				if(bb_crc8(0x00, data, 10) != 0) {
+					bblen = 1;
+				} else {
+					bblen = BB_FRAME_LEN(data);
+					if(len < bblen) {
+						break;
+					}
+					res = _dvb_dmx_swfilter_bbframe(demux, data, bblen);
+				}
+				data += bblen;
+				len -= bblen;
+			}
+		}
+		// copy remaining part to buffer
+		BUG_ON((demux->bb.wr + len) > DMX_BB_BUFSZ);
+		memcpy(&demux->bb.buf[demux->bb.wr], data, len);
+		demux->bb.wr += len;
+	} else {
+		///@todo implement TS path
+	}
+
+	spin_unlock(&demux->lock);
+}
+
+EXPORT_SYMBOL(dvb_dmx_swfilter_data);
+
 static struct dvb_demux_filter *dvb_dmx_filter_alloc(struct dvb_demux *demux)
 {
 	int i;
@@ -1093,6 +1533,180 @@
 }
 
 /******************************************************************************
+ * dmx_bb_feed calls
+ ******************************************************************************/
+
+static int dmx_bb_feed_set(struct dmx_bb_feed *bb_feed, int isi, int mode,
+	size_t circular_buffer_size, struct timespec timeout)
+{
+	struct dvb_demux_feed *feed = (struct dvb_demux_feed*) bb_feed;
+	struct dvb_demux *demux = feed->demux;
+
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: bb_feed=%p, isi=%d, mode=%d, bufsz=%u\n",
+		__FUNCTION__, bb_feed, isi, mode, circular_buffer_size);
+#endif
+	///@todo Max ISI may be dependent on delivery system
+	if (isi > 255 || (isi < 0 && isi != BB_ISI_ALL && isi != BB_ISI_SIS))
+		return -EINVAL;
+	else if (mode != BB_FRAME && mode != BB_PACK_GS && mode != BB_CONT_GS && 
+		mode != BB_TS)
+		return -EINVAL;
+	else if (isi == BB_ISI_ALL && mode != BB_FRAME)
+		return -EINVAL;
+
+	feed->buffer_size = circular_buffer_size; 
+	if (feed->buffer_size) {
+		feed->buffer = vmalloc(feed->buffer_size);
+		if (!feed->buffer) {
+			return -ENOMEM;
+		}
+	} else if (mode == BB_PACK_GS || mode == BB_TS) {
+		// we need a buffer for packetized streams!
+		return -EINVAL;
+	}
+	
+	feed->bb.isi = isi;
+	feed->bb.type = mode;
+	feed->state = DMX_STATE_READY;
+	
+	if (mutex_lock_interruptible(&demux->mutex))
+		return -ERESTARTSYS;
+	
+	dvb_demux_feed_add(feed);
+	
+	mutex_unlock(&demux->mutex);
+	return 0;
+}
+
+static int dmx_bb_feed_start_filtering(struct dmx_bb_feed *bb_feed)
+{
+	struct dvb_demux_feed *feed = (struct dvb_demux_feed *)bb_feed;
+	struct dvb_demux *demux = feed->demux;
+	int ret;
+
+	if (mutex_lock_interruptible(&demux->mutex))
+		return -ERESTARTSYS;
+
+	if (feed->state != DMX_STATE_READY || feed->type != DMX_TYPE_BB) {
+		mutex_unlock(&demux->mutex);
+		return -EINVAL;
+	}
+
+	if (!demux->start_feed) {
+		mutex_unlock(&demux->mutex);
+		return -ENODEV;
+	}
+
+	if ((ret = demux->start_feed(feed)) < 0) {
+		mutex_unlock(&demux->mutex);
+		return ret;
+	}
+
+	spin_lock_irq(&demux->lock);
+	bb_feed->is_filtering = 1;
+	feed->state = DMX_STATE_GO;
+	spin_unlock_irq(&demux->lock);
+	mutex_unlock(&demux->mutex);
+
+	return 0;
+}
+
+static int dmx_bb_feed_stop_filtering(struct dmx_bb_feed *bb_feed)
+{
+	struct dvb_demux_feed *feed = (struct dvb_demux_feed *)bb_feed;
+	struct dvb_demux *demux = feed->demux;
+	int ret;
+
+	mutex_lock(&demux->mutex);
+
+	if (feed->state < DMX_STATE_GO) {
+		mutex_unlock(&demux->mutex);
+		return -EINVAL;
+	}
+
+	if (!demux->stop_feed) {
+		mutex_unlock(&demux->mutex);
+		return -ENODEV;
+	}
+
+	ret = demux->stop_feed(feed);
+
+	spin_lock_irq(&demux->lock);
+	bb_feed->is_filtering = 0;
+	feed->state = DMX_STATE_READY;
+	spin_unlock_irq(&demux->lock);
+	mutex_unlock(&demux->mutex);
+
+	return ret;
+}
+
+static int dvbdmx_allocate_bb_feed(struct dmx_demux *dmx, struct dmx_bb_feed **bb_feed,
+	dmx_bb_cb callback)
+{
+	struct dvb_demux *demux = (struct dvb_demux *)dmx;
+	struct dvb_demux_feed *feed;
+
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: dmx=%p, bb_feed=%p, callback=%p\n",
+		__FUNCTION__, dmx, bb_feed, callback);
+#endif
+	
+	if (mutex_lock_interruptible(&demux->mutex))
+		return -ERESTARTSYS;
+
+	if (!(feed = dvb_dmx_feed_alloc(demux))) {
+		mutex_unlock(&demux->mutex);
+		return -EBUSY;
+	}
+
+	feed->type = DMX_TYPE_BB;
+	feed->cb.bb = callback;
+	feed->demux = demux;
+	feed->bb.isi = BB_ISI_SIS;
+	feed->bb.type = BB_FRAME;
+	feed->buffer = NULL;
+	feed->bb.bufpos = 0;
+	feed->bb.crcpos = 0;
+	
+	*bb_feed = &feed->feed.bb;
+	(*bb_feed)->parent = dmx;
+	(*bb_feed)->priv = NULL;
+	(*bb_feed)->is_filtering = 0;
+	(*bb_feed)->start_filtering = dmx_bb_feed_start_filtering;
+	(*bb_feed)->stop_filtering = dmx_bb_feed_stop_filtering;
+	(*bb_feed)->set = dmx_bb_feed_set;
+	
+	mutex_unlock(&demux->mutex);
+	return 0;
+}
+
+static int dvbdmx_release_bb_feed(struct dmx_demux *dmx, struct dmx_bb_feed *bb_feed)
+{
+	struct dvb_demux *demux = (struct dvb_demux *)dmx;
+	struct dvb_demux_feed *feed = (struct dvb_demux_feed*) bb_feed;
+
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: dmx=%p, bb_feed=%p\n",
+		__FUNCTION__, dmx, bb_feed);
+#endif
+
+	mutex_lock(&demux->mutex);
+
+	if (feed->state == DMX_STATE_FREE) {
+		mutex_unlock(&demux->mutex);
+		return -EINVAL;
+	}
+
+	feed->state = DMX_STATE_FREE;
+
+	dvb_demux_feed_del(feed);
+
+	mutex_unlock(&demux->mutex);
+	return 0;
+}
+
+/******************************************************************************
  * dvb_demux kernel data API calls
  ******************************************************************************/
 
@@ -1214,6 +1828,104 @@
 	return 0;
 }
 
+static void dvb_dmx_ts_compat_bb_callback(const u8 *buf, size_t len, size_t upl, 
+	struct dmx_bb_feed* source, enum dmx_success success)
+{
+	unsigned int count;
+#ifdef DVB_DEMUX_DEBUG_BB
+	dprintk("%s: buf=%p, len=%u, upl=%u, source=%p, success=%d\n",
+		__FUNCTION__, buf, len, upl, source, success);
+#endif
+	if (success != DMX_OK || upl != 188)
+		return;
+	for(count=len/188; count > 0; count--, buf+=188)
+		dvb_dmx_swfilter_packet((struct dvb_demux*) source->parent, buf); 
+	
+}
+
+/**
+ * @brief Enable or disable TS compatibility mode on the specified input stream (ISI).
+ */
+static int dvb_dmx_set_ts_compat(struct dvb_demux *dvbdemux, int isi, int enable)
+{
+	int rv = -1, found = 0;
+	struct dmx_demux *demux = &dvbdemux->dmx;
+	struct dmx_bb_feed *feed;
+	struct dvb_demux_feed *dvbfeed;
+	struct timespec timeout = {0, 1*1000*1000}; /* 1 ms */
+	
+	if (!demux->allocate_bb_feed) {
+		printk(KERN_ERR "%s: demux does not support bb feeds\n", 
+			__FUNCTION__);
+		goto done;
+	}
+	
+	spin_lock(&dvbdemux->lock);
+	list_for_each_entry(dvbfeed, &dvbdemux->feed_list, list_head) {
+		if ((dvbfeed->type != DMX_TYPE_BB) || (dvbfeed->bb.type != BB_TS) || 
+			(dvbfeed->bb.isi != isi) || 
+			(dvbfeed->cb.bb != dvb_dmx_ts_compat_bb_callback))
+			continue;
+		found = 1;
+		break;
+	}
+	spin_unlock(&dvbdemux->lock);
+	
+	if (enable && !found) {
+		dprintk("%s: alloc bb feed\n", __FUNCTION__);
+		
+		rv = demux->allocate_bb_feed(demux, &feed, dvb_dmx_ts_compat_bb_callback);
+		if (rv < 0) {
+			printk(KERN_ERR "%s: could not allocate bb feed\n", 
+				__FUNCTION__);
+			goto done;
+		}
+		
+		feed->priv = NULL;
+		rv = feed->set(feed,
+				isi,		/* isi */
+				BB_TS,		/* type */
+				7274,   	/* circular buffer size */
+				timeout		/* timeout */
+				);
+		if (rv < 0) {
+			printk(KERN_ERR "%s: could not set bb feed\n", __FUNCTION__);
+			demux->release_bb_feed(demux, feed);
+			goto done;
+		}
+	
+		dprintk("%s: start filtering\n", __FUNCTION__);
+		
+		if (isi == BB_ISI_ALL)
+			printk("%s: enabled TS-Compatibility mode on all ISIs\n", 
+				__FUNCTION__);
+		else
+			printk("%s: enabled TS-Compatibility mode on ISI %d\n", 
+				__FUNCTION__, isi);
+		
+		feed->start_filtering(feed);
+	} else if (!enable && found) {
+		feed = &dvbfeed->feed.bb;
+		if (feed->is_filtering) {
+			dprintk("%s: stop filtering\n", __FUNCTION__);
+			feed->stop_filtering(feed);
+		}
+		dprintk("%s: release bb feed\n", __FUNCTION__);
+		demux->release_bb_feed(demux, feed);
+		
+		if (isi == BB_ISI_ALL)
+			printk("%s: disabled TS-Compatibility mode on all ISIs\n", 
+				__FUNCTION__);
+		else
+			printk("%s: disabled TS-Compatibility mode on ISI %d\n", 
+				__FUNCTION__, isi);
+	}
+	
+	rv = 0;
+done:
+	return rv;
+}
+
 int dvb_dmx_init(struct dvb_demux *dvbdemux)
 {
 	int i;
@@ -1273,6 +1985,8 @@
 	dmx->release_ts_feed = dvbdmx_release_ts_feed;
 	dmx->allocate_section_feed = dvbdmx_allocate_section_feed;
 	dmx->release_section_feed = dvbdmx_release_section_feed;
+	dmx->allocate_bb_feed = dvbdmx_allocate_bb_feed;
+	dmx->release_bb_feed = dvbdmx_release_bb_feed;
 
 	dmx->add_frontend = dvbdmx_add_frontend;
 	dmx->remove_frontend = dvbdmx_remove_frontend;
@@ -1284,6 +1998,14 @@
 	mutex_init(&dvbdemux->mutex);
 	spin_lock_init(&dvbdemux->lock);
 
+	dvbdemux->bb.buf = vmalloc(DMX_BB_BUFSZ);
+	if (!dvbdemux->bb.buf)
+		return -ENOMEM;
+	dvbdemux->bb.wr = 0;
+
+
+	/* Activate TS-Compat mode for single-input stream channels */
+	//dvb_dmx_set_ts_compat(dvbdemux, BB_ISI_SIS, 1);
 	return 0;
 }
 
@@ -1291,9 +2013,11 @@
 
 void dvb_dmx_release(struct dvb_demux *dvbdemux)
 {
+	dvb_dmx_set_ts_compat(dvbdemux, BB_ISI_SIS, 0);
 	vfree(dvbdemux->cnt_storage);
 	vfree(dvbdemux->filter);
 	vfree(dvbdemux->feed);
+	vfree(dvbdemux->bb.buf);
 }
 
 EXPORT_SYMBOL(dvb_dmx_release);
--- a/linux/drivers/media/dvb/dvb-core/dvb_demux.h	2012-03-19 14:39:46.117144880 +0200
+++ b/linux/drivers/media/dvb/dvb-core/dvb_demux.h	2012-03-19 14:38:26.897145875 +0200
@@ -28,11 +28,14 @@
 #include <linux/spinlock.h>
 #include <linux/mutex.h>
 
+#include <linux/dvb/frontend.h>
+
 #include "demux.h"
 
 #define DMX_TYPE_TS  0
 #define DMX_TYPE_SEC 1
 #define DMX_TYPE_PES 2
+#define DMX_TYPE_BB  3
 
 #define DMX_STATE_FREE      0
 #define DMX_STATE_ALLOCATED 1
@@ -68,11 +71,13 @@
 	union {
 		struct dmx_ts_feed ts;
 		struct dmx_section_feed sec;
+		struct dmx_bb_feed bb;
 	} feed;
 
 	union {
 		dmx_ts_cb ts;
 		dmx_section_cb sec;
+		dmx_bb_cb bb;
 	} cb;
 
 	struct dvb_demux *demux;
@@ -94,6 +99,21 @@
 
 	u16 peslen;
 
+	/* Data for the Base-band demux */
+	struct {
+		/// Input Stream Identifier. A value of -1 indicates Single Input Stream operation
+		int isi;
+		/// Feed type (BB_FRAME, BB_PACK_GS, BB_CONT_GS or BB_TS)
+		u8 type;
+		/// Position in buffer (feed->buffer)
+		unsigned int bufpos;
+		/**
+		 * This is the offset of the last packet in the buffer which needs CRC validation.
+		 * @note All packets in the buffer with offsets < crcpos have already been validated.
+		 */
+		unsigned int crcpos;
+	} bb;
+
 	struct list_head list_head;
 	unsigned int index;	/* a unique index for each feed (can be used as hardware pid filter index) */
 };
@@ -129,6 +149,16 @@
 	u8 tsbuf[204];
 	int tsbufp;
 
+
+	/**
+	 * Members which are specific to the BB-Demux 
+	 */
+	struct {
+#define DMX_BB_BUFSZ	8192
+		u8 *buf;
+		unsigned int wr;
+	} bb;
+
 	struct mutex mutex;
 	spinlock_t lock;
 
@@ -145,5 +175,17 @@
 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count);
 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf,
 			  size_t count);
+/**
+ * Pass a single Base-band frame (BBFrame) to the demultiplexer
+ * @param demux Pointer to DVB demux context
+ * @param frame Buffer containing the full BBFrame
+ * @param len Length of the BBFrame in \c frame
+ * @return The length of the BBFrame or a value < 0 in case of an error
+ * @note This function MUST NOT be call from inside a feed callback
+ */
+ssize_t dvb_dmx_swfilter_bbframe(struct dvb_demux *demux, const u8 *frame, size_t len);
+
+void dvb_dmx_swfilter_data(struct dvb_demux *demux, fe_data_format_t dfmt, 
+	const u8 *data, size_t len);
 
 #endif /* _DVB_DEMUX_H_ */

[-- Attachment #3: 02-bb-fe.patch --]
[-- Type: text/x-patch, Size: 1199 bytes --]

--- a/linux/include/linux/dvb/frontend.h	2011-05-21 02:59:30.000000000 +0300
+++ b/linux/include/linux/dvb/frontend.h	2012-03-19 15:01:11.533128721 +0200
@@ -351,6 +351,14 @@
 	SYS_DVBT2,
 } fe_delivery_system_t;
 
+/*
+ * Format of data transferred from DVB adapter (frontend) to host.
+*/
+typedef enum fe_data_format {
+	FE_DFMT_TS_PACKET,
+	FE_DFMT_BB_FRAME
+} fe_data_format_t;
+
 struct dtv_cmds_h {
 	char	*name;		/* A display name for debugging purposes */
 
--- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	2011-10-09 22:20:56.000000000 +0300
+++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	2012-03-19 15:05:57.273125129 +0200
@@ -878,6 +878,7 @@
 	c->symbol_rate = QAM_AUTO;
 	c->code_rate_HP = FEC_AUTO;
 	c->code_rate_LP = FEC_AUTO;
+	c->dfmt = FE_DFMT_TS_PACKET;
 
 	c->isdbt_partial_reception = -1;
 	c->isdbt_sb_mode = -1;
--- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.h	2011-05-21 02:59:30.000000000 +0300
+++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.h	2012-03-19 15:06:47.441124498 +0200
@@ -342,6 +342,8 @@
 
 	fe_delivery_system_t	delivery_system;
 
+	fe_data_format_t	dfmt;
+
 	/* ISDB-T specifics */
 	u8			isdbt_partial_reception;
 	u8			isdbt_sb_mode;

[-- Attachment #4: 03-bb-tbs.patch --]
[-- Type: text/x-patch, Size: 3245 bytes --]

--- a/linux/drivers/media/common/saa716x/saa716x_tbs.c	2012-02-06 15:05:41.000000000 +0200
+++ b/linux/drivers/media/common/saa716x/saa716x_tbs.c	2012-03-19 16:34:35.344928347 +0200
@@ -76,6 +76,10 @@
 module_param(ci_mode, int, 0644);
 MODULE_PARM_DESC(ci_mode, "for internal use only: default 0");
 
+static int tsout = 1;
+module_param(tsout, int, 0644);
+MODULE_PARM_DESC(tsout, "TBS 6925 output format 1=TS, 0=BB (default:1)");
+
 #define DRIVER_NAME "SAA716x TBS"
 
 static int __devinit saa716x_tbs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
@@ -356,7 +360,11 @@
 				u8 * data = (u8 *)saa716x->fgpi[3].dma_buf[activeBuffer].mem_virt;
 				dprintk(SAA716x_DEBUG, 1, "%02X%02X%02X%02X",
 					data[0], data[1], data[2], data[3]);
-				dvb_dmx_swfilter_packets(&saa716x->saa716x_adap[0].demux, data, 348);
+				if (tsout == 0)
+					dvb_dmx_swfilter_data(&saa716x->saa716x_adap[0].demux, 
+									FE_DFMT_BB_FRAME, data, 348*188);
+				else
+					dvb_dmx_swfilter_packets(&saa716x->saa716x_adap[0].demux, data, 348);
 			}
 			if (fgpiStatus) {
 				SAA716x_EPWR(FGPI3, INT_CLR_STATUS, fgpiStatus);
--- a/linux/drivers/media/dvb/frontends/stv090x.c	2011-10-09 23:15:32.000000000 +0300
+++ b/linux/drivers/media/dvb/frontends/stv090x.c	2012-03-19 18:00:03.690919513 +0200
@@ -38,6 +38,10 @@
 static unsigned int verbose;
 module_param(verbose, int, 0644);
 
+static int tsout = 1;
+module_param(tsout, int, 0644);
+MODULE_PARM_DESC(tsout, "Output data 1=TS, 0=BB (default:1)");
+
 /* internal params node */
 struct stv090x_dev {
 	/* pointer for internal params, one for each pair of demods */
@@ -3166,6 +3170,40 @@
 	return -1;
 }
 
+/* Set data output format of Transport Stream Merger.
+ * This function configures the packet delineator and the stream merger units
+ * of the STV0900 for frame (Base-band frame) or packet (Transport Stream) output.
+ */
+static int stv090x_set_dfmt(struct stv090x_state *state, fe_data_format_t dfmt)
+{
+	u32 reg;
+
+	// Px_PDELCTRL2: Packet delineator additional configuration
+	switch(dfmt)
+	{
+		case FE_DFMT_TS_PACKET:
+			reg = STV090x_READ_DEMOD(state, PDELCTRL2);
+			STV090x_SETFIELD_Px(reg, FRAME_MODE_FIELD, 0);
+			if (STV090x_WRITE_DEMOD(state, PDELCTRL2, reg) < 0)
+				goto err;
+			break;
+		case FE_DFMT_BB_FRAME:
+			reg = STV090x_READ_DEMOD(state, PDELCTRL2);
+			STV090x_SETFIELD_Px(reg, FRAME_MODE_FIELD, 1);
+			if (STV090x_WRITE_DEMOD(state, PDELCTRL2, reg) < 0)
+				goto err;
+			break;
+		default:
+			dprintk(FE_ERROR, 1, "Invalid data format %d", dfmt);
+			goto err;
+	}
+	
+	//
+	return 0;
+err:
+	dprintk(FE_ERROR, 1, "Failed to set FE data format");
+	return -1;
+}
 
 static enum stv090x_signal_state stv090x_algo(struct stv090x_state *state)
 {
@@ -3434,6 +3472,15 @@
 	if (p->frequency == 0)
 		return DVBFE_ALGO_SEARCH_INVALID;
 
+	if (tsout == 0) { /* bb mode enabled */
+		//if(stv090x_set_dfmt(state, props->dfmt) != 0)
+		if(stv090x_set_dfmt(state, FE_DFMT_BB_FRAME) != 0)
+			return DVBFE_ALGO_SEARCH_ERROR;
+	} else {
+		if(stv090x_set_dfmt(state, FE_DFMT_TS_PACKET) != 0)
+			return DVBFE_ALGO_SEARCH_ERROR;
+	}
+
 	state->delsys = props->delivery_system;
 	state->frequency = p->frequency;
 	state->srate = p->u.qpsk.symbol_rate;

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: DVB-S2 multistream support
  2012-03-19 15:19                                   ` Konstantin Dimitrov
@ 2012-04-24 22:18                                     ` Bob W
  0 siblings, 0 replies; 26+ messages in thread
From: Bob W @ 2012-04-24 22:18 UTC (permalink / raw)
  To: Konstantin Dimitrov; +Cc: Christian Prähauser, linux-media, Marek Ochaba



Hi all,

  in playing with these patches, I am noticing the bbframes are only
partially being delivered by the hardware.  I am only getting the first
188 bytes of the frame.

I think it is related to the programming of the saa716xx.

In this function:  saa716x_dma_start the params stuct is filled out,
with 188 in the samples and pitch elements..

does anyone know a little more about this saa716x and how to program
it correctly to receive more data to account for the big bbframes?

thanks

Bob




On 3/19/2012 10:19 AM, Konstantin Dimitrov wrote:
> hello Christian,
> 
> first of all thank you for the great work. so, i have few follow-ups about it:
> 
> 1. since your current patch contains patches that are kernel-specific
> changes (i.e. some general changes to the V4L code for the kernel you
> use), changes related to the BBFrame-support and hardware-specific
> changes (i.e. related to the TBS 6925 card, which at the moment is the
> only affordable hardware at least i know that can handle BBFrames) in
> order for more easy use in different kernels as well for the purpose
> of others to review the changes related to the BBFrame-support in V4L
> 'dvb-core' i split your patch to 3 separate patches (they are attached
> to this email):
> 
> - 01-bb-dmx.patch : it's supposed to contains all changes you made to
> the demux part of V4L 'dvb-core' - i didn't make any further changes -
> just collected your original changes in the patch; it should apply
> clean to all recent kernel released in the last several months (i
> believe at least in the last 6 months), because no changes in this
> parts of 'dvb-core' were made recently
> 
> - 02-bb-fe.patch : those are changes for BBFrame-support related to
> the frontend - i separated those changes and i didn't include them in
> '01-bb-dmx.patch', because recently a lot of changes were made to that
> part of V4L. so, this patch will apply clean to
> "tbs-linux-drivers_v120206" and to other V4L trees most probably it
> will require to manually apply the changes to the respective files,
> but since it changes less than 10 lines in only 3 files that's just
> fine for manual patching
> 
> - 03-bb-tbs.patch : those are all changes specific to the TBS 6925
> hardware. additionally to your changes i defined "tsout" module
> parameter to both 'stv090x' and 'saa716x_tbs-dvb' - that's convenient
> to change between TS and BB mode just with reloading the modules with
> rmmod/modprobe
> 
> 2. so i used the above 3 patches with "tbs-linux-drivers_v120206" and
> after i applied them:
> 
> # cd linux-tbs-drivers
> # patch -p1 < ../01-bb-dmx.patch
> # patch -p1 < ../02-bb-fe.patch
> # patch -p1 < ../03-bb-tbs.patch
> 
> the driver builds successfully, but i'm not sure if i didn't miss
> something from your original patch. also, i put file called
> 'tbs6925.conf' in /etc/modprobe.d with lines in it:
> 
> options stv090x tsout=0
> options saa716x_tbs-dvb tsout=0
> 
> for easy enable/disable of the BB mode with just reloading the modules
> in order to make the testing easier.
> 
> 3. so on the test i did every few seconds i get the following errors:
> 
> _dvb_dmx_swfilter_bbframe: invalid use of reserved TS/GS value 1
> 
> _dvb_dmx_swfilter_bbframe: invalid data field length (length 0, left 10)
> 
> and hex-dump of the BBFrame data. is that supposed to happen? please,
> can you confirm if it happens or not in your environment with your
> original patch or i messed-up something when i prepared the 3 patches
> from point 1. so, that request is in relation to my seconds request -
> please, review the 3 patches from point 1 and confirm they are correct
> and i didn't miss anything - if they are correct patch 01 and 02 can
> be used for review of the code.
> 
> many thanks,
> konstantin
> 


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2012-04-24 23:09 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-25  1:06 DVB-S2 multistream support Georgi Chorbadzhiyski
2011-12-25  8:23 ` Antti Palosaari
2011-12-25 10:17   ` Mauro Carvalho Chehab
2011-12-25 10:55     ` Konstantin Dimitrov
2011-12-25 11:18       ` Mauro Carvalho Chehab
2011-12-25 12:37         ` Konstantin Dimitrov
2011-12-27 10:12         ` Christian Prähauser
2011-12-27 16:08           ` Antti Palosaari
2012-01-19 13:34           ` Marek Ochaba
2012-01-21 10:29             ` Christian Prähauser
2012-01-23 13:58               ` Marek Ochaba
2012-01-22  2:13           ` Mauro Carvalho Chehab
2012-01-22 12:44             ` Christian Prähauser
     [not found]           ` <CAF0Ff2mf0tYs3UG3M6Cahep+_kMToVaGgPhTqR7zhRG0UXWuig@mail.gmail.com>
     [not found]             ` <85A7A8FC-150C-4463-B09C-85EED6F851A8@cosy.sbg.ac.at>
     [not found]               ` <CAF0Ff2ncv0PJWSOOw=7WeGyqX3kKiQitY52uEOztfC8Bwj6LgQ@mail.gmail.com>
2012-01-25 13:12                 ` Christian Prähauser
2012-02-01 18:49                   ` Konstantin Dimitrov
2012-02-18 19:06                     ` Christian Prähauser
2012-02-19 23:12                       ` Konstantin Dimitrov
2012-03-07 16:33                         ` Bob Winslow
2012-03-13  9:36                           ` Marek Ochaba
2012-03-13 12:30                             ` Bob W
2012-03-13 15:22                           ` Konstantin Dimitrov
2012-03-13 15:47                             ` Bob W
2012-03-15  9:40                               ` Christian Prähauser
2012-03-19  8:46                                 ` Christian Prähauser
2012-03-19 15:19                                   ` Konstantin Dimitrov
2012-04-24 22:18                                     ` Bob W

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.