專利名稱:一種分幀媒體數(shù)據(jù)傳輸方法、系統(tǒng)及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),尤其涉及一種分幀媒體數(shù)據(jù)傳輸?shù)姆椒?、系統(tǒng) 及裝置。
背景技術(shù):
目前有不少關(guān)于提高媒體數(shù)據(jù)傳輸業(yè)務(wù)質(zhì)量的方法,例如對(duì)網(wǎng)絡(luò)中的丟幀
提出的解決方法為在不考慮網(wǎng)絡(luò)延時(shí)的情況下,根據(jù)連續(xù)收到的兩幀之間的 序號(hào)差值來判斷需要補(bǔ)償?shù)膸瑪?shù);對(duì)數(shù)據(jù)幀亂序提出的解決方法為設(shè)定一個(gè) 延時(shí)時(shí)間,在延時(shí)時(shí)間內(nèi)將收到的幀進(jìn)行排隊(duì),將超出該延時(shí)時(shí)間的幀丟棄。 但是這兩種方法沒有綜合考慮,只分別適合于僅存在丟幀或僅存在亂序的特定 情況中,并且也沒有提出出現(xiàn)靜音時(shí)的解決方法。而在實(shí)際網(wǎng)絡(luò)中,這些因素 是綜合存在的。如果將這些技術(shù)疊加來解決實(shí)際問題,由于這些技術(shù)都有比較 大的延時(shí),這樣就會(huì)導(dǎo)致數(shù)據(jù)傳輸延時(shí)過大,數(shù)據(jù)傳輸質(zhì)量下降,且用戶主觀 感受較差。
發(fā)明內(nèi)容
本發(fā)明提供一種分幀々某體數(shù)據(jù)傳輸方法、系統(tǒng)及裝置,以解決現(xiàn)有技術(shù)中 存在的沒有綜合考慮丟幀和亂序的問題。
本發(fā)明提供一種分幀媒體數(shù)據(jù)傳輸方法,該方法包括
A. 發(fā)送側(cè)對(duì)當(dāng)前幀進(jìn)行排序,將數(shù)據(jù)緩沖區(qū)分為一個(gè)以上的數(shù)據(jù)讀寫區(qū), 并將當(dāng)前幀按照確定的順序?qū)懭霐?shù)據(jù)緩沖區(qū)中的對(duì)應(yīng)位置;
B. 發(fā)送側(cè)按序讀取數(shù)據(jù)緩沖區(qū),并將讀取的幀向接收側(cè)發(fā)送,當(dāng)判斷數(shù) 據(jù)緩沖區(qū)中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫區(qū)間隔為預(yù)先設(shè)定
的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀時(shí),向該數(shù)據(jù)讀 寫區(qū)中寫入補(bǔ)償幀。
所述每一數(shù)據(jù)讀寫區(qū)對(duì)應(yīng)一狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)為空表示對(duì)應(yīng)的數(shù)據(jù) 讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀,所述狀態(tài)標(biāo)識(shí)為非空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)已存儲(chǔ)
未發(fā)送幀;
在讀取數(shù)據(jù)讀寫區(qū)中的幀之前包括步驟查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng) 狀態(tài)標(biāo)識(shí)為非空,則讀取該數(shù)據(jù)讀寫區(qū)中的幀;
在向數(shù)據(jù)讀寫區(qū)中寫入幀之前包括步驟查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng) 狀態(tài)標(biāo)識(shí)為空,則向該數(shù)據(jù)讀寫區(qū)中寫入幀。
在讀取數(shù)據(jù)讀寫區(qū)中的幀之后包括步驟將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為
々
i,
在向數(shù)據(jù)讀寫區(qū)中寫入幀之后包括步驟將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為 非空。
步驟B中所述發(fā)送側(cè)按序讀取數(shù)據(jù)緩沖區(qū),并將讀取的幀向接收側(cè)發(fā)送, 是按照預(yù)先設(shè)定的時(shí)間間隔讀取和發(fā)送的。 在所述步驟A之前包括步驟
A0、判定所述當(dāng)前幀是否超過預(yù)先設(shè)定的最大延時(shí),若超過,則將該幀丟 棄并結(jié)束,若未超過,則再對(duì)該幀進(jìn)行排序。 步驟A包括
All、根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差; A12、根據(jù)序號(hào)差確定當(dāng)前幀要寫入的數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)讀寫區(qū); A13、當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,再將該數(shù)據(jù)讀寫 區(qū)狀態(tài)標(biāo)識(shí)置為非空。
所述步驟A中是根據(jù)當(dāng)前幀的時(shí)戳和序號(hào)對(duì)當(dāng)前幀進(jìn)行排序。 步驟A包括
A21、根據(jù)當(dāng)前幀與上一收到幀的時(shí)戳確定兩幀之間的靜音幀個(gè)數(shù),并根
據(jù)已補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù);
A22、根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差;
A23、根據(jù)序號(hào)差和所述還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定當(dāng)前幀要寫入的數(shù)
據(jù)讀寫區(qū);
A24、當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,并將該數(shù)據(jù)讀寫 區(qū)狀態(tài)標(biāo)識(shí)置為非空。
步驟B中所述補(bǔ)償幀包括舒適噪聲幀或平滑幀,則所述寫入補(bǔ)償幀的步驟 包括
判斷上一收到幀的類型,若上一收到幀為靜寂幀,則寫入舒適噪聲幀,若 上一收到幀為々某體數(shù)據(jù)幀,則寫入平滑幀。
本發(fā)明提供一種分幀媒體數(shù)據(jù)傳輸系統(tǒng),所述系統(tǒng)包括
發(fā)送單元,用于對(duì)當(dāng)前幀進(jìn)行排序,并將當(dāng)前幀按照確定的順序?qū)懭刖彌_ 單元中的對(duì)應(yīng)位置,并按序讀取緩沖單元,并將讀取的幀向接收側(cè)發(fā)送;
補(bǔ)償幀發(fā)送單元,用于當(dāng)判斷緩沖單元中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的 待讀數(shù)據(jù)讀寫區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒 有存儲(chǔ)未發(fā)送幀時(shí),向該數(shù)據(jù)讀寫區(qū)中寫入補(bǔ)償幀;
緩沖單元,包含一個(gè)以上的數(shù)據(jù)讀寫區(qū),用于按照發(fā)送單元確定的順序存 儲(chǔ)幀。
所述每一數(shù)據(jù)讀寫區(qū)對(duì)應(yīng) 一狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)為空表示對(duì)應(yīng)的數(shù)據(jù) 讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀,所述狀態(tài)標(biāo)識(shí)為非空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)已存儲(chǔ) 未發(fā)送幀;
所述發(fā)送單元,用于在讀取數(shù)據(jù)讀寫區(qū)中的幀之前,查詢?cè)摂?shù)據(jù)讀寫區(qū)狀
態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為非空則讀取該數(shù)據(jù)讀寫區(qū)中的幀;在向數(shù)據(jù)讀寫區(qū)中寫
入幀之前,查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為空則向該數(shù)據(jù)讀寫區(qū)中
寫入幀;在讀取數(shù)據(jù)讀寫區(qū)中的幀之后,將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為空; 在向數(shù)據(jù)讀寫區(qū)中寫入幀之后將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空。
所述發(fā)送單元包^":
排序單元,用于對(duì)當(dāng)前幀進(jìn)行排序,將該幀按照確定的存儲(chǔ)順序?qū)懭霐?shù)據(jù) 讀寫區(qū)中;
幀發(fā)送單元,用于按照預(yù)先設(shè)定的時(shí)間間隔向接收側(cè)發(fā)送已存儲(chǔ)在數(shù)據(jù)讀 寫區(qū)中的幀。
所述發(fā)送單元包括
存儲(chǔ)單元,用于存儲(chǔ)預(yù)先設(shè)定的最大延時(shí);
最大延時(shí)判定單元,用于判定當(dāng)前幀是否超過預(yù)先設(shè)定的最大延時(shí),若超 過,則將該幀丟棄,若未超過,則將該幀發(fā)送到排序單元。 所述排序單元包括
時(shí)戳判定單元,用于根據(jù)當(dāng)前幀與上一收到幀的時(shí)戳確定兩幀之間的靜音 幀個(gè)數(shù),并根據(jù)已補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù);
序號(hào)判定單元,用于+艮據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào) 差,并根據(jù)序號(hào)差和所述還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定當(dāng)前幀要寫入的數(shù)據(jù)讀 寫區(qū),當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,并將該數(shù)據(jù)讀寫區(qū)狀 態(tài)標(biāo)識(shí)置為非空。
所述排序單元包括
序號(hào)單獨(dú)判定單元,用于根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的 序號(hào)差,并才艮據(jù)序號(hào)差確定當(dāng)前幀要寫入的緩沖單元中的數(shù)據(jù)讀寫區(qū),當(dāng)該數(shù) 據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,再將該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)置為非
六 么o
所述補(bǔ)償幀發(fā)送單元包括
幀判定單元,用于判定上一收到幀的類型;
幀發(fā)送單元,用于當(dāng)上一收到幀為靜寂幀時(shí),則寫入舒適噪聲幀,若上一 收到幀為^Mf數(shù)據(jù)幀時(shí),則寫入平滑幀。
本發(fā)明方法通過對(duì)當(dāng)前幀根據(jù)序號(hào)或根據(jù)序號(hào)和時(shí)戳來進(jìn)行排序,確定該
幀在數(shù)據(jù)緩沖區(qū)的存放順序,并且在必要時(shí)向該數(shù)據(jù)緩沖區(qū)中發(fā)送補(bǔ)償幀的方 法,提高了數(shù)據(jù)傳輸質(zhì)量,且傳輸延時(shí)較小,使得終端用戶得到更好的體驗(yàn)。
圖1為本發(fā)明分幀媒體數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖; 圖2為本發(fā)明實(shí)施例中緩沖單元13結(jié)構(gòu)示意圖; 圖3為本發(fā)明實(shí)施例中步驟流程示意圖; 圖4為本發(fā)明實(shí)施例中b=l時(shí)緩沖單元13結(jié)構(gòu)示意圖; 圖5為本發(fā)明實(shí)施例中b>l時(shí)緩沖單元13結(jié)構(gòu)示意圖; 圖6為本發(fā)明實(shí)施例中bO時(shí)緩沖單元13結(jié)構(gòu)示意圖; 圖7為本發(fā)明實(shí)施例中達(dá)到預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù)時(shí)緩沖單元13 結(jié)構(gòu)示意圖。
具體實(shí)施例方式
在數(shù)據(jù)傳輸過程中,為了保證較好的傳輸質(zhì)量,使用戶體驗(yàn)盡可能的好, 則從數(shù)據(jù)緩沖區(qū)向外發(fā)送幀是連續(xù)的。在網(wǎng)絡(luò)情況較好時(shí),數(shù)據(jù)緩沖區(qū)接收數(shù) 據(jù)和發(fā)送數(shù)據(jù)的時(shí)間是匹配的,但是在實(shí)際網(wǎng)絡(luò)傳輸中亂序、丟幀的情況,在 傳輸音頻幀時(shí)還可能出現(xiàn)靜音情況,這樣就會(huì)使得緩沖區(qū)接收、發(fā)送數(shù)據(jù)時(shí)間 不匹配,除憲法空或傳輸4普誤幀的情況。本發(fā)明通過對(duì)當(dāng)前幀進(jìn)行排序,將該 幀按照確定的存儲(chǔ)順序?qū)懭霐?shù)據(jù)緩沖區(qū)中,同時(shí)發(fā)送側(cè)讀出數(shù)據(jù)緩沖區(qū)的幀, 向接收側(cè)發(fā)送,當(dāng)數(shù)據(jù)緩沖區(qū)中當(dāng)前被讀區(qū)域與其后的待讀區(qū)域間隔為預(yù)先設(shè) 定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀區(qū)域未存儲(chǔ)還未發(fā)送的幀時(shí),向該待讀區(qū)域 寫入補(bǔ)償幀。通過本發(fā)明方法,同時(shí)解決了網(wǎng)絡(luò)中丟幀和亂序的問題,使得數(shù) 據(jù)傳輸質(zhì)量得以提高,用戶體驗(yàn)更好。
下面結(jié)合說明書附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1所示,本發(fā)明的分幀媒體數(shù)據(jù)傳輸系統(tǒng)應(yīng)用于終端側(cè)或網(wǎng)絡(luò)側(cè),該
系統(tǒng)包括發(fā)送單元ll、補(bǔ)償幀發(fā)送單元12和緩沖單元13。其中,發(fā)送單元 11用于對(duì)當(dāng)前幀進(jìn)行排序,并將當(dāng)前幀按照確定的順序?qū)懭刖彌_單元13中的 對(duì)應(yīng)位置,并按序讀取緩沖單元13,并將讀取的幀向接收側(cè)發(fā)送;補(bǔ)償幀發(fā)送 單元12用于當(dāng)緩沖單元13中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫區(qū) 間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀 時(shí),向該數(shù)據(jù)讀寫區(qū)中寫入補(bǔ)償幀;緩沖單元13包含一個(gè)以上的數(shù)據(jù)讀寫區(qū), 用于按照發(fā)送單元11確定的順序存儲(chǔ)幀。
每一數(shù)據(jù)讀寫區(qū)對(duì)應(yīng)一狀態(tài)狀態(tài)標(biāo)識(shí),所述狀態(tài)狀態(tài)標(biāo)識(shí)為空表示對(duì)應(yīng)的 數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀,所述狀態(tài)狀態(tài)標(biāo)識(shí)為非空表示對(duì)應(yīng)的數(shù)據(jù)讀寫 區(qū)已存儲(chǔ)未發(fā)送幀。發(fā)送單元11在讀取數(shù)據(jù)讀寫區(qū)中的幀之前,查詢?cè)摂?shù)據(jù) 讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為非空則讀取該數(shù)據(jù)讀寫區(qū)中的幀;在向數(shù)據(jù)讀 寫區(qū)中寫入幀之前,查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為空則向該數(shù)據(jù) 讀寫區(qū)中寫入幀;在讀取數(shù)據(jù)讀寫區(qū)中的幀之后,將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí) 置為空;在向數(shù)據(jù)讀寫區(qū)中寫入幀之后將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空。
所述發(fā)送單元11包括排序單元21和幀發(fā)送單元22。其中,排序單元21 用于對(duì)當(dāng)前幀進(jìn)行排序,將該幀按照確定的存儲(chǔ)順序?qū)懭霐?shù)據(jù)讀寫區(qū)中;幀發(fā)的幀。
所述發(fā)送單元11包括存儲(chǔ)單元23和最大延時(shí)判定單元24。其中,存儲(chǔ)單 元23用于存儲(chǔ)預(yù)先設(shè)定的最大延時(shí);最大延時(shí)判定單元24用于判定當(dāng)前幀是 否超過預(yù)先設(shè)定的最大延時(shí),若超過,則將該幀丟棄,若未超過,則將該幀發(fā) 送到排序單元。
所述排序單元21包括時(shí)戳判定單元31和序號(hào)判定單元32。其中,時(shí)戳判 定單元31用于根據(jù)當(dāng)前幀與上一收到幀的時(shí)戳確定兩幀之間的靜音幀個(gè)數(shù), 并根據(jù)已補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù);序號(hào)判定單元32
用于才艮據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差,并根據(jù)序號(hào)差和
所述還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定當(dāng)前幀要寫入的數(shù)據(jù)讀寫區(qū),當(dāng)該數(shù)據(jù)讀寫 區(qū)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,并將該數(shù)據(jù)讀寫區(qū)標(biāo)識(shí)置為非空。
在本系統(tǒng)中,可以根據(jù)時(shí)戳和序號(hào)來對(duì)當(dāng)前幀進(jìn)行排序,但當(dāng)沒有靜音幀 出現(xiàn)時(shí)也可以只根據(jù)序號(hào)來對(duì)當(dāng)前幀進(jìn)行排序。
所述排序單元21包括序號(hào)單獨(dú)判定單元33,用于根據(jù)當(dāng)前幀與上一收到 幀的序號(hào)確定兩幀之間的序號(hào)差,并根據(jù)序號(hào)差確定當(dāng)前幀要寫入的緩沖單元 中的數(shù)據(jù)讀寫區(qū),當(dāng)該數(shù)據(jù)讀寫區(qū)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,再將該數(shù)據(jù)讀 寫區(qū)標(biāo)識(shí)置為非空。
所述補(bǔ)償幀發(fā)送單元12包括幀判定單元41和幀發(fā)送單元42。其中,幀判 定單元41用于判定上一收到幀的類型;幀發(fā)送單元42用于當(dāng)上一收到幀為靜 寂幀時(shí),則寫入舒適噪聲幀,若上一收到幀為4某體數(shù)據(jù)幀時(shí),則寫入平滑幀。
如圖2所示,為本發(fā)明實(shí)施例的緩沖單元13的結(jié)構(gòu)示意圖。在本實(shí)施例 中,設(shè)定該數(shù)據(jù)傳輸裝置位于網(wǎng)絡(luò)側(cè),接收第一終端側(cè)發(fā)送的數(shù)據(jù),并向第二 終端側(cè)發(fā)送數(shù)據(jù)。并同時(shí)設(shè)定緩沖單元13為環(huán)形,包含12個(gè)數(shù)據(jù)讀寫區(qū),每 一個(gè)數(shù)據(jù)讀寫區(qū)與狀態(tài)標(biāo)識(shí)——對(duì)應(yīng),狀態(tài)標(biāo)識(shí)包括空和非空,存儲(chǔ)未發(fā)送過 的幀的數(shù)據(jù)讀寫區(qū)設(shè)定狀態(tài)標(biāo)識(shí)為非空,沒有存儲(chǔ)未發(fā)送過的幀的數(shù)據(jù)讀寫區(qū) 設(shè)定狀態(tài)標(biāo)識(shí)為空。寫指針指向的數(shù)據(jù)讀寫區(qū)為非空,讀指針指過以后標(biāo)記為 空。為了便于判定在數(shù)據(jù)讀寫區(qū)中存放幀的位置,可以在該緩沖單元13中設(shè) 定讀指針(R)、寫指針(W)和輔助寫指針(AW)。讀指針指向存放即將被發(fā) 送幀的數(shù)據(jù)讀寫區(qū),寫指針指向存;^文當(dāng)前幀的數(shù)據(jù)讀寫區(qū),輔助寫指針指向離 讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)。
為了保證較好的數(shù)據(jù)傳輸質(zhì)量,則從數(shù)據(jù)讀寫區(qū)發(fā)送的幀必須是連續(xù)的,
時(shí)間間隔固定的,因此該讀指針是連續(xù)均勻地移動(dòng)。但是寫指針是在有數(shù)據(jù)進(jìn) 入該數(shù)據(jù)讀寫區(qū)時(shí)才移動(dòng),并由于可能出現(xiàn)幀的不連續(xù)跳變,因此寫指針是不 連續(xù)不均勻地移動(dòng)的。由于可能有亂序情況存在,寫指針躍過的數(shù)據(jù)讀寫區(qū)可 能為空,所以在每個(gè)數(shù)據(jù)讀寫區(qū)設(shè)定狀態(tài)標(biāo)識(shí)。初始時(shí),輔助寫指針和寫指針
重合,它們與讀指針之間的數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為非空。讀走幀的時(shí)候要先判 斷該數(shù)據(jù)讀寫區(qū)是否為非空,若是才將幀讀走,并將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)
置為空;寫入指針時(shí)也要判斷該數(shù)據(jù)讀寫區(qū)是否為空,若是才將幀寫入,并將 該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空。
由于可能有丟幀和有靜音幀的情況存在,會(huì)出現(xiàn)一段時(shí)間內(nèi)沒有幀寫入, 或?qū)懭氲膸ㄟ^判斷不應(yīng)該存放在輔助寫指針指向的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀 寫區(qū)的狀況,此時(shí)輔助寫指針將不會(huì)移動(dòng),但讀指針仍然會(huì)均勻移動(dòng),就可能 會(huì)出現(xiàn)讀指針超過輔助寫指針的情況。此時(shí)發(fā)送的幀就可能是以前存儲(chǔ)的且已 發(fā)送過的幀,這些幀都不是正確的幀,對(duì)于終端用戶而言會(huì)造成音頻噪音或視 頻錯(cuò)誤的情況。
因此在沒有數(shù)據(jù)寫入時(shí)判斷出當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù) 讀寫區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未 發(fā)送幀,準(zhǔn)確進(jìn)行提前補(bǔ)償,向數(shù)據(jù)讀寫區(qū)發(fā)送補(bǔ)償幀,使得在沒有正確的幀 寫入時(shí),讓終端用戶的視頻或音頻體驗(yàn)盡可能的好。所述補(bǔ)償幀可以包括舒適 噪聲幀和平滑幀。
如圖3所示,為本發(fā)明實(shí)施例的步驟流程示意圖。本實(shí)施例中設(shè)定傳輸?shù)?幀為音頻幀,因此可能會(huì)出現(xiàn)靜音幀,且每次從數(shù)據(jù)讀寫區(qū)發(fā)送幀的時(shí)間間隔 為10ms。
步驟301:判斷收到的幀延時(shí)是否在系統(tǒng)容忍的范圍內(nèi)。 在初始化時(shí),將讀寫指針保持一定的間距,這個(gè)間距可以是該網(wǎng)絡(luò)中所能 容忍的最大延時(shí)的時(shí)間轉(zhuǎn)換為的空間間距,也可以是其它事先設(shè)定最大延時(shí)。 設(shè)定本實(shí)施例中的網(wǎng)絡(luò)中所能容忍的延時(shí)為G=30ms,由于從數(shù)據(jù)讀寫區(qū)發(fā)送 數(shù)據(jù)的時(shí)間間隔為10ms,因此設(shè)定初始化時(shí)讀寫指針之間的間距為3個(gè)數(shù)據(jù) 讀寫區(qū),且這三個(gè)數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)都為非空。
當(dāng)有音頻幀要進(jìn)入緩沖單元13時(shí),首先判斷該幀的延時(shí)是否在系統(tǒng)容忍 范圍內(nèi)。判斷方法包括以下步驟Al、確定該收到的幀與上一收到的幀之間的時(shí)間間隔中發(fā)送了多少幀c,
也就是收到這兩幀之間經(jīng)歷多少整數(shù)時(shí)間。由于發(fā)送幀是均勻連續(xù)的,因此發(fā)
送幀的過程可以近似看作 一個(gè)時(shí)鐘運(yùn)動(dòng)。
例如,該收到的幀與上一收到幀之間的時(shí)間間隔中發(fā)送了 3幀,說明該收 到的幀在網(wǎng)絡(luò)中延時(shí)10ms,此時(shí)c-3。
A2、確定連續(xù)收到兩幀的時(shí)戳差與抽樣之比a。在本實(shí)施例中設(shè)定在該網(wǎng) 絡(luò)中抽樣的數(shù)據(jù)為8000個(gè)抽樣/秒,則由于在同一網(wǎng)絡(luò)中終端側(cè)和網(wǎng)絡(luò)側(cè)的發(fā) 送數(shù)據(jù)時(shí)間間隔都為10ms,因此進(jìn)入該數(shù)據(jù)傳輸系統(tǒng)時(shí)每一幀中有80個(gè)抽樣。 收到的每一幀都含有一個(gè)時(shí)戳,若第一幀的時(shí)戳為80,則連續(xù)的第二幀為160。 但是在發(fā)送音頻幀的時(shí)候可能會(huì)出現(xiàn)靜音幀的情況,當(dāng)出現(xiàn)一個(gè)靜音幀時(shí),靜 音幀雖然也已經(jīng)加了 80但卻沒有發(fā)送,而后發(fā)送的幀的時(shí)戳為240,此時(shí)a-(240-80)/80=2,說明含有一個(gè)靜音幀。
此時(shí),若連續(xù)收到的兩音頻幀之間沒有靜音幀,或收到的幀不是音頻幀, 則a將一直為1。該要進(jìn)入緩沖單元13的幀相對(duì)延時(shí)為(c-a) *10ms。
A3、確定上一收到幀的絕對(duì)延時(shí)。設(shè)定初始狀態(tài)的第一幀的絕對(duì)延時(shí)為0, 則通過步驟A1和A2后,第二幀的絕對(duì)延時(shí)0+ (c-a) *10ms,以此類推,可 以得到在本實(shí)施例中上一收到幀的絕對(duì)延時(shí)為d。
A4、將該要進(jìn)入緩沖單元13的幀的絕對(duì)延時(shí)d+ (c-a) *10ms與G進(jìn)行 比較。當(dāng)a-O時(shí),說明該幀為重復(fù)幀,則將該幀丟棄,不做后續(xù)處理;當(dāng)該數(shù) 據(jù)幀的絕對(duì)延時(shí)大于G時(shí),說明該幀已經(jīng)超過系統(tǒng)所能容忍的延時(shí),則將該幀 丟棄,不〗故后續(xù)處理。當(dāng)該數(shù)據(jù)幀的絕對(duì)延時(shí)小于G時(shí),記錄下該幀的時(shí)戳和 序號(hào),準(zhǔn)備將該幀放入緩沖單元13的數(shù)據(jù)讀寫區(qū)中,存放的位置在下一步獲 得。此時(shí),再更新<1=(1+ (c-a)留待下次使用。
步驟302:確定收到的幀在緩沖單元13中的數(shù)據(jù)讀寫區(qū)的存放位置。
通過上述A4步驟后,只有該數(shù)據(jù)幀的絕對(duì)延時(shí)小于G時(shí)才執(zhí)行本步驟, 通過判斷該幀是否是在出現(xiàn)了亂序、丟幀或靜音的情況收到的,來確定該收到 的幀在數(shù)據(jù)讀寫區(qū)的存^:位置,該確定方式包括以下步驟
Bl、判斷連續(xù)收到的兩幀之間的序號(hào)差b。從步驟A4可以看出,每一個(gè) 收到的幀都記錄下了該幀的序號(hào),因此可以容易得到該收到的幀與上一收到幀 的序號(hào)差。
B2、對(duì)不同的b值分別進(jìn)行處理。
當(dāng)b-O時(shí),說明該幀與上一收到幀重復(fù),則將該幀丟棄,不做后續(xù)處理。
當(dāng)b-l時(shí),說明該幀和上一收到幀為連續(xù)的幀。此時(shí)要通過時(shí)戳判斷該收 到的幀與上一收到幀之間是否有未發(fā)送的靜音幀。如上述步驟A2得到的數(shù)據(jù) a-l即為兩幀之間靜音幀的個(gè)數(shù),設(shè)e為已經(jīng)補(bǔ)償?shù)撵o音幀個(gè)數(shù),此時(shí)由于是 連續(xù)的幀,因此在補(bǔ)償以前e-O,則向狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)連續(xù)補(bǔ)償a-l 個(gè)靜音幀,存儲(chǔ)的位置為在收到的上一收到幀后的連續(xù)的數(shù)據(jù)讀寫區(qū),并將這 些寫入靜音幀的數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空。當(dāng)補(bǔ)償完畢后將該收到的幀 存放在存儲(chǔ)靜音幀之后的連續(xù)的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū),并將該數(shù)據(jù)讀寫 區(qū)的狀態(tài)標(biāo)識(shí)置為非空。此時(shí)寫指針指向該收到的幀,輔助寫指針仍然指向離 讀指針最近的未存入還未發(fā)送幀的數(shù)據(jù)讀寫區(qū)。
例如,如圖4所示,若上一收到幀的序號(hào)為4,該收到的幀的序號(hào)為5, 但通過步驟A2得到a-l=l,說明這兩幀之間有1個(gè)靜音幀,則向存放序號(hào)4 的幀的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)后連續(xù)存入一個(gè)靜音幀,再將該收到的幀存 入靜音幀之后的連續(xù)的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū),再將這兩個(gè)數(shù)據(jù)讀寫區(qū)的 狀態(tài)標(biāo)識(shí)置為非空。同時(shí)寫指針指向該收到的幀所在的數(shù)據(jù)讀寫區(qū)。
若兩幀之間沒有靜音幀,則將該收到的幀直接存放在上一收到幀之后的狀 態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)中,且寫指針指向該收到的幀,輔助寫指針仍然指向 離讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)。
當(dāng)bM時(shí),說明該幀與上一收到幀是不連續(xù)的幀,可能是出現(xiàn)的亂序或前 面出現(xiàn)了丟幀的情況。此時(shí),同樣要通過時(shí)戳判斷該收到的幀與上一收到幀之 間是否有未發(fā)送的靜音幀。當(dāng)a-l- (b-l) >0時(shí),則向狀態(tài)標(biāo)識(shí)為非空的數(shù)據(jù)
讀寫區(qū)連續(xù)補(bǔ)償a-l- (b-l )個(gè)靜音幀,存儲(chǔ)的位置為在收到的上一收到幀后的 連續(xù)的數(shù)據(jù)讀寫區(qū)。此時(shí)e--(b-l),當(dāng)后續(xù)有序號(hào)介于這兩幀之間的幀到達(dá) 時(shí),判斷靜音幀時(shí)就要考慮該e值。當(dāng)補(bǔ)償完畢后再將該收到的幀存儲(chǔ),存儲(chǔ) 的位置為補(bǔ)償靜音幀之后的第b個(gè)狀態(tài)標(biāo)識(shí)為非空的數(shù)據(jù)讀寫區(qū)。此時(shí)寫指針 指向該收到的幀,輔助寫指針仍然指向離讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀 寫區(qū)。但是,若此時(shí)寫指針越過了讀指針,說明丟幀太多或亂序情況很嚴(yán)重, 則將該幀丟棄,將讀寫指針復(fù)位到初始化值,不作后續(xù)處理。判斷是否丟幀太 多或亂序情況很嚴(yán)重可以有其他方法,例如,可以通過"&定b的最大值來確定。
同樣如圖5所示,設(shè)定上一收到幀的序號(hào)為3,該收到的幀的序號(hào)為5, 此時(shí)b-2。若判斷出a-l- (b-l ) =2,即連續(xù)收到的兩幀之間有2個(gè)靜音幀,則 在存放序號(hào)為3的幀的數(shù)據(jù)讀寫區(qū)后連續(xù)存放兩個(gè)靜音幀,再將該收到的幀存 放在靜音幀后第二個(gè)狀態(tài)標(biāo)識(shí)為非空的數(shù)據(jù)讀寫區(qū)中。
若兩幀之間沒有靜音幀,則將該收到的幀存放在上一收到幀之后的第二個(gè) 狀態(tài)標(biāo)識(shí)為非空的數(shù)據(jù)讀寫區(qū)中,寫指針指向該收到的幀,輔助寫指針仍然指 向離讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)。
當(dāng)bO時(shí),說明是前面亂序的幀現(xiàn)在才收到。此時(shí)同樣要判斷該收到的幀 與上一收到幀之間是否有未發(fā)送的且還未補(bǔ)償?shù)撵o音幀。當(dāng)a-e-l- (-b-l ) >0 時(shí),則在存放上一收到幀的數(shù)據(jù)讀寫區(qū)前連續(xù)補(bǔ)償a-e-l-(-b-l)個(gè)靜音幀,再 將該收到的幀存方文在所述靜音幀前第-b個(gè)狀態(tài)標(biāo)識(shí)為非空的讀據(jù)讀寫區(qū)中。若 此時(shí)已不需要補(bǔ)償靜音幀,則將該收到的幀存放在上一收到幀前第-b個(gè)狀態(tài)標(biāo) 識(shí)為非空的數(shù)據(jù)讀寫區(qū)中。此時(shí),寫指針指向該收到的幀,若該收到的幀被丟 棄則指向上一收到收到的幀,輔助寫指針仍然指向離讀指針最近的狀態(tài)標(biāo)識(shí)為 空的數(shù)據(jù)讀寫區(qū)。
例如,如圖6所示,設(shè)定連續(xù)收到三幀的序號(hào)分別為4、 6、 5,序號(hào)為5 的幀由于亂序而沒有按時(shí)收到,且序號(hào)4和6之間有一個(gè)靜音幀,此時(shí)收到的 序號(hào)為5的幀還沒有超過最大延時(shí)。由于前面收到的序號(hào)分別為4和6的幀時(shí) 已經(jīng)補(bǔ)償了它們之間的兩個(gè)靜音幀,因此收到該序號(hào)為5的幀時(shí)就不用再做靜
音幀補(bǔ)償,而是直接存放在序號(hào)6之前的第一個(gè)狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)中。 步驟303:當(dāng)數(shù)據(jù)緩沖區(qū)中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫
區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空
時(shí),向該區(qū)域?qū)懭胙a(bǔ)償幀。
前述設(shè)定了在初始時(shí)寫指針和輔助寫指針重合,它們與讀指針之間設(shè)定了
間距,將此間距轉(zhuǎn)換為時(shí)間即為系統(tǒng)所能容忍的最大延時(shí)。同時(shí)也可以設(shè)定讀
指針與輔助寫指針之間的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),當(dāng)讀指針與輔助寫指針之間達(dá)到
該數(shù)據(jù)讀寫區(qū)的個(gè)數(shù)時(shí)即進(jìn)行補(bǔ)償。在本實(shí)施例中設(shè)定該數(shù)據(jù)讀寫區(qū)的個(gè)數(shù)為 一個(gè)數(shù)據(jù)讀寫區(qū),轉(zhuǎn)換成時(shí)間即為10ms 。
當(dāng)讀指針與輔助寫指針之間只相差一個(gè)數(shù)據(jù)讀寫區(qū)即達(dá)到該間隔,且此時(shí)
沒有幀寫入,或?qū)懭氲膸?jīng)過步驟301和302的判斷不存儲(chǔ)在當(dāng)前輔助寫指針 指向的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū)中時(shí),向該輔助寫指針指向的數(shù)據(jù)讀寫區(qū)中 寫入補(bǔ)償幀。
在寫入補(bǔ)償幀之前,要判斷應(yīng)該是補(bǔ)償平滑幀還是舒適噪聲幀。該判斷方 法可以為根據(jù)上一收到幀來判斷,當(dāng)上一收到幀為靜寂幀時(shí),則后面補(bǔ)償為 舒適噪聲幀;當(dāng)上一收到幀的不為靜寂而是語(yǔ)音幀或視頻幀等媒體數(shù)據(jù)幀時(shí), 則補(bǔ)償平滑幀。
當(dāng)寫入補(bǔ)償幀后,將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空,同時(shí)輔助寫指針 將指向下一個(gè)距離讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū),寫指針指指向不
變,當(dāng)此時(shí)再接收到數(shù)據(jù)幀,且判斷該幀應(yīng)該存放在前述已存放補(bǔ)償幀的數(shù)據(jù) 讀寫區(qū)時(shí),將該幀^L作已超過最大延時(shí)而丟棄。
如圖7中(a)所示,當(dāng)讀指針指向存放幀序號(hào)為2的數(shù)據(jù)讀寫區(qū)時(shí),輔 助寫指針與讀指針之間只有一個(gè)數(shù)據(jù)讀寫區(qū)時(shí),且此時(shí)沒有幀寫入,并判斷上
一收到幀的類型為靜寂幀時(shí),則向該輔助寫指針指向的數(shù)據(jù)讀寫區(qū)寫入舒適噪 聲幀。并將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空,同時(shí)輔助寫指針將指向下一個(gè) 距離讀指針最近的狀態(tài)標(biāo)識(shí)為空的數(shù)據(jù)讀寫區(qū),如圖7中(b)所示。
步驟304:將存儲(chǔ)在數(shù)據(jù)讀寫區(qū)中的幀按照預(yù)先設(shè)定的時(shí)間間隔和在數(shù)據(jù)
緩沖區(qū)的存儲(chǔ)順序向第二終端側(cè)發(fā)送。
通過本發(fā)明方法,綜合解決了網(wǎng)絡(luò)中丟幀、亂序和延時(shí)等問題,并且還解
決了語(yǔ)音靜音的問題,提高了媒體數(shù)據(jù)的傳輸質(zhì)量,使終端的主觀感受大大提高。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā) 明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種分幀媒體數(shù)據(jù)傳輸方法,其特征在于,該方法包括以下步驟A.發(fā)送側(cè)對(duì)當(dāng)前幀進(jìn)行排序,將數(shù)據(jù)緩沖區(qū)分為一個(gè)以上的數(shù)據(jù)讀寫區(qū),并將當(dāng)前幀按照確定的順序?qū)懭霐?shù)據(jù)緩沖區(qū)中的對(duì)應(yīng)位置;B.發(fā)送側(cè)按序讀取數(shù)據(jù)緩沖區(qū),并將讀取的幀向接收側(cè)發(fā)送,當(dāng)判斷數(shù)據(jù)緩沖區(qū)中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀時(shí),向該數(shù)據(jù)讀寫區(qū)中寫入補(bǔ)償幀。
2、 如權(quán)利要求1所述方法,其特征在于,所述每一數(shù)據(jù)讀寫區(qū)對(duì)應(yīng)一狀 態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)為空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀,所述狀 態(tài)標(biāo)識(shí)為非空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)已存儲(chǔ)未發(fā)送幀;在讀取數(shù)據(jù)讀寫區(qū)中的幀之前包括步驟查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng) 狀態(tài)標(biāo)識(shí)為非空,則讀取該數(shù)據(jù)讀寫區(qū)中的幀;在向數(shù)據(jù)讀寫區(qū)中寫入幀之前包括步驟查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng) 狀態(tài)標(biāo)識(shí)為空,則向該數(shù)據(jù)讀寫區(qū)中寫入幀。
3、 如權(quán)利要求1所述方法,其特征在于,在讀取數(shù)據(jù)讀寫區(qū)中的幀之后 包括步驟將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為空;在向數(shù)據(jù)讀寫區(qū)中寫入幀之后包括步驟將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為 非空。
4、 如權(quán)利要求l所述方法,其特征在于,步驟B中所述發(fā)送側(cè)按序讀取 數(shù)據(jù)緩沖區(qū),并將讀取的幀向接收側(cè)發(fā)送,是按照預(yù)先設(shè)定的時(shí)間間隔讀取和 發(fā)送的。
5、 如權(quán)利要求l所述方法,其特征在于,在所述步驟A之前包括步驟 A0、判定所述當(dāng)前幀是否超過預(yù)先設(shè)定的最大延時(shí),若超過,則將該幀丟棄并結(jié)束,若未超過,則再對(duì)該幀進(jìn)行排序。
6、 如權(quán)利要求5所述方法,其特征在于,步驟A包括All、根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差; Al2、根據(jù)序號(hào)差確定當(dāng)前幀要寫入的數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)讀寫區(qū); A13、當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,再將該數(shù)據(jù)讀寫 區(qū)狀態(tài)標(biāo)識(shí)置為非空。
7、 如權(quán)利要求l所述方法,其特征在于,所述步驟A中是根據(jù)當(dāng)前幀的 時(shí)戳和序號(hào)對(duì)當(dāng)前幀進(jìn)行排序。
8、 如權(quán)利要求7所述方法,其特征在于,步驟A包括A21、根據(jù)當(dāng)前幀與上一收到幀的時(shí)戳確定兩幀之間的靜音幀個(gè)數(shù),并根據(jù)已補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù);A22、根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差;A23、根據(jù)序號(hào)差和所述還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定當(dāng)前幀要寫入的數(shù)據(jù)讀寫區(qū);A24、當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,并將該數(shù)據(jù)讀寫 區(qū)狀態(tài)標(biāo)識(shí)置為非空。
9、 如權(quán)利要求l所述方法,其特征在于,步驟B中所述補(bǔ)償幀包括舒適 噪聲幀或平滑幀,則所述寫入補(bǔ)償幀的步驟包括判斷上一收到幀的類型,若上一收到幀為靜寂幀,則寫入舒適噪聲幀,若 上一收到幀為媒體數(shù)據(jù)幀,則寫入平滑幀。
10、 一種分幀士某體數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述系統(tǒng)包括 發(fā)送單元,用于對(duì)當(dāng)前幀進(jìn)行排序,并將當(dāng)前幀按照確定的順序?qū)懭刖彌_單元中的對(duì)應(yīng)位置,并按序讀取緩沖單元,并將讀取的幀向接收側(cè)發(fā)送;補(bǔ)償幀發(fā)送單元,用于當(dāng)緩沖單元中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀時(shí),向該數(shù)據(jù)讀寫區(qū)中寫入補(bǔ)償幀;緩沖單元,包含一個(gè)以上的數(shù)據(jù)讀寫區(qū),用于按照發(fā)送單元確定的順序存儲(chǔ)幀。
11、 如權(quán)利要求10所述系統(tǒng),其特征在于,所述每一數(shù)據(jù)讀寫區(qū)對(duì)應(yīng)一狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)為空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀,所述狀態(tài)標(biāo)識(shí)為非空表示對(duì)應(yīng)的數(shù)據(jù)讀寫區(qū)已存儲(chǔ)未發(fā)送幀;所述發(fā)送單元,用于在讀取數(shù)據(jù)讀寫區(qū)中的幀之前,查詢?cè)摂?shù)據(jù)讀寫區(qū)狀 態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為非空則讀取該數(shù)據(jù)讀寫區(qū)中的幀;在向數(shù)據(jù)讀寫區(qū)中寫 入幀之前,查詢?cè)摂?shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí),當(dāng)狀態(tài)標(biāo)識(shí)為空則向該數(shù)據(jù)讀寫區(qū)中 寫入幀;在讀取數(shù)據(jù)讀寫區(qū)中的幀之后,將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為空; 在向數(shù)據(jù)讀寫區(qū)中寫入幀之后將該數(shù)據(jù)讀寫區(qū)的狀態(tài)標(biāo)識(shí)置為非空。
12、 如權(quán)利要求10所述系統(tǒng),其特征在于,所述發(fā)送單元包括 排序單元,用于對(duì)當(dāng)前幀進(jìn)行排序,將該幀按照確定的存儲(chǔ)順序?qū)懭霐?shù)據(jù)讀寫區(qū)中;幀發(fā)送單元,用于按照預(yù)先設(shè)定的時(shí)間間隔向接收側(cè)發(fā)送已存儲(chǔ)在數(shù)據(jù)讀 寫區(qū)中的幀。
13、 如權(quán)利要求10所述系統(tǒng),其特征在于,所述發(fā)送單元包括 存儲(chǔ)單元,用于存儲(chǔ)預(yù)先設(shè)定的最大延時(shí);最大延時(shí)判定單元,用于判定當(dāng)前幀是否超過預(yù)先設(shè)定的最大延時(shí),若超 過,則將該幀丟棄,若未超過,則將該幀發(fā)送到排序單元。
14、 如權(quán)利要求12所述系統(tǒng),其特征在于,所述排序單元包括 時(shí)戳判定單元,用于根據(jù)當(dāng)前幀與上一收到幀的時(shí)戳確定兩幀之間的靜音幀個(gè)數(shù),并根據(jù)已補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù);序號(hào)判定單元,用于根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差,并根據(jù)序號(hào)差和所述還需要補(bǔ)償?shù)撵o音幀個(gè)數(shù)確定當(dāng)前幀要寫入的數(shù)據(jù)讀 寫區(qū),當(dāng)該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,并將該數(shù)據(jù)讀寫區(qū)狀 態(tài)標(biāo)識(shí)置為非空。
15、 如權(quán)利要求12所述系統(tǒng),其特征在于,所述排序單元包括 序號(hào)單獨(dú)判定單元,用于根據(jù)當(dāng)前幀與上一收到幀的序號(hào)確定兩幀之間的序號(hào)差,并根據(jù)序號(hào)差確定當(dāng)前幀要寫入的緩沖單元中的數(shù)據(jù)讀寫區(qū),當(dāng)該數(shù) 據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)為空時(shí),將當(dāng)前幀寫入,再將該數(shù)據(jù)讀寫區(qū)狀態(tài)標(biāo)識(shí)置為非
16、如權(quán)利要求10所述系統(tǒng),其特征在于,所述補(bǔ)償幀發(fā)送單元包括 幀判定單元,用于判定上一收到幀的類型;幀發(fā)送單元,用于當(dāng)上一收到幀為靜寂幀時(shí),則寫入舒適噪聲幀,若上一 收到幀為媒體數(shù)據(jù)幀時(shí),則寫入平滑幀。
全文摘要
本發(fā)明公開了一種分幀媒體數(shù)據(jù)傳輸方法,該方法包括A.發(fā)送側(cè)對(duì)當(dāng)前幀進(jìn)行排序,將數(shù)據(jù)緩沖區(qū)分為一個(gè)以上的數(shù)據(jù)讀寫區(qū),并將當(dāng)前幀按照確定的順序?qū)懭霐?shù)據(jù)緩沖區(qū)中的對(duì)應(yīng)位置;B.發(fā)送側(cè)按序讀取數(shù)據(jù)緩沖區(qū),并將讀取的幀向接收側(cè)發(fā)送,當(dāng)判斷數(shù)據(jù)緩沖區(qū)中當(dāng)前被讀的數(shù)據(jù)讀寫區(qū)與其后的待讀數(shù)據(jù)讀寫區(qū)間隔為預(yù)先設(shè)定的數(shù)據(jù)讀寫區(qū)的個(gè)數(shù),且該待讀數(shù)據(jù)讀寫區(qū)沒有存儲(chǔ)未發(fā)送幀時(shí),向該數(shù)據(jù)讀寫區(qū)中寫入補(bǔ)償幀。通過本發(fā)明方法,綜合解決了網(wǎng)絡(luò)中丟幀、亂序和延時(shí)等問題,并且還解決了語(yǔ)音靜音的問題,提高了媒體數(shù)據(jù)的傳輸質(zhì)量,使終端的主觀感受大大提高。本發(fā)明還公開了一種分幀媒體數(shù)據(jù)傳輸系統(tǒng)及裝置。
文檔編號(hào)H04L12/56GK101175012SQ20061011421
公開日2008年5月7日 申請(qǐng)日期2006年11月1日 優(yōu)先權(quán)日2006年11月1日
發(fā)明者孫永青 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司