• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    G.729.1算法的改進(jìn)與DSP全匯編優(yōu)化設(shè)計

    2017-01-03 01:29:45王春柳陳德宏申星海
    關(guān)鍵詞:霍夫曼子帶比特

    王春柳,陳德宏,申星海

    (1.河海大學(xué) 文天學(xué)院 電氣信息工程系,安徽 馬鞍山 243031;2.安徽工業(yè)大學(xué) 電氣與信息工程學(xué)院,安徽 馬鞍山 243002)

    G.729.1算法的改進(jìn)與DSP全匯編優(yōu)化設(shè)計

    王春柳1,陳德宏2,申星海2

    (1.河海大學(xué) 文天學(xué)院 電氣信息工程系,安徽 馬鞍山 243031;2.安徽工業(yè)大學(xué) 電氣與信息工程學(xué)院,安徽 馬鞍山 243002)

    在G.729.1寬帶語音編碼算法中,時域混疊編碼器的譜包絡(luò)編碼根據(jù)幀內(nèi)子帶的相關(guān)性,采用差分霍夫曼編碼來減少編碼的比特分配。針對相鄰幀對應(yīng)子帶的譜包絡(luò)存在相關(guān)性,給出了在原有譜包絡(luò)編碼模式的基礎(chǔ)上,增加一種幀間對應(yīng)子帶差分霍夫曼編碼的模式來進(jìn)一步減少譜包絡(luò)的編碼比特數(shù),從而提高合成語音的質(zhì)量。由于G.729.1可以根據(jù)信道的特征隨時調(diào)整編碼速率以取得更好的寬帶語音質(zhì)量,這使得該編碼算法具有很高的復(fù)雜度。為了能在數(shù)字信號處理器 (digital signal processor, DSP)上實時實現(xiàn)G.729.1,結(jié)合TMS320VC5505數(shù)字信號處理器對G.729.1算法采用全匯編實現(xiàn),并對匯編后的G.729.1代碼做了進(jìn)一步的匯編優(yōu)化,優(yōu)化后的G.729.1算法在保證了高質(zhì)量語音輸出的同時,提高了編碼效率,實現(xiàn)了對語音信號的實時處理。

    寬帶語音;G.729.1; 譜包絡(luò)編碼;差分霍夫曼編碼;匯編優(yōu)化

    0 引 言

    G.729.1作為ITU-T提出的嵌入式寬帶語音編碼標(biāo)準(zhǔn)能夠根據(jù)各個終端設(shè)備的能力及傳輸鏈路的傳輸能力,靈活地對編碼比特流進(jìn)行截斷,使得編碼器具有可分級性。它被廣泛應(yīng)用于分組語音傳輸、高質(zhì)量的視頻或音頻會議、網(wǎng)絡(luò)擁塞控制及各種多媒體通信系統(tǒng)中[1-3]。它提供了在8~32 kbit/s之間的12種可選速率,并且用戶可以根據(jù)信道的實際狀況對碼流速率作相應(yīng)調(diào)整,這種根據(jù)網(wǎng)絡(luò)狀況靈活調(diào)整比特率的方法使G.729.1具有較好的適應(yīng)能力,避免了網(wǎng)絡(luò)擁塞,提高了整體服務(wù)質(zhì)量。

    圖1 TDAC編碼原理框圖Fig.1 Block diagram of the TDAC encoder

    由圖1可以看出,TDAC編碼器對低頻端重建加權(quán)差值譜信號和高頻譜信號進(jìn)行譜合并,組成了全頻帶的譜信號。對全頻帶譜信號先進(jìn)行粗編碼,即對變換后的譜系數(shù)(320)組成18個子帶,每個子帶先進(jìn)行譜包絡(luò)編碼,然后再細(xì)量化,即對每個子帶的各個譜系數(shù)再進(jìn)行球形矢量量化。由于TDAC編碼器分配的總比特數(shù)是一定的,因此,子帶譜包絡(luò)編碼分配的比特數(shù)越少,對子帶各個譜系數(shù)分配的比特數(shù)就越多,細(xì)節(jié)描述就更準(zhǔn)確,得到的語音質(zhì)量就越高。G.729.1中的譜包絡(luò)編碼利用幀內(nèi)18個子帶的相關(guān)性,對一幀內(nèi)的相鄰子帶進(jìn)行差分去相關(guān),而幀內(nèi)相鄰子帶差分之后的譜包絡(luò)能量往往集中在較小的動態(tài)范圍內(nèi),即采用不等長霍夫曼編碼,可以進(jìn)一步降低編碼比特數(shù)。

    本文根據(jù)語音幀與幀對應(yīng)子帶之間的譜包絡(luò)具有很大的相關(guān)性,可以利用幀與幀對應(yīng)子帶的相關(guān)性,進(jìn)行差分去相關(guān)處理,對幀間對應(yīng)子帶差分后的信號采用霍夫曼編碼也可以減少譜包絡(luò)的比特分配,然而對不同種類的語音信號,對幀內(nèi)相鄰子帶采用差分霍夫曼編碼模式所分配的比特數(shù)和對語音的相鄰幀對應(yīng)子帶采用差分霍夫曼編碼模式分配的比特數(shù)各有優(yōu)劣,因此,為了使用分配比特數(shù)較少的模式,可以同時保留這2種模式,對每一幀的譜包絡(luò)編碼都計算這2種模式的編碼比特數(shù),采用1 bit來選擇編碼比特數(shù)較小的那種模式,有利于解碼端恢復(fù)譜包絡(luò)的編碼模式。

    由于G.729.1可以根據(jù)信道的特征隨時調(diào)整編碼速率以取得更好的寬帶語音質(zhì)量,這使得該編碼算法具有較高的復(fù)雜度。在工程應(yīng)用中,為了達(dá)到實時處理的目的,文獻(xiàn)[6]采用DM642對G.729.1進(jìn)行簡單的算法優(yōu)化和C語言級別上的優(yōu)化,但該優(yōu)化沒有充分利用DSP C6000系列的結(jié)構(gòu)特點,優(yōu)化效率不高,且C6000系列價格昂貴,因此,采用該系列DSP對G.729.1進(jìn)行處理,性價比不高。文獻(xiàn)[7]采用ARM926EJ為核心的S3C2450處理器對G.729.1進(jìn)行C語言函數(shù)結(jié)構(gòu)和部分匯編優(yōu)化相結(jié)合的優(yōu)化方式,但這種優(yōu)化的可移植性較差,不利于工程應(yīng)用中的直接封裝使用。本文利用C55x系列DSP的低功耗,對數(shù)字信號處理快的特點,在TMS320VC5505 DSP芯片上給出了一種便于編寫、調(diào)試的G.729.1全匯編開發(fā)方案。通過對G.729.1編解碼算法的匯編編寫、調(diào)試,并進(jìn)一步對G.729.1匯編代碼做匯編優(yōu)化,如并行指令、循環(huán)體優(yōu)化、流水線優(yōu)化等。匯編優(yōu)化后的G.729.1代碼可實時處理,并且在工程應(yīng)用中可直接封裝使用并為后續(xù)G.729.1算法的優(yōu)化研究奠定了基礎(chǔ)。

    1 G.729.1譜包絡(luò)編碼的改進(jìn)

    1.1 G.729.1譜包絡(luò)編碼

    (1)

    得到18個譜包絡(luò)后,對每個譜包絡(luò)參數(shù)進(jìn)行5bit均勻標(biāo)量量化,其限定量化結(jié)果為-11~+20的32個可能的數(shù)值,為了防止譜包絡(luò)log_rms(j)的值過多地超出限定范圍,對其進(jìn)行了溢出處理,進(jìn)而得到索引rms_index(j)表示為

    rms_index(j)=round(1/2log_rms(j)),

    j=0,…,17

    (2)

    (2)式中;log_rms(j)為第j個譜包絡(luò);rms_index(j)為第j個量化的譜包絡(luò)。

    量化后的全頻帶包絡(luò)分為2個子矢量:第1個子矢量是rms_index(0)~rms_index(9),該10維的子矢量為低頻帶包絡(luò);第2個矢量是rms_index(10)~rms_index(17),該8維的子矢量為高頻帶包絡(luò)。這2個子矢量的編碼在差分霍夫曼編碼(模式0)和直接自然二進(jìn)制編碼(模式1)之間進(jìn)行自適應(yīng)轉(zhuǎn)換。這是由于差分霍夫曼編碼可使平均編碼比特數(shù)變小,而直接自然二進(jìn)制編碼用于限制最壞情況的比特數(shù)。

    該差分霍夫曼編碼在幀內(nèi)的譜包絡(luò)之間進(jìn)行編碼,一般包括以下4個步驟。

    步驟1對取值為[-11,20]的第1個索引rms_index(0)進(jìn)行5 bit的自然二進(jìn)制編碼。

    步驟2計算相鄰子帶的差分索引和飽和標(biāo)識satur。

    diff_index(j)=rms_index(j)-

    rms_index(j-1),j=1,…,9

    (3)

    (4)

    (3)-(4)式中:rms_index(j)為第j個量化的譜包絡(luò);diff_index(j)為2個相鄰譜包絡(luò)的差值索引;satur為飽和標(biāo)志位。

    步驟3如果satur=0,對于j=1,...,9的低頻差分索引diff_index(j)采用查表法進(jìn)行差分霍夫曼編碼,其霍夫曼表參見文獻(xiàn)[1]。

    步驟4如果satur=1或者差分霍夫曼編碼的比特數(shù)大于45,則對rms_index(1),…,rms_index(9)進(jìn)行步驟1所述的自然二進(jìn)制編碼,并令satur=1。

    1.2 譜包絡(luò)編碼的改進(jìn)

    G.729.1中的譜包絡(luò)編碼利用幀內(nèi)18個子帶的相關(guān)性,對一幀內(nèi)的相鄰子帶進(jìn)行差分去相關(guān),而幀內(nèi)相鄰子帶差分之后的譜包絡(luò)能量往往集中在較小的動態(tài)范圍內(nèi),從而降低編碼比特數(shù)。對常出現(xiàn)的小信號用短碼表示,不常出現(xiàn)的大信號用長碼表示,即采用不等長霍夫曼編碼,可以進(jìn)一步降低編碼比特數(shù)。

    由于譜包絡(luò)編碼分配的比特數(shù)與MDCT系數(shù)分配比特數(shù)的總和是固定的,共351 bit,而MDCT系數(shù)精度越高對語音頻譜細(xì)節(jié)的描述就越準(zhǔn)確,得到的語音質(zhì)量就越好。如果希望MDCT系數(shù)的比特分配越多,這就意味著譜包絡(luò)編碼分配的比特數(shù)越少越好,那么如何進(jìn)一步減少譜包絡(luò)編碼的比特數(shù)呢?一般情況下,語音幀之間的譜包絡(luò)存在很大的相關(guān)性,因此,可采用對幀間對應(yīng)子帶進(jìn)行差分去相關(guān),之后對去除相關(guān)性的對應(yīng)子帶信號采用霍夫曼編碼進(jìn)一步減少譜包絡(luò)的比特分配。文獻(xiàn)[8]表明,對不同種類的語音信號,G.729.1所采用的幀內(nèi)相鄰子帶進(jìn)行差分霍夫曼編碼模式所分配的比特數(shù)和本文所提的語音的相鄰幀對應(yīng)子帶采用差分霍夫曼編碼模式分配的比特數(shù)各有優(yōu)劣,因此,為了確定哪種模式分配的比特數(shù)較少,本文采用同時保留這2種模式的方法,對每幀的譜包絡(luò)編碼都計算這2種模式的編碼比特數(shù),然后進(jìn)行比較,用1 bit來選擇編碼比特數(shù)較小的那種模式,從而可使譜包絡(luò)編碼保持較少的分配比特數(shù)。

    譜包絡(luò)編碼的具體步驟如下。

    步驟1利用(1)式和(2)式計算連續(xù)相鄰幀的18個子帶的譜包絡(luò)值,并計算連續(xù)幀的對應(yīng)子帶譜包絡(luò)的差分為

    diff(t,j)=rms_index(t,j)-rms_index(t-1,j)

    (5)

    (5)式中:rms_index(t,j)是第t幀第j個子帶的量化譜包絡(luò);diff(t,j)為相鄰幀對應(yīng)子帶譜包絡(luò)的差值索引。

    步驟2對每幀得到各個譜包絡(luò)的差值進(jìn)行霍夫曼編碼,并計算分配的比特數(shù)。

    步驟3比較幀內(nèi)相鄰子帶譜包絡(luò)編碼比特分配和相鄰幀對應(yīng)子帶譜包絡(luò)編碼比特分配,采用1 bit進(jìn)行模式選擇,哪種比特數(shù)少,則采用哪種模式,并輸出模式選擇標(biāo)志位。具體譜包絡(luò)編碼流程如圖2所示。

    本文采用ITU-T提供的測試矢量tstseq1.in作為輸入語音,對G.729.1語音壓縮編碼進(jìn)行驗證,統(tǒng)計了1 000幀的語音信號。結(jié)果表明,采用改進(jìn)的譜包絡(luò)編碼使得該部分的編碼比特數(shù)減5 bit左右。由于TDAC編碼器分配的總比特數(shù)是一定的,改進(jìn)的子帶譜包絡(luò)編碼分配的比特數(shù)減少了5 bit,則表明對子帶各個譜系數(shù)分配的比特數(shù)就多了5 bit,細(xì)節(jié)描述就更準(zhǔn)確。通過采用ITU-T推出的WB_PESQ軟件系統(tǒng)對1 000幀的測試矢量tstseq1.in所合成語音的質(zhì)量進(jìn)行評估[9],實驗表明,該譜包絡(luò)方法比原來的譜包絡(luò)編碼方法所得到的感知語音質(zhì)量評價(perceptual evaluation of speech quality, PESQ)得分由原來的4.05提高到4.11,合成語音質(zhì)量所提高。

    圖2 改進(jìn)的譜包絡(luò)編碼流程圖Fig.2 Flow of improved spectral envelope coding

    由于該方法在原有編碼的基礎(chǔ)上增加了對相鄰幀對應(yīng)子帶的差分霍夫曼編碼模式,因此,TDAC編碼器算法的復(fù)雜度有所增加,執(zhí)行一幀的運算量由2 714 111 clock提高到2 759 413 clock,算法復(fù)雜度提高了1.67%。由于G.729.1算法本身的運算量較為龐大,而TDAC編碼器算法的復(fù)雜度只占G.729.1算法中的16.8%,因此,該部分算法復(fù)雜度對G.729.1整體算法的復(fù)雜度并沒有太大影響。但G.729.1的龐大的運算量影響其在工程上的實時實現(xiàn),本文對G.729.1采用全匯編優(yōu)化設(shè)計,解決了實時處理的問題。

    2 G.729.1算法全匯編設(shè)計與優(yōu)化

    TMS320VC5505是TI公司生產(chǎn)的16位定點DSP,在數(shù)字音頻設(shè)備、軟件無線電、便攜式醫(yī)療設(shè)備等領(lǐng)域得到廣泛應(yīng)用[10]。如果直接將C語言編寫的G.729.1編解碼算法加載到C55x DSP開發(fā)平臺進(jìn)行編譯,那么執(zhí)行一個語音超幀(20 ms)需要47 642 993個時鐘周期。對于TMS320VC5505的主頻為100 MHz,則執(zhí)行一個語音超幀需要476.4 ms,無法達(dá)到語音實時處理的目的。因此,為了能在C55x上實時實現(xiàn)G.729.1算法,本文對G.729.1進(jìn)行全匯編編寫和優(yōu)化。而一個合理的開發(fā)設(shè)計方案對程序的編寫和最后的調(diào)試有著至關(guān)重要的作用。本課題利用CCS3.3軟件開發(fā)平臺,開發(fā)一款能夠在DSP上實時處理的G.729.1寬帶語音編碼代碼,其總體開發(fā)流程如圖3所示。

    圖3 基于DSP的G.729.1匯編開發(fā)總方案流程圖Fig.3 Flow of G.729.1 assembly development based on DSP

    圖3描述了G.729.1總體開發(fā)方案流程。該方案首先把C代碼移植到CCS環(huán)境中,并解決移植過程出現(xiàn)的接口不匹配問題;然后對移植成功的C代碼進(jìn)行整體架構(gòu)的分析,制定整個代碼的開發(fā)方案,同時對各個模塊C代碼進(jìn)行參數(shù)精度和算法描述的解讀,制定各個模塊的匯編方案,匯編編寫并調(diào)試各模塊代碼,最后為了進(jìn)一步提高匯編優(yōu)化效率,從各方面對匯編代碼進(jìn)行優(yōu)化。

    2.1 代碼的移植

    由于G.729.1的源C文件是在Visual C++平臺上編寫的,由于CCS3.3對標(biāo)準(zhǔn)C不是百分之百完全兼容的,因此,需要進(jìn)行一定的修改才能將G.729.1算法移植到CCS3.3中。通過修改并在CCS3.3上編譯通過,移植成功后才可以進(jìn)行下一步的匯編編寫和優(yōu)化工作。

    標(biāo)準(zhǔn)C代碼在CCS3.3平臺移植過程中存在的3個不足之處。

    1)標(biāo)準(zhǔn)C代碼的main函數(shù)是帶參數(shù)的,這些參數(shù)可自動判斷輸入文件為什么類型,在CCS3.3中無法執(zhí)行,因而需要將其改為不帶參數(shù)的main函數(shù),人工輸入文件類型。

    2)標(biāo)準(zhǔn)C代碼中的數(shù)據(jù)導(dǎo)入方式是通過fread語句從數(shù)據(jù)文件中讀入數(shù)據(jù),在CCS3.3中,fread讀一個16位整數(shù)時,只能讀出16位整數(shù)的一個字節(jié),這種方式讀入的數(shù)據(jù)格式不對,解決辦法有:①如果數(shù)據(jù)文件是.data格式,直接裝載到數(shù)據(jù)區(qū);②對于其他格式的數(shù)據(jù)文件,可以通過tool工具欄中的Memory Save/Load Utility工具將數(shù)據(jù)讀入指定數(shù)據(jù)區(qū);③可以通過fread將一個16位數(shù)據(jù)讀2次,并需要編程將2個讀出的8位合并成一個完整的16位數(shù)據(jù)。

    3)源C程序移植到CCS3.3上,不僅要加入源文件,而且要與C運行庫進(jìn)行連接。由于C5505 有小模式(small memory model)和大模式(large memory model)之分,模式的選擇決定C運行庫的選擇,在大存儲器模式下,數(shù)據(jù)指針是23位,并在存儲器中占用2個字,大存儲器模式支持?jǐn)?shù)據(jù)的不嚴(yán)格存放,代碼段和數(shù)據(jù)段的長度和位置不會受到一定數(shù)據(jù)頁的限制,本文中在編譯器中設(shè)置-ml,選擇大模式。大模式對應(yīng)的C運行庫為rts55x.1ib。

    將G.729.1源C文件載入TI 公司提供的集成開發(fā)環(huán)境C55xx Rev3.0 CPU Cycle Accurate Simulator。輸入語音信號,經(jīng)編解碼,將解碼得到的信號通過集成開發(fā)環(huán)境CCS3.3中Tools菜單條中的Memory Save/Load Utility來保存。其中,輸入的語音信號為ITU-T提供的測試語音test1_16k.in,將移植后的G.729.1編解碼輸出的.bit文件和.out 文件與之提供的測試文件逐比特進(jìn)行對比,完全一致,并通過Cool Edit Pro v2.0 進(jìn)行試聽,直到和原始測試文件聽不出任何不同,說明移植成功。

    2.2 全匯編的編寫設(shè)計與調(diào)試

    由于G.729.1程序規(guī)模較大,為了實現(xiàn)其全匯編編寫,需要制定一個合理的全匯編實現(xiàn)方案。本文結(jié)合C55x匯編語言和算法代碼的特點,在保證標(biāo)準(zhǔn)C代碼的結(jié)構(gòu)架構(gòu)不變的情況下,對C代碼結(jié)構(gòu)框架下的各個模塊逐個進(jìn)行匯編語言編寫,保證每個階段匯編替代的正確性,完成整個算法的全匯編實現(xiàn)。為了使程序結(jié)構(gòu)清晰,利于修改和調(diào)試,這種將復(fù)雜的算法分解為各個單獨的程序模塊分別實現(xiàn),可使編程變得相對容易,但也要求對C程序代碼非常熟悉,并對匯編指令了解透徹。這種思路雖然花費的時間較長,但易于在調(diào)試中發(fā)現(xiàn)和改正錯誤。

    由于G.729.1包含的模塊眾多,而各個模塊匯編代碼編寫的順序并不是隨意的,而是根據(jù)函數(shù)之間的關(guān)系以及它們的復(fù)雜度大小制定的,編寫順序如下。

    1)對于同一分支的函數(shù),因為子函數(shù)的編寫和調(diào)試比較容易,所以,先替換子函數(shù),即內(nèi)層函數(shù),在保證子函數(shù)的正確性后,再替換父函數(shù),即為外層函數(shù),采用由內(nèi)而外的替換順序,從而降低代碼開發(fā)和調(diào)試難度。

    2)由于執(zhí)行一次G.729.1源代碼編的時間較長,對于同一層次的函數(shù),由它們的復(fù)雜度決定替換順序,采用優(yōu)先替代復(fù)雜函數(shù),這樣可以縮短編譯和連接的時間,從而確定復(fù)雜的函數(shù)先替換,簡單的函數(shù)后替換,從時間上縮短后面函數(shù)調(diào)試時間。

    按照這2個原則逐一替換各個子函數(shù),從而完成父函數(shù)的全匯編編寫。

    為了驗證各個模塊匯編代碼的正確性,本文使用ITU-T 提供的G.729.1相應(yīng)測試矢量test1_16k.in作為輸入信號,由于G.729.1包括12種編碼速率,即8~32 kbit/s,為了加快調(diào)試的速度,在程序中不能直接設(shè)置編碼速率為最高速率(32 kbit/s)。如果先編寫8 kbit/s所對應(yīng)的程序模塊,可設(shè)置編碼速率為8 kbit/s,這樣12~32 kbit/s所對應(yīng)的程序?qū)⒉粫?zhí)行,增加了編譯的速度,且便于調(diào)試。當(dāng)調(diào)試某一模塊,可在該模塊的結(jié)尾處設(shè)置斷點,一幀一幀調(diào)試,大概執(zhí)行10幀,如果該模塊的匯編結(jié)果與C語言結(jié)果相同 ,可認(rèn)為該模塊的匯編程序正確。

    2.3 匯編優(yōu)化

    匯編代碼執(zhí)行效率雖然很高,為了進(jìn)一步提高編寫效率,充分利用各種DSP的硬件資源,本文在匯編代碼的基礎(chǔ)上進(jìn)一步優(yōu)化以提高編碼效率。

    2.3.1 實現(xiàn)高效循環(huán)

    1)單循環(huán)指令RPT(CSR/k8/k16)。如果循環(huán)體中只有一條指令或一個并行指令對,則可以使用RPT指令實現(xiàn)。當(dāng)RPT CSR嵌套循環(huán)中使用時,CSR只需要在循環(huán)體之外初始化一次,單循環(huán)指令的效率很高,是實現(xiàn)循環(huán)的首選方式。

    2)局部塊循環(huán)指令RPTBLOCAL{}。當(dāng)循環(huán)體的代碼長度不大于56 Byte的時候,可以使用RPTBLOCAL指令對指令緩存隊列中的循環(huán)體代碼塊執(zhí)行循環(huán)。局部塊循環(huán)避免了從內(nèi)存中重復(fù)讀取循環(huán)體代碼,從而減少了程序空間訪問的流水線沖突,如果循環(huán)代碼在外部RAM中,局部塊循環(huán)不會重復(fù)產(chǎn)生額外的等待,從整體上降低了功耗。在實現(xiàn)塊循環(huán)時,RPTBLOCAL指令是第1選擇。

    3)塊循環(huán)指令RPTB{}。由于塊循環(huán)指令要重復(fù)地訪問內(nèi)存代碼,執(zhí)行效率不高,因此,在局部塊循環(huán)指令不能使用的情況下才會用塊循環(huán)指令實現(xiàn)循環(huán)。

    4)跳轉(zhuǎn)指令。以上3種方法在實現(xiàn)循環(huán)時無需額外開銷,跳轉(zhuǎn)指令則至少需要5個指令的循環(huán)開銷。這種方法一般在多級(>2)嵌套循環(huán)里面使用。

    為實現(xiàn)高效的循環(huán),應(yīng)盡量使用單循環(huán)指令和局部塊循環(huán)指令,避免使用跳轉(zhuǎn)指令來實現(xiàn)循環(huán)。如果塊循環(huán)的代碼長度大于56 Byte,可以采用下面2種措施來實現(xiàn)局部塊循環(huán):①將循環(huán)體拆分為2個長度較小的代碼塊;②將原循環(huán)中長度較大的指令用其他長度較小指令替代,最常見的就是去除立即數(shù)指令。碰到2級嵌套循環(huán),應(yīng)將內(nèi)層循環(huán)的塊循環(huán)計數(shù)器BRC1在外層循環(huán)體之前進(jìn)行初始化,這樣可以避免重復(fù)初始化帶來的額外指令。

    2.3.2 宏優(yōu)化

    對于長的或復(fù)雜的代碼,將重復(fù)調(diào)用的程序塊定義為宏,此外,函數(shù)調(diào)用會有額外開銷,特別是多次調(diào)用的函數(shù),將其定義為宏后可以節(jié)省調(diào)用花費的開銷。全匯編代碼中定義為宏的函數(shù)有G729EV_G729_Copy,Inv_sqrt和Lag_max。下面給出宏Lag_max的部分定義程序,其他函數(shù)的宏可以用類似方法定義。

    Lag_max .macro scal_sig,L_FRAME,PIT_MAX,

    PIT_MIN,max,p_max

    .global _tabsqr

    ……

    .endm

    2.3.3 DSP匯編指令的巧用

    C55x匯編指令有150多種,編寫的匯編代碼中使用的某些指令并不一定最合適,比如條件跳轉(zhuǎn)指令BCC和指令XCC都可以控制是否執(zhí)行下條語句,但是BCC需要5到6個執(zhí)行周期,XCC只需要1個執(zhí)行周期,因此,在選擇指令的時候應(yīng)盡量選用執(zhí)行周期較少的。如對某一個數(shù)據(jù)進(jìn)行歸一化時,并求出歸一化的指數(shù),可用并行指令MANT::NEXP,一個執(zhí)行周期就可完成。如除法運算中的SUBC指令,因為除法運算沒有相應(yīng)的指令,所以可以轉(zhuǎn)換為減法運算,該指令可以求商和余數(shù)。

    2.3.4 并行指令優(yōu)化

    DSP芯片可以在1個時鐘周期下完成多個操作,也就是說可以將多條指令合并為1條,提高程序的運行效率。C55x中的并行分為單指令內(nèi)建并行和用戶自定義并行兩類。內(nèi)建并行就是一些特殊指令,用得最多的就是并行乘累加指令MAC::MAC,它是基于C55x的雙乘加(multiply and accumulate,MAC)硬件結(jié)構(gòu)。雙MAC并行指令為處理包含大量乘累加操作的G.729.1算法提供了便利。用戶自定義并行是指用戶通過對指令進(jìn)行分析,調(diào)整編碼的順序,將符合條件的2條相鄰指令并行操作[11]。TMS320C5505包含多組總線和功能單元,豐富的硬件資源使其支持高度的并行性,因而并行指令優(yōu)化是全匯編代碼的主要指令優(yōu)化方法之一。

    下面是一些可以采用用戶自定義并行指令來優(yōu)化匯編代碼的情況。

    1)將所有裝載和存儲指令并行放置。例如

    MOV *AR2,AC1 /*裝載AC1*/

    ‖MOV BRC0,*AR3 /*存儲BRC0*/

    2)條件執(zhí)行指令與加載指令并行放置。例如

    XCC first,T0==#0

    ‖MOV #0,AR0

    3)可將A單元的ALU與D單元的ALU,MAC和移位操作并行處理。例如

    ADD T0,AR1 /*在A單元修改AR1*/

    ‖MOV uns(rnd(HI(saturate(AC1<<#1)))),*AR2 /*在D單元執(zhí)行累加器移位飽和和存儲操作*/

    不同的匯編程序并行優(yōu)化的效果不同,從全匯編代碼的優(yōu)化結(jié)果來看,通常經(jīng)過自定義并行優(yōu)化,代碼執(zhí)行時間可以減少20%左右。

    2.3.5 流水線延遲的優(yōu)化

    C55x有2條受保護(hù)的指令流水線:①取指流水線,用于將指令包放入指令緩存隊;②執(zhí)行流水線,用于完成指令譯碼、數(shù)據(jù)訪問和運算,共有7個階段。在流水線中是多條指令同時執(zhí)行,不同的指令會在流水線的不同階段修改內(nèi)存、I/O空間和寄存器的值,為了防止數(shù)據(jù)訪問時會對同一空間進(jìn)行讀/寫,C55x的流水線保護(hù)單元會插入額外的周期來預(yù)防這種錯誤。如果一條指令要訪問前面未執(zhí)行完的指令所訪問的空間,這條指令就會在流水線中中斷,直至前面的指令執(zhí)行完,這條指令再執(zhí)行。為了使延遲最小,利用分析工具Pipeline Stall Analyzer,通過單步執(zhí)行程序找出產(chǎn)生流水線延遲的指令并分析在哪個階段產(chǎn)生流水線延遲并通過調(diào)整順序來解決。例如匯編程序中

    MOV #5,AR1

    MOV *AR1+,AC0

    由于這2條語句有4個周期的延遲,可以把第1條匯編語句改為AMOV #5,AR1,還可以與其他語句進(jìn)行調(diào)整來減小延遲。

    2.3.6 多使用雙字訪問指令

    在很多信號處理中,待處理的數(shù)據(jù)都是連續(xù)存放在內(nèi)存中的,使用雙字訪問可以一次讀取多個數(shù)據(jù),減少內(nèi)存訪問指令數(shù)。

    2.3.7 盡量減少進(jìn)行函數(shù)調(diào)用

    因為進(jìn)行函數(shù)調(diào)用的時候,要將程序計數(shù)器(programe counter,PC)指針和一些寄存器壓棧,函數(shù)調(diào)用完后,程序結(jié)束還要出棧,這都是一些不必要的操作。所以對于一些小的函數(shù), 就不調(diào)用而是直接寫入主函數(shù)里, 這樣就可以減少那些壓棧出棧的操作,提高速度。

    2.3.8 去除一些冗余的賦值

    編譯器產(chǎn)生的代碼有很多賦值,經(jīng)常將一個值賦給寄存器,再賦給變量,這樣就產(chǎn)生了冗余。

    3 結(jié)果分析

    通過對G.729.1進(jìn)行匯編編寫及優(yōu)化,并利用CCS3.3提供的性能分析工具(profiler)對優(yōu)化前后的代碼進(jìn)行分析, 表1是G.729.1編碼器源C代碼與匯編優(yōu)化后的指標(biāo)對比,其中,表1中運算量的單位為CPU的時鐘周期,而優(yōu)化效率則是源C代碼的運算量減去匯編優(yōu)化后的運算量與源C代碼的運算量的比值。

    表1 G.729.1編碼器匯編優(yōu)化前后的指標(biāo)對比

    由表1可以看出,函數(shù)的優(yōu)化效率至少為90%以上,匯編優(yōu)化后的函數(shù)執(zhí)行效率得到大大提高。通過測試可知,G.729.1全匯編代碼的運算量只有1 683 881 clock,而主頻為100 MHz的TMS320VC5505芯片在20 ms內(nèi)允許執(zhí)行的代碼量為2 000 000 clock,小于G.729.1編解碼的代碼量,保證了系統(tǒng)的實時性。

    為了進(jìn)一步評價語音編解碼系統(tǒng)還原出的語音質(zhì)量,本文采用ITU-T推出的WB_PESQ軟件對系統(tǒng)合成語音的質(zhì)量進(jìn)行評估[9]。實驗所用語音選自ITU-T提供的4組測試語音矢量,由于測試語音的語種、時長、是否帶噪等因素會影響語音質(zhì)量的測試結(jié)果,因此,測試語音應(yīng)該足夠豐富,如表2所示。這些語音的采樣頻率都為16 kHz,分別對C語言中的32 kbit/s的合成語音和匯編語言中的32 kbit/s的合成語音做對比,如表3所示。

    從表3的評測結(jié)果可以看出,匯編語音中的合成語音的質(zhì)量和C語言中的合成語音質(zhì)量基本相同,且當(dāng)速率為32 kbit/s時,合成的語音質(zhì)量較高,因此,全匯編優(yōu)化后的G.729.1編解碼器完全可以滿足實際話音通信系統(tǒng)的要求。

    表2 測試語音矢量

    表3 測試語音WB_PESQ得分

    為了進(jìn)一步驗證G.729.1編解碼的正確性,本文以測試矢量tst_16k.in作為輸入語音,經(jīng)G.729.1全匯編編碼和解碼后分別得到8,12和32 kbit/s的合成語音tst_16k_asm.o8,tst_16k_asm.o14和tst_16k_asm.o32。以32 kbit/s的合成語音為例,將原始語音文件與合成語音文件分別導(dǎo)入音頻制作軟件Cool Edit Pro,并對比它們的波形圖,如圖4所示。

    圖4 原始語音和32 kbit/s合成語音的波形圖Fig.4 Original speech waveform and synthetic speech waveform of 32 kbit/s

    將原始語音和32 kbit/s的合成語音的波形進(jìn)行對比,由圖4可見,32 kbit/s的合成語音波形圖與原始輸入語音的基本一致,進(jìn)一步驗證了全匯編結(jié)果的正確性。

    4 結(jié)束語

    針對G.729.1中的TDAC編碼器的譜包絡(luò)編碼方法,本文在原有方法的基礎(chǔ)上增加一種對相鄰幀對應(yīng)子帶采用差分霍夫曼的編碼方法,提高了語音的質(zhì)量。同時,針對G.729.1編解碼算法的高復(fù)雜度,通過充分利用C55x DSP結(jié)構(gòu)特點和匯編語言的特點,對其進(jìn)行全匯編設(shè)計及優(yōu)化,使得G.729.1編解碼器在TMS320VC5505得到實時實現(xiàn),提高系統(tǒng)運行的效率。并且該方法在工程應(yīng)用中可直接封裝使用,為后續(xù)G.729.1算法的優(yōu)化研究奠定了基礎(chǔ)。

    [1] ITU-T Recommendation. G.729-based Embedded Variable bit-rate coder,An 8-32kbit/s scalable wideband coder bitstream interoperable with G.729 (Amendment 7: New Anne F with voice activity detector using ITU-T G.720.1 Annex A)[S].Geneva,Switzerland:Telecommunication Standardization Sector of ITU, 2012.

    [2] RABOT S, KOVESI B, TRILLING R, et al. ITU-T G.729.1: An8-32kbit/s scalable coder interoperable with G.729 for wideband telephony and voice over IP[C]//IEEE International Conference on Acoustics, Speech and Signal Processing. Honolulu, Hawaii, USA: IEEE,2007:529-532.

    [3] GEISER B,JAX P, VARY P, et al. Bandwidth Extension for Hierarchical Speech and Audio Coding in ITU-T Rec. G.729.1[J]. IEEE International Conference on Audio, Speech and Signal Processing, 2007,15(8):2496-2509.

    [4] 李海婷,范睿,朱恒,等.最新的ITU-T嵌入式變速率語音編碼關(guān)鍵技術(shù)[J].電聲技術(shù),2006, 30(11):50-55. LI Haiting, FAN Rui, ZHU Heng,et al. Key techniques of the latest ITU-T embedded variable bit-rate speech coding[J]. Audio Engineering, 2006,30(11):50-55.

    [5] SETO Koji, OGUNFUNMI Tokunbo. Scabable Wideband Speech coding for IP Networks[C]//IEEE Conference on Circuits, Systems & Computers.Penang,Malaysia: IEEE, 2012:77-81.

    [6] 劉麗群, 黃冰. 基于DM642的G.729.1的DSP實現(xiàn)[J].桂林電子科技大學(xué)學(xué)報,2011,31(2):103-105. LIU Liqun , HUANG Bing. Implementation of the G.729.1 based on DM642[J].Journal of Guilin University of Electronic Technology,2011,31(2):103-105.

    [7] 董傳霄.基于ARM體系結(jié)構(gòu)的上層應(yīng)用—音頻編解碼協(xié)議G.729.1的優(yōu)化及應(yīng)用[D].北京:北京郵電大學(xué),2009. DONG Chuanxiao. An application based on ARM—The optimization and Application of G.729.1 speech coding codec[D].Beijing:Beijing University of Posts and Telecommunications, 2009.

    [8] CHO Keunseok,JEONG Sangbae,HAHN Minsoo.Frame Error-Robust MDCT bit Reduce for G.729.1 by Inter-Fame Correlation[C]//IEEE International Conference on Consumer Electronics. Xianning,China:IEEE,2011,819-820.

    [9] ITU-T Recommendation. Wideband extension to Recommendation P.862 for the assessment of wideband telephone networks and speech codecs [R].Geneva,Switzerland:Telecommunication Standardization Sector, 2007.

    [10] Texas Instruments Inc.TMS320VC5505 DSP System User’s Guide,SPRUFP0C[R].Texas: Texas Instruments Incorporated, 2012.

    [11] Texas Instruments Incorporated.TMS320C55X系列DSP指令系統(tǒng)開發(fā)工具與編程指南[M].李海森,周天,黎子盛,譯. 北京:清華大學(xué)出版社,2007. Texas Instruments Incorporated.DSP instructions system development tools and programming guide of TMS320VC55x [M].LI Haisen,ZHOU Tian,LI Zisheng,translation.Beijing: Tsinghua University Press,2007.

    王春柳(1989-),女,安徽馬鞍山人,碩士研究生,研究方向為數(shù)字語音編碼、DSP。E-mail:chunliuwang@yeah.net。

    陳德宏(1965-),男,安徽馬鞍山人,副教授,碩士生導(dǎo)師,研究方向為通信系統(tǒng)總體設(shè)計、數(shù)字語音編碼、DSP、密碼分析。E-mail:cdh@ahut.edu.cn。

    申星海(1990-),男,山西運城人,碩士研究生,研究方向為數(shù)字語音編碼、DSP。

    (編輯:王敏琦)

    G.729.1 algorithm improvement and DSP all assembly optimization design

    WANG Chunliu1, CHEN Dehong2, SHEN Xinghai2

    (1.Department of Electrical Information Engineering, Wentian College, Hohai University, Ma’anshan 243031, P.R.China;2. Institute of Electrical and Information Engineering, Anhui University of Technology, Ma’anshan 243002, P.R.China)

    In the wideband speech coding algorithm of G.729.1 standard, based on sub-band correlation of inter-frames, spectral envelope coding of time-domain aliasing cancellation encoder reduces allocation bits with the difference Huffman coding. Considering the sub-band correlation between adjacent frames, a difference Huffman coding mode in sub-band of adjacent frames is added on the foundation of the original spectral envelope coding mode, which further reduces spectral envelope of coded bits and improves the quality of synthesized speech. G.729.1 can adjust the coding rate according to the characteristics of channel at any time and can get a better wideband speech quality,which makes the encoding algorithm have a high complexity. Therefore, all assemble language based on TMS320VC5505 digital signal processor is adopted to the real-time implement of G.729.1 algorithm. And the further optimization is made for the assembly code of G.729.1. The optimized G.729.1 algorithm can ensure the high-quality synthesis speech, improve the coding efficiency and achieve the real-time processing of the speech signal.

    wideband speech coding; G.729.1; spectral envelope coding; difference Huffman coding; assembly optimization

    10.3979/j.issn.1673-825X.2016.06.007

    2015-05-19

    2015-12-21

    王春柳 chunliuwang@yeah.net

    國家自然科學(xué)基金(61304066)

    Foundation Item:The National Natural Science Foundation of China (61304066)

    TN912.3

    A

    1673-825X(2016)06-0789-08

    猜你喜歡
    霍夫曼子帶比特
    一種基于奇偶判斷WPT的多音干擾抑制方法*
    子帶編碼在圖像壓縮編碼中的應(yīng)用
    電子制作(2019年22期)2020-01-14 03:16:24
    抽象表現(xiàn)主義藝術(shù)先驅(qū)——漢斯·霍夫曼
    諾獎得主霍夫曼團(tuán)隊落戶深職院
    比特幣還能投資嗎
    海峽姐妹(2017年10期)2017-12-19 12:26:20
    比特幣分裂
    比特幣一年漲135%重回5530元
    銀行家(2017年1期)2017-02-15 20:27:20
    基于虛擬孔徑擴(kuò)展的子帶信息融合寬帶DOA估計
    槍口下的人格
    蘋果封殺比特幣應(yīng)用另有隱情?
    国产成人精品福利久久| 婷婷色综合大香蕉| 国产探花极品一区二区| 国产91av在线免费观看| 久久精品久久精品一区二区三区| 精品国产一区二区久久| 欧美亚洲 丝袜 人妻 在线| 两个人的视频大全免费| 看十八女毛片水多多多| 亚洲性久久影院| 蜜桃在线观看..| 成人美女网站在线观看视频| 黑人巨大精品欧美一区二区蜜桃 | 成人无遮挡网站| 天堂8中文在线网| √禁漫天堂资源中文www| 久久人人爽人人爽人人片va| 丰满人妻一区二区三区视频av| 国产成人精品无人区| 国产熟女欧美一区二区| 日韩在线高清观看一区二区三区| a级一级毛片免费在线观看| 久久精品国产鲁丝片午夜精品| 国产精品国产三级国产专区5o| 乱系列少妇在线播放| 久久 成人 亚洲| 大片免费播放器 马上看| 一区二区三区四区激情视频| 狂野欧美激情性xxxx在线观看| 精品午夜福利在线看| 桃花免费在线播放| 国产极品粉嫩免费观看在线 | 久久精品夜色国产| 综合色丁香网| a级毛片免费高清观看在线播放| 大码成人一级视频| 一级片'在线观看视频| 精品国产一区二区久久| 亚洲精品色激情综合| 免费人妻精品一区二区三区视频| 这个男人来自地球电影免费观看 | 26uuu在线亚洲综合色| av在线观看视频网站免费| 夜夜看夜夜爽夜夜摸| 欧美高清成人免费视频www| 亚洲国产毛片av蜜桃av| 狠狠精品人妻久久久久久综合| 国产中年淑女户外野战色| 国产淫片久久久久久久久| 国产成人aa在线观看| 成人二区视频| 如何舔出高潮| 丝袜在线中文字幕| 免费看日本二区| 老女人水多毛片| 久久国产精品男人的天堂亚洲 | 国产精品99久久99久久久不卡 | 热re99久久国产66热| a 毛片基地| 免费黄网站久久成人精品| 一级爰片在线观看| 日本黄色日本黄色录像| 三级国产精品欧美在线观看| av福利片在线| 激情五月婷婷亚洲| 好男人视频免费观看在线| 一本大道久久a久久精品| 亚洲国产色片| 美女视频免费永久观看网站| 少妇 在线观看| 校园人妻丝袜中文字幕| 搡老乐熟女国产| 日本猛色少妇xxxxx猛交久久| 女人精品久久久久毛片| 久久午夜综合久久蜜桃| videossex国产| 国产一级毛片在线| 亚洲第一av免费看| 蜜桃在线观看..| 你懂的网址亚洲精品在线观看| 大陆偷拍与自拍| 最近中文字幕2019免费版| 纵有疾风起免费观看全集完整版| 欧美精品一区二区免费开放| 九色成人免费人妻av| 大片免费播放器 马上看| 国产精品一二三区在线看| 涩涩av久久男人的天堂| 亚洲国产精品999| 久久免费观看电影| 国产国拍精品亚洲av在线观看| 精品卡一卡二卡四卡免费| 在线免费观看不下载黄p国产| 狠狠精品人妻久久久久久综合| 久久久国产欧美日韩av| 高清在线视频一区二区三区| 国产乱来视频区| videos熟女内射| 九九爱精品视频在线观看| 亚洲精品第二区| 在现免费观看毛片| 2021少妇久久久久久久久久久| videossex国产| 婷婷色综合www| 国产片特级美女逼逼视频| 亚洲精品第二区| 午夜激情福利司机影院| 免费黄色在线免费观看| 一本大道久久a久久精品| av女优亚洲男人天堂| 最近的中文字幕免费完整| 人妻系列 视频| 十八禁高潮呻吟视频 | 少妇丰满av| 综合色丁香网| 18禁动态无遮挡网站| 亚洲精华国产精华液的使用体验| 最新的欧美精品一区二区| 午夜久久久在线观看| 久久午夜福利片| 中文字幕制服av| 国产伦理片在线播放av一区| 国产精品福利在线免费观看| 日本av手机在线免费观看| 午夜激情福利司机影院| 久久av网站| 天天操日日干夜夜撸| 亚洲国产精品专区欧美| 男男h啪啪无遮挡| 嘟嘟电影网在线观看| 97超碰精品成人国产| 日韩人妻高清精品专区| 成人特级av手机在线观看| 中文乱码字字幕精品一区二区三区| 国产色爽女视频免费观看| 国产黄片美女视频| 国产一区亚洲一区在线观看| 国产在视频线精品| 观看免费一级毛片| 九九在线视频观看精品| 亚洲精品乱久久久久久| 国产精品久久久久久精品电影小说| 观看免费一级毛片| 边亲边吃奶的免费视频| 国国产精品蜜臀av免费| 少妇人妻精品综合一区二区| 免费看日本二区| 热re99久久精品国产66热6| 国内揄拍国产精品人妻在线| 中国三级夫妇交换| 国产黄片视频在线免费观看| 国产av国产精品国产| av女优亚洲男人天堂| 九九爱精品视频在线观看| kizo精华| 久久久久久久亚洲中文字幕| 婷婷色av中文字幕| 日本欧美国产在线视频| 国产成人免费无遮挡视频| 国产精品久久久久成人av| 观看美女的网站| 久久久久人妻精品一区果冻| 六月丁香七月| 毛片一级片免费看久久久久| 亚洲精品乱久久久久久| 日产精品乱码卡一卡2卡三| 你懂的网址亚洲精品在线观看| 欧美人与善性xxx| 极品少妇高潮喷水抽搐| av视频免费观看在线观看| 成年av动漫网址| 欧美日韩av久久| 性色avwww在线观看| av在线播放精品| 国产高清国产精品国产三级| 国产精品女同一区二区软件| 免费观看的影片在线观看| 欧美另类一区| 国产综合精华液| 91精品伊人久久大香线蕉| 精品久久国产蜜桃| 国产精品女同一区二区软件| 毛片一级片免费看久久久久| 国产免费一区二区三区四区乱码| 免费看av在线观看网站| 三上悠亚av全集在线观看 | 大话2 男鬼变身卡| a级毛片在线看网站| 亚洲欧美精品专区久久| 又粗又硬又长又爽又黄的视频| 国产高清国产精品国产三级| 免费观看性生交大片5| 最后的刺客免费高清国语| 国产亚洲精品久久久com| 美女cb高潮喷水在线观看| 久久久久国产精品人妻一区二区| 纯流量卡能插随身wifi吗| kizo精华| 国产女主播在线喷水免费视频网站| 亚洲精品日韩av片在线观看| 爱豆传媒免费全集在线观看| 亚洲欧洲精品一区二区精品久久久 | 久久6这里有精品| 国产淫片久久久久久久久| 人妻系列 视频| 久久久久久久国产电影| 国产毛片在线视频| 两个人的视频大全免费| 日韩免费高清中文字幕av| 麻豆乱淫一区二区| 亚洲人成网站在线观看播放| 国产精品99久久久久久久久| 久久99一区二区三区| 精品午夜福利在线看| 国产美女午夜福利| 一个人看视频在线观看www免费| 3wmmmm亚洲av在线观看| 好男人视频免费观看在线| 成人美女网站在线观看视频| 午夜日本视频在线| 久久ye,这里只有精品| 日韩一区二区三区影片| 国产成人一区二区在线| 极品人妻少妇av视频| 久久午夜福利片| 久久久久久久亚洲中文字幕| 婷婷色麻豆天堂久久| 国产av国产精品国产| 亚洲国产毛片av蜜桃av| 交换朋友夫妻互换小说| 久久人人爽av亚洲精品天堂| 欧美精品亚洲一区二区| 日本欧美视频一区| 纵有疾风起免费观看全集完整版| 大片电影免费在线观看免费| 亚洲精品成人av观看孕妇| 欧美+日韩+精品| 免费播放大片免费观看视频在线观看| 久久韩国三级中文字幕| 久久久久久人妻| 熟女电影av网| 亚洲国产精品专区欧美| 热99国产精品久久久久久7| 久久狼人影院| 午夜福利网站1000一区二区三区| 亚洲av福利一区| 国产成人aa在线观看| 精品少妇黑人巨大在线播放| 日本午夜av视频| av卡一久久| av线在线观看网站| 亚洲经典国产精华液单| 精品国产一区二区久久| 一区二区三区四区激情视频| 熟妇人妻不卡中文字幕| 熟女av电影| 国产成人精品无人区| 97超视频在线观看视频| 午夜91福利影院| a级毛色黄片| 亚洲精华国产精华液的使用体验| 国产精品成人在线| 欧美少妇被猛烈插入视频| 丝袜脚勾引网站| 国产在线视频一区二区| 国产成人免费观看mmmm| 一级毛片我不卡| 久久这里有精品视频免费| 在线天堂最新版资源| 亚洲国产成人一精品久久久| 伊人久久精品亚洲午夜| 精品国产乱码久久久久久小说| 精品少妇内射三级| 黄色欧美视频在线观看| 亚洲欧美一区二区三区黑人 | 日韩精品有码人妻一区| 一级毛片我不卡| 国产又色又爽无遮挡免| 欧美日韩在线观看h| 一本大道久久a久久精品| 赤兔流量卡办理| 一级,二级,三级黄色视频| 免费久久久久久久精品成人欧美视频 | 国产91av在线免费观看| 亚洲成色77777| xxx大片免费视频| 午夜激情福利司机影院| 午夜免费男女啪啪视频观看| 亚洲精品亚洲一区二区| 久久午夜综合久久蜜桃| 成人二区视频| 精品酒店卫生间| 亚洲av男天堂| 最近手机中文字幕大全| 免费人成在线观看视频色| 男女边摸边吃奶| 黄色怎么调成土黄色| 熟妇人妻不卡中文字幕| 成人免费观看视频高清| 国产欧美另类精品又又久久亚洲欧美| 亚洲精品国产av成人精品| 欧美97在线视频| 只有这里有精品99| 一二三四中文在线观看免费高清| 尾随美女入室| 美女xxoo啪啪120秒动态图| 老熟女久久久| 亚洲怡红院男人天堂| 一级黄片播放器| 交换朋友夫妻互换小说| 亚洲欧美中文字幕日韩二区| 国产成人精品无人区| 日韩免费高清中文字幕av| 黄色日韩在线| 美女内射精品一级片tv| av福利片在线观看| 久久午夜福利片| 国产精品一区二区三区四区免费观看| 丰满迷人的少妇在线观看| 亚洲丝袜综合中文字幕| 又粗又硬又长又爽又黄的视频| 精品亚洲成国产av| 99热网站在线观看| 在线亚洲精品国产二区图片欧美 | 搡老乐熟女国产| av专区在线播放| xxx大片免费视频| 91成人精品电影| 日本wwww免费看| 国产精品久久久久久久久免| 精华霜和精华液先用哪个| 在线观看www视频免费| 久久久午夜欧美精品| 久久久久精品性色| 伊人亚洲综合成人网| 久久久久网色| 中文天堂在线官网| a 毛片基地| 午夜福利网站1000一区二区三区| 中文乱码字字幕精品一区二区三区| 肉色欧美久久久久久久蜜桃| 99久久精品国产国产毛片| 成人亚洲欧美一区二区av| 日日摸夜夜添夜夜爱| 久久鲁丝午夜福利片| 亚洲精品久久午夜乱码| 人人妻人人爽人人添夜夜欢视频 | 男女无遮挡免费网站观看| 黑人高潮一二区| 日本91视频免费播放| 搡女人真爽免费视频火全软件| 亚洲精品国产av蜜桃| 亚洲精品日韩av片在线观看| 午夜精品国产一区二区电影| 国产伦精品一区二区三区视频9| 久久久久久久大尺度免费视频| 中文欧美无线码| 性色av一级| 只有这里有精品99| 另类精品久久| 亚洲欧美精品专区久久| 在线观看www视频免费| 一区二区三区精品91| 国产日韩欧美视频二区| 国产黄频视频在线观看| 男人狂女人下面高潮的视频| 少妇丰满av| 久久久久久久国产电影| 亚洲美女视频黄频| 在线观看人妻少妇| 亚洲自偷自拍三级| 免费人成在线观看视频色| 少妇的逼好多水| 免费人成在线观看视频色| 午夜激情久久久久久久| 赤兔流量卡办理| 亚洲欧洲精品一区二区精品久久久 | 中文字幕亚洲精品专区| 精品国产一区二区久久| av在线老鸭窝| 国产亚洲91精品色在线| 久久毛片免费看一区二区三区| 伦理电影免费视频| 在线精品无人区一区二区三| 亚洲欧美日韩卡通动漫| 国产高清不卡午夜福利| 男人和女人高潮做爰伦理| 午夜福利在线观看免费完整高清在| 日本欧美国产在线视频| 日韩一本色道免费dvd| 亚洲精品成人av观看孕妇| 久久久午夜欧美精品| 国产精品一二三区在线看| 国产精品成人在线| 狠狠精品人妻久久久久久综合| 久久久久精品久久久久真实原创| 伊人久久国产一区二区| 国产一区亚洲一区在线观看| av专区在线播放| 精品一区在线观看国产| 国产成人一区二区在线| 午夜福利视频精品| 欧美区成人在线视频| 大香蕉97超碰在线| 男女啪啪激烈高潮av片| 亚洲av综合色区一区| 欧美日韩精品成人综合77777| 国产爽快片一区二区三区| 国产精品秋霞免费鲁丝片| av在线app专区| 国产一区二区三区av在线| 亚洲四区av| 在线天堂最新版资源| 丰满少妇做爰视频| 黄色一级大片看看| 18禁在线播放成人免费| 欧美日本中文国产一区发布| 王馨瑶露胸无遮挡在线观看| 高清黄色对白视频在线免费看 | 最新的欧美精品一区二区| 色视频www国产| 久久国产乱子免费精品| 成年av动漫网址| 国产成人免费观看mmmm| 在线观看免费视频网站a站| 狂野欧美激情性xxxx在线观看| 亚洲,欧美,日韩| 啦啦啦视频在线资源免费观看| 黄色日韩在线| 亚洲精品日本国产第一区| av网站免费在线观看视频| 国产日韩欧美视频二区| 久久久久精品久久久久真实原创| tube8黄色片| 国产亚洲91精品色在线| 欧美老熟妇乱子伦牲交| 久久6这里有精品| 欧美日韩综合久久久久久| 国产精品熟女久久久久浪| 91午夜精品亚洲一区二区三区| 日本黄色片子视频| 99久久精品一区二区三区| 久久久久人妻精品一区果冻| av有码第一页| 一本大道久久a久久精品| 成人毛片a级毛片在线播放| 97精品久久久久久久久久精品| 在线观看免费日韩欧美大片 | 女人久久www免费人成看片| 精品国产国语对白av| 亚洲欧美一区二区三区黑人 | 亚洲精品乱码久久久久久按摩| 青春草国产在线视频| 哪个播放器可以免费观看大片| 乱人伦中国视频| 日韩中文字幕视频在线看片| 蜜桃在线观看..| 一区二区三区四区激情视频| 国产精品久久久久久久电影| av网站免费在线观看视频| 国产老妇伦熟女老妇高清| 婷婷色麻豆天堂久久| 久久人人爽人人片av| 午夜福利网站1000一区二区三区| 欧美日韩视频高清一区二区三区二| 久久久久久久精品精品| 国产精品麻豆人妻色哟哟久久| 婷婷色综合大香蕉| 天堂俺去俺来也www色官网| av网站免费在线观看视频| 我要看黄色一级片免费的| 亚洲国产日韩一区二区| 久久ye,这里只有精品| 另类亚洲欧美激情| 国产亚洲91精品色在线| 久久久国产欧美日韩av| 91aial.com中文字幕在线观看| 99久久精品国产国产毛片| av有码第一页| 成人影院久久| 日韩精品免费视频一区二区三区 | 涩涩av久久男人的天堂| 亚洲怡红院男人天堂| 国产爽快片一区二区三区| 久久精品国产自在天天线| 久久久久网色| 成年人午夜在线观看视频| 亚洲在久久综合| 伦理电影免费视频| 午夜视频国产福利| 国产午夜精品久久久久久一区二区三区| 国产美女午夜福利| 国产永久视频网站| 国产精品久久久久久精品电影小说| 国产免费一级a男人的天堂| 久久久久精品性色| 肉色欧美久久久久久久蜜桃| 丰满少妇做爰视频| 亚洲成色77777| 少妇猛男粗大的猛烈进出视频| av有码第一页| 国语对白做爰xxxⅹ性视频网站| 亚洲电影在线观看av| 日本欧美国产在线视频| 两个人的视频大全免费| 国产淫片久久久久久久久| 成人亚洲精品一区在线观看| 人人澡人人妻人| 人人妻人人爽人人添夜夜欢视频 | 99久久精品国产国产毛片| 国产男女超爽视频在线观看| av卡一久久| 成人亚洲欧美一区二区av| 国语对白做爰xxxⅹ性视频网站| 精品国产露脸久久av麻豆| 日日爽夜夜爽网站| 人妻制服诱惑在线中文字幕| 久久99热这里只频精品6学生| 内射极品少妇av片p| 国产高清有码在线观看视频| 三上悠亚av全集在线观看 | 欧美亚洲 丝袜 人妻 在线| 国产成人aa在线观看| 精品人妻偷拍中文字幕| 国产淫片久久久久久久久| 亚洲第一区二区三区不卡| 女性被躁到高潮视频| 日本黄大片高清| 2021少妇久久久久久久久久久| 最近中文字幕2019免费版| 日韩免费高清中文字幕av| 寂寞人妻少妇视频99o| 男人爽女人下面视频在线观看| 交换朋友夫妻互换小说| 日韩 亚洲 欧美在线| 亚洲精品视频女| 三级国产精品片| 亚洲熟女精品中文字幕| 精品99又大又爽又粗少妇毛片| 精品一区二区免费观看| av黄色大香蕉| 精品午夜福利在线看| 秋霞伦理黄片| 久久久久人妻精品一区果冻| 色5月婷婷丁香| 久久久久久久精品精品| 五月开心婷婷网| 国产免费一区二区三区四区乱码| 精品人妻偷拍中文字幕| 乱人伦中国视频| 久久久久人妻精品一区果冻| 高清午夜精品一区二区三区| 免费看av在线观看网站| 又粗又硬又长又爽又黄的视频| 黄色配什么色好看| 国产美女午夜福利| 色婷婷av一区二区三区视频| 亚洲国产精品999| 2021少妇久久久久久久久久久| 哪个播放器可以免费观看大片| 亚洲三级黄色毛片| 91精品国产国语对白视频| 久久免费观看电影| 97在线人人人人妻| 丰满迷人的少妇在线观看| 精品熟女少妇av免费看| 91精品国产九色| 国产精品免费大片| 欧美最新免费一区二区三区| 国产乱来视频区| 99久久中文字幕三级久久日本| 国产成人一区二区在线| 女性被躁到高潮视频| 日韩精品有码人妻一区| 亚洲精华国产精华液的使用体验| 夜夜骑夜夜射夜夜干| 精华霜和精华液先用哪个| 国产欧美日韩精品一区二区| 嫩草影院入口| 国产精品国产三级专区第一集| 日本91视频免费播放| 日本爱情动作片www.在线观看| 久久久久久久久久久久大奶| 高清在线视频一区二区三区| 在线观看美女被高潮喷水网站| 国产女主播在线喷水免费视频网站| 亚洲美女搞黄在线观看| 成人漫画全彩无遮挡| 三级国产精品欧美在线观看| 亚洲美女搞黄在线观看| 一级二级三级毛片免费看| 人妻夜夜爽99麻豆av| 亚洲美女搞黄在线观看| 99九九线精品视频在线观看视频| 大话2 男鬼变身卡| 亚洲不卡免费看| 久久人人爽av亚洲精品天堂| 纵有疾风起免费观看全集完整版| 国产深夜福利视频在线观看| 国产精品女同一区二区软件| 91久久精品电影网| av在线app专区| 免费观看性生交大片5| 日韩av在线免费看完整版不卡| 国产色爽女视频免费观看| 高清不卡的av网站| 欧美亚洲 丝袜 人妻 在线| 国产色婷婷99| 久久午夜福利片| 欧美日韩视频精品一区| 久久婷婷青草| 午夜福利影视在线免费观看| av福利片在线| 国产精品不卡视频一区二区| 老司机亚洲免费影院|