本發(fā)明涉及圖像處理領(lǐng)域,特別是涉及一種webp有損壓縮的方法及裝置。
背景技術(shù):
隨著手機(jī)、平板以及數(shù)碼相機(jī)等圖像采集設(shè)備的發(fā)展及圖片像素規(guī)模提升,使得圖像數(shù)據(jù)規(guī)模呈指數(shù)級(jí)增長(zhǎng)。
圖像數(shù)據(jù)規(guī)模的增長(zhǎng),給圖像數(shù)據(jù)存儲(chǔ)和網(wǎng)絡(luò)帶寬帶來(lái)嚴(yán)重的挑戰(zhàn)。為了減少圖像數(shù)據(jù)規(guī)模,可以將圖像數(shù)據(jù)進(jìn)行壓縮存儲(chǔ)和發(fā)送。而由于當(dāng)前主流jpeg、png以及gif等圖片格式的算法優(yōu)化幾乎已達(dá)極致,一種新的圖像壓縮格式webp應(yīng)運(yùn)而生,其可以在不影響用戶體驗(yàn)的情況下減少圖片文件的大小,且兼具有損壓縮和無(wú)損壓縮兩種模式。
現(xiàn)有技術(shù)中,基于opencl的fpga編程的webp有損壓縮,需要先申請(qǐng)fpga內(nèi)部的數(shù)據(jù)存儲(chǔ)空間buffer,并將待處理的數(shù)據(jù)傳輸至buffer內(nèi),接著對(duì)buffer內(nèi)的數(shù)據(jù)進(jìn)行處理,最后讀取處理完畢的數(shù)據(jù),釋放buffer。由于整個(gè)處理流程是串行執(zhí)行的,故其執(zhí)行效率不高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種webp有損壓縮的方法及裝置,目的在于解決現(xiàn)有技術(shù)串行執(zhí)行webp有損壓縮處理流程導(dǎo)致的執(zhí)行效率較低的問(wèn)題。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種webp有損壓縮的方法,該方法包括:
基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將所述buffer節(jié)點(diǎn)添加至第一隊(duì)列,所述buffer節(jié)點(diǎn)包括用于存儲(chǔ)所述原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer;
讀取所述第一隊(duì)列的所述buffer節(jié)點(diǎn),向所述fpga端發(fā)送壓縮指令,以使所述fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)所述原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至所述第二buffer,并將所述buffer節(jié)點(diǎn)添加至第二隊(duì)列;
讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述第二buffer內(nèi)的所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將所述第三buffer添加至第三隊(duì)列;
讀取所述第三隊(duì)列的所述第三buffer,基于所述webp有損壓縮算法,對(duì)所述壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。
可選地,所述讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述第二buffer內(nèi)的所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將所述第三buffer添加至第三隊(duì)列包括:
讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的位于主機(jī)端的所述第三buffer,將所述第三buffer添加至所述第三隊(duì)列。
可選地,在所述基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將所述buffer節(jié)點(diǎn)添加至第一隊(duì)列之前還包括:
向所述fpga端發(fā)送buffer申請(qǐng)指令,讀取所述fpga端的buffer數(shù)量控制變量;
將所述buffer數(shù)量控制變量與預(yù)設(shè)閾值比較大小;
當(dāng)所述buffer數(shù)量控制變量小于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)成功,將所述buffer數(shù)量控制變量加一;
當(dāng)所述buffer數(shù)量控制變量大于或等于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)失敗。
可選地,在所述將所述第三buffer添加至第三隊(duì)列之后還包括:
釋放所述buffer節(jié)點(diǎn),并將所述buffer數(shù)量控制變量減一。
可選地,所述fpga算法邏輯基于opencl編程語(yǔ)言。
此外,本發(fā)明還提供了一種webp有損壓縮的裝置,該裝置包括:
數(shù)據(jù)存儲(chǔ)模塊,用于基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將所述buffer節(jié)點(diǎn)添加至第一隊(duì)列,所述buffer節(jié)點(diǎn)包括用于存儲(chǔ)所述原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer;
壓縮模塊,用于讀取所述第一隊(duì)列的所述buffer節(jié)點(diǎn),向所述fpga端發(fā)送壓縮指令,以使所述fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)所述原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至所述第二buffer,并將所述buffer節(jié)點(diǎn)添加至第二隊(duì)列;
數(shù)據(jù)讀取模塊,用于讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述第二buffer內(nèi)的所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將所述第三buffer添加至第三隊(duì)列;
編碼模塊,用于讀取所述第三隊(duì)列的所述第三buffer,基于所述webp有損壓縮算法,對(duì)所述壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。
可選地,所述數(shù)據(jù)讀取模塊包括:
主機(jī)端讀取單元,用于讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的位于主機(jī)端的所述第三buffer,將所述第三buffer添加至所述第三隊(duì)列。
可選地,還包括:
控制變量讀取模塊,用于向所述fpga端發(fā)送buffer申請(qǐng)指令,讀取所述fpga端的buffer數(shù)量控制變量;
比較模塊,用于將所述buffer數(shù)量控制變量與預(yù)設(shè)閾值比較大?。?/p>
第一判斷模塊,用于當(dāng)所述buffer數(shù)量控制變量小于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)成功,將所述buffer數(shù)量控制變量加一;
第二判斷模塊,用于當(dāng)所述buffer數(shù)量控制變量大于或等于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)失敗。
可選地,還包括:
釋放減一模塊,用于釋放所述buffer節(jié)點(diǎn),并將所述buffer數(shù)量控制變量減一。
可選地,所述fpga算法邏輯基于opencl編程語(yǔ)言。
本發(fā)明所提供的一種webp有損壓縮的方法及裝置,基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將buffer節(jié)點(diǎn)添加至第一隊(duì)列,buffer節(jié)點(diǎn)包括用于存儲(chǔ)原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer;讀取第一隊(duì)列的buffer節(jié)點(diǎn),向fpga端發(fā)送壓縮指令,以使fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將壓縮圖像數(shù)據(jù)存儲(chǔ)至第二buffer,并將buffer節(jié)點(diǎn)添加至第二隊(duì)列;讀取第二隊(duì)列的buffer節(jié)點(diǎn),將第二buffer內(nèi)的壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將第三buffer添加至第三隊(duì)列;讀取第三隊(duì)列的第三buffer,基于webp有損壓縮算法,對(duì)壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。本申請(qǐng)利用多線程并行執(zhí)行的基礎(chǔ),將webp有損壓縮串行處理流程優(yōu)化為流水執(zhí)行,且利用隊(duì)列來(lái)實(shí)現(xiàn)各個(gè)步驟間的同步,進(jìn)而提高了webp有損壓縮的執(zhí)行效率。
附圖說(shuō)明
為了更清楚的說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例所提供的webp有損壓縮方法的一種具體實(shí)施方式的流程示意圖;
圖2為本發(fā)明實(shí)施例所提供的webp有損壓縮裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參見(jiàn)圖1,圖1為本發(fā)明實(shí)施例所提供的webp有損壓縮方法的一種具體實(shí)施方式的流程示意圖,該方法包括以下步驟:
步驟101:基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將所述buffer節(jié)點(diǎn)添加至第一隊(duì)列,所述buffer節(jié)點(diǎn)包括用于存儲(chǔ)所述原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer。
需要說(shuō)明的是,上述第一buffer可以為用于存儲(chǔ)原始圖像yuv數(shù)據(jù)的buffer,具體可以為data_buffer;第二buffer具體可以為result_buffer,用于存儲(chǔ)壓縮結(jié)果數(shù)據(jù)。且可以將buffer節(jié)點(diǎn)添加至第一隊(duì)列的頭部。
顯而易見(jiàn)地,在將原始圖像數(shù)據(jù)存儲(chǔ)至buffer節(jié)點(diǎn)內(nèi)的data_buffer之前,可以對(duì)原始圖像yuv數(shù)據(jù)進(jìn)行劃分和預(yù)處理。
步驟102:讀取所述第一隊(duì)列的所述buffer節(jié)點(diǎn),向所述fpga端發(fā)送壓縮指令,以使所述fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)所述原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至所述第二buffer,并將所述buffer節(jié)點(diǎn)添加至第二隊(duì)列。
具體地,cpu可以讀取第一隊(duì)列頭部的buffer節(jié)點(diǎn),如果第一隊(duì)里為空則等待;如果讀取成功,則向fpga端發(fā)送壓縮控制指令。fpga端根據(jù)接收的壓縮控制指令,基于現(xiàn)有的webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)data_buffer內(nèi)的原始圖像數(shù)據(jù)進(jìn)行壓縮。壓縮完畢后,可以將壓縮圖像數(shù)據(jù)存儲(chǔ)至buffer節(jié)點(diǎn)的result_buffer內(nèi),且將buffer節(jié)點(diǎn)添加至第二隊(duì)列的頭部。
可以理解的是,fpga算法邏輯可以是基于opencl語(yǔ)言編寫的算法邏輯,也可以是基于其它語(yǔ)言編寫的算法邏輯,在此不作限定。
步驟103:讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述第二buffer內(nèi)的所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將所述第三buffer添加至第三隊(duì)列。
具體地,cpu可以讀取第二隊(duì)列的頭部的buffer節(jié)點(diǎn),如果第二隊(duì)列為空,則繼續(xù)等待;如果讀取成功,則可以將result_buffer內(nèi)壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)先申請(qǐng)的第三buffer,然后經(jīng)第三buffer添加至第三隊(duì)列的頭部。
需要說(shuō)明的是,第三buffer可以位于主機(jī)端;也可以為fpga端,在此不作限定。
步驟104:讀取所述第三隊(duì)列的所述第三buffer,基于所述webp有損壓縮算法,對(duì)所述壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。
具體地,cpu可以讀取第三buffer,如果第三隊(duì)列為空,則繼續(xù)等待;如果讀取成功,則可以基于現(xiàn)有的有損壓縮算法,對(duì)壓縮圖像數(shù)據(jù)進(jìn)行熵編碼,編碼后可以將圖像數(shù)據(jù)按照webp文件格式存儲(chǔ),得到所需的有損壓縮數(shù)據(jù)。
可以理解的是,基于cpu的多線程并發(fā),將步驟101、102、103以及104實(shí)現(xiàn)流水執(zhí)行。且利用隊(duì)列來(lái)實(shí)現(xiàn)各個(gè)步驟間的數(shù)據(jù)同步。
本發(fā)明實(shí)施例所提供的webp有損壓縮方法,基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將buffer節(jié)點(diǎn)添加至第一隊(duì)列,buffer節(jié)點(diǎn)包括用于存儲(chǔ)原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer;讀取第一隊(duì)列的buffer節(jié)點(diǎn),向fpga端發(fā)送壓縮指令,以使fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將壓縮圖像數(shù)據(jù)存儲(chǔ)至第二buffer,并將buffer節(jié)點(diǎn)添加至第二隊(duì)列;讀取第二隊(duì)列的buffer節(jié)點(diǎn),將第二buffer內(nèi)的壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將第三buffer添加至第三隊(duì)列;讀取第三隊(duì)列的第三buffer,基于webp有損壓縮算法,對(duì)壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。該方法利用多線程并行執(zhí)行的基礎(chǔ),將webp有損壓縮串行處理流程優(yōu)化為流水執(zhí)行,且利用隊(duì)列來(lái)實(shí)現(xiàn)各個(gè)步驟間的同步,進(jìn)而提高了webp有損壓縮的執(zhí)行效率。
在上述實(shí)施例的基礎(chǔ)上,上述讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述第二buffer內(nèi)的所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將所述第三buffer添加至第三隊(duì)列的過(guò)程可以具體為:讀取所述第二隊(duì)列的所述buffer節(jié)點(diǎn),將所述壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的位于主機(jī)端的所述第三buffer,將所述第三buffer添加至所述第三隊(duì)列。
可以理解的是,webp有損過(guò)程包括壓縮和編碼兩個(gè)過(guò)程,如果將這兩個(gè)步驟均放在fpga端實(shí)現(xiàn),會(huì)使得fpga端的資源不夠用?;诖?,優(yōu)先地,可以將壓縮過(guò)程放在fpga端實(shí)現(xiàn),編碼過(guò)程放在主機(jī)端實(shí)現(xiàn),以緩解fpga端的運(yùn)算壓力。
上述第三buffer可以是由cpu預(yù)先向主機(jī)端申請(qǐng)的buffer,具體可以表現(xiàn)為result_host。
可以看出,本發(fā)明實(shí)施例提供的webp有損壓縮方法,將壓縮過(guò)程放在fpga端實(shí)現(xiàn),編碼過(guò)程放在主機(jī)端實(shí)現(xiàn),解決了現(xiàn)有將壓縮和編碼均放在fpga端實(shí)現(xiàn)導(dǎo)致的fpga端資源不夠用的問(wèn)題,有效地緩解了fpga端的運(yùn)算壓力。
在上述任一實(shí)施例的基礎(chǔ)上,在上述基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將所述buffer節(jié)點(diǎn)添加至第一隊(duì)列之前還可以包括:向所述fpga端發(fā)送buffer申請(qǐng)指令,讀取所述fpga端的buffer數(shù)量控制變量;將所述buffer數(shù)量控制變量與預(yù)設(shè)閾值比較大小;當(dāng)所述buffer數(shù)量控制變量小于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)成功,將所述buffer數(shù)量控制變量加一;當(dāng)所述buffer數(shù)量控制變量大于或等于所述預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)失敗。
需要說(shuō)明的是,如果buffer申請(qǐng)速度大于釋放速度,也會(huì)使得fpga板載內(nèi)存耗盡,為了避免上述問(wèn)題的產(chǎn)生,可以利用控制變量來(lái)實(shí)現(xiàn)。
cpu可以向fpga端申請(qǐng)buffer,此時(shí),cpu可以讀取fpga端的buffer數(shù)量控制變量buffer_num,通過(guò)將buffer數(shù)量控制變量和buffer最大數(shù)量max_buffer_num比較大小,若buffer數(shù)量控制變量小于buffer最大數(shù)量max_buffer_num,則申請(qǐng)成功,且buffer數(shù)量控制變量buffer_num加一;若buffer數(shù)量控制變量大于或等于buffer最大數(shù)量max_buffer_num,申請(qǐng)失敗,繼續(xù)等待。
上述預(yù)設(shè)閾值即buffer最大數(shù)量max_buffer_num可以由fpga端自身的內(nèi)存大小決定。
可以理解的是,申請(qǐng)成功,buffer數(shù)量控制變量則加一,而利用完buffer節(jié)點(diǎn)后,可以將buffer節(jié)點(diǎn)釋放。
作為一種具體實(shí)施方式,在上述將所述第三buffer添加至第三隊(duì)列之后還可以包括:釋放所述buffer節(jié)點(diǎn),并將所述buffer數(shù)量控制變量減一。
可以看出,本發(fā)明實(shí)施例所提供的webp有損壓縮方法,增加buffer數(shù)量控制變量,可以避免fpga端的buffer申請(qǐng)速度大于釋放速度,避免了fpga端板載內(nèi)存的耗盡問(wèn)題的發(fā)生。
下面對(duì)本發(fā)明實(shí)施例提供的webp有損壓縮裝置進(jìn)行介紹,下文描述的webp有損壓縮裝置與上文描述的webp有損壓縮方法可相互對(duì)應(yīng)參照。
圖2為本發(fā)明實(shí)施例所提供的webp有損壓縮裝置的結(jié)構(gòu)框圖,參照?qǐng)D2webp有損壓縮裝置可以包括:
數(shù)據(jù)存儲(chǔ)模塊21,用于基于多線程并行執(zhí)行,將原始圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的fpga端的buffer節(jié)點(diǎn),并將buffer節(jié)點(diǎn)添加至第一隊(duì)列,buffer節(jié)點(diǎn)包括用于存儲(chǔ)原始圖像數(shù)據(jù)的第一buffer以及用于存儲(chǔ)壓縮數(shù)據(jù)的第二buffer;
壓縮模塊22,用于讀取第一隊(duì)列的所述buffer節(jié)點(diǎn),向fpga端發(fā)送壓縮指令,以使fpga端基于webp有損壓縮算法,執(zhí)行fpga算法邏輯,對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮,得出壓縮圖像數(shù)據(jù),將壓縮圖像數(shù)據(jù)存儲(chǔ)至所述第二buffer,并將buffer節(jié)點(diǎn)添加至第二隊(duì)列;
數(shù)據(jù)讀取模塊23,用于讀取第二隊(duì)列的所述buffer節(jié)點(diǎn),將第二buffer內(nèi)的壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的第三buffer,將第三buffer添加至第三隊(duì)列;
編碼模塊24,用于讀取第三隊(duì)列的所述第三buffer,基于webp有損壓縮算法,對(duì)壓縮圖像數(shù)據(jù)進(jìn)行編碼,得出有損壓縮數(shù)據(jù)。
可選地,上述數(shù)據(jù)讀取模塊包括:
主機(jī)端讀取單元,用于讀取第二隊(duì)列的所述buffer節(jié)點(diǎn),將壓縮圖像數(shù)據(jù)存儲(chǔ)至預(yù)申請(qǐng)的位于主機(jī)端的第三buffer,將第三buffer添加至第三隊(duì)列。
可選地,還包括:
控制變量讀取模塊,用于向fpga端發(fā)送buffer申請(qǐng)指令,讀取fpga端的buffer數(shù)量控制變量;
比較模塊,用于將buffer數(shù)量控制變量與預(yù)設(shè)閾值比較大?。?/p>
第一判斷模塊,用于當(dāng)buffer數(shù)量控制變量小于預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)成功,將buffer數(shù)量控制變量加一;
第二判斷模塊,用于當(dāng)buffer數(shù)量控制變量大于或等于預(yù)設(shè)閾值時(shí),則buffer申請(qǐng)失敗。
可選地,還包括:
釋放減一模塊,用于釋放buffer節(jié)點(diǎn),并將buffer數(shù)量控制變量減一。
可選地,上述fpga算法邏輯基于opencl編程語(yǔ)言。
本發(fā)明實(shí)施例所提供的webp有損壓縮裝置,利用多線程并行執(zhí)行的基礎(chǔ),將webp有損壓縮串行處理流程優(yōu)化為流水執(zhí)行,且利用隊(duì)列來(lái)實(shí)現(xiàn)各個(gè)步驟間的同步,進(jìn)而提高了webp有損壓縮的執(zhí)行效率。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(ram)、內(nèi)存、只讀存儲(chǔ)器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動(dòng)磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上對(duì)本發(fā)明所提供的webp有損壓縮方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。