作者: kennylam777 時間: 2013-11-3 08:34 標題: 技術貼,有答案-Qualcomm Snapdragon硬解解禁, VC1/MPEG2/WMA通殺
本帖最後由 kennylam777 於 2014-6-20 11:37 編輯
-----------English-----------
Title: Unlocking hardware codecs for VC1/MPEG-2/WMA on Qualcomm Snapdragon platforms
If you need english explaination, please contact me on XDA-developers. As this article was written in Cantonese, chinese-to-english translator won't help.
To those found that was not working, please be reminded that the "libOmxCore.so" plays an important role in this mod.
Suggested source of extracting libOmxCore.so
S4 -> CM11 binary of any MSM8960 devices (e.g. Sony Xperia V)
S4 Pro/600 -> Nexus 4 factory image
800 -> Nexus 5 factory image
I had made this mod working on following devices (ALL stock ROM):
Sony Xperia V (4.1/S4 8960), with libOmxCore.so from CM10.2
ASUS new PadFone infinity (4.2/Snapdragon 800 8974), with libOmxCore.so from Nexus 5 (Factory 4.4.2 image)
Sony Xperia Z (4.2/S4 Pro 8064), with libOmxCore.so from Nexus 4 (Factory 4.4.2 image)
------------------------------
改機涉及風險, 改機後可能變磚, 或者失去保養, 改機者請自行負責。
以下方法需要使用root, 然而root既方法太多而部部機都唔同, 我唔會解答「點樣root」既疑問, 請自行google。
我用緊new PadFone Infinity的, Snapdragon 800開足四核軟解都夠頂唔少1080P video format, 包括WMV9/VC1/H264/MPEG2等等, 但一來食電又熱, 更大問題係VC1呢D format行1080P始終有時唔夠順....
參考過呢個post: 大發現!解除Tegra 3硬解MPEG2封印! http://www.hkepc.com/forum/viewthread.php?tid=1919805
發現/system/etc/media_codecs.xml 可以控制codecs開關
咁又搵到Qualcomm用既decode name: https://android.googlesource.com ... try_table_android.c
係以OMX.qcom.video.decoder開頭的,
咁我攞個media_codecs.xml落黎睇睇啦, 見到係咁樣, 理應剷咗個<!-- --> section就得
[attach]1600748[/attach]
root完機, 改返個media_codecs.xml, upload返上去, 結果仲係唔得.....
搞完一大輪, 先發現原來/system/lib/libOmxCore.so有竅妙, 雖然qc_registry_table_android.c寫齊codec, video decoder既/system/lib/libOmxVdec.so亦有寫齊VC1/MPEG2硬解既部份, 但廠商應該係受於license限制, compile果陣要響OmxCore度抽走相關codec
咁我攞咗同樣係Snapdragon 800既Nexus 5個libOmxCore.so同NPFI個libOmxCore.so, 比較之下見到NPFI係冇咗vc1, 始終Nexus 5係有AOSP support, compile果陣最少qc_registry_table_android係齊

最快最簡單既方法係, 用Nexus 5個libOmxCore.so replace入NPFI既/system/lib/libOmxCore.so, check埋media_codecs.xml, 再用BSPlayer就得咗。
建議提取來源:
Snapdragon 800 -> Nexus 5
Snapdragon 600 -> Nexus 7 2013
Snapdragon S4 Pro -> Nexus 4
緊記backup, 唔得都有得restore
方法1總結
====================
1. libOmxCore.so 要有對應既table, 例如"OMX.qcom.video.decoder.vc1"要用"libOmxVdec.so"既"video_decoder.vc1", 冇的話就冇辦法, 以Snapdragon黎講, 我見S4 Pro(8064)同Snapdragon 800對應既.so都有少少唔同, 唔同系列唔可以互換
2. media_codes.xml要有對應MIME type既entry
折衷方法2
========================
用hex editing既方法, replace咗libOmxCore.so入面兩樣嘢
1. "video_decoder.h263" -> "video_decoder.vc1"
2. "OMX.qcom.video.decoder.h263" -> "OMX.qcom.video.decoder.vc1"
由於長度唔同, vc1呢個字一定要用0x00埋尾
再配合media_codecs.xml既修改, 就可以放棄h263硬解黎換VC1硬解, 而呢個方法響一部用Snapdragon S4 Pro既Xperia Z度係成功的
----------------------------------------------
各種格式於media_codecs.xml既寫法, 經測試MXPlayer係最好, 但最好試埋BSPlayer先落定論
MPEG2:
- <MediaCodec name="OMX.qcom.video.decoder.mpeg2" type="video/mpeg2" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports"/>
- <Quirk name="defers-output-buffer-allocation"/>
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.vc1" type="video/x-ms-wmv" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports"/>
- <Quirk name="defers-output-buffer-allocation"/>
- </MediaCodec>
- <MediaCodec name="OMX.qcom.video.decoder.divx" type="video/divx" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports"/>
- <Quirk name="defers-output-buffer-allocation"/>
- </MediaCodec>
- <MediaCodec name="OMX.qcom.audio.decoder.wma" type="audio/x-ms-wma" >
- <Quirk name="requires-allocate-on-input-ports" />
- <Quirk name="requires-allocate-on-output-ports"/>
- <Quirk name="defers-output-buffer-allocation"/>
- </MediaCodec>
作者: kennylam777 時間: 2013-11-3 08:38
本帖最後由 kennylam777 於 2013-11-19 02:28 編輯
NPFI改用Nexus 5既libOmxCore.so後, 試過可用硬解既format
驗明正身, search我D post都知我呢期買咗new PadFone infinity, Snapdragon 800乜都好, 冇理由播片會輸大陸機.....

=====1080 only=====
1. VC1@WMV, 1080p25
Download: https://mega.co.nz/#!YIF2QRIZ!GS ... itI1K8MbvpqGZMrRiKA

2. MPEG2@TS, 1080i60
Download: https://mega.co.nz/#!MY1wGAaB!X1 ... Erc6tBVEAbRS8Djo_3E

3. DIVX@AVI, 1080p30

4. H264@MKV/MP4
一向都得就唔貼了
我部new PadFone infinity要replace咗libOmxCore.so先可以用MXPlayer硬解VC1/MPEG2/DIVX, 可以見到唔係H/W就係H/W+
BSPlayer建議setting:
[attach]1606539[/attach]
[attach]1606540[/attach]
作者: god_md5 時間: 2013-11-8 20:18
高手,高手,xda都未有解決方法,mpeg2軟解又多noise..
作者: Ryan69 時間: 2013-11-8 21:00
工程師岀沒!?
作者: free3sky 時間: 2013-11-8 22:00
thx share ^^
作者: seasonpp 時間: 2013-11-8 23:12
極小係呢到出現既post,唔知可唔可以做個apk出黎呢?
作者: kennylam777 時間: 2013-11-9 03:12
識root識用root explorer已經夠做
整apk要攞root access又要認機免刷錯人地部機, 算啦
作者: Activist 時間: 2013-11-9 03:44
請問有冇 MTK6589 方案?
作者: kennylam777 時間: 2013-11-9 03:47
冇用過MTK, 將會有MT6572到手, 到時再試
但media_codecs.xml可以試下跟住呢個表改
https://github.com/Demeterp/w732 ... cs/mtk_omx_core.cfg
唔好用Snapdragon既參數,例如 "<Quirk name="requires-allocate-on-input-ports" />"果D都係Snapdragon專用的, 只跟你部機個media_codec.xml format加嘢黎試
作者: kennylam777 時間: 2013-11-9 04:22
本帖最後由 kennylam777 於 2013-11-9 04:59 編輯
另外搵到個MT6589用既media_codecs.xml
https://github.com/varunchitre15 ... on/media_codecs.xml
人地係做俾呢部嘢
http://forum.xda-developers.com/showthread.php?t=2246874
media_codecs.xml度開晒, 又齊晒entry任抄, 正路應該.so都唔使改, 佢係齊vc1同wma但冇mpeg2囉, 但MTK應該有硬解MPEG2的, 試下加呢句
- <Decoders>
- ...
- <MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG2" type="video/mpeg2" />
- ...
- </Decoders>
http://www.modaco.com/topic/363208-vowney-verne-v5/page-5
再拆咗個ROM黎睇下/system/lib/libMtkOmxVdec.so, 我估MT6589應該有機會開返MPEG2硬解
[attach]1602844[/attach]
另一樣過癮既係有OMX.MTK.VIDEO.DECODER.RV, 知個mime type的話分分鐘RMVB都硬解到, 如果我有MT6589既機, 就會咁試
- <Decoders>
- ...
- <MediaCodec name="OMX.MTK.VIDEO.DECODER.RV" type="video/rv" />
- ...
- </Decoders>
作者: god_md5 時間: 2013-11-15 20:04
Snapdragon 600 -> Nexus 7 2013
這個有問題,Nexus 7 2013 本身無mpeg2,vc1,wmv硬解,只有h264
https://mega.co.nz/#F!eFt2xRLC!Y5NxLzsBeDto3vHTTg71lg
作者: kennylam777 時間: 2013-11-16 15:17
本帖最後由 kennylam777 於 2013-11-16 15:20 編輯
Snapdragon 600 -> Nexus 7 2013
這個有問題,Nexus 7 2013 本身無mpeg2,vc1,wmv硬解,只有h264
...
god_md5 發表於 2013-11-15 20:04
Nexus 5 夠冇啦,我咪又係咁用
libOmxCore.so有就得,其實自己compile的話保證得的
作者: billy555 時間: 2013-11-16 16:42
-----------English-----------
Title: Unlocking hardware codecs for VC1/MPEG-2/WMA on Qualcomm Snapdr ...
kennylam777 發表於 2013-11-3 08:34
請問Snapdragon S4 Pro 可否硬解4k 2160p 片?
作者: oagan 時間: 2013-11-16 16:57
提示: 作者被禁止或刪除 內容自動屏蔽
作者: franklei 時間: 2013-11-16 19:19
勁.....S4 8960 用唔用到?
作者: mtpmanhauyin 時間: 2013-11-16 19:34
咁好ge野放上XDA la
作者: god_md5 時間: 2013-11-17 19:01
回復 12# kennylam777
試左官方原生nexus 7 2013 libOmxCore.so係唔得nexus 5官方都係一樣
作者: kennylam777 時間: 2013-11-18 01:17
其實我用AOSP Nexus 5果個的, 係D人自己compile
作者: kennylam777 時間: 2013-11-18 01:23
見唔見到左邊既嘢?

作者: kennylam777 時間: 2013-11-18 01:37
本帖最後由 kennylam777 於 2013-11-18 01:38 編輯
Xperia V (MSM8960)用到, BSPlayer唔開HW+(4.1 mode)就得
開得返VC1 @ 1080P, MPEG2 @ 1080i都得
而且Xperia V個libOmxCore本來齊codecs, 淨改media_codecs.xml就OK
作者: god_md5 時間: 2013-11-18 20:25
試左兩日NEXUS 7 2013(FLO)都係唔得,抄NEXUS 5個 libOmxCore.so入去係唔得
再抄N5個libOmxVdec.so入去直頭H264都無硬解,這個是原生2013的libOmxCore.so,應該係有,問題係ibOmxVdec.so係甲唔到..(入面可能無)
作者: gl5900as 時間: 2013-11-18 20:34
放D FILES俾人TEST
俾個空間你upload
https://mega.co.nz/
作者: god_md5 時間: 2013-11-18 20:44
回復 22# gl5900as
都唔同機..佢點幫到我
作者: Brainstomer 時間: 2013-11-18 20:49
提示: 作者被禁止或刪除 內容自動屏蔽
作者: god_md5 時間: 2013-11-18 21:10
NEXUS 7 2013 FLO 三個SO同XML,幫手睇下點解會咁
https://dl.dropboxusercontent.com/u/3668343/2013FLO.zip
作者: cyleung19 時間: 2013-11-18 21:24
N7-2013硬解到WMV就正!!!!
作者: kennylam777 時間: 2013-11-18 21:31
本帖最後由 kennylam777 於 2013-11-18 21:33 編輯
試左兩日NEXUS 7 2013(FLO)都係唔得,抄NEXUS 5個 libOmxCore.so入去係唔得
再抄N5個libOmxVdec.so入去直頭H ...
god_md5 發表於 2013-11-18 20:25
我見到最少有VC1/WMV decoder, 你個media_codecs.xml改成點?
Snapdragon硬解有兩個條件要達成:
1. libOmxCore.so要有指定decoder名, 指落相應既so (e.g. libOmxVDec.so)
2. media_codecs.xml要有指定decoder配MIME type的entry
缺一不可。
作者: kennylam777 時間: 2013-11-18 21:38
本帖最後由 kennylam777 於 2013-11-18 21:51 編輯
睇完, 評分如下:
1. media_codecs.xml最少有mpeg2一段
2. libOmxCore.so又有"OMX.qcom.video.decoder.mpeg2", 指去libOmxVdec.so
3. libOmxVdec.so又有"OMX.qcom.video.decoder.mpeg2", 當你係用緊原機個libOmxVdec.so
評語: 綜合以上條件, 最少MPEG2可以硬解的, 而WMV(VC1)/DIVX/WMA唔得係缺少咗media_codecs.xml既entries.
我試過BSPlayer同MXPlayer只要唔係用HW+都會得
[attach]1606537[/attach]
[attach]1606538[/attach]
作者: kennylam777 時間: 2013-11-18 21:43
我用Xperia V既8960都硬解到VC1既WMV@1080p/720p 30fps, 有root有機不妨自已試咗先
作者: kennylam777 時間: 2013-11-18 21:58
本帖最後由 kennylam777 於 2013-11-19 02:32 編輯
upload咗少少 sample video俾大家試, 起碼得唔得都有個標準
1. VC1@WMV 1080p25, 6.5MB
Download: https://mega.co.nz/#!YIF2QRIZ!GS ... itI1K8MbvpqGZMrRiKA
2. MPEG2@TS, 1080 60i, 34.6MB
Download: https://mega.co.nz/#!MY1wGAaB!X1 ... Erc6tBVEAbRS8Djo_3E
作者: god_md5 時間: 2013-11-19 20:25
n7 2013 flo sample video試左mpeg2,我發現bs player開個時係慢d,係試左硬解唔得先軟解
作者: god_md5 時間: 2013-11-24 20:37
再試左幾日,原來本身n7 2013係有mpeg2硬解,不過得480i,估唔到s600硬解仲差過terga3
作者: peaceso 時間: 2013-11-24 20:53
T3 其實不錯!
作者: peaceso 時間: 2013-11-24 20:57
試左兩日NEXUS 7 2013(FLO)都係唔得,抄NEXUS 5個 libOmxCore.so入去係唔得
再抄N5個libOmxVdec.so入去直頭H ...
god_md5 發表於 2013-11-18 20:25
想一想, 如果CPU得, google為何不開?
如果licence, 那為何Nexus 5 有?
我覺得google不會為省licence錢的
作者: 羊仔 時間: 2013-11-24 21:08
OP 真心有用
作者: nyjoker 時間: 2013-11-25 16:10
HTC One (Snapdragon 600) 改 media_codecs.xml 成功打開 mpeg2 硬解,
我都奇怪點解舊既 Snapdragon S3 可以硬解, 新U反而唔得,
萬萬估唔到係比人閹割左...
作者: god_md5 時間: 2013-11-25 20:10
我只係估唔到mpeg2依d咁簡單,gpu本身有都有閹
仲要各大開箱,新聞都講到同s800一樣咁..
作者: oo2oo299999 時間: 2013-11-27 04:39
諗住岩岩買左N7 2013 就想上黎試呢D點知...
作者: ryu 時間: 2013-11-30 02:35
試左n7 2013@CM11+bsplayer可以硬解mpeg2 1080i
作者: oo2oo299999 時間: 2013-11-30 14:25
點試,你有冇改檔案,定就咁CM11就可以解到
作者: rocketeer 時間: 2013-11-30 16:05
唔好意思。新手問一句:
難道用MX player不可以硬體加速VC1,MPEG2?
作者: kennylam777 時間: 2013-11-30 17:49
你睇清楚D, 我Capture D圖都係用MX player的
但唔係部部機一買返黎就得, 有D要改先硬解到
作者: ryu 時間: 2013-11-30 17:59
回復 40# oo2oo299999
冇改檔案,就咁可以硬解到
作者: kennylam777 時間: 2013-11-30 18:04
CM得係好正常, 因為CM班人直接用Qualcomm放出黎套source唔會再搞個decoder table, 而廠商多D licensing既concern先會去搞走某D decoder。
而且我發現, 如果Player揼死個decoder name(例如"OMX.qcom.video.vc1")去試的話, 唔使XML都會攞到個decoder黎用的, 但行H/W+就一定要有XML。
作者: oo2oo299999 時間: 2013-11-30 19:15
CM得係好正常, 因為CM班人直接用Qualcomm放出黎套source唔會再搞個decoder table, 而廠商多D licensing既 ...
kennylam777 發表於 30/11/2013 18:04
(由 HKEPC Android 手機版 發出)
作者: oo2oo299999 時間: 2013-11-30 19:33
would you mind give me cm11 link & upload your XML and libcore
thank very much
作者: god_md5 時間: 2013-11-30 19:35
回復 39# ryu
唔係卦,我昨日先試完cm11 26-11-13個版本,無硬解連開都開唔到
作者: ryu 時間: 2013-11-30 19:52
我用UNOFFICIAL CM11 28112013
http://forum.xda-developers.com/showthread.php?t=2537223
作者: god_md5 時間: 2013-11-30 20:23
本帖最後由 god_md5 於 2013-11-30 21:57 編輯
回復 46# oo2oo299999
一定要用cm Kernel先有,libcore都係用返asop一樣,xml同第一頁個改法係一樣
我都唔係咁明CAF係點解..
----
岩岩試完CM11 ,MX PLAYER 1080I MPEG可以硬解,但跳畫面,眼睇最多得15格,TS同TP都唔得FC意思唔大..
BS PLAYER就可以mPEG 1080I夠格,但TS只可SOFTWARE DECODE但唔甲口型,TP唔得
作者: oo2oo299999 時間: 2013-12-1 05:26
我都刷左CM11,暫時試未改
MX PLAYER冇左HW+,播H264 HI10 VC1 即炒,MPEG 2有HW,普通H264 都會少疾
BS PLAYER播H264 HI10 VC1 會轉行SW,MPEG 2 H264有HW...順
作者: oo2oo299999 時間: 2013-12-1 05:33
h264 hi10@24FPS MKV 92.5MB
https://mega.co.nz/#!fdRhDIRL!VB ... j5NRimuUEVp3l2kRfa8
作者: upsagel 時間: 2013-12-1 10:16
犀利!!!我的s4刷左cm後硬解不能,試試樓主的方法先!
作者: oo2oo299999 時間: 2013-12-1 19:05
好困惑

作者: god_md5 時間: 2013-12-5 20:34
原來moto x 個lib仲新過nexus
http://forum.xda-developers.com/showthread.php?t=2555684
作者: bluesky5889 時間: 2013-12-5 23:53
强大!!必须支持!
作者: god_md5 時間: 2013-12-14 20:06
其實依家cm10.2官方好多問題,wifi有password唔得,硬解h264又lagger
官方話會出新版10.2.1,nexus 7 2013 dj版,無wifi問題.mpeg2 1080i硬解都ok,係有d
h264 唔得
http://forum.xda-developers.com/showthread.php?t=2391779
作者: kennylam777 時間: 2014-1-8 18:51
有D人話Nexus 7 2013搞極都唔得, 我想問你地有冇改libOmxCore.so?
其實可以試下用CM10.2/CM11既libOmxCore.so去取代的
如果CM ROM得, 咁即係Stock Nexus ROM都做咗腳
作者: jojo_cat 時間: 2014-1-8 22:48
回復 57# kennylam777
刚试了cm-10.2.0-flo的libOmxCore.so替换,修改了media_codecs.xml后,用mx player还是不能硬解vc-1
作者: god_md5 時間: 2014-1-9 00:56
Nexus 7 2013官方CM10.2/CM11同stock rom一樣都係無h264以外既硬解,依家cm同asop係一樣
都係無用caf 核心,有都唔一定有其他硬解
作者: tatgor 時間: 2014-1-9 01:17
極Pro@@
作者: 041987 時間: 2014-1-28 20:48
岩岩試g2 未root用es file check
睇左media_codecs.xml同libOmxCore.so都好似冇lock死
但係就冇libOmxVdec.so
睇mpeg2都用緊軟解
應該點做?
作者: 041987 時間: 2014-2-4 14:30
岩岩root完之後試
本身用MX player轉到硬解
但係有聲出黑畫面
應該要點做?
個d檔:
https://dl.dropboxusercontent.co ... frYfOQKM7ONTRXdvWSQ
作者: 迷 時間: 2014-3-6 20:38
回復 10# kennylam777
係部mtk6589 電話試左
1) 加返 <MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG2" type="video/mpeg2" />
2) 雨custom rom 個 libMtkOmxVdec.so 代替原機個
你兩條片 都係硬解唔到的

