自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在x86平臺上優(yōu)化安卓的多媒體類應(yīng)用

開發(fā)
眾所周知,由于安卓對網(wǎng)絡(luò)流媒體格式的解析支持的不夠好,所以當(dāng)前市面上的在線視頻提供商如優(yōu)酷,樂視,暴風(fēng)影音等鮮有直接使用安卓的多媒體播放器,他們多是基于開源的FFmpeg加上自己的解碼庫,開發(fā)自己的播放器。

眾所周知,由于安卓對網(wǎng)絡(luò)流媒體格式的解析支持的不夠好,所以當(dāng)前市面上的在線視頻提供商如優(yōu)酷,樂視,暴風(fēng)影音等鮮有直接使用安卓的多媒體播放器,他們多是基于開源的FFmpeg加上自己的解碼庫,開發(fā)自己的播放器。這樣做的好處是可以方便的解析M3U8和FLV等流媒體格式,又可以支持RM和RMVB等比較流行的視頻格式,還不用跟著谷歌去不斷的更新安卓多媒體播放器。但是也帶來了一個問題,用自己開發(fā)的多媒體播放器在多數(shù)情況下就只能使用軟件來解碼視頻文件,而無法使用GPU的硬件加速能力,這會帶來過高的CPU占用率,進(jìn)而使得播放視頻時的手機功耗過大,很大的影響了用戶體驗。

這個問題在x86平臺上尤其明顯,由于這些多媒體類應(yīng)用沒有針對x86平臺做過優(yōu)化,所以其本地代碼仍然是基于ARM編譯器編譯的,直接運行在x86平臺上,還要做一次二進(jìn)制轉(zhuǎn)換,這對于軟件解碼造成的過高CPU占用率無異于雪上加霜,會導(dǎo)致更高的CPU占用率和更高的手機功耗。

我們曾經(jīng)直接將樂視和暴風(fēng)影音的安卓客戶端(ARM版本)直接運行在Intel***的CLVT+ 平臺的參考樣機上,效果很差,CPU占用率竟然高達(dá)60%,還有卡頓的現(xiàn)象,但是經(jīng)過Intel Atom平臺SSSE3和Yasm指令集的優(yōu)化,并且用ICC(Intel C/C++ Compiler)工具鏈編譯以后,性能提升非常明顯,CPU占用率竟然下降到13%以下,這已經(jīng)明顯優(yōu)于同級別ARM平臺運行此應(yīng)用時的性能。

以下是對比樂視安卓客戶端的ARM版本和x86優(yōu)化后的版本運行在Intel參考樣機上的CPU占用率對比圖,性能有了4.5倍的提升。


圖一:樂視客戶端優(yōu)化對比

暴風(fēng)影音經(jīng)過Atom 平臺SSSE3和Yasm指令集的優(yōu)化,性能提升更明顯,在K900上測試,優(yōu)化前的ARM版本和優(yōu)化后的x86版本CPU占用率從40%下降到3%,性能有了13倍的提升。


圖二:樂視客戶端優(yōu)化對比

取得這么大的性能提升,連這些ISV都驚嘆不已,究竟是如何做到的呢?

首先,Intel的ATOM平臺支持SSSE3指令集,這些指令集對于優(yōu)化YUV轉(zhuǎn)RGB數(shù)據(jù)***可能有16倍的性能提升,而對于多數(shù)在線視頻提供商使用的FFmpeg開源庫,有大量的YUV轉(zhuǎn)RGB需要處理,因此性能會有提升。

其次FFmpeg項目中有大量基于x86優(yōu)化過的匯編代碼,而這些代碼在基于ARM平臺做交叉編譯時一般會被忽略掉。使用YASM編譯工具可以***限度的復(fù)用這些基于x86優(yōu)化過的匯編代碼,只有話費很少的精力,就可以獲得很高的性能提升。

使用YASM以后,對FFmpeg和X264進(jìn)行性能測試結(jié)果如下:


圖三:YASM對FFmpeg和X264優(yōu)化性能對比

基于ICC對本地庫進(jìn)行重編譯,也會使得性能提升。ICC完全兼容GCC,并對Intel ATOM進(jìn)行了寄存器編譯優(yōu)化,通過ICC編譯后的本地代碼,***可以有30%的性能提升。

除了以上各種手段以為,Intel還給合作伙伴提供了GPA(Intel Graphics Performance Analyzer) 和Intel Vtune Amplifier 兩個工具用于開發(fā)過程中的調(diào)試。GPA可以實時跟蹤應(yīng)用運行時CPU和GPU的占用率,用于監(jiān)測應(yīng)用運行時是否有死鎖點。Vtune可以收集應(yīng)用運行一段時間內(nèi)的所有操作,跟蹤到每一條指令的運行。正是由于有這些豐富的調(diào)試手段,我們的合作伙伴才可以在短時間內(nèi)大幅度提高IA平臺上多媒體播放的性能。

引用一位樂視的多媒體工程師的話:“看著自己的多媒體應(yīng)用在x86平臺上可以高效流暢的運行,是一件非常有成就感的事!” 我們也希望越來越多的多媒體應(yīng)用通過優(yōu)化以后,可以在x86平臺上更高效流暢的運行。(作者:王松月 Intel SSG DRD)

責(zé)任編輯:林師授 來源: 51CTO
相關(guān)推薦

2010-02-04 16:27:24

Android X86

2022-01-21 10:35:03

Windows 11微軟安卓

2010-12-09 14:22:08

2011-02-20 11:21:26

2011-11-03 09:42:20

虛擬化硬件虛擬化輔助虛擬化

2011-12-13 10:03:05

RISCX86平臺服務(wù)器

2011-04-11 09:36:40

2016-12-28 09:30:37

Andriod安卓平臺依賴注入

2013-09-29 15:05:53

聯(lián)想實驗室云計算

2011-10-20 10:18:37

2012-06-21 09:45:43

虛擬化

2023-09-05 06:55:08

鴻蒙系統(tǒng)分布式OS

2012-08-17 15:26:16

安騰處理器X86平臺

2019-12-25 14:00:53

Linux安卓 8.1 Oreo應(yīng)用程序

2009-03-16 08:54:00

x86CPUIntel

2012-02-13 10:08:06

ARMWindows 8X86

2012-12-24 09:27:49

企業(yè)關(guān)鍵RISCx86

2021-09-03 07:55:00

Linux bootloader Linux 系統(tǒng)

2011-12-01 11:09:48

AMDx86服務(wù)器英特爾

2012-08-22 11:12:11

Ubuntu
點贊
收藏

51CTO技術(shù)棧公眾號