我在我的VOIP應用中使用了G729編解碼器,當應用程序目標只有armv7時,它工作正常。被叫方可以清楚地聽到我的聲音。然後我轉向arm64,被叫不再清楚地聽到我的聲音。我在G729編解碼器之前和之後在來電端的armv7設備和arm64設備上錄製輸入語音原始數據,然後將G729編碼數據轉回。我發現從armv7設備轉換回來的聲音比arm64設備好得多。針對iOS arm64編譯的G729編解碼器無法正常工作
4
A
回答
5
這取決於您正在使用的G729實現,但如果您使用的是Samuel Vinson's,我相信我發現了這個問題。
在lpc.c
有一個結果,並分別在線路643的兩個值和698之間的減法之間的比較:
lpc.c:643 if ((UWord32)(t0 - 0xfe000000L) < 0x01ffffffL - 0xfe000000L)
lpc.c:698 if ((UWord32)(t0 - 0xff000000L) < 0x00ffffffL - 0xff000000L)
的0x00ffffffL - 0xff000000L
結果是1ffffff
(33554431
)在32位,但ffffffff01ffffff
(-4261412865
),因爲在ARM處理器(我正在測試iPhone 4,armv7,32位和iPhone 5s,arm64,64位)上64位長度較長。
因此,基本上在64位上,比較總是會失敗,因爲第二項總是負值,並且UWord32
總是正值。
我的解決方案是使用32位減法的硬編碼的結果,所以 使用0x3ffffffL
爲第一條件和0x1ffffffL
第二,修復了語音質量問題對我來說:
lpc.c:643 if ((UWord32)(t0 - 0xff000000L) < 0x3ffffffL)
lpc.c:698 if ((UWord32)(t0 - 0xfe000000L) < 0x1ffffffL)
希望這幫助。
相關問題
- 1. Freeswitch編解碼器G729
- 2. 網址編碼無法正常工作
- 3. Android中的G729編解碼器支持
- 4. 啓用iPhone的linphone G729編解碼器
- 5. leptonica 1.69針對iOS(armv7,armv7s和arm64)的交叉編譯
- 6. G729編解碼器是32kbps還是8kbps?
- 7. 安裝PECL memcache的.. gcc編譯器將無法正常工作
- 8. 將G729編解碼器添加到CSIPSimple
- 9. 編譯爲JS後Dart代碼無法正常工作
- 10. 針對VxWorks的GCC交叉編譯器無法編譯C++
- 11. TFS門控編譯進度指示器無法正常工作
- 12. ResponsiveVoice.js與Phonegap編譯器無法正常工作
- 13. Angular指令無法編譯,無法正常工作
- 14. PHP7無法在arm64上編譯(OrangePI PC2)
- 15. 對URL進行編碼無法正常工作
- 16. 針對iOS的Phonegap背景圖像無法正常工作
- 17. 針對iOs的Facebook SDK無法正常工作
- 18. 谷歌地圖地理編碼器無法正常工作
- 19. 地理編碼器無法正常工作HTML
- 20. 編譯後的Java文件輸入無法正常工作
- 21. 文件輸入流在編譯器中正常工作,但在編譯後無法工作
- 22. CMAKE無法正常工作(MySQL OS X上)編譯後生成
- 23. 數組編輯無法正常工作
- 24. vim編輯vimrc無法正常工作?
- 25. Primefaces行編輯無法正常工作
- 26. 編譯libsqlite3.so在CentOS 5.9上無法正常工作x86 x86
- 27. Again:UnicodeEncodeError:ascii編解碼器無法編碼
- 28. 編寫針對iOS 6編譯的iOS7代碼Base SDK
- 29. 'gulp-jade'無法正常工作或將html編譯爲html
- 30. GPG解密器無法正常工作
與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 刪除 - 從帖子)。 –
可以üPLZ分享你的代碼嗎? – DareDevil