After reading more technial background - especially the DVB-S2 standard - things are much clearer to me. I might still be wrong but I understand, that USB driver filtered for MATTYPE to be equal to MPEG TS streams only by synchronizing on 0x47 sync byte. This would discard all GSE types. So they just removed the filtering of the stream type in the driver. My reference to raw block data was wrong. I have not further investigated, why the usb driver itself syncs on the MPEG TS stream. I would have suspected a video player to do so.That is a poor approach: If the card with the modified driver really outputs the raw bbframe data (possible, but probably only on usb cards and even then only if the driver uses that as the default format), then most 0x47 bytes will simply not be there, except for a single one at the start of the bbframe (in the bbframe header) and some spurious 0x47 data bytes. So such an approach would be very error prone even on perfect streams
Your other explanations make perfectly sense to me now. Let me summarize for the other readers:
The DVB-S2 standard defines the following stream types (MATYPE):
* Single or multiple Transport Streams (TS)
* Generic Packetized
* Generic continuous
That means base band frames are the lowest format that the standard defines. Everything before is physical layer demodulation and forward error correction. Each BBFrame contains one of the three MATYPEs. That means - as you correctly pointed out - requesting stid135 to embed BBFrames into a private TS is enough and complete.
Using neumodvb, data streams are also perfectly identified as GSE or Non-TS.
As a last step, I need to investigate, what container format, 'don't look up' expects. It "works already" by letting the python script parse the recording of neumodmx since data is only containerized - so an embedded TCP frame would be correctly parsed if not packetized into several frames.
Last edited: