Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Patch: fidbirq() with recovery after lost intr



>  > This corresponds to your current code where during field0 you read up to
>  > the end and start from the beginning in the same interrupt, but for field1 
>  > you always stop at the end of the buffer, and resume from start only in
>  > next interrupt.
> 
> No, sorry, but the thing with the 3 buffers is absolutely wrong.
> The total buffer space is allocated in the driver and only is big
> enough for 2 fields.

That's of course correct. The question, however is, when the "other" buffer
is filled with new data from the card - in other words, if the card is
able to hold data in size of half-buffer and transfers it to memory only
after the interrupt is finished, you have two half-buffers of data in
memory and the third "hidden" (not yet DMA transferred) on the card.

Anyway, I've did a test, if you can during field1 start over from beginning
of buffer when you come to the end and DMA points just a little above the
beginning. This returns garbage, meaning that during field1 you have
old (not new) data at the start of buffer, althouh DMA points there. 

> With which tools do you check the data integrity?

Running videolan server on the linux box and videolan client on another
machine. Both complain loudly when seeing something wrong, the server
prints out:

libdvbpsi error (PSI decoder): TS discontinuity (received 11, expected 3)
libdvbpsi error (PSI decoder): TS discontinuity (received 12, expected 11) 

And the client yells as well:

input packet lost be TS demux: current 2, packet 0

or

input duplicate packet received by TS demux.



	M.



-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index