乒乓操作
1)乒乓操作的問題就是為了解決數(shù)據(jù)讀寫速度不一致的問題,即寫慢讀快或者寫快讀慢的問題。即輸入的數(shù)據(jù)速度很快,輸出的數(shù)據(jù)速度很慢,為了保證數(shù)據(jù)的穩(wěn)定性使用乒乓操作就可以解決這種問題。
2)乒乓操作主要是應(yīng)用于兩種情況:第一種就是寫入和讀出數(shù)據(jù)都是連續(xù)的傳輸?shù)那闆r,比如視頻數(shù)據(jù)輸入和輸出,另外一種情況就是只有一端是連續(xù)數(shù)據(jù)的情況,另一端的數(shù)據(jù)是非連續(xù)的,比如數(shù)據(jù)的緩存和采集。
(1)視頻數(shù)據(jù)緩存的乒乓操作
1)視頻數(shù)據(jù)采集的乒乓操作,讀寫的通道數(shù)據(jù)都是連續(xù)的
2)為了保證視頻數(shù)據(jù)的連續(xù)性,會存在重復(fù)讀取數(shù)據(jù)或者重復(fù)寫入數(shù)據(jù)的情況
3)速度快的遷就速度慢的,即快的一方,重復(fù)操作。
4)為了保證乒乓操作就必須在慢的一方設(shè)置一個標(biāo)志位,需要只有標(biāo)志位改變才可以進入下一個區(qū)域。
寫慢讀快-----重新讀
只有寫指針改變區(qū)域之后,標(biāo)志才會改變。
即flag=1的時候重新讀,flag等于0的時候,正常讀取。

1)下面的區(qū)域為1,上面的區(qū)域為2,當(dāng)寫指針在區(qū)域1的時候flag設(shè)置為0,在二區(qū)域上設(shè)置1
2)當(dāng)讀指針到a1_addr的時候,判斷此時的flag是否為0,為1則繼續(xù)加,否則跳轉(zhuǎn)到a0_addr
3)當(dāng)讀指針到a2_addr的時候,判斷此時的flag是否為1,為0則繼續(xù)加,否則跳轉(zhuǎn)到a1_addr
4)即重復(fù)讀取數(shù)據(jù)

寫慢讀快-----重新寫

寫快讀慢就以讀取為標(biāo)準(zhǔn)。
(2)基于數(shù)據(jù)采集的乒乓操作
1)基于數(shù)據(jù)采集的乒乓操作唯一的區(qū)別是不可以重復(fù)讀取和寫入
2)即速度快的一方先到了節(jié)點之后,需要等待速度慢的一方
3)例如在寫慢讀快的時候,區(qū)域1寫完了,區(qū)域2開始寫的時候,區(qū)域1開始讀取,等到區(qū)域1讀取完畢之后,這個時候區(qū)域2還在寫,flag=1,所以這個時候不能讀取了,必須等待區(qū)域2數(shù)據(jù)寫完才可以操作,即很適合ADC采集,然后用以太網(wǎng)傳輸?shù)哪P汀?/p>
(3)乒乓操作的優(yōu)缺點
優(yōu)點
1)可以將輸入輸出數(shù)據(jù)不同步的視頻數(shù)據(jù)流連續(xù)的顯示出來
2)可以使用低速的顯示設(shè)備顯示高速的攝像頭數(shù)據(jù)(存在漏幀)
3)可以使用高速的顯示設(shè)別顯示低俗的攝像頭數(shù)據(jù)(存在補幀)
缺點
1)需要雙倍的存儲空間,對內(nèi)存需求更大
2)對于連續(xù)的采集數(shù)據(jù),如果在傳輸中出現(xiàn)漏幀或者補幀是直接會導(dǎo)致數(shù)據(jù)出問題的