Ethernet-röst Streaming (8 / 9 steg)
Steg 8: Felsökning
Dubbel buffert
Jag använde dubbel buffert för att lösa realtid operationen problem,
Som ni kan se bilden,
En buffert är datainsamling medan andra bufferten bearbetning.
Data storleksändring
Två enhetens klockhastighet är olika och kommunikationshastighet är olika varje gång.
Så få enheten måste behöva ändra storlek på data räkningen.
Ex) bild förklara ärendet
Anta att TX enhet skickar 1024 byte i varje 100usec.
RX enheten kan spela bara 1000 byte innan nya data anländer.
Eller RX enhet spela alla mottagna data (2014 byte) och förbli tid innan nya data anländer.
Att lösa detta problem,
När RX enhet klocka är snabbare än TX enhet, måste RX enhet måste lägga till senaste data.
om (jag == MAX_BUF_SIZE) jag = MAX_BUF_SIZE - 1;
När RX enhet klocka är långsammare än TX enhet, RX enhet måste måste bli kvar data.
om (buf_sel) buf_sel = 0; annat buf_sel = 1;
Jag = 0; buffert index ändra till 0 som kraft.
Sedan spelade ljud är skiljer sig från originalljudet.
Men är det ok att lyssna.
För detta fall är lägre buffertstorleken bättre.