Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
  • hmaarrfk/vlc
  • imxieyi/vlc
  • alexandru_babacea/vlc
  • jeromeb/vlc
  • kartix1504/vlc-project
  • aloisw/vlc
  • woodruffw/vlc
  • Shivam7/vlc
  • elmokh/vlc
  • AhmedHamed3699/vlc
  • eigenvoid/vlc
  • shocknovaa/vlc
422 results
Show changes
Commits on Source (20814)
*.c ident
*.h ident
*.m ident
*.cpp ident
*.hpp ident
README ident
......@@ -13,6 +13,7 @@
*.vlt
*.class
*.dmg
*.qmlc
.DS_Store
.deps
.libs
......@@ -22,7 +23,8 @@ aclocal.m4
ChangeLog
compile
config.status
config.h*
config.h
config.h.in
config.log
configure
doltcompile
......@@ -46,10 +48,8 @@ vlc_install_dir/*
plugins.dat
patches/*
include/vlc/libvlc_version.h
# Ignore build dirs
build*
build*/
contrib-*
install-*
!extras/package/apple/build.sh
......@@ -8,8 +8,9 @@ Jean-Baptiste Kempf <jb@videolan.org>
<jb@videolan.org> <jb@sasmira.(none)>
Jean-Baptiste Kempf <jb@videolan.org> U-AMBRE\Jean-Baptiste <Jean-Baptiste@ambre.(none)>
Jean-Baptiste Kempf <jb@videolan.org> U-SASMIRA\jb <jb@sasmira.(none)>
<rem@videolan.org> <remi.denis-courmont@nokia.com>
<rem@videolan.org> <rdenis@simphalempin.com>
<remi@remlab.net> <remi.denis-courmont@nokia.com>
<remi@remlab.net> <rdenis@simphalempin.com>
<remi@remlab.net> <rem@videolan.org>
<pdherbemont@videolan.org> <steg@nibudy.local>
<dionoea@videolan.org> <antoine@macbook.(none)>
Felix Paul Kühne <fkuehne@videolan.org>
......
......@@ -29,11 +29,9 @@ symbols:
make distclean ; ./configure --enable-debug
We recommend using GCC to build VLC, though some people reported success
with the Intel C compiler (version 8) as well. GCC version 4.8 or higher is
required. On older systems (e.g. FreeBSD 4.x), please select a more recent
version manually by setting the CC and CXX environment variables
appropriately while running the ./configure shell script.
We recommend using either GCC or Clang/LLVM to build VLC. Specifically,
GCC version 5 or higher, or Clang/LLVM version 3.4 or higher are required.
Other compilers with compatible feature sets should also work.
Building VLC
......
......@@ -10,6 +10,8 @@ SUBDIRS = compat doc po share src modules lib bin test
DIST_SUBDIRS = m4 $(SUBDIRS)
EXTRA_DIST = \
extras/include/x86/x86inc.asm \
extras/include/x86/x86util.asm \
extras/package/macosx/package.mak \
extras/package/win32/package.mak \
extras/package/npapi.am
......@@ -21,7 +23,7 @@ BUILT_SOURCES_distclean =
BUILT_SOURCES = $(BUILT_SOURCES_distclean)
SUFFIXES =
SUFFIXES =
DISTCHECK_CONFIGURE_FLAGS = \
--enable-fast-install \
......@@ -35,7 +37,6 @@ DISTCHECK_CONFIGURE_FLAGS = \
--disable-live555 \
--disable-lua \
--disable-fribidi \
--disable-mkv \
--with-kde-solid='$${datadir}/kde4/apps'
ACLOCAL_AMFLAGS = -I m4
......@@ -50,7 +51,7 @@ AUTOMAKE_OPTIONS = \
ChangeLog: Makefile.am
rm -f -- "$@"
cd doc && $(MAKE) $(AM_MAKEFLAGS) changelogs
$(LN_S) -f doc/ChangeLog-2015 "$@"
$(LN_S) -f doc/ChangeLog-2021 "$@"
###############################################################################
......@@ -61,10 +62,15 @@ EXTRA_DIST += \
extras/tools/packages.mak \
extras/tools/tools.mak \
extras/tools/SHA512SUMS \
extras/tools/automake-clang.patch \
extras/tools/bison-macOS-7df04f9.patch \
extras/tools/bison-macOS-c41f233c.patch \
extras/tools/libtool-2.4.2-bitcode.patch \
extras/tools/libtool-2.4.2-san.patch \
extras/tools/cmake-enable-ALPN-support-on-macOS-10.14.patch \
extras/tools/libtool-2.4.7-bitcode.patch \
extras/tools/libtool-2.4.7-clang-libs.patch \
extras/tools/libtool-2.4.7-response-files.patch \
extras/tools/libtool-2.4.7-lpthread.patch \
extras/tools/libtool-2.4.7-embed-bitcode.patch \
extras/tools/ragel-6.8-javacodegen.patch
###############################################################################
......@@ -120,7 +126,9 @@ doc:
###############################################################################
ALL_ALIASES = cvlc rvlc svlc qvlc nvlc
if BUILD_VLC
bin_SCRIPTS = $(ALIASES)
endif
CLEANFILES += $(ALIASES) $(noinst_SCRIPTS)
EXTRA_SCRIPTS = $(ALL_ALIASES)
......@@ -165,6 +173,7 @@ install-exec-hook:
if test "$(build)" = "$(host)"; then \
PATH="$(DESTDIR)$(bindir):$$PATH" \
LD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$LD_LIBRARY_PATH" \
DYLD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$DYLD_LIBRARY_PATH" \
"$(DESTDIR)$(pkglibexecdir)/vlc-cache-gen$(EXEEXT)" \
"$(DESTDIR)$(pkglibdir)/plugins" ; \
else \
......@@ -187,7 +196,7 @@ lcov-raw.out:
lcov.out: lcov-raw.out
lcov -r lcov-raw.out -o lcov.out \
'*test*' 'contrib/*' '/usr/include/*'
'*test*' 'contrib/*' '/usr/include/*' '*mock*'
lcov: lcov.out
rm -Rf lcov lcov.tmp
......
......@@ -4,27 +4,848 @@ Changes between 3.0.x and 4.0.0-dev:
Platform support changes:
* 4.0.x requires:
- Windows 7/2008 R2 or later (with KB2533623 installed)
- macOS 10.10 or later
- macOS 10.11 or later
- iOS 9 or later
- Android 4.1.x or later (API-16)
- GCC 5.0 or Clang 3.4 (or equivalent)
* Windows on ARM is now supported
* Universal Windows is only supported for Windows 10 (not Windows 8 anymore)
Core:
* New output clock (internal):
- The input clock (PCR) or the audio output can drive the output clock
- By default, the audio output will drive the output clock: no more audio
resampling or flush when the audio is late or early
* New medialibrary (vlc_media_library.h)
* New player (vlc_player.h):
- Replace the input_thread_t API that is now internal
- One instance is used to play subsequent medias
- Allow multiple track selection
- Fix TOCTOU issues (the player lock is exposed)
* New mediatree and mediasource (vlc_media_source.h)
- Browse local network and service discoveries
* New playlist (vlc_playlist.h)
- Replace the previous one
- Flat, new random implementation
- Can't browse anymore (cf. mediatree)
* Add support for dual subtitles selection (via the player)
Audio output:
* ALSA: HDMI passthrough support.
Use --alsa-passthrough to configure S/PDIF or HDMI passthrough.
* Remove the DirectSound plugin (API obsolete after Windows 7)
Demuxer:
* Support for HEIF format
* Support for HEIF image and grid image formats
* Support for DASH WebM
* Support for DVBSUB in mkv
* Support for DAV video files
* Improved Bluray menus, clips and stream selection
* Support chapters in mp3 files
* Support for DMX audio music (MUS) files
Codecs:
* Support for experimental AV1 video encoding
* WebVTT encoder
* Remove iomx support for Android
* WebP image decoding
* Support for SMPTE-TT image profile
* Support for 16-bit greyscale
* Support IMM4 decoder
* Improve 708 decoder
* Support AGM decoder
* Support VP4 decoder
* Add NVDEC hardware decoder
* Remove SDL_image support
Access:
* Enable SMB2 / SMB3 support on mobile ports with libsmb2
* Added support for the RIST (Reliable Internet Stream Transport) Protocol
* Added support for the AMT (Automatic Multicast Tunneling) Protocol
* Added support for the Gopher Protocol
* Added avaudiocapture module as a replacement for qtsound, which is removed now
* Audio CD data tracks are now correctly detected and skipped
* Deprecates Audio CD CDDB lookups in favor of more accurate Musicbrainz
* Improved CD-TEXT and added Shift-JIS encoding support
* Support for YoutubeDL (where available).
Access output:
* Added support for the RIST (Reliable Internet Stream Transport) Protocol
* Added support for HTTP PUT (HTTP upload)
Video output:
* Added X11 RENDER video output plugin
* Remove aa plugin
* Remove evas plugin
* Remove omxil_vout plugin
* Remove RealRTSP plugin
* Remove Real demuxer plugin
* Fix washed out black on NVIDIA cards with Direct3D9
* On-Screen-Display is off by default in libvlc
* Remove deprecated Linux framebuffer plugin
* Removed VDPAU video output plugin (hardware decoder still present)
Audio filter:
* Add RNNoise recurrent neural network denoiser
Video filter:
* Update yadif
* Remove remote OSD plugin
Stream output:
* New SDI output with improved audio and ancillary support.
Candidate for deprecation of decklink vout/aout modules.
* Support for DLNA/UPNP renderers
* The "udp" access output module has been removed.
Please use the UDP stream output instead, e.g.:
Old: '#std{access=udp,mux=ts,dst=239.255.1.2:1234,sap}'
New: '#udp{dst=239.255.1.2:1234,sap}'
Muxers:
* MP4 files are no longer faststart by default
Service discovery:
* Support Renderer discovery with avahi
macOS:
* Remove Growl notification support
* Improved AppleScript API with support for playback modes, recording, rate
appleOS:
* Improved proxy configuration handling
Changes between 3.0.12.1 and 3.0.13:
----------------------------------
Demux:
* Adaptive: fix artefacts in HLS streams with wrong profiles/levels
* Fix regression on some MP4 files for the audio track
* Fix MPGA and ADTS probing in TS files
* Fix Flac inside AVI files
* Fix VP9/Webm artefacts when seeking
Codec:
* Support SSA text scaling
* Fix rotation on Android rotation
* Fix WebVTT subtitles that start at 00:00
Access:
* Update libnfs to support NFSv4
* Improve SMB2 integration
* Fix Blu-ray files using Unicode names on Windows
* Disable mcast lookups on Android for RTSP playback
Video Output:
* Rework the D3D11 rendering wait, to fix choppiness on display
Interfaces:
* Fix VLC getting stuck on close on X11 (#21875)
* Improve RTL on preferences on macOS
* Add mousewheel horizontal axis control
* Fix crash on exit on macOS
* Fix sizing of the fullscreen controls on macOS
Windows:
* Fix subtitles/OSD under Windows XP
Misc:
* Update translations
* Improve MIDI fonts search on Linux
* Update Soundcloud, Youtube, liveleak
* Fix compilation with GCC11
* Fix input-slave option for subtitles
Changes between 3.0.12 and 3.0.12.1:
----------------------------------
macOS:
* 3.0.12.1 is the first release for Apple Silicon macs
* Version bump to allow an automatic upgrade path
Changes between 3.0.11.1 and 3.0.12:
----------------------------------
Access:
* Add new RIST access module compliant with simple profile (VSF_TR-06-1)
Access Output:
* Add new RIST access output module compliant with simple profile (VSF_TR-06-1)
Demux:
* Fixed adaptive's handling of resolution settings
* Improve Bluray tracks support
* Improve WMV seeking and DASH support
* Fix crashes in AVI, MKV modules
Audio output:
* Fix audio distortion on macOS during start of playback
Video Output:
* Direct3D11: Fix some potential crashes when using video filters
macOS:
* Add native support for Apple Silicon / ARM-64
* Visual UI adaptations for macOS Big Sur
* Fix displaying EQ bands in the UI depending on which frequency
presets are set for the EQ in advanced preferences
* Fix UI issues in bookmarks window
Misc:
* Several fixes in the web interface, including privacy and security
improvements
* Update YouTube and Vocaroo scripts
* Fix rotation filter mouse handling
* Update translations
Changes between 3.0.11 and 3.0.11.1:
----------------------------------
Demux:
* Fixed HLS playlist update mechanism, unable to start
in some cases.
* Because of broken HLS servers, adaptive no longer
considers Content-Type as authoritative.
* Fixed handling of WEBM WebVTT subtitles
* Workaround invalid ADTS in TS from Makito encoders
* Fixed Opus when using avformat demuxer
Decoders:
* Fixed inverted explicit start/end positioning
Service Discovery:
* Fix listing of media on certain Panasonic recorders discovered via UPnP
macOS:
* Fix automatic playback resume with "Music" app
* Fix possible freeze after pause, seek, unpause
Contribs:
* Updated gnutls to 3.6.14
* Updated libebml to 1.4.0
* Updated libmatroska to 1.6.0
* Updated mpg123 to 1.26.2
Changes between 3.0.10 and 3.0.11:
----------------------------------
Access:
* rtp descriptor leak on error fix
Demux:
* Fixed regression with some encrypted HLS streams
* Live HLS delay until first update fix
* HLS rendition switch regression fix
* Fix imprecise m4a seek
Decoder:
* Fixed missing captions with some capture cards
Audio filters:
* soxr resampling fixes
Contribs:
* Updated libfaad to 2.9.2 (Parametric Stereo regression)
* Updated libarchive to 3.4.2
macOS:
* Fixed moving video window with mouse
* Fixed UI issue showing "permissions warning" unnecessarily often
* Fixed stack buffer overflow listing bluray mount points
* Fixed potential crashes at startup
Audio Output:
* Fix sound not coming back after a pause with CoreAudio (macOS/iOS)
Misc:
* Update Youtube script
Changes between 3.0.9.2 and 3.0.10:
----------------------------------
Misc:
* Update Twitch & VLSub scripts
Changes between 3.0.9.1 and 3.0.9.2:
----------------------------------
Misc:
* Properly bump the version in configure.ac
Changes between 3.0.9 and 3.0.9.1:
----------------------------------
Misc:
* Fix VLSub returning 401 for earch request
Changes between 3.0.8 and 3.0.9:
----------------------------------
Core:
* Work around busy looping when playing an invalid item through VLM
Access:
* Multiple dvdread and dvdnav crashs fixes
* Fixed DVD glitches on clip change
* Fixed dvdread commands/data sequence inversion in some cases causing
unwanted glitches
* Better handling of authored as corrupted DVD
* Added libsmb2 support for SMB2/3 shares
Demux:
* Fix TTML entities not passed to decoder
* Fixed some WebVTT styling tags being not applied
* Misc raw H264/HEVC frame rate fixes
* Fix adaptive regression on TS format change (mostly HLS)
* Fixed MP4 regression with twos/sowt PCM audio
* Fixed some MP4 raw quicktime and ms-PCM audio
* Fixed MP4 interlacing handling
* Multiple adaptive stack (DASH/HLS/Smooth) fixes
* Enabled Live seeking for HLS
* Fixed seeking in some cases for HLS
* Improved Live playback for Smooth and DASH
* Fixed adaptive unwanted end of stream in some cases
* Faster adaptive start and new buffering control options
Packetizers:
* Fixes H264/HEVC incomplete draining in some cases
* packetizer_helper: Fix potential trailing junk on last packet
* Added missing drain in packetizers that was causing missing
last frame or audio
* Improved check to prevent fLAC synchronization drops
Decoder:
* avcodec: revector video decoder to fix incomplete drain
* avcodec: support Codec 2 decoding
* spudec: implemented palette updates, fixing missing subtitles
on some DVD
* Fixed WebVTT CSS styling not being applied on Windows/macOS
* Fixed Hebrew teletext pages support in zvbi
* Fixed Dav1d aborting decoding on corrupted picture
* Extract and display of all CEA708 subtitles
* Update libfaad to 2.9.1
* Add DXVA support for VP9 Profile 2 (10 bits)
* Mediacodec aspect ratio with Amazon devices
Audio output:
* Added support for iOS audiounit audio above 48KHz
* Added support for amem audio up to 384KHz
Video output:
* Fix for opengl glitches in some drivers
* Fix GMA950 opengl support on macOS
* YUV to RGB StretchRect fixes with NVIDIA drivers
* Use libpacebo new tone mapping desaturation algorithm
Text renderer:
* Fix crashes on macOS with SSA/ASS subtitles containing emoji
* Fixed unwanted growing background in Freetype rendering and Y padding
Mux:
* Fixed some YUV mappings
macOS:
* Use a layer based video output on 10.14 and higher, which should
fix various rendering issues where the vout would glitch between
a wrong size and the correct size.
Additionally this works around OpenGL issues with Macs that have a
dedicated NVIDIA GPU, which caused rendering artifacts in the whole
OS, especially when the "Reduce transparency" accessibility option
is used
* Remove qtsound module and add avaudiocapture module as replacement
* Fix audio capture on macOS Catalina by using avaudiocapture
* Inform the user in case OS permissions are missing for certain actions
* Fix Apple Remote support on macOS Catalina
* Add support for pausing Apple Music on macOS Catalina
* Fix UPnP discovery crash without an active network interface
* Fix rare placement issues with fullscreen panel
* Fix problem in audio output remembering the last device configuration
in digital mode
Service Discovery:
* Update libmicrodns to 0.1.2
Misc:
* Update YouTube, SoundCloud and Vocaroo scripts: this restores
playback of YouTube URLs.
* Add missing .wpl & .zpl file associations on Windows
* Improved chromecast audio quality
Changes between 3.0.7.1 and 3.0.8:
----------------------------------
Core:
* Fix stuttering for low framerate videos
Demux:
* Fix channel ordering in some MP4 files
* Fix glitches in TS over HLS
* Add real probing of HLS streams
* Fix HLS MIME type fallback
Decoder:
* Fix WebVTT subtitles rendering
Stream filter:
* Improve network buffering
Misc:
* Update Youtube script
Audio Output:
* macOS/iOS: Fix stuttering or blank audio when starting or seeking when using
external audio devices (bluetooth for example)
* macOS: Fix AV synchronization when using external audio devices
Video Output:
* Direct3D11: Fix hardware acceleration for some AMD drivers
Stream output:
* Fix transcoding when the decoder does not set the chroma
Security:
* Fix a buffer overflow in the MKV demuxer (CVE-2019-14970)
* Fix a read buffer overflow in the avcodec decoder (CVE-2019-13962)
* Fix a read buffer overflow in the FAAD decoder
* Fix a read buffer overflow in the OGG demuxer (CVE-2019-14437, CVE-2019-14438)
* Fix a read buffer overflow in the ASF demuxer (CVE-2019-14776)
* Fix a use after free in the MKV demuxer (CVE-2019-14777, CVE-2019-14778)
* Fix a use after free in the ASF demuxer (CVE-2019-14533)
* Fix a couple of integer underflows in the MP4 demuxer (CVE-2019-13602)
* Fix a null dereference in the dvdnav demuxer
* Fix a null dereference in the ASF demuxer (CVE-2019-14534)
* Fix a null dereference in the AVI demuxer
* Fix a division by zero in the CAF demuxer (CVE-2019-14498)
* Fix a division by zero in the ASF demuxer (CVE-2019-14535)
Contribs:
* Update to a newer libmodplug version (0.8.9.0)
Changes between 3.0.7 and 3.0.7.1:
----------------------------------
Access:
* Update libbluray to 1.1.2
macOS:
* Fix bluray java menu playback regression in 3.0.7
Video Output:
* Fix hardware acceleration with some AMD drivers
* Improve direct3d11 HDR support
Changes between 3.0.6 and 3.0.7:
--------------------------------
Access:
* Improve Blu-ray support
* Fix sftp module build with libssh >= 1.8.1
Audio output:
* Fix pass-through on Android-23
* Fix DirectSound drain
Demux:
* Improve MP4 support
Video Output:
* Fix 12 bits sources playback with Direct3D11
* Fix crash on iOS
* Fix midstream aspect-ratio changes when Windows hardware decoding is on
* Fix HLG display with Direct3D11
Stream Output:
* Improve Chromecast support with new ChromeCast apps
macOS:
* Fix UPNP service discovery, services are discovered on the highest priority
active network interface now
* Fix video distortion on macOS Mojave
Misc:
* Update Youtube, Dailymotion, Vimeo, Soundcloud scripts
* Work around busy looping when playing an invalid item with loop enabled
Translations:
* Update of most translations
Security:
* Fix multiple buffer overflows in the ps demuxer
* Fix a buffer overflow when copying a biplanar YUV image
* Fix multiple buffer overflows in the faad decoder
* Fix buffer overflow in the svcdsub decoder
* Fix buffer overflows in the ogg muxer & demuxer
* Fix buffer overflows in libavformat demuxer
* Fix multiple buffer overflows in the MKV demuxer
* Fix a buffer overflow in the MP4 demuxer
* Fix a buffer overflow in the textst decoder
* Fix a buffer overflow in the webvtt decoder
* Fix a buffer overflow in the ASF demux
* Fix a buffer overflow in the UPNP SD
* Fix use after free in the ogg demuxer
* Fix multiple use after free in the MKV demuxer
* Fix multiple use after free in the DMO decoder
* Fix integer underflow in the MKV demuxer
* Fix an updater NULL pointer dereference on invalid signing keys
* Fix NULL pointer dereference in the MKV demuxer
* Fix an integer overflow in the spudec decoder
* Fix an integer overflow in the nsc demuxer
* Fix an integer overflow in the avi demuxer
* Fix reads of uninitialized pointers in the MKV demuxer
* Fix a floating point exception in the MKV demuxer
* Fix an infinite loop in the flac packetizer
Changes between 3.0.5 and 3.0.6:
--------------------------------
Core:
* Fix potential subtitle picture allocation failures
Codec:
* Add support for 12 bits decoding of AV1
* Fix HDR support in AV1 when the container provides the metadata
Changes between 3.0.4 and 3.0.5:
--------------------------------
Access:
* Improve RTSP playback
* BluRay fixes and improvements, notably for menus and seeking
* Improve the UDP/RTP truncated issue
Codec:
* Add a new AV1 decoder based on dav1d library
* Enable libaom decoder by default
* Fix decoding of some HEVC streams with macOS hardware decoding
Demux:
* MP4: Fix reading of some HDR metadata
* Miscellaneous AV1 demuxing improvements
* Fix CAF integer-underflow
* Fix an MKV crash on iOS 12.0, on iPhone XS phones
Packetizer:
* Add an AV1 packetizer
macOS:
* Starting with VLC 3.0.5, VLC will be distributed with runtime hardening
enabled on macOS Mojave.
All external VLC plugins need to be signed by a DeveloperID certificate in order
to continue working with the official VLC package.
* Update the VLC dark UI to better match the dark mode of macOS Mojave
* Fix convert & save panel stream option
Audio output:
* Fix corking when the playback state is paused
* Improve corking on Android
Video Output:
* Fix Direct3D11 tone-mapping when HDR is displayed on an SDR screen
* More accurate colors for SD sources in Direct3D11
* Disable hardware decoding on some old Intel GPUs
* Fix zero-copy GPU acceleration on AMD RX Vega
* Misc Direct3D11 fixes
Miscellaneaous:
* Improve ChromeCast
* Update numerous 3rd party libraries, including for minor security issues
* Update Youtube support
* Fix subtitles rendering with specific fonts with negative horizontal advance
Changes between 3.0.3 and 3.0.4:
--------------------------------
Decoder:
* Blacklist some intel GPU when decoding HEVC
* Decode AV1 streams
* Fix playback of low-fps files
* Fix hardware decoding of low-latency sliced H.264 streams on macOS
* Fix seeking with streams containing WebVTT subtitles
* Fix decoding some CC-608 streams with roll-up
* Fix crashes with LPCM streams
* Fix colorspace of JPEG, PNG and screen inputs
* Fix MediaCodec rotation handling
Demux:
* Improve FLV fps detection
* Fix some ogg/flac
* Improve support for broken HEVC inside MKV
* Fix some AVI regression for broken files and for DVAudio
* Support files splitted in the .mts%d pattern
* Fixes for MKV seeking
* Fix for MP4 disabled track selection
* Fix playback of incomplete RAR files (downloading)
Audio Output:
* Improve iOS session management and resume-from-pause
* Improve macOS audio performance
* Support 44.1kHz DTS passthrough
* Fix crashes on DirectSound output
Video Output:
* Fix some crash in Direct3D11/Direct3D9 because of sensors
* Fix some broken DVD subtitles rendering (OpenGL, notably)
* Fix crashes on old mac machines, after some time
* Fix memleaks on the EGL output (Android notably)
* Fix misc display in Direct3D11 due to broken drivers
* Fix potential green screen on Windows XP
Text renderer:
* Fix rendering of arabic fonts fallback on macOS
* Fix head buffer overflow on macOS with some fonts
* Fix rendering of fonts with specific fonts
* Fix some RTL rendering
Misc:
* Fix live555, macOS-UI, screen capture crashes
* Change the extension registration names on Windows
* Fix VLM 'now' date
* Fixes on the HTTPD server
* Fix on the NTservice registration
* Fix --stop-time option
* Fix ChromeCast compatibility with web interface
* Fix subtitles alignment
* Fix infinite recursion on directory playback
* Fix detection SAT>IP servers
Qt:
* Fix tooltip display when using Wayland
macOS:
* macOS 10.7.5 is required now, VLC will no longer launch on earlier releases
* Fix delay and fps setting in subtitle dialog
* Modernized and improved support for media keys
* Fix issues with drag and drop of playlist items
* Fix support for audio capturing with qtsound module
* Fix layout issues in the Convert and Save panel
Translations:
* Update of most translations
Changes between 3.0.2 and 3.0.3:
--------------------------------
Core:
* Update subtitles display while paused
Access:
* Enable srt support on binary builds
Decoders:
* Allow videotoolbox hardware decoding to be disabled
* Disable VideoToolbox for 10bits H.264
* Fix VideoToolbox with some invalid HEVC streams
* Fix subsdec wide character support
* Fix 1st order Ambisonics in AAC
Demux:
* Miscellaneous ogg improvements & bugfixes, including oggds
* Fix forced tracks selection
* Fix Topfield files
* Probe AAC/ADTS inside TS
* Fix tracks detection issues with DolbyVision and Bluray streams
macOS:
* Fix "Open Network Stream" URL box focus
* Add option to disable hardware acceleration for video decoding
* Remove option to force dolby mode from simple preferences
Video Output:
* Fix crashes on Direct3D11
Qt:
* Fix tooltip display on some desktop environments
* Fix spurious movement of the main Window
* Fix playlist being displayed in fullscreen
Misc:
* Fix amem output
* Fix numerous issues on fonts fallback and font shaping
* Fix subtitles toggle through hotkeys
* Fix audioscrobbling
* Fix buffer over-read in avcodec audio encoding with non-default layouts
* Numerous 3rd party libraries updated, fixing security issues
Translations:
* Update of most languages
Changes between 3.0.1 and 3.0.2:
--------------------------------
Core:
* Fix snapshotting with subtitles when using hardware acceleration
* Fix green/missing line/column when the picture dimensions are odd
Decoders:
* Important improvements in hardware decoding for macOS, notably faster,
supporting more samples and removing crashes/deadlocks
* Improve compatibility for DxVA2 and D3D11 decoding, fix crashes when seeking
and fix blacklisting of broken drivers
* Fix SSA subtitles forced alignment
* Fix E-AC-3 stuttering
* Fix MIDI playback on macOS
* Add playback support for ProRes 4444 XQ
Demux:
* Fix wrong colors in some AVI files
* Fix IFO files playback to start DVDs
* Fix a crash with missing/invalid MPEG SDT
* Update VP8/9/10 ISOBMFF bindings and improve HDR for those cases
* Fix TTML inside MP4
* Improve MP4 read of color information
* Fix flac seeking and improve flac parsing
* Improve mkv opening & seeking speed
* Fix display of chapters with no name defined
* Miscellaneous MKV crash fixes
* Fix crash with multi-region DVDs
* Fix audio being muted on DVD chapter change
* Fix audio being muted when seeking in a BluRay disc
Access:
* Avoid a crash/assert in FTP after seeking
Audio output:
* Fix mmdevice default audio device handling
* Fix "reset audio volume" being forcefully deactivated
* Allow a default device to be used by VLC
* Only warn once about misconfiguration for AUhal devices on macOS
* Improve resampling and latency computation for CoreAudio
* Passthrough is now disabled by default
Audio filters:
* Fix audio stutter after unpausing with headphones
* Fix silence when dolby-surround was mis-selected in preferences
Video output:
* Fix OpenGL crashes or bad display with semi-planar chromas
* Fix OpenGL interop (zero-copy) disabled for tvOS
* Major rewrite of the iOS video output to fix numerous crashes
* Important improvements of the D3D11 video output to use less memory
and less GPU for HDR tone-mapping
* Fix crop on vertical videos with Direct3D11
* Fix Direct3D9 filters settings not being applied properly
* Fix transform filters with hardware decoding
* Fix snapshot and filters with HEVC hardware decoding
* Fix a buffer overrun during GPU/CPU image copy
* Fix glitches on DVD menus with Direct3D11
* Fix non-HDR content playback on HDR screens with Direct3D11
* Fix YUV full range displayed incorrectly in Direct3D11
* Fix miscellaneous crashes in Direct3D11
* Fix potential black screen with 10bits videos on Direct3D11
macOS:
* Fix Growl notifications on recent macOS versions
* Fix conversion output file name encoding
* Fix crash reporting on macOS 10.7 and 10.8
* Fix crash on exit
* Fix remember playback position
* Fix Blu-ray disc Java menu
* Fix swiping on time slider to change position
* Fix problems with restoring user name from keychain
* Fix localization issues
Qt:
* Fix last folder used in open dialogs
* Allow to customize the seek jump when using the mousewheel
* Fix fullscreen controller positionment on multiscreen setups
* Fix pasted URLs not being trimmed
* Fix jump size not being configurable
* Fix missing time labels updates
* Fix playback speed slider not accepting 1.0x value
* Fix raw input dump
* Fix window size after a fullscreen playback
Misc:
* Fix lua rc & oldrc interfaces host specification
* Fix crashes when searching for renderers
* Relocate localedir for Linux (improves snap i18n support)
* Fix VDPAU GLX usage on Linux
* Improve support for NetBSD
* Fix MSI script for Windows
* Fix libvlc_media_list not going to next media
* Fix character encoding on win32 consoles
* Miscellaneous chromecast improvements
* Fix missing OSD navigation feedback
* Various VLSub improvements
* lua: Fix scripts not being loaded on some filesystems
* lua: Add vlc.io APIs to handle UTF-8 paths
Changes between 3.0.0 and 3.0.1:
--------------------------------
Core:
* Fix use-after-free when cleaning playlists
* Fix crash on exit on Windows
Video output:
* Fix HLG tone mapping on some systems like macOS.
* Fix screensaver inhibition on Windows XP
* Fix various Direct3D11 crashes
* Fix HDR tone mapping in Direct3d11
* Fix pink screen on Windows
Decoder:
* Fix potential stack buffer overflow with faad
* Enable Cineform HD in avcodec
Hardware Decoder:
* macOS: Improve HEVC 10bit performance with Videotoolbox
* android: Add MPEG2 support via MediaCodec
* Fix HEVC decoding with some files on Android/macOS/iOS
* Improve Direct3D11 memory usage
Demux:
* Improve MKV seeking speed
* Fix xspf base URL handling
* Fix reading mp4 trun with moof based offsets
* Fix adaptive http redirections
* Replace old API, fixing adaptive TLS leak
* Use mime type as fallback for HLS segment type
* Fix subtitle (srt,ssa..) seek when having a single entry
* Flag non default HDMV subset video streams
* Increase TS probing amount for 4K streams
* Miscellaneous MKV, MP4 & AVI crash fixes
Packetizer:
* Fix out of bounds read in mpeg4video
Stream Output:
* Improve chromecast loading speed
* Improve local/chromecast transition during playback
* Fix chromecast loading with some versions of Windows
* Fix chromecast loading with some chromecast devices (TVs and Android boxes)
* Fix wrong first cover art when casting
* Fix casting to VP9
macOS Interface:
* Re-add option to disable the fullscreen controller panel
* Auto-layout improvements
* Remove misleading playback warning indicator
* Fix crash with the interface for lua extensions (like VLSub)
* Fix show sidebar setting being ignored on restart
* Fix MKV files association
* Fix chromecast audio detection
Qt Interface:
* Improve scaling on HiDPI displays
Snap:
* Improve interface look and feel.
Changes between 2.2.8 and 3.0.0:
......@@ -1260,6 +2081,7 @@ Video Filters:
* Improvements on the transform filter, to support 10bits and RGB formats
* Revival of the openCV and openCV example filters
* ARM NEON acceleration of chroma filters
* New crop filter without picture copy
Stream Output:
* Extended support for recording, notably for MKV and AVI
......
README for the VLC media player
===============================
VLC is a popular libre and open source media player and multimedia engine,
used by a large number of individuals, professionals, companies and
institutions. Using open source technologies and libraries, VLC has been
ported to most computing platforms, including GNU/Linux, Windows, Mac OS X,
BSD, iOS and Android.
VLC can play most multimedia files, discs, streams, allows playback from
devices, and is able to convert to or stream in various formats.
The VideoLAN project was started at the university École Centrale Paris who
relicensed VLC under the GPLv2 license in February 2001. Since then, VLC has
been downloaded close to one billion times.
Links:
======
The VLC web site . . . . . http://www.videolan.org/
Support . . . . . . . . . . http://www.videolan.org/support/
Forums . . . . . . . . . . https://forum.videolan.org/
Wiki . . . . . . . . . . . https://wiki.videolan.org/
The Developers site . . . . https://wiki.videolan.org/Developers_Corner
VLC hacking guide . . . . . https://wiki.videolan.org/Hacker_Guide
Bugtracker . . . . . . . . https://trac.videolan.org/vlc/
The VideoLAN web site . . . http://www.videolan.org/
Source Code Content:
===================
ABOUT-NLS - Notes on the Free Translation Project.
AUTHORS - VLC authors.
COPYING - The GPL license.
COPYING.LIB - The LGPL license.
INSTALL - Installation and building instructions.
NEWS - Important modifications between the releases.
README - This file.
THANKS - VLC contributors.
bin/ - VLC binaries.
bindings/ - libVLC bindings to other languages.
compat/ - compatibility library for operating systems missing
essential functionalities.
contrib/ - Facilities for retrieving external libraries and building
them for systems that don't have the right versions.
doc/ - Miscellaneous documentation.
extras/analyser - Code analyser and editor specific files.
extras/buildsystem - different buildsystems specific files.
extras/misc - Files that don't fit in the other extras/ categories.
extras/package - VLC packaging specific files such as spec files.
extras/tools/ - Facilities for retrieving external building tools needed
for systems that don't have the right versions.
include/ - Header files.
lib/ - libVLC source code.
modules/ - VLC plugins and modules. Most of the code is here.
po/ - VLC translations.
share/ - Common Resources files.
src/ - libvlccore source code.
test/ - testing system.
# VLC media player
**VLC** is a libre and open source **media player** and **multimedia engine**,
focused on **playing everything**, and **running everywhere**.
**VLC** can play most multimedia files, discs, streams, devices and is also able to
convert, encode, **stream** and manipulate streams into numerous formats.
VLC is used by many over the world, on numerous platforms, for very different use cases.
The **engine of VLC** can be embedded into 3rd party applications, and is called *libVLC*.
**VLC** is part of the [VideoLAN project](https://videolan.org) and
is developed and supported by a community of volunteers.
The VideoLAN project was started at the university [École Centrale Paris](https://www.centralesupelec.fr/) who
relicensed VLC under the GPLv2 license in February 2001. Since then, VLC has
been downloaded **billions** of times.
## License
**VLC** is released under the GPLv2 *(or later)* license.
*On some platforms, it is de facto GPLv3, because of the licenses of dependencies*.
**libVLC**, the engine is released under the LGPLv2 *(or later)* license. \
This allows embedding the engine in 3rd party applications, while letting them to be licensed under other licenses.
# Platforms
VLC is available for the following platforms:
- [Windows] *(from 7 and later, including UWP platforms and all versions of Windows 10)*
- [macOS] *(10.10 and later)*
- [GNU/Linux] and affiliated
- [BSD] and affiliated
- [Android] *(4.2 and later)*, including Android TV and Android Auto
- [iOS] *(9 and later)*, including AppleTV and iPadOS
- Haiku, OS/2 and a few others.
[Windows]: https://www.videolan.org/vlc/download-windows.html
[macOS]: https://www.videolan.org/vlc/download-macosx.html
[GNU/Linux]: https://www.videolan.org/vlc/#download
[BSD]: https://www.videolan.org/vlc/download-freebsd.html
[Android]: https://www.videolan.org/vlc/download-android.html
[iOS]: https://www.videolan.org/vlc/download-ios.html
Not all platforms receive the same amount of care, due to our limited resources.
**Nota Bene**: The [Android app](https://code.videolan.org/videolan/vlc-android/) and
the [iOS app](https://code.videolan.org/videolan/vlc-ios/) are located in different repositories
than the main one.
# Contributing & Community
**VLC** is maintained by a community of people, and VideoLAN is not paying any of them.\
The community is composed of developers, helpers, maintainers, designers and writers that want
this open source project to thrive.
The main development of VLC is done in the C language, but this repository also contains
plenty of C++, Obj-C, asm and Rust.
Other repositories linked to vlc are done in languages including Kotlin/Java [(Android)](https://code.videolan.org/videolan/vlc-android/),
Swift [(iOS)](https://code.videolan.org/videolan/vlc-ios/), and C# [(libVLCSharp)](https://code.videolan.org/videolan/libvlcsharp/).
We need help with the following tasks:
- Coding
- Packaging for Windows, macOS and Linux distributions
- Technical writing for the documentation
- Design
- Support
- Community management and communication.
Please contribute :)
We are on IRC. You can find us on the **#videolan** channel on *[Libera.chat]*.
[Libera.chat]: https://libera.chat
## Contributions
Contributions are now done through Merge Requests on our [GitLab repository](https://code.videolan.org/videolan/vlc/).
CI and discussions should be resolved before a Merge Request can be merged.
# libVLC
**libVLC** is an embeddable engine for 3rd party applications and frameworks.
It runs on the same platforms as VLC *(and sometimes on more)* and can provide playback,
streaming and conversion of multimedia files and streams.
**libVLC** has numerous bindings for other languages, such as C++, Python and C#.
# Support
## Links
Some useful links that might help you:
- [VLC web site](https://www.videolan.org/vlc/)
- [Support](https://www.videolan.org/support/)
- [Forums](https://forum.videolan.org/)
- [Wiki](https://wiki.videolan.org/)
- [Developer's Corner](https://wiki.videolan.org/Developers_Corner)
- [VLC hacking guide](https://wiki.videolan.org/Hacker_Guide)
- [Bugtracker](https://code.videolan.org/videolan/vlc/-/issues)
- [VideoLAN web site](https://www.videolan.org/)
## Source Code sitemap
```
ABOUT-NLS - Notes on the Free Translation Project.
AUTHORS - VLC authors.
COPYING - The GPL license.
COPYING.LIB - The LGPL license.
INSTALL - Installation and building instructions.
NEWS - Important modifications between the releases.
README - Project summary.
THANKS - VLC contributors.
bin/ - VLC binaries.
bindings/ - libVLC bindings to other languages.
compat/ - compatibility library for operating systems missing
essential functionalities.
contrib/ - Facilities for retrieving external libraries and building
them for systems that don't have the right versions.
doc/ - Miscellaneous documentation.
extras/analyser - Code analyser and editor specific files.
extras/buildsystem - Different build system specific files.
extras/misc - Files that don't fit in the other extras/ categories.
extras/package - VLC packaging specific files such as spec files.
extras/tools/ - Facilities for retrieving external building tools needed
for systems that don't have the right versions.
include/ - Header files.
lib/ - libVLC source code.
modules/ - VLC plugins and modules. Most of the code is here.
po/ - VLC translations.
share/ - Common resource files.
src/ - libvlccore source code.
test/ - Testing system.
```
......@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
# Copyright 1996-2016 Free Software Foundation, Inc.
# Copyright 1996-2020 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
......
......@@ -23,7 +23,7 @@ endif
#
# Main VLC executable
#
vlc_LDADD = ../lib/libvlc.la $(LIBPTHREAD)
vlc_LDADD = ../lib/libvlc.la
vlc_CPPFLAGS = $(AM_CPPFLAGS)
if !HAVE_WIN32
vlc_SOURCES = vlc.c override.c
......@@ -31,7 +31,7 @@ vlc_LDADD += $(LIBDL)
else
vlc_SOURCES = winvlc.c
vlc_DEPENDENCIES = vlc_win32_rc.$(OBJEXT)
vlc_LDFLAGS = -mwindows
vlc_LDFLAGS = -mwindows -Wc,-static
vlc_LDADD += vlc_win32_rc.$(OBJEXT)
libbreakpad_wrapper_la_SOURCES = breakpad.cpp
libbreakpad_wrapper_la_LIBADD = $(BREAKPAD_LIBS)
......@@ -47,8 +47,7 @@ endif
vlc_osx_SOURCES = darwinvlc.m
vlc_osx_LDFLAGS = $(LDFLAGS_vlc) -Wl,-framework,CoreFoundation,-framework,Cocoa
vlc_osx_LDFLAGS += -Xlinker -rpath -Xlinker "@executable_path/lib/"
vlc_osx_LDFLAGS += -Xlinker -rpath -Xlinker "@executable_path/plugins/"
vlc_osx_LDFLAGS += -Xlinker -rpath -Xlinker "$(libdir)"
if HAVE_BREAKPAD
vlc_osx_LDFLAGS += -Wl,-framework,Breakpad
vlc_osx_OBJCFLAGS = -F$(CONTRIB_DIR)/Frameworks
......@@ -64,6 +63,7 @@ vlc_osx_static_OBJCFLAGS = $(AM_OBJCFLAGS) \
vlc_osx_static_LDFLAGS = $(vlc_osx_LDFLAGS) -static
vlc_osx_static_LDFLAGS += -Xlinker -rpath -Xlinker "@executable_path/../lib/.libs/"
vlc_osx_static_LDFLAGS += -Xlinker -rpath -Xlinker "@executable_path/../src/.libs/"
vlc_osx_static_LDFLAGS += -Xlinker -rpath -Xlinker "@executable_path/../Frameworks/"
vlc_osx_static_LDADD = $(vlc_osx_LDADD)
if HAVE_BREAKPAD
vlc_osx_static_LDFLAGS += -Wl,-framework,Breakpad
......@@ -118,6 +118,7 @@ vlc_cache_gen_LDADD = \
../lib/libvlc.la
if HAVE_WIN32
vlc_cache_gen_LDADD += vlc_win32_rc.$(OBJEXT)
vlc_cache_gen_LDFLAGS = -Wc,-static
vlc_cache_gen_DEPENDENCIES = vlc_win32_rc.$(OBJEXT)
endif
......@@ -132,7 +133,7 @@ MOSTLYCLEANFILES = $(noinst_DATA)
if HAVE_OSX
if BUILD_VLC
install-data-local:
cd $(bindir); mv vlc-osx vlc
cd "$(DESTDIR)$(bindir)"; mv vlc-osx vlc
endif
endif
......
......@@ -88,12 +88,9 @@ int main (int argc, char *argv[])
vlc_argv[vlc_argc] = NULL;
libvlc_instance_t *vlc = libvlc_new (vlc_argc, vlc_argv);
if (vlc != NULL)
libvlc_release (vlc);
if (vlc == NULL)
fprintf (stderr, "No plugins in %s\n", path);
if (vlc == NULL)
return 1;
libvlc_release(vlc);
}
return 0;
......
......@@ -2,7 +2,6 @@
* darwinvlc.m: OS X specific main executable for VLC media player
*****************************************************************************
* Copyright (C) 2013-2015 VLC authors and VideoLAN
* $Id$
*
* Authors: Felix Paul Kühne <fkuehne at videolan dot org>
* David Fuhrmann <dfuhrmann at videolan dot org>
......@@ -27,6 +26,9 @@
#endif
#include <vlc/vlc.h>
#include <vlc_common.h>
#include <vlc_charset.h>
#include <stdlib.h>
#include <locale.h>
#include <signal.h>
......@@ -114,6 +116,13 @@ BreakpadRef initBreakpad()
*****************************************************************************/
int main(int i_argc, const char *ppsz_argv[])
{
#ifdef HAVE_BREAKPAD
BreakpadRef breakpad = NULL;
if (!getenv("VLC_DISABLE_BREAKPAD"))
breakpad = initBreakpad();
#endif
/* The so-called POSIX-compliant MacOS X reportedly processes SIGPIPE even
* if it is blocked in all thread.
* Note: this is NOT an excuse for not protecting against SIGPIPE. If
......@@ -130,6 +139,7 @@ int main(int i_argc, const char *ppsz_argv[])
#ifdef TOP_BUILDDIR
setenv("VLC_PLUGIN_PATH", TOP_BUILDDIR"/modules", 1);
setenv("VLC_DATA_PATH", TOP_SRCDIR"/share", 1);
setenv("VLC_LIB_PATH", TOP_BUILDDIR"/modules", 1);
#endif
#ifndef ALLOW_RUN_AS_ROOT
......@@ -223,44 +233,21 @@ int main(int i_argc, const char *ppsz_argv[])
argv[argc++] = "--no-ignore-config";
argv[argc++] = "--media-library";
/* overwrite system language on Mac */
char *lang = NULL;
for (int i = 0; i < i_argc; i++) {
if (!strncmp(ppsz_argv[i], "--language", 10)) {
lang = strstr(ppsz_argv[i], "=");
ppsz_argv++, i_argc--;
continue;
}
}
if (lang && strncmp( lang, "auto", 4 )) {
char tmp[11];
snprintf(tmp, 11, "LANG%s", lang);
putenv(tmp);
}
if (!lang) {
CFStringRef language;
language = (CFStringRef)CFPreferencesCopyAppValue(CFSTR("language"),
kCFPreferencesCurrentApplication);
if (language) {
CFIndex length = CFStringGetLength(language) + 1;
if (length > 0) {
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8);
lang = (char *)malloc(maxSize);
if(lang) {
CFStringGetCString(language, lang, maxSize - 1, kCFStringEncodingUTF8);
if (strncmp( lang, "auto", 4 )) {
char tmp[11];
snprintf(tmp, 11, "LANG=%s", lang);
putenv(tmp);
}
}
free(lang);
/* Overwrite system language */
CFPropertyListRef lang_pref = CFPreferencesCopyAppValue(CFSTR("language"),
kCFPreferencesCurrentApplication);
if (lang_pref) {
if (CFGetTypeID(lang_pref) == CFStringGetTypeID()) {
char *lang = FromCFString(lang_pref, kCFStringEncodingUTF8);
if (strncmp(lang, "auto", 4)) {
char tmp[11];
snprintf(tmp, 11, "LANG=%s", lang);
putenv(tmp);
}
CFRelease(language);
free(lang);
}
CFRelease(lang_pref);
}
ppsz_argv++; i_argc--; /* skip executable path */
......@@ -286,23 +273,17 @@ int main(int i_argc, const char *ppsz_argv[])
libvlc_set_app_id(vlc, "org.VideoLAN.VLC", PACKAGE_VERSION, PACKAGE_NAME);
libvlc_set_user_agent(vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
libvlc_add_intf(vlc, "hotkeys,none");
if (libvlc_add_intf(vlc, NULL)) {
fprintf(stderr, "VLC cannot start any interface. Exiting.\n");
goto out;
}
libvlc_playlist_play(vlc, -1, 0, NULL);
libvlc_playlist_play(vlc);
/*
* Run the main loop. If the mac interface is not initialized, only the CoreFoundation
* runloop is used. Otherwise, [NSApp run] needs to be called, which setups more stuff
* before actually starting the loop.
*/
#ifdef HAVE_BREAKPAD
BreakpadRef breakpad;
breakpad = initBreakpad();
#endif
@autoreleasepool {
if(NSApp == nil) {
CFRunLoopRun();
......@@ -322,7 +303,8 @@ out:
libvlc_release(vlc);
#ifdef HAVE_BREAKPAD
BreakpadRelease(breakpad);
if (breakpad)
BreakpadRelease(breakpad);
#endif
return ret;
......
# Do we build the main VLC binary?
build_vlc = get_option('vlc')
if build_vlc and (host_system != 'darwin' or have_osx)
vlc_sources = []
vlc_deps = [m_lib, dl_lib, threads_dep]
if host_system == 'darwin'
vlc_sources += ['darwinvlc.m']
vlc_deps += corefoundation_dep
if have_osx
vlc_deps += dependency('Cocoa', required: true)
endif
elif host_system == 'windows'
vlc_sources += ['winvlc.c']
else
vlc_sources += ['vlc.c', 'override.c']
endif
executable('vlc',
vlc_sources,
link_with: [libvlc],
include_directories: [vlc_include_dirs],
dependencies: vlc_deps,
install: true,
win_subsystem: 'windows'
)
vlc_top_builddir_def = '-DTOP_BUILDDIR="@0@"'.format(vlc_build_root)
vlc_top_srcdir_def = '-DTOP_SRCDIR="@0@"'.format(vlc_src_root)
executable('vlc-static',
vlc_sources,
link_with: [libvlc],
include_directories: [vlc_include_dirs],
dependencies: vlc_deps,
c_args: [vlc_top_builddir_def, vlc_top_srcdir_def],
objc_args: [vlc_top_builddir_def, vlc_top_srcdir_def],
win_subsystem: 'windows'
)
endif
......@@ -173,7 +173,7 @@ static struct
void srand (unsigned int seed)
{
pthread_mutex_lock (&prng.lock);
LOG("Warning", "%d", seed);
LOG("Warning", "%u", seed);
prng.seed = seed;
pthread_mutex_unlock (&prng.lock);
}
......@@ -278,7 +278,7 @@ char *strerror (int val)
}
/*** Xlib ****/
#ifdef HAVE_X11_XLIB_H
#ifndef X_DISPLAY_MISSING
# include <X11/Xlib.h>
static pthread_mutex_t xlib_lock = PTHREAD_MUTEX_INITIALIZER;
......
......@@ -161,12 +161,10 @@ static void rootprocess (int fd)
sock = socket (family, SOCK_STREAM, IPPROTO_TCP);
if (sock != -1)
{
const int val = 1;
setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof (val));
setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &(int){ 1 }, sizeof (int));
#ifdef AF_INET6
if (addr.sa.sa_family == AF_INET6)
setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof (val));
setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &(int){ 1 }, sizeof (int));
#endif
if (bind (sock, &addr.sa, len) == 0)
{
......
......@@ -2,7 +2,6 @@
* vlc.c: the VLC player
*****************************************************************************
* Copyright (C) 1998-2013 the VideoLAN team
* $Id$
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
......@@ -46,6 +45,7 @@
# define pthread_t int
# define pthread_self() _gettid()
# define pthread_sigmask(h, i, o) sigprocmask(h, i, o)
static char *FromSystem(const void *str)
{
......@@ -236,17 +236,13 @@ int main(int argc, const char *argv[])
libvlc_set_app_id (vlc, "org.VideoLAN.VLC", PACKAGE_VERSION, PACKAGE_NAME);
libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
libvlc_add_intf (vlc, "hotkeys,none");
#if !defined (__OS2__)
libvlc_add_intf (vlc, "globalhotkeys,none");
#endif
if (libvlc_add_intf (vlc, NULL))
{
fprintf(stderr, "%s: cannot start any interface. Exiting.\n", argv[0]);
goto out;
}
libvlc_playlist_play (vlc, -1, 0, NULL);
libvlc_playlist_play (vlc);
/* Qt insists on catching SIGCHLD via signal handler. To work around that,
* unblock it after all our child threads are created. */
......
......@@ -36,9 +36,6 @@
#include <windows.h>
#include <shellapi.h>
#ifndef _WIN32_IE
# define _WIN32_IE 0x501
#endif
#include <fcntl.h>
#include <io.h>
#include <shlobj.h>
......@@ -70,8 +67,8 @@ static BOOL SetDefaultDllDirectories_(DWORD flags)
BOOL (WINAPI * SetDefaultDllDirectoriesReal)(DWORD);
SetDefaultDllDirectoriesReal = GetProcAddress(h,
"SetDefaultDllDirectories");
SetDefaultDllDirectoriesReal = (BOOL (WINAPI *)(DWORD))
GetProcAddress(h, "SetDefaultDllDirectories");
if (SetDefaultDllDirectoriesReal == NULL)
return FALSE;
......@@ -97,7 +94,7 @@ static void PrioritizeSystem32(void)
} PROCESS_MITIGATION_IMAGE_LOAD_POLICY;
#endif
#if _WIN32_WINNT < _WIN32_WINNT_WIN8
BOOL WINAPI (*SetProcessMitigationPolicy)(PROCESS_MITIGATION_POLICY, PVOID, SIZE_T);
BOOL (WINAPI *SetProcessMitigationPolicy)(PROCESS_MITIGATION_POLICY, PVOID, SIZE_T);
HINSTANCE h_Kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
if ( !h_Kernel32 )
return;
......@@ -111,6 +108,13 @@ static void PrioritizeSystem32(void)
SetProcessMitigationPolicy( 10 /* ProcessImageLoadPolicy */, &m, sizeof( m ) );
}
static void vlc_kill(void *data)
{
HANDLE *semp = data;
ReleaseSemaphore(*semp, 1, NULL);
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
......@@ -142,7 +146,9 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
if (h_Kernel32 != NULL)
{
/* Enable DEP */
#ifndef PROCESS_DEP_ENABLE
# define PROCESS_DEP_ENABLE 1
#endif /* PROCESS_DEP_ENABLE */
BOOL (WINAPI * mySetProcessDEPPolicy)( DWORD dwFlags);
mySetProcessDEPPolicy = (BOOL (WINAPI *)(DWORD))
GetProcAddress(h_Kernel32, "SetProcessDEPPolicy");
......@@ -209,6 +215,8 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
CheckCrashDump( &path[0] );
eh = InstallCrashHandler( &path[0] );
}
#else
(void)crash_handling;
#endif
_setmode( _fileno( stdin ), _O_BINARY ); /* Needed for pipes */
......@@ -220,7 +228,7 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
if( RegOpenKeyEx( HKEY_CURRENT_USER, TEXT("Software\\VideoLAN\\VLC\\"), 0, KEY_READ, &h_key )
== ERROR_SUCCESS )
{
TCHAR szData[256];
WCHAR szData[256];
DWORD len = 256;
if( RegQueryValueEx( h_key, TEXT("Lang"), NULL, NULL, (LPBYTE) &szData, &len ) == ERROR_SUCCESS )
lang = FromWide( szData );
......@@ -240,14 +248,19 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
vlc = libvlc_new (argc, (const char **)argv);
if (vlc != NULL)
{
HANDLE sem = CreateSemaphore(NULL, 0, 1, NULL);
libvlc_set_exit_handler(vlc, vlc_kill, &sem);
libvlc_set_app_id (vlc, "org.VideoLAN.VLC", PACKAGE_VERSION,
PACKAGE_NAME);
libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
libvlc_add_intf (vlc, "hotkeys,none");
libvlc_add_intf (vlc, "globalhotkeys,none");
libvlc_add_intf (vlc, NULL);
libvlc_playlist_play (vlc, -1, 0, NULL);
libvlc_wait (vlc);
libvlc_playlist_play (vlc);
WaitForSingleObject(sem, INFINITE);
CloseHandle(sem);
libvlc_release (vlc);
}
else
......
......@@ -5,23 +5,27 @@
## Copyright (C) 2005-2008 the VideoLAN team
##
## Authors: Sam Hocevar <sam@zoy.org>
## Rémi Denis-Courmont <rem # videolan # org>
## Rémi Denis-Courmont
set -e
cd "$(dirname "$0")"
if test "$#" != "0"; then
echo "Usage: $0"
echo " Calls autoreconf to generate m4 macros and prepare Makefiles."
echo "Usage: $0" >&2
echo " Calls autoreconf to generate m4 macros and prepare Makefiles." >&2
exit 1
fi
ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}"
# Check for tools directory
if test -d extras/tools/build/bin; then
PATH="`pwd`/extras/tools/build/bin:$PATH"
if test -z ${VLC_TOOLS}; then
VLC_TOOLS=extras/tools/build
fi
if test -d ${VLC_TOOLS}/bin; then
VLC_TOOLS_PATH="$( cd "${VLC_TOOLS}/bin" ; pwd -P )"
PATH="$VLC_TOOLS_PATH:$PATH"
fi
###
......
#!/usr/bin/env python3
import os, re, argparse
parser = argparse.ArgumentParser()
# Input files
parser.add_argument("copying", type=argparse.FileType('r', encoding='UTF-8'))
parser.add_argument("thanks", type=argparse.FileType('r', encoding='UTF-8'))
parser.add_argument("authors", type=argparse.FileType('r', encoding='UTF-8'))
# Output files
parser.add_argument("output", type=argparse.FileType('w', encoding='UTF-8'))
args = parser.parse_args()
# Regex to remove emails in thanks and authors files
email_regex = re.compile(r'<.*.>')
output_str = '/* Automatically generated file - DO NOT EDIT */\n\n'
with args.copying:
output_str += 'static const char psz_license[] =\n"'
output_str += args.copying.read().replace('"', '\\"').replace('\r', '').replace('\n', '\\n"\n"')
output_str += '";\n\n'
with args.thanks:
output_str += 'static const char psz_thanks[] =\n"'
output_str += email_regex.sub('', args.thanks.read().replace('"', '\\"').replace('\r', '').replace('\n', '\\n"\n"'))
output_str += '";\n\n'
with args.authors:
output_str += 'static const char psz_authors[] =\n"'
output_str += email_regex.sub('', args.authors.read().replace('"', '\\"').replace('\r', '').replace('\n', '\\n"\n"'))
output_str += '";\n\n'
with args.output:
args.output.write(output_str)
# SIMD checks
# Check for fully workin SSE2 intrinsics
have_sse2_intrinsics = cc.compiles('''
#include <emmintrin.h>
#include <stdint.h>
uint64_t frobzor;
void f() {
__m128i a, b, c;
a = b = c = _mm_set1_epi64((__m64)frobzor);
a = _mm_slli_epi16(a, 3);
a = _mm_adds_epi16(a, b);
c = _mm_srli_epi16(c, 8);
c = _mm_slli_epi16(c, 3);
b = _mm_adds_epi16(b, c);
a = _mm_unpacklo_epi8(a, b);
frobzor = (uint64_t)_mm_movepi64_pi64(a);
}
''', args: ['-msse2'], name: 'SSE2 intrinsics check')
cdata.set('HAVE_SSE2_INTRINSICS', have_sse2_intrinsics)
# Check for SSE2 inline assembly support
can_compile_sse2 = cc.compiles('''
void f() {
void *p;
asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
}
''', args: ['-msse'], name: 'SSE2 inline asm check')
cdata.set('CAN_COMPILE_SSE2', can_compile_sse2)
have_sse2 = can_compile_sse2
# Check for SSE3 inline assembly support
can_compile_sse3 = cc.compiles('''
void f() {
void *p;
asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
}
''', args: ['-msse'], name: 'SSE3 inline asm check')
cdata.set('CAN_COMPILE_SSE3', can_compile_sse3)
# Check for SSSE3 inline assembly support
can_compile_2_sse3 = cc.compiles('''
void f() {
void *p;
asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
}
''', args: ['-msse'], name: 'SSSE3 inline asm check')
cdata.set('CAN_COMPILE_SSSE3', can_compile_2_sse3)
have_sse3 = can_compile_sse3 and can_compile_2_sse3
# Check for SSE4.1 inline assembly support
can_compile_sse4_1 = cc.compiles('''
void f() {
void *p;
asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
}
''', args: ['-msse'], name: 'SSE4.1 inline asm check')
cdata.set('CAN_COMPILE_SSE4_1', can_compile_sse4_1)
have_sse4_1 = can_compile_sse4_1
# Check for SSE4.2 inline assembly support
can_compile_sse4_2 = cc.compiles('''
void f() {
void *p;
asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
}
''', args: ['-msse'], name: 'SSE4.2 inline asm check')
cdata.set('CAN_COMPILE_SSE4_2', can_compile_sse4_2)
have_sse4_2 = can_compile_sse4_2
# Check for SSE4A inline assembly support
can_compile_sse4A = cc.compiles('''
void f() {
void *p;
asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
}
''', args: ['-msse'], name: 'SSE4A inline asm check')
cdata.set('CAN_COMPILE_SSE4A', can_compile_sse4A)
have_sse4A = can_compile_sse4A
# Check for fully workin AVX2 intrinsics
have_avx2_intrinsics = cc.compiles('''
#include <immintrin.h>
#include <stdint.h>
uint64_t frobzor;
void f() {
__m256i a, b, c;
a = b = c = _mm256_set1_epi64x((int64_t)frobzor);
a = _mm256_slli_epi16(a, 3);
a = _mm256_adds_epi16(a, b);
c = _mm256_srli_epi16(c, 8);
c = _mm256_slli_epi16(c, 3);
b = _mm256_adds_epi16(b, c);
a = _mm256_unpacklo_epi8(a, b);
frobzor = (uint64_t)_mm256_extract_epi64(a, 0);
}
''', args: ['-mavx2'], name: 'AVX2 intrinsics check')
cdata.set('HAVE_AVX2_INTRINSICS', have_avx2_intrinsics)
# Check for AVX inline assembly support
can_compile_avx = cc.compiles('''
void f() {
void *p;
asm volatile("vxorps %%ymm1,%%ymm2,%%ymm3"::"r"(p):"ymm1", "ymm2", "ymm3");
}
''', args: ['-mavx'], name: 'AVX inline asm check')
cdata.set('CAN_COMPILE_AVX', can_compile_avx)
have_avx = can_compile_avx
# Check for AVX2 inline assembly support
can_compile_avx2 = cc.compiles('''
void f() {
void *p;
asm volatile("vpunpckhqdq %%ymm1,%%ymm2,%%ymm3"::"r"(p):"ymm1", "ymm2", "ymm3");
}
''', args: ['-mavx'], name: 'AVX2 inline asm check')
cdata.set('CAN_COMPILE_AVX2', can_compile_avx2)
have_avx2 = can_compile_avx2
# TODO: ARM Neon checks and SVE checks
# TODO: Altivec checks