2015-05-08 2 views
4

Я использовал кодек G729 в ​​своем приложении VOIP, когда приложение предназначено только для armv7, оно отлично работает. Калли слышит голос. Затем я поворачиваюсь к arm64, вызывающий голос больше не слышит. Я записываю входные данные необработанного голоса до и после кодека G729 как на устройстве armv7, так и на устройстве arm64 со стороны вызывающего абонента, а затем обратно на данные G729. Я считаю, что преобразованный задний голос с устройства armv7 намного лучше, чем устройство arm64.Кодек G729, скомпилированный для iOS arm64, не работает должным образом

+0

В отличие от сайтов на форуме, мы не используем «Спасибо» или «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

+0

может ур ур код? – DareDevil

ответ

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) на 64 бит, поскольку длинный путь больше на 64 бит на ARM-процессоре (я тестирую iPhone 4, armv7, 32 бит и iPhone 5s, arm64, 64 бит).

Таким образом, в основном на 64 бит сравнение всегда будет недействительным, так как второй член всегда отрицательный, а UWord32 всегда будет положительным.

Мое решения использовать жёстко прописанные результаты вычитания на 32 бита, поэтому с помощью 0x3ffffffL для первых условного и 0x1ffffffL для второго, устраняет проблему качества голоса для меня:

lpc.c:643 if ((UWord32)(t0 - 0xff000000L) < 0x3ffffffL) 
lpc.c:698 if ((UWord32)(t0 - 0xfe000000L) < 0x1ffffffL) 

Надеется, что это помогает.

+0

Да, это так, спасибо, большое спасибо – Liangxiu

+0

Ты спас мой брат жизни! Выкапывал это почти месяц. Спасибо тебе большое! :) – Erfan

+0

Большое вам спасибо - хотел бы я мог дать этот ответ больше upvotes –

Смежные вопросы