Ошибки при компиляции FFmpeg для windows10/aarch64 с использованием Microsoft Visual Studio 2017 Preview edition
Я пытаюсь скомпилировать FFmpeg (версия Chromium) для конфигурации Windows10/Aarch64, используя выпуск сообщества Microsoft Visual Studio 2017 Preview. Я сталкиваюсь с ошибками в файлах сборки, скопированных ниже (выделено несколько ошибок). Я полагаю, что FFmpeg уже работает для конфигурации Linux/Aarch64 (возможно, с использованием ассемблера GNU), и в этом случае тот же код ассемблера также должен работать и для Microsoft ARM Macro Assembler. Пожалуйста, дайте мне знать, если я что-то здесь упускаю и какие-либо указатели, чтобы помочь устранить ошибки.
D: \ Work \ Chromium_FFmpeg \ chromium \ src> ниндзя -C out\ARM64V8 third_party\ffmpeg ниндзя: вход в каталог `out\ARM64V8' [2/9] ASM obj/third_party/ffmpeg/ffmpeg_internal/ obrenname_liffj.jpg64_c_f_jb_c_64_j64 third_party/ffmpeg/ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj D:/Work/Chromium_FFmpeg/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/tool_win/wolrapper_toolin armasm64.exe /Foobj/third_party/ffmpeg/ffmpeg_internal/autorename_libavcodec_aarch64_fft_neon.obj ../../third_party/ffmpeg/libavcodec/aarch64/autorename_libavcodec_aarch64.64b 64.0: 64-битный 64-разрядный 64- битный (R) 64-разрядный 64-разрядный \Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(1): ошибка A2003: неправильный синтаксис строки: / // Файл создан автоматически. См. Crbug.com/495833. D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(2): ошибка A2230: недопустимая директива препроцессора; распознается только "#line [имя_файла]", включая "fft_neon.S" D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\autorename_libavcodec_aarch64_fft_neon.S(3): предупреждение A4045: отсутствует директива END45: отсутствует директива END fft_neon.S" .,, [6/9] ASM obj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj FAILED: obj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj D:/Work/Chromthon_ot_to_to_p_in_py_pto../../build/toolchain/win/tool_wrapper.py asm-wrapper environment.arm64 armasm64.exe /Foobj/third_party/ffmpeg/ffmpeg_internal/mpegaudiodsp_neon.obj ../../third_party/ffmpeg/libavcodeca mpegaudiodsp_neon.S Microsoft (R) ARM Macro Assembler Версия 14.16.26926.0 для 64 битов D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(1): синтаксис ошибки:200200 / / * D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (2): ошибка A2079: неправильный синтаксис строки; ожидаемый символ * Copyright (c) 2014 Янне Грунау D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(3): ошибка A2079: неправильный синтаксис строки; ожидается символ * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(4): ошибка A2079: неправильный синтаксис строки; ожидается символ * Этот файл является частью FFmpeg. D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(5): ошибка A2079: неправильный синтаксис строки; ожидается символ * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(6): ошибка A2079: неправильный синтаксис строки; ожидается символ * FFmpeg - свободное программное обеспечение; вы можете распространять его и / или D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(7): ошибка A2079: неправильный синтаксис строки; символ ожидается * изменить его в соответствии с условиями GNU Lesser General Public D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(8): ошибка A2079: неправильный синтаксис строки; ожидается символ * Лицензия, опубликованная Фондом свободного программного обеспечения; либо D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(9): ошибка A2079: неправильный синтаксис строки; ожидается символ * версии 2.1 Лицензии или (по вашему выбору) любой более поздней версии. D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(10): ошибка A2079: неправильный синтаксис строки; ожидается символ * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(11): ошибка A2079: неправильный синтаксис строки; ожидаемый символ * FFmpeg распространяется в надежде, что он будет полезен, D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(12): ошибка A2079: неправильный синтаксис строки; символ ожидается * но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; без даже подразумеваемой гарантии D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(13): ошибка A2079: неправильный синтаксис строки; ожидаемый символ * ТОВАРНАЯ ДОСТУПНОСТЬ или ПРИГОДНОСТЬ ДЛЯ ОСОБЕННОЙ ЦЕЛИ. См. GNU D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(14): ошибка A2079: неправильный синтаксис строки; ожидается символ * Малая общедоступная лицензия для более подробной информации. D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(15): ошибка A2079: неправильный синтаксис строки; ожидается символ * D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(16): ошибка A2079: неправильный синтаксис строки; ожидается символ * Вы должны были получить копию GNU Lesser General Public D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(17): ошибка A2079: неправильный синтаксис строки; ожидается символ * Лицензия вместе с FFmpeg; если нет, напишите в Свободное программное обеспечение D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(18): ошибка A2079: неправильный синтаксис строки; ожидается символ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(19): ошибка A2079: неправильный синтаксис строки; ожидается символ */ D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(21): ошибка A2230: недопустимая директива препроцессора; распознается только "#line [имя файла]", включая "libavutil/aarch64/asm.S" D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(23): ошибка A2230: незаконно директива препроцессора; распознается только "#line [имя_файла]". Определите FRAC_BITS 23 // дробные биты для sb_samples и dct D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(24): ошибка A2230: Недопустимая директива препроцессора; распознается только "#line [имя_файла]". Определить WFRAC_BITS 16 // дробные биты для окна D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(25): ошибка A2230: незаконный препроцесс директива; только "#line [имя файла]" признан определить OUT_SHIFT (WFRAC_BITS + FRAC_BITS - 15) D:\Work\Chromium_FFmpeg\ хром \ SRC \ THIRD_PARTY \ FFmpeg \ кодеком \aarch64\mpegaudiodsp_neon.S(27): ошибка A2034: неизвестно опкод: tbl_rev128_s const tbl_rev128_s, выровнять =4 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(28): ошибка A2034: неизвестный код операции:..byte 12, 13, 14, 15 D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (29): ошибка A2034: неизвестный код операции: . .byte 8, 9, 10, 11 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(30): ошибка A2034: неизвестный код операции: . .byte 4, 5, 6, 7 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(31): ошибка A2034: неизвестный код операции: . .byte 0, 1, 2, 3 D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(34): ошибка A2003: неправильный синтаксис строки:..macro тип apply_window, st D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(35): ошибка A2034: неизвестный код операции: ff_mpadsp_apply_window_ function_won__name_fon__file_f_f___f___f_t___f___f___f__f__f__f__f_ D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(42): ошибка A2034: неизвестный код операции: movrel movrel x15, tbl_rev128_s D:\Work\Chromium_FF \ s_ympysg ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(44): ошибка A2003: неправильный синтаксис строки: . .ifc \type, исправлено D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(46): ошибка A2003: неправильный синтаксис строки: . .else D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(48): ошибка A2003: неправильный синтаксис строки: . .endif D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(53): ошибка A2173: синтаксическая ошибка в выражении sub x5, x5, x4 // samples2 D:\Work\Chromium_FFmg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (53): ошибка A2003: неправильный синтаксис строки: операнды анализа неполадок sub x5, x5, x4 // samples2 D:\Work\Chromium_FFmpeg\chromium\scc third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(54): ошибка A2173: синтаксическая ошибка в выражении neg x13, x4 // -incr D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcode_ \ 64.S (54): ошибка A2003: неправильный синтаксис строки: операнды анализа неполадок neg x13, x4 // -incr D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(56): ошибка A2003: неправильный синтаксис строки: . .ifc \type, исправлено D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(57): ошибка A2173: синтаксическая ошибка в выражении ld1r {v16.2s}, [x2] // dither_state D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(57): ошибка A2003: неправильный синтаксис строки: проблемный синтаксический анализ операндов ld1r {v16.2s}, [x2] dither_state D:\Work\Chromium_FFmpeg\chromium\src\third_party\ffmpeg\libavcodec\aarch64\mpegaudiodsp_neon.S(60): ошибка A2061: недопустимый тип выражения; ожидаемое абсолютное числовое значение movi v30.2d, #(1 <ошибка A2034: неизвестный код операции: MLA2 MLA2 v17, v2, v0 D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (93): ошибка A2034: неизвестный код операции: MLS2 MLS2 v19, v3, v6 D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (95): ошибка A2034: неизвестный код операции: MLS2 MLS2 v4, v7 D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (97): ошибка A2034: неизвестный код операции: MLS2 MLS2 v19, v5, v1 D: \ Work \ Chromium_FF \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (98): ошибка A2034: неизвестный код операции:. b.gt 2b D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcode_ \.od.64 S (101): ошибка A2173: синтаксическая ошибка в выражении sub x10, x10, # 64 << 5 // 64 * 8 * sizeof (int32_t) D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (101): ошибка A2003: impr Синтаксис рабочей строки: Операнды разбора неполадок sub x10, x10, # 64 << 5 // 64 * 8 * sizeof (int32_t) D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (103): ошибка A2003: неправильный синтаксис строки: . .ifc \type, исправлено D: \ Work \ Chromium_FFmpeg \ chromium \ src \ third_party \ ffmpeg \ libavcodec \ aarch64 \ mpegaudiodsp_neon.S (105): ошибка A2034: неизвестный код операции: ext ext v28.16b, v29.16b, v28. 16б, № 8.,,
1 ответ
Я полагаю, что FFmpeg уже работает для конфигурации Linux/Aarch64 (возможно, с использованием ассемблера GNU), и в этом случае тот же код ассемблера также должен работать и для Microsoft ARM Macro Assembler.
Microsoft Arm Assembler использует синтаксис, отличный от GNU Assembler, похожий, но не совсем такой же, как синтаксис, используемый armasm. Они не совместимы.