Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows ARM64 builds #95

Closed
adiantek opened this issue Aug 7, 2021 · 24 comments
Closed

Windows ARM64 builds #95

adiantek opened this issue Aug 7, 2021 · 24 comments

Comments

@adiantek
Copy link

adiantek commented Aug 7, 2021

It would be nice to see arm64 builds for Windows. It's very easy to compile FFmpeg using https://hub.docker.com/r/mstorsjo/llvm-mingw/:

root@host:~# docker run -it mstorsjo/llvm-mingw:latest
root@9b4c36347b6c:/build# git clone https://github.com/libsdl-org/SDL.git
Cloning into 'SDL'...
remote: Enumerating objects: 65986, done.
remote: Counting objects: 100% (132/132), done.
remote: Compressing objects: 100% (107/107), done.
remote: Total 65986 (delta 62), reused 58 (delta 24), pack-reused 65854
Receiving objects: 100% (65986/65986), 80.45 MiB | 5.62 MiB/s, done.
Resolving deltas: 100% (51165/51165), done.
root@9b4c36347b6c:/build# pushd SDL
/build/SDL /build
root@9b4c36347b6c:/build/SDL# mkdir build
root@9b4c36347b6c:/build/SDL# pushd build
/build/SDL/build /build/SDL /build
root@9b4c36347b6c:/build/SDL/build# ../configure --host=aarch64-w64-mingw32
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic sensor power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy winmm directsound wasapi
Video drivers   : dummy opengl opengl_es1 opengl_es2 vulkan d3d9 d3d11
Input drivers   :
Enable virtual joystick APIs : YES
Using libsamplerate : NO
Using libudev       : NO
Using dbus          : NO
Using ime           : NO
Using ibus          : NO
Using fcitx         : NO
root@9b4c36347b6c:/build/SDL/build# make -j16
root@9b4c36347b6c:/build/SDL/build# make install
root@9b4c36347b6c:/build/SDL/build# ln -s sdl2-config aarch64-w64-mingw32-sdl2-config
root@9b4c36347b6c:/build/SDL/build# export PATH=$PATH:$PWD
root@9b4c36347b6c:/build/SDL/build# popd
/build/SDL /build
root@9b4c36347b6c:/build/SDL# popd
/build
root@9b4c36347b6c:/build# git clone https://github.com/FFmpeg/FFmpeg.git
Cloning into 'FFmpeg'...
remote: Enumerating objects: 631202, done.
remote: Counting objects: 100% (411/411), done.
remote: Compressing objects: 100% (233/233), done.
remote: Total 631202 (delta 218), reused 284 (delta 178), pack-reused 630791
Receiving objects: 100% (631202/631202), 262.57 MiB | 5.01 MiB/s, done.
Resolving deltas: 100% (495783/495783), done.
root@9b4c36347b6c:/build# pushd FFmpeg/
/build/FFmpeg /build
root@9b4c36347b6c:/build/FFmpeg# ./configure --cross-prefix=aarch64-w64-mingw32- --arch=arm64 --target-os=mingw32
install prefix            /usr/local
source path               .
C compiler                aarch64-w64-mingw32-gcc
C library                 mingw64
host C compiler           gcc
host C library            glibc
ARCH                      aarch64 (generic)
big-endian                no
runtime cpu detection     yes
NEON enabled              yes
VFP enabled               yes
debug symbols             yes
strip symbols             yes
optimize for size         no
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
network support           yes
threading support         w32threads
safe bitstream reader     yes
texi2html enabled         no
perl enabled              yes
pod2man enabled           yes
makeinfo enabled          no
makeinfo supports HTML    no
xmllint enabled           no

External libraries:
mediafoundation         schannel                sdl2

External libraries providing hardware acceleration:
d3d11va                 dxva2

Libraries:
avcodec                 avdevice                avfilter                avformat                avutil                  swresample              swscale

Programs:
ffmpeg                  ffplay                  ffprobe

Enabled decoders:
aac                     adpcm_ms                bethsoftvid             dvbsub                  hevc                    mp1                     pcm_f16le               psd                     speedhq                 vp4
aac_fixed               adpcm_mtaf              bfi                     dvdsub                  hnm4_video              mp1float                pcm_f24le               ptx                     srt                     vp5
aac_latm                adpcm_psx               bink                    dvvideo                 hq_hqa                  mp2                     pcm_f32be               qcelp                   ssa                     vp6
aasc                    adpcm_sbpro_2           binkaudio_dct           dxtory                  hqx                     mp2float                pcm_f32le               qdm2                    stl                     vp6a
ac3                     adpcm_sbpro_3           binkaudio_rdft          dxv                     huffyuv                 mp3                     pcm_f64be               qdmc                    subrip                  vp6f
ac3_fixed               adpcm_sbpro_4           bintext                 eac3                    hymt                    mp3adu                  pcm_f64le               qdraw                   subviewer               vp7
acelp_kelvin            adpcm_swf               bitpacked               eacmv                   iac                     mp3adufloat             pcm_lxf                 qpeg                    subviewer1              vp8
adpcm_4xm               adpcm_thp               bmp                     eamad                   idcin                   mp3float                pcm_mulaw               qtrle                   sunrast                 vp9
adpcm_adx               adpcm_thp_le            bmv_audio               eatgq                   idf                     mp3on4                  pcm_s16be               r10k                    svq1                    vplayer
adpcm_afc               adpcm_vima              bmv_video               eatgv                   iff_ilbm                mp3on4float             pcm_s16be_planar        r210                    svq3                    vqa
adpcm_agm               adpcm_xa                brender_pix             eatqi                   ilbc                    mpc7                    pcm_s16le               ra_144                  tak                     wavpack
adpcm_aica              adpcm_yamaha            c93                     eightbps                imc                     mpc8                    pcm_s16le_planar        ra_288                  targa                   webp
adpcm_argo              adpcm_zork              cavs                    eightsvx_exp            imm4                    mpeg1video              pcm_s24be               ralf                    targa_y216              webvtt
adpcm_ct                agm                     ccaption                eightsvx_fib            imm5                    mpeg2video              pcm_s24daud             rawvideo                text                    wmalossless
adpcm_dtk               aic                     cdgraphics              escape124               indeo2                  mpeg4                   pcm_s24le               realtext                theora                  wmapro
adpcm_ea                alac                    cdtoons                 escape130               indeo3                  mpegvideo               pcm_s24le_planar        rl2                     thp                     wmav1
adpcm_ea_maxis_xa       alias_pix               cdxl                    evrc                    indeo4                  mpl2                    pcm_s32be               roq                     tiertexseqvideo         wmav2
adpcm_ea_r1             als                     cfhd                    fastaudio               indeo5                  msa1                    pcm_s32le               roq_dpcm                tiff                    wmavoice
adpcm_ea_r2             amrnb                   cinepak                 ffv1                    interplay_acm           msmpeg4v1               pcm_s32le_planar        rpza                    tmv                     wmv1
adpcm_ea_r3             amrwb                   clearvideo              ffvhuff                 interplay_dpcm          msmpeg4v2               pcm_s64be               rv10                    truehd                  wmv2
adpcm_ea_xas            amv                     cljr                    ffwavesynth             interplay_video         msmpeg4v3               pcm_s64le               rv20                    truemotion1             wmv3
adpcm_g722              anm                     cllc                    fic                     ipu                     msp2                    pcm_s8                  rv30                    truemotion2             wmv3image
adpcm_g726              ansi                    comfortnoise            fits                    jacosub                 msrle                   pcm_s8_planar           rv40                    truemotion2rt           wnv1
adpcm_g726le            ape                     cook                    flac                    jpeg2000                mss1                    pcm_sga                 s302m                   truespeech              wrapped_avframe
adpcm_ima_acorn         aptx                    cpia                    flic                    jpegls                  mss2                    pcm_u16be               sami                    tscc2                   ws_snd1
adpcm_ima_alp           aptx_hd                 cri                     flv                     jv                      msvideo1                pcm_u16le               sanm                    tta                     xan_dpcm
adpcm_ima_amv           arbc                    cscd                    fmvc                    kgv1                    mszh                    pcm_u24be               sbc                     twinvq                  xan_wc3
adpcm_ima_apc           argo                    cyuv                    fourxm                  kmvc                    mts2                    pcm_u24le               scpr                    txd                     xan_wc4
adpcm_ima_apm           ass                     dca                     fraps                   lagarith                mv30                    pcm_u32be               sdx2_dpcm               ulti                    xbin
adpcm_ima_cunning       asv1                    dds                     frwu                    loco                    mvc1                    pcm_u32le               sga                     utvideo                 xbm
adpcm_ima_dat4          asv2                    derf_dpcm               g723_1                  m101                    mvc2                    pcm_u8                  sgi                     v210                    xface
adpcm_ima_dk3           atrac1                  dfa                     g729                    mace3                   mvdv                    pcm_vidc                sgirle                  v210x                   xl
adpcm_ima_dk4           atrac3                  dirac                   gdv                     mace6                   mxpeg                   pcx                     sheervideo              v308                    xma1
adpcm_ima_ea_eacs       atrac3al                dnxhd                   gif                     magicyuv                nellymoser              pfm                     shorten                 v408                    xma2
adpcm_ima_ea_sead       atrac3p                 dolby_e                 gremlin_dpcm            mdec                    notchlc                 pgm                     simbiosis_imx           v410                    xpm
adpcm_ima_iss           atrac3pal               dpx                     gsm                     metasound               nuv                     pgmyuv                  sipr                    vb                      xsub
adpcm_ima_moflex        atrac9                  dsd_lsbf                gsm_ms                  microdvd                on2avc                  pgssub                  siren                   vble                    xwd
adpcm_ima_mtf           aura                    dsd_lsbf_planar         h261                    mimic                   opus                    pgx                     smackaud                vc1                     y41p
adpcm_ima_oki           aura2                   dsd_msbf                h263                    mjpeg                   paf_audio               photocd                 smacker                 vc1image                ylc
adpcm_ima_qt            av1                     dsd_msbf_planar         h263i                   mjpegb                  paf_video               pictor                  smc                     vcr1                    yop
adpcm_ima_rad           avrn                    dsicinaudio             h263p                   mlp                     pam                     pixlet                  smvjpeg                 vmdaudio                yuv4
adpcm_ima_smjpeg        avrp                    dsicinvideo             h264                    mmvideo                 pbm                     pjs                     snow                    vmdvideo                zero12v
adpcm_ima_ssi           avs                     dss_sp                  hap                     mobiclip                pcm_alaw                ppm                     sol_dpcm                vmnc
adpcm_ima_wav           avui                    dst                     hca                     motionpixels            pcm_bluray              prores                  sonic                   vorbis
adpcm_ima_ws            ayuv                    dvaudio                 hcom                    movtext                 pcm_dvd                 prosumer                sp5x                    vp3

Enabled encoders:
a64multi                adpcm_ima_wav           cfhd                    gif                     mpeg1video              pcm_s16be               pcm_u24be               ra_144                  sunrast                 wmav1
a64multi5               adpcm_ima_ws            cinepak                 h261                    mpeg2video              pcm_s16be_planar        pcm_u24le               rawvideo                svq1                    wmav2
aac                     adpcm_ms                cljr                    h263                    mpeg4                   pcm_s16le               pcm_u32be               roq                     targa                   wmv1
aac_mf                  adpcm_swf               comfortnoise            h263p                   msmpeg4v2               pcm_s16le_planar        pcm_u32le               roq_dpcm                text                    wmv2
ac3                     adpcm_yamaha            dca                     h264_mf                 msmpeg4v3               pcm_s24be               pcm_u8                  rpza                    tiff                    wrapped_avframe
ac3_fixed               alac                    dnxhd                   hevc_mf                 msvideo1                pcm_s24daud             pcm_vidc                rv10                    truehd                  xbm
ac3_mf                  alias_pix               dpx                     huffyuv                 nellymoser              pcm_s24le               pcx                     rv20                    tta                     xface
adpcm_adx               amv                     dvbsub                  jpeg2000                opus                    pcm_s24le_planar        pfm                     s302m                   ttml                    xsub
adpcm_argo              aptx                    dvdsub                  jpegls                  pam                     pcm_s32be               pgm                     sbc                     utvideo                 xwd
adpcm_g722              aptx_hd                 dvvideo                 ljpeg                   pbm                     pcm_s32le               pgmyuv                  sgi                     v210                    y41p
adpcm_g726              ass                     eac3                    magicyuv                pcm_alaw                pcm_s32le_planar        ppm                     snow                    v308                    yuv4
adpcm_g726le            asv1                    ffv1                    mjpeg                   pcm_dvd                 pcm_s64be               prores                  sonic                   v408
adpcm_ima_alp           asv2                    ffvhuff                 mlp                     pcm_f32be               pcm_s64le               prores_aw               sonic_ls                v410
adpcm_ima_amv           avrp                    fits                    movtext                 pcm_f32le               pcm_s8                  prores_ks               speedhq                 vc2
adpcm_ima_apm           avui                    flac                    mp2                     pcm_f64be               pcm_s8_planar           qtrle                   srt                     vorbis
adpcm_ima_qt            ayuv                    flv                     mp2fixed                pcm_f64le               pcm_u16be               r10k                    ssa                     wavpack
adpcm_ima_ssi           bmp                     g723_1                  mp3_mf                  pcm_mulaw               pcm_u16le               r210                    subrip                  webvtt

Enabled hwaccels:
h264_d3d11va            h264_dxva2              hevc_d3d11va2           mpeg2_d3d11va           mpeg2_dxva2             vc1_d3d11va2            vp9_d3d11va             vp9_dxva2               wmv3_d3d11va2
h264_d3d11va2           hevc_d3d11va            hevc_dxva2              mpeg2_d3d11va2          vc1_d3d11va             vc1_dxva2               vp9_d3d11va2            wmv3_d3d11va            wmv3_dxva2

Enabled parsers:
aac                     avs3                    dirac                   dvd_nav                 gsm                     jpeg2000                opus                    sipr                    vp9
aac_latm                bmp                     dnxhd                   dvdsub                  h261                    mjpeg                   png                     tak                     webp
ac3                     cavsvideo               dolby_e                 flac                    h263                    mlp                     pnm                     vc1                     xbm
adx                     cook                    dpx                     g723_1                  h264                    mpeg4video              rv30                    vorbis                  xma
av1                     cri                     dvaudio                 g729                    hevc                    mpegaudio               rv40                    vp3
avs2                    dca                     dvbsub                  gif                     ipu                     mpegvideo               sbc                     vp8

Enabled demuxers:
aa                      ast                     dirac                   gsm                     image_pgmyuv_pipe       lvf                     mv                      pcm_u8                  shorten                 vc1
aac                     au                      dnxhd                   gxf                     image_pgx_pipe          lxf                     mvi                     pcm_vidc                siff                    vc1t
aax                     av1                     dsf                     h261                    image_photocd_pipe      m4v                     mxf                     pjs                     simbiosis_imx           vividas
ac3                     avi                     dsicin                  h263                    image_pictor_pipe       matroska                mxg                     pmp                     sln                     vivo
ace                     avr                     dss                     h264                    image_png_pipe          mca                     nc                      pp_bnk                  smacker                 vmd
acm                     avs                     dts                     hca                     image_ppm_pipe          mcc                     nistsphere              pva                     smjpeg                  vobsub
act                     avs2                    dtshd                   hcom                    image_psd_pipe          mgsts                   nsp                     pvf                     smush                   voc
adf                     avs3                    dv                      hevc                    image_qdraw_pipe        microdvd                nsv                     qcp                     sol                     vpk
adp                     bethsoftvid             dvbsub                  hls                     image_sgi_pipe          mjpeg                   nut                     r3d                     sox                     vplayer
ads                     bfi                     dvbtxt                  hnm                     image_sunrast_pipe      mjpeg_2000              nuv                     rawvideo                spdif                   vqf
adx                     bfstm                   dxa                     ico                     image_svg_pipe          mlp                     obu                     realtext                srt                     w64
aea                     bink                    ea                      idcin                   image_tiff_pipe         mlv                     ogg                     redspark                stl                     wav
afc                     binka                   ea_cdata                idf                     image_webp_pipe         mm                      oma                     rl2                     str                     wc3
aiff                    bintext                 eac3                    iff                     image_xbm_pipe          mmf                     paf                     rm                      subviewer               webm_dash_manifest
aix                     bit                     epaf                    ifv                     image_xpm_pipe          mods                    pcm_alaw                roq                     subviewer1              webvtt
alp                     bmv                     ffmetadata              ilbc                    image_xwd_pipe          moflex                  pcm_f32be               rpl                     sup                     wsaud
amr                     boa                     filmstrip               image2                  ingenient               mov                     pcm_f32le               rsd                     svag                    wsd
amrnb                   brstm                   fits                    image2_alias_pix        ipmovie                 mp3                     pcm_f64be               rso                     svs                     wsvqa
amrwb                   c93                     flac                    image2_brender_pix      ipu                     mpc                     pcm_f64le               rtp                     swf                     wtv
anm                     caf                     flic                    image2pipe              ircam                   mpc8                    pcm_mulaw               rtsp                    tak                     wv
apc                     cavsvideo               flv                     image_bmp_pipe          iss                     mpegps                  pcm_s16be               s337m                   tedcaptions             wve
ape                     cdg                     fourxm                  image_cri_pipe          iv8                     mpegts                  pcm_s16le               sami                    thp                     xa
apm                     cdxl                    frm                     image_dds_pipe          ivf                     mpegtsraw               pcm_s24be               sap                     threedostr              xbin
apng                    cine                    fsb                     image_dpx_pipe          ivr                     mpegvideo               pcm_s24le               sbc                     tiertexseq              xmv
aptx                    codec2                  fwse                    image_exr_pipe          jacosub                 mpjpeg                  pcm_s32be               sbg                     tmv                     xvag
aptx_hd                 codec2raw               g722                    image_gif_pipe          jv                      mpl2                    pcm_s32le               scc                     truehd                  xwma
aqtitle                 concat                  g723_1                  image_j2k_pipe          kux                     mpsub                   pcm_s8                  sdp                     tta                     yop
argo_asf                data                    g726                    image_jpeg_pipe         kvag                    msf                     pcm_u16be               sdr2                    tty                     yuv4mpegpipe
argo_brp                daud                    g726le                  image_jpegls_pipe       live_flv                msnwc_tcp               pcm_u16le               sds                     txd
argo_cvg                dcstr                   g729                    image_pam_pipe          lmlm4                   msp                     pcm_u24be               sdx                     ty
asf                     derf                    gdv                     image_pbm_pipe          loas                    mtaf                    pcm_u24le               segafilm                v210
asf_o                   dfa                     genh                    image_pcx_pipe          lrc                     mtv                     pcm_u32be               ser                     v210x
ass                     dhav                    gif                     image_pgm_pipe          luodat                  musx                    pcm_u32le               sga                     vag

Enabled muxers:
a64                     ast                     dv                      gif                     ivf                     mp4                     ogv                     pcm_u16le               scc                     tta
ac3                     au                      eac3                    gsm                     jacosub                 mpeg1system             oma                     pcm_u24be               segafilm                ttml
adts                    avi                     f4v                     gxf                     kvag                    mpeg1vcd                opus                    pcm_u24le               segment                 uncodedframecrc
adx                     avm2                    ffmetadata              h261                    latm                    mpeg1video              pcm_alaw                pcm_u32be               smjpeg                  vc1
aiff                    avs2                    fifo                    h263                    lrc                     mpeg2dvd                pcm_f32be               pcm_u32le               smoothstreaming         vc1t
alp                     bit                     fifo_test               h264                    m4v                     mpeg2svcd               pcm_f32le               pcm_u8                  sox                     voc
amr                     caf                     filmstrip               hash                    matroska                mpeg2video              pcm_f64be               pcm_vidc                spdif                   w64
amv                     cavsvideo               fits                    hds                     matroska_audio          mpeg2vob                pcm_f64le               psp                     spx                     wav
apm                     codec2                  flac                    hevc                    md5                     mpegts                  pcm_mulaw               rawvideo                srt                     webm
apng                    codec2raw               flv                     hls                     microdvd                mpjpeg                  pcm_s16be               rm                      stream_segment          webm_chunk
aptx                    crc                     framecrc                ico                     mjpeg                   mxf                     pcm_s16le               roq                     streamhash              webm_dash_manifest
aptx_hd                 dash                    framehash               ilbc                    mkvtimestamp_v2         mxf_d10                 pcm_s24be               rso                     sup                     webp
argo_asf                data                    framemd5                image2                  mlp                     mxf_opatom              pcm_s24le               rtp                     swf                     webvtt
argo_cvg                daud                    g722                    image2pipe              mmf                     null                    pcm_s32be               rtp_mpegts              tee                     wsaud
asf                     dirac                   g723_1                  ipod                    mov                     nut                     pcm_s32le               rtsp                    tg2                     wtv
asf_stream              dnxhd                   g726                    ircam                   mp2                     oga                     pcm_s8                  sap                     tgp                     wv
ass                     dts                     g726le                  ismv                    mp3                     ogg                     pcm_u16be               sbc                     truehd                  yuv4mpegpipe

Enabled protocols:
async                   crypto                  ftp                     http                    md5                     prompeg                 rtmpts                  tcp                     udplite
cache                   data                    gopher                  httpproxy               mmsh                    rtmp                    rtp                     tee
concat                  ffrtmphttp              gophers                 https                   mmst                    rtmps                   srtp                    tls
concatf                 file                    hls                     icecast                 pipe                    rtmpt                   subfile                 udp

Enabled filters:
abench                  aloop                   asupercut               colorlevels             drmeter                 haas                    maskedclamp             psnr                    showwavespic            tonemap
abitscope               alphaextract            asuperpass              colorspace              dynaudnorm              haldclut                maskedmax               qp                      shuffleframes           tpad
acompressor             alphamerge              asuperstop              colortemperature        earwax                  haldclutsrc             maskedmerge             random                  shufflepixels           transpose
acontrast               amerge                  atadenoise              compand                 ebur128                 hdcd                    maskedmin               readeia608              shuffleplanes           treble
acopy                   ametadata               atempo                  compensationdelay       edgedetect              headphone               maskedthreshold         readvitc                sidechaincompress       tremolo
acrossfade              amix                    atrim                   concat                  elbg                    hflip                   maskfun                 realtime                sidechaingate           trim
acrossover              amovie                  avectorscope            convolution             entropy                 highpass                mcompand                remap                   sidedata                unpremultiply
acrusher                amplify                 avgblur                 convolve                epx                     highshelf               median                  removegrain             sierpinski              unsharp
acue                    amultiply               axcorrelate             copy                    equalizer               hilbert                 mergeplanes             removelogo              signalstats             untile
addroi                  anequalizer             bandpass                crop                    erosion                 histogram               mestimate               replaygain              silencedetect           v360
adeclick                anlmdn                  bandreject              crossfeed               estdif                  hqx                     metadata                reverse                 silenceremove           vectorscope
adeclip                 anlms                   bass                    crystalizer             exposure                hstack                  midequalizer            rgbashift               sinc                    vflip
adelay                  anoisesrc               bbox                    cue                     extractplanes           hue                     minterpolate            rgbtestsrc              sine                    vfrdet
adenorm                 anull                   bench                   curves                  extrastereo             hwdownload              mix                     roberts                 smptebars               vibrance
aderivative             anullsink               bilateral               datascope               fade                    hwmap                   monochrome              rotate                  smptehdbars             vibrato
adrawgraph              anullsrc                biquad                  dblur                   fftdnoiz                hwupload                movie                   scale                   sobel                   vif
aecho                   apad                    bitplanenoise           dcshift                 fftfilt                 hysteresis              msad                    scale2ref               spectrumsynth           vignette
aemphasis               aperms                  blackdetect             dctdnoiz                field                   identity                negate                  scdet                   speechnorm              vmafmotion
aeval                   aphasemeter             blend                   deband                  fieldhint               idet                    nlmeans                 scroll                  split                   volume
aevalsrc                aphaser                 bm3d                    deblock                 fieldmatch              il                      noformat                select                  sr                      volumedetect
aexciter                aphaseshift             bwdif                   decimate                fieldorder              inflate                 noise                   selectivecolor          ssim                    vstack
afade                   apulsator               cas                     deconvolve              fifo                    interleave              normalize               sendcmd                 stereotools             w3fdif
afftdn                  arealtime               cellauto                dedot                   fillborders             join                    null                    separatefields          stereowiden             waveform
afftfilt                aresample               channelmap              deesser                 firequalizer            kirsch                  nullsink                setdar                  streamselect            weave
afifo                   areverse                channelsplit            deflate                 flanger                 lagfun                  nullsrc                 setfield                superequalizer          xbr
afir                    arnndn                  chorus                  deflicker               floodfill               lenscorrection          oscilloscope            setparams               surround                xfade
afirsrc                 aselect                 chromahold              dejudder                format                  life                    overlay                 setpts                  swaprect                xmedian
aformat                 asendcmd                chromakey               derain                  fps                     limiter                 pad                     setrange                swapuv                  xstack
afreqshift              asetnsamples            chromanr                deshake                 framepack               loop                    pal100bars              setsar                  tblend                  yadif
afwtdn                  asetpts                 chromashift             despill                 framerate               loudnorm                pal75bars               settb                   telecine                yaepblur
agate                   asetrate                ciescope                detelecine              framestep               lowpass                 palettegen              shear                   testsrc                 yuvtestsrc
agraphmonitor           asettb                  codecview               dilation                freezedetect            lowshelf                paletteuse              showcqt                 testsrc2                zoompan
ahistogram              ashowinfo               color                   displace                freezeframes            lumakey                 pan                     showfreqs               thistogram
aiir                    asidedata               colorbalance            dnn_classify            gblur                   lut                     perms                   showinfo                threshold
aintegral               asoftclip               colorchannelmixer       dnn_detect              geq                     lut1d                   photosensitivity        showpalette             thumbnail
ainterleave             asplit                  colorcontrast           dnn_processing          gradfun                 lut2                    pixdesctest             showspatial             tile
alimiter                astats                  colorcorrect            doubleweave             gradients               lut3d                   pixscope                showspectrum            tlut2
allpass                 astreamselect           colorhold               drawbox                 graphmonitor            lutrgb                  premultiply             showspectrumpic         tmedian
allrgb                  asubboost               colorize                drawgraph               greyedge                lutyuv                  prewitt                 showvolume              tmidequalizer
allyuv                  asubcut                 colorkey                drawgrid                guided                  mandelbrot              pseudocolor             showwaves               tmix

Enabled bsfs:
aac_adtstoasc           chomp                   extract_extradata       h264_redundant_pps      imx_dump_header         mp3_header_decompress   null                    remove_extradata        truehd_core             vp9_superframe_split
av1_frame_merge         dca_core                filter_units            hapqa_extract           mjpeg2jpeg              mpeg2_metadata          opus_metadata           setts                   vp9_metadata
av1_frame_split         dump_extradata          h264_metadata           hevc_metadata           mjpega_dump_header      mpeg4_unpack_bframes    pcm_rechunk             text2movsub             vp9_raw_reorder
av1_metadata            eac3_core               h264_mp4toannexb        hevc_mp4toannexb        mov2textsub             noise                   prores_metadata         trace_headers           vp9_superframe

Enabled indevs:
dshow                   gdigrab                 lavfi

Enabled outdevs:
sdl2

License: LGPL version 2.1 or later

WARNING: aarch64-w64-mingw32-pkg-config not found, library detection may fail.
root@9b4c36347b6c:/build/FFmpeg# make -j16
AR      libavcodec/libavcodec.a
AR      libswscale/libswscale.a
LD      ffmpeg_g.exe
LD      ffplay_g.exe
LD      ffprobe_g.exe
STRIP   ffplay.exe
STRIP   ffprobe.exe
STRIP   ffmpeg.exe

Tested on Surface Pro X:

C:\Users\barwn\Downloads>ffplay.exe -i test.avi
ffplay version N-103174-g6a4f851df7 Copyright (c) 2003-2021 the FFmpeg developers
  built with clang version 12.0.0 (https://github.com/llvm/llvm-project.git e7ad4cff4027a120cf44edf36af2cd7a874e9a52)
  configuration: --cross-prefix=aarch64-w64-mingw32- --arch=arm64 --target-os=mingw32
  libavutil      57.  3.100 / 57.  3.100
  libavcodec     59.  4.100 / 59.  4.100
  libavformat    59.  4.101 / 59.  4.101
  libavdevice    59.  0.100 / 59.  0.100
  libavfilter     8.  1.103 /  8.  1.103
  libswscale      6.  0.100 /  6.  0.100
  libswresample   4.  0.100 /  4.  0.100
Input #0, avi, from 'test.avi':    0KB vq=    0KB sq=    0B f=0/0
  Metadata:
    title           : 10217683074014904
    software        : Lavf59.3.101
  Duration: 00:00:15.01, start: 0.000000, bitrate: 1830 kb/s
  Stream #0:0: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1658 kb/s, 23.98 fps, 23.98 tbr, 23.98 tbn
  Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s
   3.81 A-V: -0.042 fd=   3 aq=   28KB vq=  209KB sq=    0B f=0/0

SDL2 is compiled as a static library, so SDL2.dll is required to run ffplay.exe.

@BtbN
Copy link
Owner

BtbN commented Aug 7, 2021

I've thought about doing aarch64 windows builds, but for it to integrate properly and not requiring a full rewrite of the entire tooling, crosstools-ng would need support first.
Which should not be all that hard, but it seems interest there is rather low and focused on gcc.

@xqymain
Copy link

xqymain commented Jan 22, 2022

Thx, I've compiled it using your method :)

@adaviding
Copy link

I am very interested in this feature.

@BtbN
Copy link
Owner

BtbN commented Feb 16, 2022

crosstools-ng still shows no signs of plans support for this sadly.
I tried using something clang based, but too many dependencies fail to build with it, so until crosstools-ng adds support for a gcc based windows aarch64 target, there's not much I can do.

@RokeJulianLockhart
Copy link

@BtbN, has this been suggested to crosstools-ng? I do not know where to track it.

@BtbN
Copy link
Owner

BtbN commented Aug 5, 2022

crosstool-ng/crosstool-ng#652 a long time ago

@TacoDelPaco
Copy link

I found this in my search which has been handy for me, https://github.com/dvhh/ffmpeg-wos-arm64-build

Hopefully 'Project Volterra' will push Windows in the right direction 🤔

@wegylexy
Copy link

How about ARM64EC (x64 compatible) for Windows 11 on ARM?

@BtbN
Copy link
Owner

BtbN commented Mar 24, 2023

There probably is even more a lack of a toolchain for that one than there is for normal aarch64.

@megapro17
Copy link

Project Volterra

they keep creating funny names without any real changes

@Xazax-hun
Copy link

Hopefully 'Project Volterra' will push Windows in the right direction

Apparently, more is coming: https://www.tomshardware.com/news/amd-and-nvidia-to-develop-arm-cpus-for-client-pcs-report

@BtbN
Copy link
Owner

BtbN commented Mar 20, 2024

It exists now, just not on CI. Since I'm not sure if the extra build-time and release clutter is worth it yet.

@EwoutH
Copy link

EwoutH commented Jun 22, 2024

GitHub is coming with Windows Arm runners later this year: https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/

@BtbN
Copy link
Owner

BtbN commented Jun 22, 2024

That's not overly relevant for the builds, given everything is cross-compiled from amd64.

@sgxu
Copy link

sgxu commented Oct 22, 2024

the ffmpeg static libaries compiled by llvm-mingw can not be linked with other project.
Is there any ways to compile ffmpeg locally in "windows on arm" device?
Is there any ways to compile ffmpeg in Surface X pro (using MSVC or Clang locally) ?

@Andarwinux
Copy link

It's very easy to do native builds on arm64 devices, just use msys2 clangarm64, but static builds can be a bit tricky because msys2's static libraries are usually partially corrupted.

@sgxu
Copy link

sgxu commented Oct 22, 2024

It's very easy to do native builds on arm64 devices, just use msys2 clangarm64, but static builds can be a bit tricky because msys2's static libraries are usually partially corrupted.

can you give some more details?
because I use ffmpeg static libaries compiled by llvm-mingw occurs link errors:
lld-link: error: undefined symbol: __mingw_snprintf
referenced by libavcodec.a(utils.o):(avcodec_open2)

@sgxu
Copy link

sgxu commented Oct 22, 2024

It's very easy to do native builds on arm64 devices, just use msys2 clangarm64, but static builds can be a bit tricky because msys2's static libraries are usually partially corrupted.

And It seems that there is only MSYS2 x86_64 version, no msys2 arm64 version ?

@Andarwinux
Copy link

It's very easy to do native builds on arm64 devices, just use msys2 clangarm64, but static builds can be a bit tricky because msys2's static libraries are usually partially corrupted.

can you give some more details? because I use ffmpeg static libaries compiled by llvm-mingw occurs link errors: lld-link: error: undefined symbol: __mingw_snprintf referenced by libavcodec.a(utils.o):(avcodec_open2)

You can't mix static linking of MinGW/MSVC static libraries, they use different libc. If possible, consider building other projects using llvm-mingw as well.
A more realistic option would be to abandon the static linking attempts, the MinGW/MSVC dynamic libraries work very well together.

ffmpeg and most of its dependencies don't support modern build systems like CMake/Meson, so you'll have a difficult way to build them using MSVC/Clang-CL natively (imagine forward slash backslash hell), but ffmpeg has a meson port, which makes it relatively easy to use Clang to build an MSVC compatible static library.

You can refer to mpv CI for information on how to use the meson port.

And It seems that there is only MSYS2 x86_64 version, no msys2 arm64 version ?

The ARCH of MSYS2 itself is not important, all you need is its clangarm64 sysroot.

@sgxu
Copy link

sgxu commented Oct 22, 2024

It's very easy to do native builds on arm64 devices, just use msys2 clangarm64, but static builds can be a bit tricky because msys2's static libraries are usually partially corrupted.

can you give some more details? because I use ffmpeg static libaries compiled by llvm-mingw occurs link errors: lld-link: error: undefined symbol: __mingw_snprintf referenced by libavcodec.a(utils.o):(avcodec_open2)

You can't mix static linking of MinGW/MSVC static libraries, they use different libc. If possible, consider building other projects using llvm-mingw as well. A more realistic option would be to abandon the static linking attempts, the MinGW/MSVC dynamic libraries work very well together.

ffmpeg and most of its dependencies don't support modern build systems like CMake/Meson, so you'll have a difficult way to build them using MSVC/Clang-CL natively (imagine forward slash backslash hell), but ffmpeg has a meson port, which makes it relatively easy to use Clang to build an MSVC compatible static library.

You can refer to mpv CI for information on how to use the meson port.

And It seems that there is only MSYS2 x86_64 version, no msys2 arm64 version ?

The ARCH of MSYS2 itself is not important, all you need is its clangarm64 sysroot.


thank you for your great help, but I still failed:

  1. intall MSYS2 on Surface X pro(windows-on-arm)
  2. install tools in MSYS2 MINGW64
pacman -Suy
pacman -S mingw-w64-clang-aarch64-clang
pacman -S binutils
  1. export llvm path to MINGW64(I attempt to use native clang to avoid link troubles)
export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/ARM64/bin":$PATH
  1. compile:
mkdir build
cd build
../configure --cc=clang --cxx=clang++ --arch=arm64

wait a moment, It will produce some static libaries. but these libraries can not be linked in my project,
my project use clang(/c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/ARM64/bin) to compile.
It seems that these libraries is Unix .o format, not windows .obj format.
Is there any ways to produce windows .obj format libraries.

@sgxu
Copy link

sgxu commented Oct 22, 2024

use llvm-objdump tools to show the static libraries info:

llvm-objdump -h libavcodec.a

shows .\libavcodec.a(yop.o): file format coff-arm64

@Andarwinux
Copy link

Andarwinux commented Oct 23, 2024

Sorry for the late reply, I need some time to set up my Windows native Dev VM.

install tools in MSYS2 MINGW64

You need to go into MSYS2 CLANGARM64 and nothing else.

my project use clang(/c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/ARM64/bin) to compile.
It seems that these libraries is Unix .o format, not windows .obj format.
Is there any ways to produce windows .obj format libraries.

Anyway, since you just want the MSVC-compatible static libraries, just use https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg

git clone https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git -b meson-7.1
cd ffmpeg
$env:CC='clang'
$env:CXX='clang++'
$env:CC_LD='lld'
$env:CXX_LD='lld'
meson setup build -Ddefault_library=static -Dgpl=enabled -Dtests=disabled
ninja -C build

@BtbN
Copy link
Owner

BtbN commented Oct 23, 2024

The normal build system of ffmpeg supports targetting msvc and msvc/clang just fine. No need to use some unofficial build system that potentially leads to unknown regressions and will strand you without any support should any kind of issue happen.

@sgxu
Copy link

sgxu commented Oct 24, 2024

Sorry for the late reply, I need some time to set up my Windows native Dev VM.

install tools in MSYS2 MINGW64

You need to go into MSYS2 CLANGARM64 and nothing else.

my project use clang(/c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/ARM64/bin) to compile.
It seems that these libraries is Unix .o format, not windows .obj format.
Is there any ways to produce windows .obj format libraries.

Anyway, since you just want the MSVC-compatible static libraries, just use https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg

git clone https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git -b meson-7.1
cd ffmpeg
$env:CC='clang'
$env:CXX='clang++'
$env:CC_LD='lld'
$env:CXX_LD='lld'
meson setup build -Ddefault_library=static -Dgpl=enabled -Dtests=disabled
ninja -C build

This works for me, thank you very much

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests