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
  • shocknovaa/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
422 results
Show changes
Commits on Source (5016)
......@@ -5,25 +5,29 @@ Programming
Rémi Denis-Courmont
Jean-Baptiste Kempf
Laurent Aimar
François Cartegnie
Gildas Bazin
Felix Paul Kühne
Rafaël Carré
Pierre d'Herbemont
Thomas Guillem
Rémi Duraffort
Derk-Jan Hartman
Antoine Cellerier
Samuel Hocevar
Jean-Paul Saman
Steve Lhomme
Christophe Mutricy
Clément Stenac
Christophe Massiot
Ilkka Ollakka
Pierre Ynard
François Cartegnie
Filip Roséen
Damien Fouilleul
Sigmund Augdal Helberg
Erwan Tulou
David Fuhrmann
Marvin Scholz
Olivier Teulière
Cyril Deguet
Eric Petit
......@@ -35,14 +39,15 @@ Pavlov Konstantin
Jakob Leben
Benjamin Pracht
Jean-Philippe André
Steve Lhomme
Stéphane Borel
JP Dinger
Geoffroy Couprie
Martin Storsjö
Marian Ďurkovič
Ludovic Fauvet
Petri Hintukainen
Yoann Peronneau
Denis Charmet
Sébastien Escudier
Jon Lech Johansen
KO Myung-Hun
......@@ -50,7 +55,7 @@ Edward Wang
Dennis van Amerongen
Faustino Osuna
Mirsal Ennaime
Denis Charmet
Sean McGovern
Jérôme Decoodt
Loïc Minier
David Flynn
......@@ -77,6 +82,8 @@ Alexis de Lattre
Vincent Penquerc'h
Arnaud de Bossoreille de Ribou
Mohammed Adnène Trojette
Salah-Eddin Shaban
Vittorio Giovara
Boris Dorès
Jai Menon
Anil Daoud
......@@ -271,7 +278,6 @@ Sven Petai
Tomas Krotil
Tomer Barletz
Tristan Leteurtre
Vittorio Giovara
Wang Bo
maxime Ripard
xxcv
......@@ -599,6 +605,220 @@ William Hawkins
Xavier Maillard
Ye zhang
Yuehua Zhao
Abylay Ospan
Adam Leggett
Adrian Haensler
Ago Allikmaa
Ajith Manjula Senarathne
Alain Degreffe
Alan Pope
Aleksandr Pasechnik
Alexandre Fernandez
Alexandre Pereira Nunes
Alexandre Perraud
Alex Peak
Alex Warhawk
Alex Woods
Allan Odgaard
Ancelot Mark Pinto
Andrea Giudiceandrea
Andreas Hartmetz
Andreas Mieke
André Silva
Andrew Clayton
Andrey Gursky
Andrii Zui
Andy Tather
Antti Ajanki
Ara Qadir
Arjun Sreedharan
Arne de Bruijn
Arun Pandian G
A S Alam
Avani Sharma
Avishay Spitzer
Bastien Penavayre
Benjamin Adolphi
Ben Littler
Benoit du Payrat
Benoît Noël du Payrat
Bernd Kuhls
Boris Egorov
Boy van Amstel
Brian Schmidt
Brion Vibber
Cameron Mozie
Carlos Fenollosa
Carola Nitz
Christian Suloway
Clemens Werther
C.W. Betts
Daniel Amm
Daniel Verkamp
Darko Jankovic
Darrell Walisser
David Robison
David R Robison
Dennis Hamester
Derek Buitenhuis
Diogo Silva
Dominko Azdajic
Donald Campbell
Doney den Ouden
Duncan McNamara
Duncan McNAMARA
Elodie Thomann
Emeric Grange
Eric Engestrom
Etienne BRATEAU
Eugen Geist
Fabian Yamaguchi
Fabrizio Ge
Fabrizio Gennari
Fahad Al-Saidi
Felix Abecassis
Florent Pillet
Forteve Zepushisti
Frank Praznik
Gabriel de Perthuis
Gal Vinograd
Gaurav Pruthi
Geoffrey Métais
Gian Marco Sibilla
Gilles Sabourin
Gina Dobrescu
Gonzalo Higuera Díaz
Goran Dokic
Guillaume Gomez
Harald Sitter
Heorhi Valakhanovich
Ian Chamberlain
Ibrahima SARR
Igor Prokopenkov
Ion Agorria
Jarrad Whitaker
Jean-Yves Avenard
Jed Smith
Jérémy Carrier
Jeremy Huddleston Sequoia
Jerome Forissier
Jim Bankoski
Jonas Lundqvist
Jonatan "jaw" Wallmander
Jonathan Calmels
Jonathan Heard
Jonathan McGowan
Jonathan Thambidurai
Joni Räsänen
Josef Andersson
Joseph DeVore
Julian Scheel
Justin Kim
Kaarlo Räihä
Kamil Rytarowski
Kazuki Yamaguchi
Konstantin K. Beliak
Konstantinos Tsanaktsidis
Konstantin Pavlov
Kornel Lesiński
Olivier Langlois
Lochlin Duperron
Lukas Juhrich
Lyndon Brown
Marc Aldorasi
Marcel Schnirring
Marc Etcheverry
Mariusz Wasak
Mark Becwar
Martell Malone
Mathieu Malaterre
Mathieu Parent
Mathieu Velten
Matthias Keiser
Matthias Treydte
Max Dilipovich
Maxim Bublis
Maxime CHAPELET
Maxime Mouchet
Michael Tänzer
Miha Sokolov
Mohammed (Shaan) Huzaifa Danish
Moti Zilberman
Nathan Egge
Niklas Haas
Odd-Arild Kristensen
O. Hartmann
Olaf Hering
Oliver Collyer
Paul B Mahol
Paul Clark
Paulo Vitor Magacho da Silva
Pavol Babincak
Paweł Stankowski
Petter Reinholdtsen
Philip Höhlein
Pierre-Hugues Husson
Pierre Lamot
Pyry Kontio
Radek Vybiral
Rafael Waldo Delgado Doblas
Rajeesh K V
Ray Tiley
Reka Inovan
Remita Amine
Ricardo Ribalda Delgado
Richard Diamond
Rinat Ibragimov
Robert Mourning
Romain Bentz
Romain Fliedel
Romain Vimont
Ronald S. Bultje
Ross Finlayson
Sam Malone
Samuel Martin
Samuel Thibault
Sanchit Arora
Santiago Gimeno
Sebastian Ramacher
Sebastian Roth
Sergey Bolshakov
Shaleen Jain
Shlomi Fish
Simona-Marinela Prodea
Stanislas Plessia
Stefan Pöschel
Steven Toth
Sushma Reddy
Takahito Hirano
T. Chomphuming
Thierry Foucu
Thomas Nigro
Tim Allen
Tim Walker
Tobias Conradi
Tony Gaillard
Benoît Tuduri
Tzu-Jung Lee
Uwe L. Korn
Valentin Deniaud
Valentin Vetter
Valter Correia
Vianney Boyer
Victorien Le Couviour--Tuffet
Vikram Fugro
Vinson Lee
Wayne McDougall
Wieland Hoffmann
Wills Wang
Xabier Aramendi
Yaşar Tay
Yidong Ren
Yuudai Yamashigi
Zhao Zhili
أحمد المحم ودي (Ahmed El-Mahmoudy)
Баярсайхан Энхтайван
Сергей Дарьичев
Artwork
-------
......@@ -607,6 +827,7 @@ Daniel Dreibrodt, aka aLtgLasS
David Weber
Davor Orel
Dominic Spitaler
Doney den Ouden
Eurodata Computer Club
Geoffrey Roussel
Joeri van Dooren
......
......@@ -50,7 +50,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 "$@"
###############################################################################
......@@ -60,6 +60,15 @@ EXTRA_DIST += \
extras/tools/bootstrap \
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/cmake-enable-ALPN-support-on-macOS-10.14.patch \
extras/tools/libtool-2.4.6-bitcode.patch \
extras/tools/libtool-2.4.6-clang-libs.patch \
extras/tools/libtool-2.4.6-response-files.patch \
extras/tools/libtool-2.4.6-san.patch \
extras/tools/ragel-6.8-javacodegen.patch
###############################################################################
......@@ -115,7 +124,9 @@ doc:
###############################################################################
ALL_ALIASES = cvlc rvlc svlc qvlc nvlc
if BUILD_VLC
bin_SCRIPTS = $(ALIASES)
endif
CLEANFILES += $(ALIASES) $(noinst_SCRIPTS)
EXTRA_SCRIPTS = $(ALL_ALIASES)
......@@ -160,6 +171,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)$(vlclibdir)/vlc-cache-gen$(EXEEXT)" \
"$(DESTDIR)$(vlclibdir)/plugins" ; \
else \
......
Changes between 2.2.x and 3.0.0-git:
Changes between 3.0.16 and 3.0.17:
----------------------------------
Core:
* Fix a regression in parsing secondary source MRLs
Access:
* Fix support for screen capture on macOS with avcapture
* Fix closing of HTTP 1.x connections
* Improve HTTP2 memory usage
* Improve AVCapture module
Packetizers:
* Add support for DTS LBR
Audio Output:
* iOS/tvOS: add support for spatial audio
Video Output:
* Fix a D3D11 crash when the stream changes aspect ratio
Demux:
* Support for DAV video files
* Add WebP image mapping
* Fix missing audio start of Opus audio in MKV/WebM
Interface:
* Qt/macOS: Fixup user provided URLs
Misc:
* Update YouTube script
* Fix Icecast directory parsing which could lead to missing entries
3rd party libraries (contrib):
* Update libsmb2 to fix invalid UTF-8 encoding of some filenames
* Update taglib to fix corruptions when editing some OGG metadata
* Update FFmpeg to 4.4
Changes between 3.0.15 and 3.0.16:
----------------------------------
Video Output:
* Fix a D3D11 crash on Windows 8/8.1
Access:
* Fix RTSP server timeout handling
Interfaces:
* macOS: Add touchbar support
Misc
* Multiple settings improvements
Changes between 3.0.14 and 3.0.15:
----------------------------------
Core:
* Add Opus & Alac wave format mappings
Access:
* Fix opening DVD folders with non-ascii characters
Demux:
* Fix asf regression with broadcast streams
* MP4: Fix audio drop on seek
Video Output:
* Fix seek & volume sliders overlapping with subtitles
* Fix delays when seeking with D3D11
Text renderer:
* Improve freetype fonts outlining
Misc:
* Fix GnuTLS support for Windows XP
Changes between 3.0.13 and 3.0.14:
----------------------------------
Core:
* Fix double loading of slave input
* Fix an issue causing the auto-updater not to launch the new version
installer
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
* 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:
--------------------------------
Platform support changes:
* 3.0.x will be LTS (on a best-effort basis) that will be the last
working version for a lot of systems.
Indeed 3.0.x will be the last releases running on:
- Windows XP, Vista, and the servers equivalent of those releases
- macOS 10.7, 10,8 & 10.9, iOS 7 & 8
- Android 2.x, 3.x & 4.0.x
- Compilers before gcc 5.0 and clang 3.4
* For 3.0, please note:
* The Windows XP/2003/2003R2 support for VLC is now on a best-efforts basis:
it should work, but not without limitations.
libVLC support for Windows XP is deprecated.
You _really_ should upgrade.
* Windows Vista (all versions) without Platform Upgrade is not supported.
* Linux support requires now a kernel newer than 2.6.26
* Mac OS X 10.6 support is now removed. You need OS X 10.7.
* 3.0.x will be maintained as a LTS (best-effort basis, mostly for security)
that will be the last working version for quite a few systems.
Indeed the 3.0.x branch will contain the last releases running on:
- Windows XP, Vista, and the servers equivalent of those Windows versions
- macOS 10.7, 10.8 & 10.9, iOS 7 & 8
- Android 2.x, 3.x, 4.0.x & 4.1.x
- Compilers before gcc 5.0 and clang 3.4, or equivalent
* For the 3.0 branch, please note:
* The Windows XP/2003/2003R2 support for VLC is now on a best-effort basis:
it should work, but not without limitations.
libVLC support for Windows XP is deprecated.
You _really_ should upgrade to a more modern Windows version!
* Windows Vista (all versions) without Platform Upgrade is not supported.
* 64bit version of VLC for Windows is recommended.
* Linux support requires now a kernel newer than 2.6.26.
* Mac OS X 10.6 support is now removed. You need OS X 10.7.
Core:
* Support network browsing for distant file system (SMB, FTP, SFTP, NFS...)
and rewrite the parsing of the media files
* Support network browsing for distant filesystems (SMB, FTP, SFTP, NFS...)
and rewrite the parsing of the media files and inputs
* Support keystores: fetch and store passwords securely (sic!) for common
protocols (HTTP, SMB, SFTP, FTP, RTSP ...)
* Autodetect external audio tracks (ac3, m4a, aac, dts...), similar to subtitles
* Autodetect external audio tracks (ac3, m4a, aac, dts...) similar to subtitles
* Support HDMI passthrough for Audio HD codecs, like E-AC3, TrueHD or DTS-HD
* Support for 12bits codec and extended colorspaces (HDR)
* Support output renderers, like ChromeCast
......@@ -33,30 +853,30 @@ Core:
* Support wayland surface type
* Allow to start the video paused on the first frame
* Refactor preparsing input
* EPG reworked: table and single event updates, now using network time
* Refactored and fixed subtitles es selection. Demuxers can now override
* EPG rework: table and single event updates, now using network time
* Refactor and fix subtitles es selection. Demuxers can now override
es category single only or multiple es behavior
* Support for 360 video and audio, including viewpoint setting
* Support for 360 video and audio, including viewpoint modification
* Support for ambisonic audio and more than 8 audio channels
* Support subtitles size live changing
* Support subtitles size live adjustments
Access:
* Enable SMB2 / SMB3 support on mobile ports with libsmb2
* New NFS access module using libnfs
* New SMB access module using libdsm
* Adaptive streaming:
* Rewrite MPEG-DASH (Dynamic Adaptive Streaming over HTTP) support, including
MPEG2TS and ISOFF profiles
MPEG2TS and ISOBMFF profiles
* Support HDS (Http Dynamic Streaming) from Adobe (f4m, f4v, etc.)
* Large rework of the Smooth Streaming module
* Replaced httplive stream filter with new HLS demuxer, replaced smooth
stream filter with new Smooth demuxer, both using unified adaptive module
* Support HLSv4-7, including TS and raw muxing and ID3 tags
* Support HLSv4-7, including MP4 and raw muxing and ID3 tags
* Support decompression and extraction through libarchive (tar, zip, rar...)
* New HTTP/TLS access module for HTTP 2.0 support
* Improvements of cookie handling (share cookies between playlist items,
domain / path matching, Secure cookies)
* Support DVB-T2 on Windows BDA
* Screen capture plugin for Wayland display
* Support depayloading Opus from RTP
* New UPnP access module, to list directories without infinite recursions
* SMB/FTP/SFTP accesses can list directories
......@@ -95,7 +915,7 @@ Decoders:
* Support for experimental Daala video
* New MPEG-1 & 2 audio layer I, II, III + MPEG 2.5 decoder based on libmpg123
* New BPG decoder based on libbpg
* Fixed uncompressed DVD-Audio (AOB) LPCM decoding
* Fix uncompressed DVD-Audio (AOB) LPCM decoding
* Rewrite WPL playlists and add ZPL playlists support (Zune)
* Support TDSC, Canopus HQX, Cineform, SpeedHQ, Pixlet, QDMC and FMVC codecs
* TTML subtitles support, including EBU-TT-D variant
......@@ -111,8 +931,10 @@ Decoders:
* Support VPX high bit depth support
* Extend MicroDVD support with color, fontname, size, position extensions
* BluRay text subtitles (HDMV) are now decoded
* Improved Closed Captions detection, notably inside the video streams
* Improve Closed Captions detection, notably inside the video streams
* CEA-708 decoder
* New MIDI decoder for macOS and iOS using the AudioToolbox framework, works
without a soundfont or with SoundFont2 and DLS soundfonts
Demuxers:
* Important rework of the MP4 demuxer, including:
......@@ -124,22 +946,22 @@ Demuxers:
* Support for XiphQT(MP4) vorbis and Flac
* Support for VP8/VP9/VP10/AV1 in MP4
* Support GoPro HiLight chapters
* Support for TTML and WebVTT in ISOBMF/MP4 and DASH
* Support for TTML and WebVTT in ISOBMFF/MP4 and DASH
* Add new metadata fields
* Important rework of the TS demuxer, including:
* Support Opus in MPEG Transport Stream
* Fixed program selection with recorded TS (TopField, DreamBox and others)
* Fixed TS playback with PAT/PMT less recordings
* Fix program selection with recorded TS (TopField, DreamBox and others)
* Fix TS playback with PAT/PMT less recordings
* Basic support for MPEG4-SL in TS and T-DMB
* Support SCTE-18 / EAS inside TS
* Support for new descriptors and ETT tables
* Support for ARIB channel logos, as attachements, ARIB TR-B21/TR-B14-1
* Improved broken-PCR probing and fixing
* Improve broken-PCR probing and fixing
* Improvements for scrambled state detection
* Support HD-DVD .evo (H.264, VC-1, MPEG-2, PCM, AC-3, E-AC3, MLP, DTS)
* Important rework of the PS demuxer, including:
* HEVC support
* Fixed a large number of samples, notably with PSM-less H264
* Fix large number of samples, notably with PSM-less H264
* Partial support of PSMF
* Fix broken SCR samples
* Fix CDXA mpeg-1 support
......@@ -163,8 +985,8 @@ Demuxers:
* Support for Scenarist Closed Caption
* Fix Quicktime Mp4 inside MKV and unpacketized VC1
* Support for isofLaC
* Improved fLaC seeking
* Replaced --demux dvb-open option with --stream-filter dvb to parse
* Improve fLaC seeking
* Replace --demux dvb-open option with --stream-filter dvb to parse
channels.conf digital TV channel list files
Stream filter:
......@@ -172,7 +994,7 @@ Stream filter:
* Add a ARIB STD-B25 TS streams decoder
* Add a stream prebuffering plugin
* Rewrite libarchive module as a stream_extractor
* Removed HTTP Live streaming stream filter
* Remove HTTP Live streaming stream filter
* Add a zlib (a.k.a. deflate) decompression filter
* Add a skiptags module to help demuxers skip ID3/APE tags
......@@ -201,7 +1023,7 @@ Audio filters:
headphones effects
* Add a pitch shifting module
Video ouput:
Video output:
* Linux/BSD default video output is now OpenGL, instead of Xvideo
* OpenGL:
* New OpenGL provider for Windows
......@@ -217,7 +1039,7 @@ Video ouput:
* Large rework of the Android video outputs: there is now Surface (2.1, 2.2)
NativeWindow (2.3+, supports hw rotation, subpicture blending, opaque)
* Support rotation in Android NativeWindow output and hardware decoders
* Renamed the Direct3D output module to Direct3D9
* Rename the Direct3D output module to Direct3D9
* Add a Direct3D11 video output supporting both Windows desktop and WinRT modes,
supporting subpicture blending and hardware acceleration
* Support HDR10 in Direct3D11 with Windows 10 Fall Creator Update
......@@ -226,7 +1048,7 @@ Video ouput:
Video filter:
* Hardware deinterlacing on the rPI, using MMAL
* New video filter to convert between fps rates
* Added 9-bit and 10-bit support to image adjust filter
* Add 9-bit and 10-bit support to image adjust filter
* New edge detection filter uses the Sobel operator to detect edges
* Hardware accelerated deinterlacing/adjust/sharpen/chroma with VA-API
* Hardware accelerated adjust/invert/posterize/sepia/sharpen with CoreImage
......@@ -247,8 +1069,8 @@ Encoder:
* VP8 and VP9 encoder using libvpx
Muxers:
* Added fragmented/streamable MP4 muxer
* Added support for muxing VC1 and WMAPro in MP4
* Add fragmented/streamable MP4 muxer
* Add support for muxing VC1 and WMAPro in MP4
* Opus in MPEG Transport Stream
* Daala in Ogg
......@@ -259,20 +1081,20 @@ Service Discovery:
* Rewrite of the UPnP service discovery
Mac OS X Interface
* Dropped support for Mac OS X 10.6 Snow Leopard
* Drop support for Mac OS X 10.6 Snow Leopard
* Support right-to-left user interface layout for right-to-left languages
* New resizable fullscreen controller with improved design
* Add status bar icon which displays metadata and play controls
* Add support for keyboard blacklight dimming during fullscreen video playback
* Improved and simplified preferences window
* Improve and simplify preferences window
* Huge performance improvements in playlist handling and other areas
* New AppleScript API giving access to audio desynchronization
* Expanded AppleScript API for menu detection and navigation
* Expand AppleScript API for menu detection and navigation
* Support for building with disabled sparkle update mechanism
* Remove deprecated transcoding wizard, use convert and save dialog instead
iOS:
* Dropped support for iOS 6.x
* Drop support for iOS 6.x
Qt interface:
* Batch convert support
......@@ -301,7 +1123,6 @@ libVLC:
* Deprecate libvlc_video_get_title_description, libvlc_video_get_chapter_description,
libvlc_media_player_get_agl, libvlc_media_player_set_agl
* Add libvlc_media_player_set_android_context to integrate in an Android surface
* Add libvlc_media_player_set_evas_object to draw on an EFL/Evas Object
* Add a new libvlc dialog API to forward dialogs requests to the applications:
libvlc_dialog_set_context, libvlc_dialog_get_context, libvlc_dialog_set_callbacks,
libvlc_dialog_dismiss, libvlc_dialog_post_action, libvlc_dialog_post_login
......@@ -510,7 +1331,7 @@ Decoder:
* Fix crashes with libvpx
* Use libass without caching dialog
Video Ouptut:
Video Output:
* Fix green lines on Direct3D output
Skins2:
......@@ -3940,7 +4761,7 @@ Interfaces:
* wxWidgets
- Rename wxWindows interface in wxWidgets.
- All the --wxwin-* options are now --wx-*
- Support for RTP streaming in Stream Ouput dialog
- Support for RTP streaming in Stream Output dialog
- Now require wx2.6 with Unicode support
* Skins2
- Tree playlist
......
......@@ -24,23 +24,36 @@ endif
# Main VLC executable
#
vlc_LDADD = ../lib/libvlc.la $(LIBPTHREAD)
vlc_CPPFLAGS = $(AM_CPPFLAGS)
if !HAVE_WIN32
vlc_SOURCES = vlc.c override.c
vlc_LDADD += $(LIBDL)
else
vlc_SOURCES = winvlc.c
vlc_DEPENDENCIES = vlc_win32_rc.$(OBJEXT)
vlc_LDFLAGS = -mwindows
vlc_LDADD += -lpsapi vlc_win32_rc.$(OBJEXT)
vlc_LDFLAGS = -mwindows -Wc,-static
vlc_LDADD += vlc_win32_rc.$(OBJEXT)
libbreakpad_wrapper_la_SOURCES = breakpad.cpp
libbreakpad_wrapper_la_LIBADD = $(BREAKPAD_LIBS)
libbreakpad_wrapper_la_LDFLAGS = -static
libbreakpad_wrapper_la_CXXFLAGS = $(AM_CXXFLAGS) $(BREAKPAD_CFLAGS) -DBREAKPAD_URL=\"@BREAKPAD_URL@\"
if HAVE_BREAKPAD
noinst_LTLIBRARIES = libbreakpad_wrapper.la
vlc_LDADD += libbreakpad_wrapper.la -lstdc++ -lwininet
vlc_DEPENDENCIES += libbreakpad_wrapper.la
vlc_CPPFLAGS += -DHAVE_BREAKPAD
endif
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 "@executable_path/../Frameworks/"
if HAVE_BREAKPAD
vlc_osx_LDFLAGS += -Wl,-framework,Breakpad
vlc_osx_OBJCFLAGS = -F$(CONTRIB_DIR)/Frameworks
vlc_osx_CPPFLAGS = -DHAVE_BREAKPAD
endif
vlc_osx_LDADD = ../lib/libvlc.la
......@@ -52,10 +65,12 @@ 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
vlc_osx_static_OBJCFLAGS += -F$(CONTRIB_DIR)/Frameworks
vlc_osx_static_CPPFLAGS = -DHAVE_BREAKPAD
endif
......@@ -67,6 +82,7 @@ vlc_static_CFLAGS = $(AM_CFLAGS) \
-DTOP_BUILDDIR=\"$$(cd "$(top_builddir)"; pwd)\" \
-DTOP_SRCDIR=\"$$(cd "$(top_srcdir)"; pwd)\" \
$(NULL)
vlc_static_CPPFLAGS = $(vlc_CPPFLAGS)
vlc_static_DEPENDENCIES = $(vlc_DEPENDENCIES)
vlc_static_LDADD = $(vlc_LDADD)
vlc_static_LDFLAGS = $(vlc_LDFLAGS) -no-install -static
......@@ -104,6 +120,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
......@@ -116,10 +133,12 @@ endif
MOSTLYCLEANFILES = $(noinst_DATA)
if HAVE_OSX
if BUILD_VLC
install-data-local:
cd $(bindir); mv vlc-osx vlc
endif
endif
.PHONY: ../modules/plugins.dat
......
/*****************************************************************************
* breakpad.cpp: Wrapper to breakpad crash handler
*****************************************************************************
* Copyright (C) 1998-2017 VLC authors
*
* Authors: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <windows.h>
#include "client/windows/handler/exception_handler.h"
#include "common/windows/http_upload.h"
#include <memory>
#include <map>
#include <string>
using google_breakpad::ExceptionHandler;
static bool FilterCallback(void*, EXCEPTION_POINTERS*, MDRawAssertionInfo*)
{
// Don't spam breakpad if we're debugging
return !IsDebuggerPresent();
}
extern "C"
{
void CheckCrashDump( const wchar_t* path )
{
wchar_t pattern[MAX_PATH];
WIN32_FIND_DATA data;
_snwprintf( pattern, MAX_PATH, L"%s/*.dmp", path );
HANDLE h = FindFirstFile( pattern, &data );
if (h == INVALID_HANDLE_VALUE)
return;
int answer = MessageBox( NULL, L"Ooops: VLC media player just crashed.\n" \
"Would you like to send a bug report to the developers team?",
L"VLC crash reporting", MB_YESNO);
std::map<std::wstring, std::wstring> params;
params[L"prod"] = L"VLC";
params[L"ver"] = TEXT(PACKAGE_VERSION);
do
{
wchar_t fullPath[MAX_PATH];
_snwprintf( fullPath, MAX_PATH, L"%s/%s", path, data.cFileName );
if( answer == IDYES )
{
std::map<std::wstring, std::wstring> files;
files[L"upload_file_minidump"] = fullPath;
google_breakpad::HTTPUpload::SendRequest(
TEXT( BREAKPAD_URL "/reports" ), params, files,
NULL, NULL, NULL );
}
DeleteFile( fullPath );
} while ( FindNextFile( h, &data ) );
FindClose(h);
}
void* InstallCrashHandler( const wchar_t* crashdump_path )
{
// Breakpad needs the folder to exist to generate the crashdump
CreateDirectory( crashdump_path, NULL );
return new(std::nothrow) ExceptionHandler( crashdump_path, FilterCallback,
NULL, NULL, ExceptionHandler::HANDLER_ALL);
}
void ReleaseCrashHandler( void* handler )
{
ExceptionHandler* eh = reinterpret_cast<ExceptionHandler*>( handler );
delete eh;
}
}
......@@ -114,6 +114,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
......@@ -297,10 +304,6 @@ int main(int i_argc, const char *ppsz_argv[])
* 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();
......@@ -320,7 +323,8 @@ out:
libvlc_release(vlc);
#ifdef HAVE_BREAKPAD
BreakpadRelease(breakpad);
if (breakpad)
BreakpadRelease(breakpad);
#endif
return ret;
......
......@@ -42,13 +42,13 @@
#include <fcntl.h>
#include <io.h>
#include <shlobj.h>
#include <wininet.h>
#define PSAPI_VERSION 1
#include <psapi.h>
#define HeapEnableTerminationOnCorruption (HEAP_INFORMATION_CLASS)1
static void check_crashdump(void);
LONG WINAPI vlc_exception_filter(struct _EXCEPTION_POINTERS *lpExceptionInfo);
static const wchar_t *crashdump_path;
#ifdef HAVE_BREAKPAD
void CheckCrashDump( const wchar_t* crashdump_path );
void* InstallCrashHandler( const wchar_t* crashdump_path );
void ReleaseCrashHandler( void* handler );
#endif
static char *FromWide (const wchar_t *wide)
{
......@@ -111,6 +111,10 @@ static void PrioritizeSystem32(void)
SetProcessMitigationPolicy( 10 /* ProcessImageLoadPolicy */, &m, sizeof( m ) );
}
/*
* Export WinMain to force GNU ld to generate a .reloc section
*/
__declspec(dllexport)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
......@@ -203,17 +207,18 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
argv[argc] = NULL;
LocalFree (wargv);
void* eh = NULL;
if(crash_handling)
{
#ifdef HAVE_BREAKPAD
static wchar_t path[MAX_PATH];
if( S_OK != SHGetFolderPathW( NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE,
NULL, SHGFP_TYPE_CURRENT, path ) )
fprintf( stderr, "Can't open the vlc conf PATH\n" );
_snwprintf( path+wcslen( path ), MAX_PATH, L"%s", L"\\vlc\\crashdump" );
crashdump_path = &path[0];
check_crashdump();
SetUnhandledExceptionFilter(vlc_exception_filter);
CheckCrashDump( &path[0] );
eh = InstallCrashHandler( &path[0] );
#endif
}
_setmode( _fileno( stdin ), _O_BINARY ); /* Needed for pipes */
......@@ -262,215 +267,12 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
MB_OK|MB_ICONERROR);
#ifdef HAVE_BREAKPAD
ReleaseCrashHandler( eh );
#endif
for (int i = 0; i < argc; i++)
free (argv[i]);
(void)hInstance; (void)hPrevInstance; (void)lpCmdLine; (void)nCmdShow;
return 0;
}
/* Crashdumps handling */
static void check_crashdump(void)
{
wchar_t mv_crashdump_path[MAX_PATH];
wcscpy (mv_crashdump_path, crashdump_path);
wcscat (mv_crashdump_path, L".mv");
if (_wrename (crashdump_path, mv_crashdump_path))
return;
FILE * fd = _wfopen ( mv_crashdump_path, L"r, ccs=UTF-8" );
if( !fd )
return;
fclose( fd );
int answer = MessageBox( NULL, L"Ooops: VLC media player just crashed.\n" \
"Would you like to send a bug report to the developers team?",
L"VLC crash reporting", MB_YESNO);
if(answer == IDYES)
{
HMODULE hWininet = LoadLibrary(TEXT("wininet.dll"));
if (hWininet == NULL)
{
fprintf(stderr, "There was an error loading the network"
" 0x%08lx\n", (unsigned long)GetLastError());
goto done;
}
HINTERNET (WINAPI *InternetOpenW_)(LPCWSTR ,DWORD dwAccessType,LPCWSTR lpszProxy,LPCWSTR lpszProxyBypass,DWORD dwFlags);
HINTERNET (WINAPI *InternetConnectW_)(HINTERNET hInternet,LPCWSTR lpszServerName,INTERNET_PORT nServerPort,LPCWSTR lpszUserName,LPCWSTR lpszPassword,DWORD dwService,DWORD dwFlags,DWORD_PTR dwContext);
BOOL (WINAPI *InternetCloseHandle_)(HINTERNET hInternet);
BOOL (WINAPI *FtpPutFileW_)(HINTERNET hConnect,LPCWSTR lpszLocalFile,LPCWSTR lpszNewRemoteFile,DWORD dwFlags,DWORD_PTR dwContext);
InternetOpenW_ = (void*)GetProcAddress(hWininet, "InternetOpenW");
InternetConnectW_ = (void*)GetProcAddress(hWininet, "InternetConnectW");
InternetCloseHandle_ = (void*)GetProcAddress(hWininet, "InternetCloseHandle");
FtpPutFileW_ = (void*)GetProcAddress(hWininet, "FtpPutFileW");
if (!InternetOpenW_ || !InternetConnectW_ || !InternetCloseHandle_ || !FtpPutFileW_)
{
fprintf(stderr, "There was an error loading the network API entries"
" 0x%08lx\n", (unsigned long)GetLastError());
goto done;
}
HINTERNET Hint = InternetOpenW_(L"VLC Crash Reporter",
INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL,0);
if(Hint)
{
HINTERNET ftp = InternetConnectW_(Hint, L"crash.videolan.org",
INTERNET_DEFAULT_FTP_PORT, NULL, NULL,
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if(ftp)
{
SYSTEMTIME now;
GetSystemTime(&now);
wchar_t remote_file[MAX_PATH];
_snwprintf(remote_file, MAX_PATH,
L"/crashes-win32/%04d%02d%02d%02d%02d%02d",
now.wYear, now.wMonth, now.wDay, now.wHour,
now.wMinute, now.wSecond );
if( FtpPutFileW_( ftp, mv_crashdump_path, remote_file,
FTP_TRANSFER_TYPE_BINARY, 0) )
fprintf(stderr, "Report sent correctly to FTP.\n");
else
fprintf(stderr,"Couldn't send report to FTP server\n");
InternetCloseHandle_(ftp);
}
else
{
fprintf(stderr, "Can't connect to FTP server 0x%08lx\n",
(unsigned long)GetLastError());
}
InternetCloseHandle_(Hint);
}
else
{
fprintf(stderr, "There was an error while connecting to the "
"Internet 0x%08lx\n", (unsigned long)GetLastError());
}
done:
if (hWininet != NULL)
FreeLibrary(hWininet);
MessageBox( NULL, L"Thanks a lot for helping improving VLC!",
L"VLC crash report" , MB_OK);
}
_wremove(mv_crashdump_path);
}
/*****************************************************************************
* vlc_exception_filter: handles unhandled exceptions, like segfaults
*****************************************************************************/
LONG WINAPI vlc_exception_filter(struct _EXCEPTION_POINTERS *lpExceptionInfo)
{
if(IsDebuggerPresent())
{
//If a debugger is present, pass the exception to the debugger
//with EXCEPTION_CONTINUE_SEARCH
return EXCEPTION_CONTINUE_SEARCH;
}
else
{
fprintf( stderr, "unhandled vlc exception\n" );
FILE * fd = _wfopen ( crashdump_path, L"w, ccs=UTF-8" );
if( !fd )
{
fprintf( stderr, "\nerror while opening file" );
exit( 1 );
}
OSVERSIONINFO osvi;
ZeroMemory( &osvi, sizeof(OSVERSIONINFO) );
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
GetVersionEx( &osvi );
fwprintf( fd, L"[version]\nOS=%d.%d.%d.%d.%ls\nVLC=" VERSION_MESSAGE,
osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber,
osvi.dwPlatformId, osvi.szCSDVersion);
const CONTEXT *const pContext = (const CONTEXT *)
lpExceptionInfo->ContextRecord;
const EXCEPTION_RECORD *const pException = (const EXCEPTION_RECORD *)
lpExceptionInfo->ExceptionRecord;
/* No nested exceptions for now */
fwprintf( fd, L"\n\n[exceptions]\n%08x at %px",
pException->ExceptionCode, pException->ExceptionAddress );
for( unsigned int i = 0; i < pException->NumberParameters; i++ )
fwprintf( fd, L" | %p", pException->ExceptionInformation[i] );
#ifdef _WIN64
fwprintf( fd, L"\n\n[context]\nRDI:%px\nRSI:%px\n" \
"RBX:%px\nRDX:%px\nRCX:%px\nRAX:%px\n" \
"RBP:%px\nRIP:%px\nRSP:%px\nR8:%px\n" \
"R9:%px\nR10:%px\nR11:%px\nR12:%px\n" \
"R13:%px\nR14:%px\nR15:%px\n",
pContext->Rdi,pContext->Rsi,pContext->Rbx,
pContext->Rdx,pContext->Rcx,pContext->Rax,
pContext->Rbp,pContext->Rip,pContext->Rsp,
pContext->R8,pContext->R9,pContext->R10,
pContext->R11,pContext->R12,pContext->R13,
pContext->R14,pContext->R15 );
#else
fwprintf( fd, L"\n\n[context]\nEDI:%px\nESI:%px\n" \
"EBX:%px\nEDX:%px\nECX:%px\nEAX:%px\n" \
"EBP:%px\nEIP:%px\nESP:%px\n",
pContext->Edi,pContext->Esi,pContext->Ebx,
pContext->Edx,pContext->Ecx,pContext->Eax,
pContext->Ebp,pContext->Eip,pContext->Esp );
#endif
fwprintf( fd, L"\n[stacktrace]\n#EIP|base|module\n" );
#ifdef _WIN64
LPCVOID caller = (LPCVOID)pContext->Rip;
LPVOID *pBase = (LPVOID*)pContext->Rbp;
#else
LPVOID *pBase = (LPVOID*)pContext->Ebp;
LPCVOID caller = (LPCVOID)pContext->Eip;
#endif
for( unsigned frame = 0; frame <= 100; frame++ )
{
MEMORY_BASIC_INFORMATION mbi;
wchar_t module[ 256 ];
VirtualQuery( caller, &mbi, sizeof( mbi ) ) ;
GetModuleFileName( mbi.AllocationBase, module, 256 );
fwprintf( fd, L"%p|%ls\n", caller, module );
if( IsBadReadPtr( pBase, 2 * sizeof( void* ) ) )
break;
/*The last BP points to NULL!*/
caller = *(pBase + 1);
if( !caller )
break;
pBase = *pBase;
if( !pBase )
break;
}
HANDLE hpid = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, GetCurrentProcessId());
if (hpid) {
HMODULE mods[1024];
DWORD size;
if (EnumProcessModules(hpid, mods, sizeof(mods), &size)) {
fwprintf( fd, L"\n\n[modules]\n" );
for (unsigned int i = 0; i < size / sizeof(HMODULE); i++) {
wchar_t module[ 256 ];
GetModuleFileName(mods[i], module, 256);
fwprintf( fd, L"%p|%ls\n", mods[i], module);
}
}
CloseHandle(hpid);
}
fclose( fd );
fflush( stderr );
exit( 1 );
}
}
......@@ -5,7 +5,7 @@
## 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
......@@ -20,8 +20,12 @@ 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
###
......@@ -52,21 +56,17 @@ fi
# Check for flex and bison
if ! flex --version >/dev/null 2>&1; then
cat << EOF
NOTE: flex appears to be missing. Please install it.
Otherwise, you might not be able to build properly.
==========================================================================
EOF
echo "ERROR: flex is not installed." >&2
if ! test -f modules/codec/webvtt/CSSLexer.c; then
exit 1
fi
fi
if ! bison --version >/dev/null 2>&1; then
cat << EOF
NOTE: bison appears to be missing. Please install it.
Otherwise, you might not be able to build properly.
==========================================================================
EOF
echo "ERROR: GNU bison is not installed." >&2
if ! test -f modules/codec/webvtt/CSSGrammar.c; then
exit 1
fi
fi
###
......
pkglib_LTLIBRARIES = libcompat.la
libcompat_la_SOURCES = dummy.c
libcompat_la_LIBADD = $(LTLIBOBJS) $(LIBRT)
libcompat_la_LIBADD = $(LTLIBOBJS) $(LIBRT) $(LIBM)
libcompat_la_LDFLAGS = -no-undefined -static
BUILT_SOURCES = dummy.c
......
......@@ -6,7 +6,7 @@
* Copyright (C) 2011-2014 KO Myung-Hun
*
* Authors: KO Myung-Hun <komh@chollian.net>
* Rémi Denis-Courmont <rem # videolan.org>
* Rémi Denis-Courmont
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
......
......@@ -6,7 +6,7 @@
* Copyright (C) 2011-2015 KO Myung-Hun
*
* Authors: KO Myung-Hun <komh@chollian.net>
* Rémi Denis-Courmont <rem # videolan.org>
* Rémi Denis-Courmont
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
......
/*****************************************************************************
* lfind.c : implement lfind
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
void *lfind(const void *key, const void *base, size_t *nmemb,
size_t size, int(*cmp)(const void *, const void *))
{
for (int i = 0; i < *nmemb; ++i)
{
const void *elem = base + i * size;
if (!cmp(key, elem))
return elem;
}
return NULL;
}
......@@ -109,7 +109,7 @@ int (poll) (struct pollfd *fds, unsigned nfds, int timeout)
# include <windows.h>
# include <winsock2.h>
int poll(struct pollfd *fds, unsigned nfds, int timeout)
static int poll_compat(struct pollfd *fds, unsigned nfds, int timeout)
{
DWORD to = (timeout >= 0) ? (DWORD)timeout : INFINITE;
......@@ -251,4 +251,21 @@ int poll(struct pollfd *fds, unsigned nfds, int timeout)
}
return count;
}
int poll(struct pollfd *fds, unsigned nfds, int timeout)
{
if (timeout == -1)
{
/* HACK: In some cases, we lose some events because events are
* destroyed and recreated only when we need to poll. In order to work
* arround this issue, we try to call the poll compat function every
* 100ms (in case of infinite timeout). */
int ret;
while ((ret = poll_compat(fds, nfds, 100)) == 0);
return ret;
}
else
return poll_compat(fds, nfds, timeout);
}
#endif
......@@ -3,7 +3,7 @@
* @brief replacement for GNU tdestroy()
*/
/*****************************************************************************
* Copyright (C) 2009 Rémi Denis-Courmont
* Copyright (C) 2009, 2018 Rémi Denis-Courmont
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
......@@ -24,88 +24,77 @@
# include "config.h"
#endif
#if defined(HAVE_SEARCH_H) && !defined(HAVE_TDESTROY) && defined(HAVE_TFIND)
#include <stdlib.h>
#include <assert.h>
#include <stdlib.h>
#ifdef HAVE_SEARCH_H
# include <search.h>
#endif
#include <vlc_common.h>
#include <search.h>
static struct
#ifdef HAVE_TFIND
static __thread struct
{
const void **tab;
size_t count;
vlc_mutex_t lock;
} list = { NULL, 0, VLC_STATIC_MUTEX };
} list = { NULL, 0 };
static void list_nodes (const void *node, const VISIT which, const int depth)
static void list_nodes(const void *node, const VISIT which, const int depth)
{
(void) depth;
if (which != postorder && which != leaf)
return;
const void **tab = realloc (list.tab, sizeof (*tab) * (list.count + 1));
if (unlikely(tab == NULL))
abort ();
const void **tab = realloc(list.tab, sizeof (*tab) * (list.count + 1));
if (tab == NULL)
abort();
tab[list.count] = *(const void **)node;
list.tab = tab;
list.count++;
}
static struct
{
const void *node;
vlc_mutex_t lock;
} smallest = { NULL, VLC_STATIC_MUTEX };
static __thread const void *smallest;
static int cmp_smallest (const void *a, const void *b)
static int cmp_smallest(const void *a, const void *b)
{
if (a == b)
return 0;
if (a == smallest.node)
if (a == smallest)
return -1;
if (likely(b == smallest.node))
if (b == smallest)
return +1;
abort ();
abort();
}
void vlc_tdestroy (void *root, void (*freenode) (void *))
void tdestroy(void *root, void (*freenode)(void *))
{
const void **tab;
size_t count;
assert (freenode != NULL);
assert(freenode != NULL);
/* Enumerate nodes in order */
vlc_mutex_lock (&list.lock);
assert (list.count == 0);
twalk (root, list_nodes);
assert(list.count == 0);
twalk(root, list_nodes);
tab = list.tab;
count = list.count;
list.tab = NULL;
list.count = 0;
vlc_mutex_unlock (&list.lock);
/* Destroy the tree */
vlc_mutex_lock (&smallest.lock);
for (size_t i = 0; i < count; i++)
{
void *node = tab[i];
void *node = (void *)(tab[i]);
smallest.node = node;
node = tdelete (node, &root, cmp_smallest);
assert (node != NULL);
smallest = node;
node = tdelete(node, &root, cmp_smallest);
assert(node != NULL);
}
vlc_mutex_unlock (&smallest.lock);
assert (root == NULL);
/* Destroy the nodes */
for (size_t i = 0; i < count; i++)
freenode ((void *)(tab[i]));
free (tab);
freenode((void *)(tab[i]));
free(tab);
}
#endif
#endif /* HAVE_TFIND */
......@@ -22,6 +22,28 @@
# include <config.h>
#endif
#ifdef _WIN32
#include <windows.h>
int timespec_get(struct timespec *ts, int base)
{
FILETIME ft;
ULARGE_INTEGER s;
ULONGLONG t;
if (base != TIME_UTC)
return 0;
GetSystemTimeAsFileTime(&ft);
s.LowPart = ft.dwLowDateTime;
s.HighPart = ft.dwHighDateTime;
t = s.QuadPart - 116444736000000000ULL;
ts->tv_sec = t / 10000000;
ts->tv_nsec = ((int) (t % 10000000)) * 100;
return base;
}
#else /* !_WIN32 */
#include <time.h>
#include <unistd.h> /* _POSIX_TIMERS */
#ifndef _POSIX_TIMERS
......@@ -58,3 +80,4 @@ int timespec_get(struct timespec *ts, int base)
}
return base;
}
#endif /* !_WIN32 */
dnl Autoconf settings for vlc
AC_COPYRIGHT([Copyright 1999-2017 VLC authors and VideoLAN])
AC_COPYRIGHT([Copyright 1999-2021 VLC authors and VideoLAN])
AC_INIT(vlc, 3.0.0-git)
AC_INIT(vlc, 3.0.17)
VERSION_MAJOR=3
VERSION_MINOR=0
VERSION_REVISION=0
VERSION_REVISION=17
VERSION_EXTRA=0
VERSION_DEV=git
VERSION_DEV=
PKGDIR="vlc"
AC_SUBST(PKGDIR)
CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
CODENAME="Vetinari"
COPYRIGHT_YEARS="1996-2017"
COPYRIGHT_YEARS="1996-2021"
AC_CONFIG_SRCDIR(src/libvlc.c)
AC_CONFIG_AUX_DIR(autotools)
......@@ -137,6 +137,10 @@ case "${host_os}" in
SYS=dragonfly
;;
darwin*)
dnl Workaround possible Xcode 11 bug
CFLAGS="${CFLAGS} -fno-stack-check"
CXXFLAGS="${CXXFLAGS} -fno-stack-check"
OBJCFLAGS="${OBJCFLAGS} -fno-stack-check"
dnl Force gcc "-arch" flag
ARCH_flag=""
......@@ -187,17 +191,6 @@ case "${host_os}" in
HAVE_OSX="0"
],)
dnl Allow binaries created on Lion to run on earlier releases
AC_EGREP_CPP(yes,
[#import <Cocoa/Cocoa.h>
#ifdef MAC_OS_X_VERSION_10_7
yes
#endif],
[AC_MSG_RESULT([yes])
AC_LIBOBJ([getdelim])
AC_LIBOBJ([strndup])
AC_LIBOBJ([strnlen])],)
dnl
dnl Handle Mac OS X SDK flags
dnl
......@@ -229,9 +222,31 @@ case "${host_os}" in
CXXFLAGS="${CXXFLAGS} -static-libgcc"
AC_CHECK_TOOL(WINDRES, windres, :)
AC_CHECK_TOOL(OBJCOPY, objcopy, :)
AH_TOP([#if defined(_WIN32) && !defined(_WIN32_WINNT)])
AH_TOP([# define _WIN32_WINNT 0x0502 /* Windows XP SP2 */])
AH_TOP([#endif])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
[[#ifdef _WIN32_WINNT
# error _WIN32_WINNT already defined
#else
# include <windows.h>
# if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0502
# error _WIN32_WINNT toolchain default high enough
# endif
#endif
]],[[;]])
],[
AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows XP SP2 APIs.])
])
AC_MSG_CHECKING([if libsynchronization is needed])
AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
[[#if _WIN32_WINNT >= 0x0602
# error building for Win8+ and above
#endif
]],[[;]])
],[
AC_MSG_RESULT([no])
],[
AC_MSG_RESULT([yes])
VLC_ADD_LIBS([libvlccore], [-lsynchronization])
])
AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.])
......@@ -301,6 +316,7 @@ case "${host_os}" in
LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem"
AC_LIBOBJ([freeaddrinfo])
AC_LIBOBJ([gai_strerror])
AC_CHECK_FUNCS([if_nametoindex])
;;
*nacl*)
SYS=nacl
......@@ -332,6 +348,19 @@ AS_IF([test "${SYS}" = "mingw32"],[
])
AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps])
vlc_build_pdb=0
AC_ARG_ENABLE([pdb],
AS_HELP_STRING([--enable-pdb],
[Build PDB files for windows targets (default off)]))
AS_IF([test "${SYS}" = "mingw32"],[
AS_IF([test "${enable_pdb}" = "yes"], [
vlc_build_pdb=1
AX_APPEND_FLAG([-g -gcodeview],[CFLAGS])
AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS])
LDFLAGS="${LDFLAGS} -Wl,-pdb="
],[])
])
AM_CONDITIONAL(HAVE_LINUX, test "${SYS}" = "linux")
AM_CONDITIONAL(HAVE_OS2, test "${SYS}" = "os2")
......@@ -341,11 +370,13 @@ AM_CONDITIONAL(HAVE_OSX, test "${HAVE_OSX}" = "1")
AM_CONDITIONAL(HAVE_TVOS, test "${HAVE_TVOS}" = "1")
AM_CONDITIONAL(HAVE_NACL, test "${SYS}" = "nacl")
AM_CONDITIONAL(HAVE_LIBANL, test "${HAVE_LIBANL}" = "1")
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_WIN64, test "${HAVE_WIN64}" = "1") dnl Only used for the packaging
AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"])
AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"])
AM_CONDITIONAL([ENABLE_PDB], [test "$vlc_build_pdb" = "1"])
dnl
dnl Sadly autoconf does not think about testing foo.exe when ask to test
......@@ -550,21 +581,22 @@ dnl Check for broken versions of mingw-runtime compatability library
])
dnl Check for fnative-struct or mms-bitfields support for mingw32
VLC_SAVE_FLAGS
CFLAGS="${CFLAGS} -mms-bitfields"
CXXFLAGS="${CXXFLAGS} -mms-bitfields"
AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
[ac_cv_c_mms_bitfields],
[AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
if test "${ac_cv_c_mms_bitfields}" = "no"; then
VLC_RESTORE_FLAGS
CFLAGS="${CFLAGS} -fnative-struct"
CXXFLAGS="${CXXFLAGS} -fnative-struct"
AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
[ac_cv_c_fnative_struct],
[AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
"${ac_cv_c_fnative_struct}" = "no" && VLC_RESTORE_FLAGS
fi
AX_CHECK_COMPILE_FLAG([-mms-bitfields], [
AX_APPEND_FLAG([-mms-bitfields], [CFLAGS])
AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS])
# Check for the warning flag without "-Wno-", GCC accepts
# -Wno-<anything> for unsupported warnings, which can trigger
# other warnings instead.
AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [
AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS])
AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS])
])
], [
AX_CHECK_COMPILE_FLAG([-fnative-struct], [
AX_APPEND_FLAG([-fnative-struct], [CFLAGS])
AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS])
])
])
])
......@@ -599,8 +631,8 @@ dnl Check for system libs needed
need_libc=false
dnl Check for usual libc functions
AC_CHECK_FUNCS([daemon fcntl flock fstatvfs fork getenv getpwuid_r isatty lstat memalign mkostemp mmap open_memstream openat pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime tdestroy uselocale])
AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tfind timegm timespec_get strverscmp pathconf])
AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale])
AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
AC_REPLACE_FUNCS([gettimeofday])
AC_CHECK_FUNC(fdatasync,,
[AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
......@@ -631,7 +663,7 @@ AC_FUNC_STRCOLL
dnl Check for non-standard system calls
case "$SYS" in
"linux")
AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity recvmmsg])
AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg])
;;
"mingw32")
AC_CHECK_FUNCS([_lock_file])
......@@ -658,43 +690,6 @@ dnl Check for max_align_t
AC_CHECK_TYPES([max_align_t],,,
[#include <stddef.h>])
dnl Checks for socket stuff
VLC_SAVE_FLAGS
SOCKET_LIBS=""
AC_SEARCH_LIBS(connect, [socket], [
AS_IF([test "$ac_cv_search_connect" != "none required"], [
SOCKET_LIBS="$ac_cv_search_connect"
])
], [
AS_IF([test "${SYS}" = "mingw32"], [
SOCKET_LIBS="-lws2_32"
])
])
AC_SEARCH_LIBS([inet_pton], [nsl], [
AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
])
],, [${SOCKET_LIBS}])
LIBS="${LIBS} ${SOCKET_LIBS}"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([#ifdef _WIN32
# if _WIN32_WINNT < 0x600
# error Needs vista+
# endif
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <arpa/inet.h>
#endif], [
char dst[[sizeof(struct in_addr)]];
inet_pton(AF_INET, "127.0.0.1", dst);
])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
AC_CHECK_FUNCS([if_nameindex if_nametoindex])
VLC_RESTORE_FLAGS
AC_SUBST(SOCKET_LIBS)
dnl Check for socklen_t
AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight
......@@ -770,6 +765,10 @@ dnl __STDC_NO_THREADS__ can't be trusted on some platforms.
dnl check for its availability explicitely
AC_CHECK_HEADERS([threads.h])
AC_CHECK_LIB([anl],[getaddrinfo_a],[
AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library])
])
dnl Check for dynamic plugins
LIBDL=""
have_dynamic_objects="no"
......@@ -852,11 +851,23 @@ dnl BSD
AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h])
dnl GNU/Linux
AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h mntent.h sys/eventfd.h])
AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h])
dnl MacOS
AC_CHECK_HEADERS([xlocale.h])
dnl Check if C++ headers define locale_t
AC_LANG_PUSH(C++)
AC_CACHE_CHECK([if C++ headers define locale_t],
[ac_cv_cxx_locale_t],
[ac_cv_cxx_locale_t=no
AC_TRY_COMPILE([#include <locale>], [locale_t loc;],
[ac_cv_cxx_locale_t=yes])])
if test "${ac_cv_cxx_locale_t}" != "no"; then
AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t)
fi
AC_LANG_POP(C++)
dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight
AC_CHECK_TYPE(ssize_t,, [
......@@ -946,9 +957,60 @@ dnl
AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CFLAGS])
AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CXXFLAGS])
dnl -Werror-implicit-function-declaration is used for the if_nametoindex detection with winstore
AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local], [CFLAGS])
AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS])
dnl Checks for socket stuff
VLC_SAVE_FLAGS
SOCKET_LIBS=""
AC_SEARCH_LIBS(connect, [socket], [
AS_IF([test "$ac_cv_search_connect" != "none required"], [
SOCKET_LIBS="$ac_cv_search_connect"
])
], [
AS_IF([test "${SYS}" = "mingw32"], [
SOCKET_LIBS="-lws2_32 -liphlpapi"
])
])
AC_SEARCH_LIBS([inet_pton], [nsl], [
AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [
SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS"
])
],, [${SOCKET_LIBS}])
LIBS="${LIBS} ${SOCKET_LIBS}"
CFLAGS="${CFLAGS} -Werror-implicit-function-declaration"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([#ifdef _WIN32
#include <ws2tcpip.h>
#include <windows.h>
# if _WIN32_WINNT < 0x600
# error Needs vista+
# endif
#else
#include <sys/socket.h>
#include <arpa/inet.h>
#endif], [
char dst[[sizeof(struct in_addr)]];
inet_pton(AF_INET, "127.0.0.1", dst);
])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([#ifdef _WIN32
#include <iphlpapi.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
#endif], [
if_nametoindex("");
])],[AC_DEFINE([HAVE_IF_NAMETOINDEX],[1],[Define to 1 if you have if_nametoindex function])])
AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>])
AC_CHECK_FUNCS([if_nameindex])
VLC_RESTORE_FLAGS
AC_SUBST(SOCKET_LIBS)
dnl
dnl Debugging mode
dnl
......@@ -1174,6 +1236,10 @@ case "${host_cpu}" in
"")
ARCH=unknown
;;
armv*)
ARCH="arm"
host_cpu="arm"
;;
*)
ARCH="${host_cpu}"
;;
......@@ -1814,7 +1880,7 @@ PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module],
dnl
dnl libdvdnav plugin
dnl
PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto])
PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 5.0.3], [DVD with navigation input module (dvdnav)], [auto])
AS_IF([test "${enable_dvdnav}" != "no"], [
AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h)
AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[
......@@ -1845,7 +1911,14 @@ AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_AD
dnl
dnl liBDSM access module
dnl
PKG_ENABLE_MODULES_VLC([DSM], [dsm], [libdsm >= 0.2.0], [libdsm SMB/CIFS access/sd module], [auto])
AM_CONDITIONAL(HAVE_DSM, [test "$AS_TR_SH(with_dsm)" = "yes"])
PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [
VLC_ADD_PLUGIN([dsm])
VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS])
VLC_ADD_LIBS([dsm], [$DSM_LIBS])
have_dsm="yes"
],,[libdsm SMB/CIFS access/sd module], [auto])
AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"])
dnl
dnl sftp access support
......@@ -1857,6 +1930,12 @@ dnl nfs access support
dnl
PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto])
dnl
dnl smb2 access support
dnl Disabled by default, since it was added after the initial VLC 3.0 release
dnl
PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [disabled])
dnl
dnl Video4Linux 2
dnl
......@@ -2008,19 +2087,6 @@ if test "${enable_realrtsp}" = "yes"; then
VLC_ADD_PLUGIN([access_realrtsp])
fi
dnl
dnl QTKit
AC_ARG_ENABLE(macosx-qtkit,
[ --enable-macosx-qtkit Mac OS X qtsound (audio) module (default enabled on Mac OS X <= v10.11)])
if test "x${enable_macosx_qtkit}" != "xno" &&
(test "${SYS}" = "darwin" || test "${enable_macosx_qtkit}" = "yes")
then
AC_CHECK_HEADERS(QTKit/QTKit.h, [
VLC_ADD_PLUGIN([qtsound])
])
fi
dnl
dnl AVFoundation
AC_SUBST(have_avfoundation, ["no"])
AC_ARG_ENABLE(macosx-avfoundation,
......@@ -2131,7 +2197,7 @@ fi
dnl
dnl matroska demux plugin
dnl
PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml libmatroska], [MKV format support], [auto])
PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml >= 1.3.6 libmatroska], [MKV format support], [auto])
dnl
dnl modplug demux plugin
......@@ -2140,7 +2206,7 @@ AC_ARG_ENABLE(mod,
[AS_HELP_STRING([--disable-mod],
[do not use libmodplug (default auto)])])
if test "${enable_mod}" != "no" ; then
PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.4 libmodplug != 0.8.8], [
PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [
VLC_ADD_PLUGIN([mod])
VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS])
VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod
......@@ -2507,7 +2573,7 @@ AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"])
dnl
dnl DXGI debug
dnl
AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h)
AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h d3d11_4.h)
dnl
dnl avformat demuxer/muxer plugin
......@@ -2614,6 +2680,11 @@ dnl AOM decoder plugin
dnl
PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)])
dnl
dnl Dav1d decoder plugin
dnl
PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)])
dnl
dnl libvpx decoder plugin
dnl
......@@ -2827,37 +2898,13 @@ fi
dnl x265 encoder
PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto])
dnl
dnl H264 encoder plugin (10-bit lib264)
dnl
AC_ARG_ENABLE(x26410b,
[ --enable-x26410b H264 10-bit encoding support with static libx264 (default disabled)])
if test "${enable_x26410b}" != "no"; then
PKG_CHECK_MODULES(X26410B, x26410b, [
VLC_ADD_PLUGIN([x26410b])
VLC_ADD_LIBS([x26410b],[${X26410B_LIBS}])
AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
])
VLC_ADD_CFLAGS([x26410b],[${X26410B_CFLAGS}])
if echo ${X26410B_LIBS} |grep -q 'pthreadGC2'; then
VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
fi
], [
if test "${enable_x26410b}" = "yes"; then
AC_MSG_ERROR([x26410b module doesn't work without staticly compiled libx264.a])
fi
])
fi
dnl
dnl H264 encoder plugin (using libx264)
dnl
AC_ARG_ENABLE(x264,
[ --enable-x264 H264 encoding support with libx264 (default enabled)])
if test "${enable_x264}" != "no"; then
PKG_CHECK_MODULES(X264,x264 >= 0.86, [
PKG_CHECK_MODULES(X264,x264 >= 0.148, [
VLC_ADD_PLUGIN([x264])
VLC_ADD_LIBS([x264],[${X264_LIBS}])
......@@ -2876,6 +2923,32 @@ if test "${enable_x264}" != "no"; then
])
fi
dnl
dnl H264 encoder plugin (libx264 > 153)
dnl
AC_ARG_ENABLE(x26410b,
[ --enable-x26410b H264 10-bit encoding support with libx264 (default enabled)])
if test "${enable_x26410b}" != "no"; then
PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [
VLC_ADD_PLUGIN([x26410b])
VLC_ADD_LIBS([x26410b],[${X264_LIBS}])
AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [
VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}])
])
VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}])
if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then
VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB])
fi
],[
if test "${enable_x26410b}" = "yes"; then
AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html])
fi
])
fi
dnl
dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
dnl
......@@ -2979,7 +3052,7 @@ AS_IF([test "${enable_tiger}" != "no"], [
])
dnl
dnl check if we can build the css selector engine
dnl check if we can build the css selector engine
dnl
AC_ARG_ENABLE(css,
[ --enable-css CSS selector engine (default auto)])
......@@ -3030,6 +3103,9 @@ PKG_CHECK_MODULES([GL], [gl], [
AC_MSG_RESULT([${have_gl}])
])
AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
AS_IF([test "${have_gl}" = "yes"], [
AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
])
dnl OpenGL ES 2: depends on EGL 1.1
PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled])
......@@ -3130,11 +3206,11 @@ dnl
dnl Wayland
dnl
AC_ARG_ENABLE(wayland,
[AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)])])
[AS_HELP_STRING([--enable-wayland], [Incomplete Wayland support (default disabled)])])
have_wayland="no"
have_wayland_egl="no"
AS_IF([test "${enable_wayland}" != "no"], [
AS_IF([test "${enable_wayland}" = "yes"], [
PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [
AC_MSG_CHECKING([for the Wayland protocols])
PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [
......@@ -3845,24 +3921,29 @@ AS_IF([test "$with_breakpad" != "no"], [
AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad])
])
AS_IF([test "$HAVE_OSX" != "1"], [
AC_MSG_ERROR([Breakpad currently only works on macOS])
])
AC_MSG_CHECKING([for Breakpad framework])
AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
AC_MSG_RESULT([no])
AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
], [
AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_BREAKPAD], [1], [Define to 1 if breakpad is enabled.])
AC_SUBST(BREAKPAD_URL, ["${with_breakpad}"])
AS_IF([test "$HAVE_OSX" = "1"], [
AC_MSG_CHECKING([for Breakpad framework])
AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \
! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [
AC_MSG_RESULT([no])
with_breakpad="no"
AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}])
], [
AC_MSG_RESULT([yes])
])
],[
PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [
LDFLAGS="${LDFLAGS} -Wl,--build-id"
], [
AC_MSG_ERROR(["breakpad not found"])
])
])
])
AM_CONDITIONAL(HAVE_BREAKPAD, [test "$with_breakpad" != "no"])
AS_IF([test "$with_breakpad" != "no"], [
AC_SUBST(BREAKPAD_URL, ["${with_breakpad}"])
])
dnl
dnl Minimal Mac OS X module
......@@ -3893,6 +3974,12 @@ AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [
VLC_ADD_PLUGIN([cvpx])
])
dnl
dnl AudioToolbox MIDI plugin
AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [
VLC_ADD_PLUGIN([audiotoolboxmidi])
])
dnl
dnl ncurses module
dnl
......@@ -3929,7 +4016,7 @@ AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"])
dnl
dnl SRT plugin
dnl
PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2 srt < 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT])
EXTEND_HELP_STRING([Visualisations and Video filter plugins:])
dnl
......@@ -3992,7 +4079,7 @@ PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto])
dnl
dnl mDNS using libmicrodns
dnl
PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns], [mDNS services discovery], [auto])
PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns >= 0.1.2], [mDNS services discovery], [auto])
EXTEND_HELP_STRING([Misc options:])
......@@ -4113,13 +4200,16 @@ AS_IF([test "${enable_osx_notifications}" != "no"], [
VLC_ADD_PLUGIN([osx_notifications])
VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation])
VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] )
else
enable_osx_notifications="no"
fi
])
AM_CONDITIONAL(HAVE_OSX_NOTIFICATIONS, [test "$enable_osx_notifications" != "no"])
dnl
dnl Libnotify notification plugin
dnl
PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-2.0], [libnotify notification], [auto])
PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto])
dnl
dnl libplacebo support
......@@ -4129,7 +4219,7 @@ AC_ARG_ENABLE(libplacebo,
[disable libplacebo support (default auto)])])
AS_IF([test "$enable_libplacebo" != "no"], [
PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.1], [
PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.2.1], [
AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
], [
AS_IF([test -n "${enable_libplacebo}"], [
......@@ -4159,7 +4249,7 @@ AC_ARG_WITH(kde-solid,
AS_HELP_STRING([--with-kde-solid=PATH],
[KDE Solid actions directory (auto)]),, [
if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then
if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then
with_kde_solid="yes"
fi
])
......@@ -4177,7 +4267,7 @@ AC_SUBST(soliddatadir)
AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"])
dnl
dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY
dnl It should only be available when building for win10, but some SDKs define it unconditionnaly
dnl
if test "${SYS}" = "mingw32"; then
......@@ -4234,8 +4324,14 @@ AC_SUBST(VERSION_MINOR)
AC_SUBST(VERSION_REVISION)
AC_SUBST(VERSION_EXTRA)
AC_SUBST(COPYRIGHT_YEARS)
AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure])
AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure])
AS_IF([test -z "$VLC_COMPILE_BY"],[
VLC_COMPILE_BY=`whoami|sed -e 's/\\\/\\\\\\\/g'`
])
AC_DEFINE_UNQUOTED([VLC_COMPILE_BY], "$VLC_COMPILE_BY", [user who ran configure])
AS_IF([test -z "$VLC_COMPILE_HOST"],[
VLC_COMPILE_HOST=`hostname -f 2>/dev/null || hostname`
])
AC_DEFINE_UNQUOTED([VLC_COMPILE_HOST], "$VLC_COMPILE_HOST", [host which ran configure])
AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler])
dnl
dnl Handle substvars that use $(top_srcdir)
......@@ -4286,7 +4382,6 @@ AM_COND_IF([HAVE_WIN32], [
AM_COND_IF([HAVE_DARWIN], [
AC_CONFIG_FILES([
modules/gui/macosx/UI/InfoPlist.strings:modules/gui/macosx/Resources/InfoPlist.strings.in
share/macosx/Info.plist:share/Info.plist.in
])
])
......
......@@ -35,6 +35,7 @@ usage()
echo " --enable-ad-clauses configure to build packages with advertising clauses"
echo " (USE AT YOUR OWN LEGAL RISKS)"
echo " --disable-optim disable optimization in libraries"
echo " --enable-pdb generate debug information in PDB format"
}
BUILD=
......@@ -49,12 +50,7 @@ GPL="1"
GNUV3="1"
AD_CLAUSES=
WITH_OPTIMIZATION="1"
if test ! -f "../../contrib/src/main.mak"
then
echo "$0 must be run from a subdirectory"
exit 1
fi
ENABLE_PDB=
while test -n "$1"
do
......@@ -84,6 +80,9 @@ do
--disable-optim)
WITH_OPTIMIZATION=
;;
--enable-pdb)
ENABLE_PDB=1
;;
--enable-small)
ENABLE_SMALL=1
;;
......@@ -119,8 +118,8 @@ fi
if test -z "$BUILD"
then
echo -n "Guessing build system... "
BUILD="`${CC:-cc} -dumpmachine`"
printf "Guessing build system... "
BUILD="`${CC:-cc} -dumpmachine | sed s/windows-gnu/mingw32/`"
if test -z "$BUILD"; then
echo "FAIL!"
exit 1
......@@ -130,12 +129,12 @@ fi
if test -z "$HOST"
then
echo -n "Guessing host system... "
printf "Guessing host system... "
HOST="$BUILD"
echo "$HOST"
fi
echo -n "Packages licensing... "
printf "Packages licensing... "
if test -n "$GPL"
then
if test -n "$GNUV3"
......@@ -164,8 +163,9 @@ fi
#
# Prepare files
#
echo "Creating configuration file... config.mak"
exec 3>config.mak || exit $?
echo "Creating makefile..."
test -e Makefile && unlink Makefile
exec 3>Makefile || exit $?
cat >&3 << EOF
# This file was automatically generated.
# Any change will be overwritten if ../bootstrap is run again.
......@@ -218,38 +218,17 @@ check_ios_sdk()
check_macosx_sdk()
{
if [ -z "${OSX_VERSION}" ]
then
OSX_VERSION=`xcrun --show-sdk-version`
echo "OSX_VERSION not specified, assuming $OSX_VERSION"
fi
if test -z "$SDKROOT"
then
SDKROOT=`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$OSX_VERSION.sdk
if [ -z "$SDKROOT" ]; then
SDKROOT=$(xcrun --show-sdk-path)
echo "SDKROOT not specified, assuming $SDKROOT"
fi
if [ ! -d "${SDKROOT}" ]
then
SDKROOT_NOT_FOUND=`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$OSX_VERSION.sdk
SDKROOT=`xcode-select -print-path`/SDKs/MacOSX$OSX_VERSION.sdk
echo "SDKROOT not found at $SDKROOT_NOT_FOUND, trying $SDKROOT"
fi
if [ ! -d "${SDKROOT}" ]
then
SDKROOT_NOT_FOUND="$SDKROOT"
SDKROOT=`xcrun --show-sdk-path`
echo "SDKROOT not found at $SDKROOT_NOT_FOUND, trying $SDKROOT"
fi
if [ ! -d "${SDKROOT}" ]
then
echo "*** ${SDKROOT} does not exist, please install required SDK, or set SDKROOT manually. ***"
if [ ! -d "$SDKROOT" ]; then
echo "*** $SDKROOT does not exist, please install required SDK, or set SDKROOT manually. ***"
exit 1
fi
add_make "MACOSX_SDK=${SDKROOT}"
add_make "OSX_VERSION ?= ${OSX_VERSION}"
}
check_android_sdk()
......@@ -286,7 +265,12 @@ test -z "$GPL" || add_make_enabled "GPL"
test -z "$GNUV3" || add_make_enabled "GNUV3"
test -z "$AD_CLAUSES" || add_make_enabled "AD_CLAUSES"
test -z "$WITH_OPTIMIZATION" || add_make_enabled "WITH_OPTIMIZATION"
test "`uname -o`" != "Msys" || add_make "CMAKE_GENERATOR := -G \"MSYS Makefiles\""
test -z "$ENABLE_PDB" || add_make_enabled "ENABLE_PDB"
if [ "`uname -o 2>/dev/null`" = "Msys" ]; then
add_make "CMAKE_GENERATOR := MSYS Makefiles"
add_make "export CMAKE_GENERATOR"
fi
#
# Checks
......@@ -298,14 +282,38 @@ case "${OS}" in
then
check_macosx_sdk
add_make_enabled "HAVE_MACOSX" "HAVE_DARWIN_OS" "HAVE_BSD"
case "${HOST}" in
*arm64*|*aarch64*)
add_make "PLATFORM_SHORT_ARCH := arm64"
add_make_enabled "HAVE_NEON"
;;
*x86_64*)
add_make "PLATFORM_SHORT_ARCH := x86_64"
;;
esac;
else
check_ios_sdk
add_make_enabled "HAVE_IOS" "HAVE_DARWIN_OS" "HAVE_BSD" "HAVE_FPU"
case "${HOST}" in
*arm*)
add_make_enabled "HAVE_NEON" "HAVE_ARMV7A"
;;
*armv7s*)
add_make "PLATFORM_SHORT_ARCH := armv7s"
add_make_enabled "HAVE_NEON" "HAVE_ARMV7A"
;;
*arm*)
add_make "PLATFORM_SHORT_ARCH := armv7"
add_make_enabled "HAVE_NEON" "HAVE_ARMV7A"
;;
*arm64*|*aarch64*)
add_make "PLATFORM_SHORT_ARCH := arm64"
;;
*x86_64*)
add_make "PLATFORM_SHORT_ARCH := x86_64"
;;
*86*)
add_make "PLATFORM_SHORT_ARCH := i386"
;;
esac;
fi
if test "$BUILDFORTVOS"
......@@ -366,11 +374,6 @@ case "${OS}" in
;;
esac
case "${HOST}" in
amd64*|x86_64*)
add_make_enabled "HAVE_WIN64"
;;
esac
case "${HOST}" in
armv7*)
add_make_enabled "HAVE_ARMV7A"
;;
......@@ -384,8 +387,17 @@ esac
#
# Results output
#
test -e Makefile && unlink Makefile
ln -sf ../../contrib/src/main.mak Makefile || exit $?
BOOTSTRAP_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
CURRENT_PATH="$( pwd -P )"
# location of the contrib/src folder from the root of the contrib build folder
TOPSRC=$(python3 -c "import os; print(os.path.relpath('$BOOTSTRAP_PATH', '$CURRENT_PATH'))")
# location of the contrib/src folder from a built library folder
TOPSRC_BUILT=$(python3 -c "import os; print(os.path.relpath('$BOOTSTRAP_PATH', '$CURRENT_PATH/libfoo'))")
add_make "TOPSRC = $TOPSRC"
add_make "TOPSRC_BUILT = $TOPSRC_BUILT"
add_make "TOPDST = .."
add_make "-include config.mak"
add_make 'include $(TOPSRC)/src/main.mak'
echo "Bootstrap completed."
make help
mkdir -p ../../contrib/tarballs || exit $?
mkdir -p $BOOTSTRAP_PATH/tarballs || exit $?
......@@ -3,7 +3,10 @@
SDL_IMAGE_VERSION := 1.2.12
SDL_IMAGE_URL := http://www.libsdl.org/projects/SDL_image/release/SDL_image-$(SDL_IMAGE_VERSION).tar.gz
# sdl_image module is disabled on macOS, and it's dependency sdl failed to build
ifndef HAVE_DARWIN_OS
PKGS += SDL_image
endif
ifeq ($(call need_pkg,"SDL_image"),)
PKGS_FOUND += SDL_image
endif
......@@ -17,6 +20,7 @@ SDL_image: SDL_image-$(SDL_IMAGE_VERSION).tar.gz .sum-SDL_image
$(UNPACK)
$(APPLY) $(SRC)/SDL_image/SDL_image.patch
$(APPLY) $(SRC)/SDL_image/pkg-config.patch
$(UPDATE_AUTOCONFIG)
$(MOVE)
DEPS_SDL_image = jpeg $(DEPS_jpeg) tiff $(DEPS_tiff) \
......
......@@ -26,6 +26,6 @@ endif
$(REQUIRE_GPL)
$(RECONF)
cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
cd $</liba52 && $(MAKE) install
cd $</include && $(MAKE) install
cd $< && $(MAKE) -C liba52 install
cd $< && $(MAKE) -C include install
touch $@
diff --git a/aom_ports/aom_ports.cmake b/aom_ports/aom_ports.cmake
index d57989654..11d4b5550 100644
--- a/aom_ports/aom_ports.cmake
+++ b/aom_ports/aom_ports.cmake
@@ -30,7 +30,8 @@ list(APPEND AOM_PORTS_ASM_X86 "${AOM_ROOT}/aom_ports/emms.asm")
list(APPEND AOM_PORTS_INCLUDES_X86 "${AOM_ROOT}/aom_ports/x86_abi_support.asm")
list(APPEND AOM_PORTS_SOURCES_ARM "${AOM_ROOT}/aom_ports/arm.h"
- "${AOM_ROOT}/aom_ports/arm_cpudetect.c")
+ "${AOM_ROOT}/aom_ports/arm_cpudetect.c"
+ "${AOM_ROOT}/aom_ports/cpu-features.c")
list(APPEND AOM_PORTS_SOURCES_PPC "${AOM_ROOT}/aom_ports/ppc.h"
"${AOM_ROOT}/aom_ports/ppc_cpudetect.c")
diff --git a/aom_ports/arm_cpudetect.c b/aom_ports/arm_cpudetect.c
index 5a75bb348..bd5e1cb93 100644
--- a/aom_ports/arm_cpudetect.c
+++ b/aom_ports/arm_cpudetect.c
@@ -88,7 +88,7 @@ int aom_arm_cpu_caps(void) {
}
#elif defined(__ANDROID__) /* end _MSC_VER */
-#include <cpu-features.h>
+#include "cpu-features.h"
int aom_arm_cpu_caps(void) {
int flags;