I think the odd/even buffer are used to overcome a sensitive timing issue -
keep in mind that there is no such thing as a "vertical blanking" in a DVB
data stream. The only "breathing time" between two MPEG-2 transport packets
are those 16 bytes Reed-Solomon redundancy. Now consider a DVB-Satellite
stream blasting at you with 40Mbps, and realize that you have no more than
_3 microseconds_ to reprogram the DMA pointers, or packets will either be
overwritten or lost.
From what I can tell we already configure the "limit3" parameter which
should cause the saa7146 to send us an interrupt for every 16kB of data
DMA'd. Here is the text from the datasheet: