2012-08-23 219 views
0

我相信我缺少一些基本的東西相關的ActionScript 3,但使用它實現與爲ByteArray FIFO的從FIFO讀而FIFO仍然被寫入

的背景我沒有太多的經驗我的問題:

聲音記錄形成麥克風需要經由基於丙http協議(使用安全套接)到後端被髮送。要做到這一點,聲音字節被「陷害」(即某些幀字節記錄的字節之前注入)每20ms(或80個字節,而在使用的編解碼器),並通過開放式套接字連接推出。

因此,我認爲最好的辦法來獲取打算是存儲記錄datasamples到ByteArray B中仍然被寫入時,每80個字節我會

  • 的B讀取最後記錄80個字節
  • 前面加上成幀字節
  • 推所得的bytearray從插座

現在,如果我從字節組b中的操作中讀取復位b的指針ytearrya並在新voicebyte進來,必將改寫指針後的字節?

我怎樣才能避免這樣的事情發生?

感謝您的指點。

回答

0

注意的文檔狀態可以重置ByteArray的指針(position):

移動或返回的當前位置,以字節爲單位,將文件指針的到ByteArray對象。這是下一次對讀取方法的調用開始讀取或寫入方法開始寫入的時刻。

因此,您可以在執行讀取操作並以這種方式管理FIFO之前重置position

但我想用一個字節數組作爲FIFO可能會出現問題:

  • 您想刪除您剛剛從FIFO讀取的字節數,我看不出有任何的API來做到這一點,其他比clear()它清除整個陣列。
  • 有可能從話筒的SampleDataEvents會在如此頻繁,這會導致效率降低或問題

可能更容易只保留做出的FIFO(一個數組)你獲得單獨的ByteArray的的每個SampleDataEvent。

+0

謝謝您的回答。不錯的IDE將數據打包到數組中。我會考慮是否可以使用這種方法。 – mic