Rick,
for most SDRs (including the SDRplay RSPs) it is just a 41 byte header followed by the I/Q stream (or streams if you are running a RSPduo in dual tuner mode) as pairs of I/Q values represented as 16 bit shorts.
The 41 byte header is made of the following fields (in C-like notation):
- int remember_proprietary_chunk; (always REMEMBER_UNKNOWN=-1)
- double timestamp; (seconds since 1/1/1970 00:00:00 UTC)
- double passband_center; (in MHz)
- int passband_direction;
- int rx_input_mode;
- int rx_rf_channels; (single tuner mode -> 1 dual tuner mode -> 2)
- int int rx_ad_channels; (single tuner mode -> 2 (I, Q) dual tuner mode -> 4 (I1, Q1, I2, Q2))
- int rx_ad_speed; (sample rate in samples/s)
- unsigned char save_init_flag;
To give you a better idea, I am attaching a very simple C program I wrote to read a Linrad file in raw format for the dual tuner case and create a couple of I/Q files that can then be read in a GNU Radio source or any similar application that accepts raw I/Q streams of 16 bit shorts. Just be aware that the program does very little/no error checking, but it does work for me here.
Franco