I finally figured it out: there really are two ISI's in the stream, but it may be that some are the results of bit errors, e.g., flipping the 1 to 0.
Or perhaps it is on purpose.
I can also see that the card reports 'BCH erorrs', even at an SNR of 15 dB
Code:
/stidmap.py |grep '0\.0:' |grep '(5)' |grep BBFCRCKO
addr=0x2f34 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO1(5) = 0x00000000
addr=0x2f35 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO0(5) = 0x00000000
$./stidmap.py |grep '0\.0:' |grep '(5)' |grep BBFCRCKO
addr=0x2f34 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO1(5) = 0x00000015
addr=0x2f35 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO0(5) = 0x00000074
$./stidmap.py |grep '0\.0:' |grep '(5)' |grep BBFCRCKO
addr=0x2f34 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO1(5) = 0x00000023
addr=0x2f35 0.0: REG_RC8CODEW_DVBSX_PKTDELIN_BBFCRCKO0(5) = 0x00000070
So the error counters keep going up, suggesting indeed that not all frames are decoded correctly
Apparently skyscraper does not check the ISI field and indeed if I stop checking it, the data from ISI=0 and ISI=1 are mixed
and I get a lot more video data. The stream is still almost unwatchable, just as the stream decoded wih sjyscraper and captured on windows.
Interestingly: decoding only ISI=0 produces nothing at all.
If people with bigger dishes can capture a stream with much better SNR (e.g. 18dB or more), then that would help my analysis.
However the current conclusion is that insufficient signal is the root cause. It is possible to ask the drivers to not output frames with errors, but that would not help to receive the signal.