Martin Storsjö [Wed, 10 Jan 2018 12:54:49 +0000 (14:54 +0200)]
contrib: pthreads: Don't use x86 inline asm on non-x86 platforms
Martin Storsjö [Thu, 14 Dec 2017 07:17:39 +0000 (09:17 +0200)]
contrib: projectM: Don't forcibly add -fPIC when targeting windows
This fixes compilation with clang.
Martin Storsjö [Wed, 13 Dec 2017 15:00:41 +0000 (17:00 +0200)]
contrib: postproc: Don't add -fPIC when targeting windows
This roughly matches
3965d404ccd from libav/ffmpeg. With GCC,
adding -fPIC when building for windows (x86_64) results in a warning,
while it is an error with clang.
Martin Storsjö [Wed, 13 Dec 2017 14:11:09 +0000 (16:11 +0200)]
contrib: gnutls: Disable assembly on windows/x86_64 and aarch64 when built with clang
Move the check for clang from the qt rules.mak into the toplevel
main.mak.
This fixes building in these configurations.
Martin Storsjö [Wed, 21 Feb 2018 11:26:31 +0000 (13:26 +0200)]
contrib: qt: Use the win32-clang-g++ mkspec when building with for windows with clang
Check $(CC) --version to see if it turns out to be clang.
Martin Storsjö [Wed, 13 Dec 2017 14:15:04 +0000 (16:15 +0200)]
contrib: qt: Add patches for building with llvm-mingw
All of them are backports (in Qt 5.11, everything needed for building
with llvm-mingw is upstreamed), with annotations about where they
come from.
To actually build with llvm-mingw, one has to use the mkspec
win32-clang-g++ instead of win32-g++.
Martin Storsjö [Fri, 5 Jan 2018 21:53:37 +0000 (23:53 +0200)]
contrib: pthreads: Fix building with llvm-mingw
This avoids doing things with dlltool that llvm-dlltool doesn't
implement.
I don't see the need of running a second pass with dlltool to
produce an output def file and yet another pass to produce
an import library out of it; just make the linker output the
import library while linking the dll. (If the import library is
to be used by MSVC, there is a point in generating it with dlltool
instead of with ld though. Even then, there's no point in generating
the def file using dlltool though, when it could just be generated by
the linker.)
Remove an inline declaration on a function that can't be inline-only
(static inline).
For non-static inline functions in C, the compiler can choose to
use the inline function itself, or assume that a definition exists
in a different translation unit. In this case, clang seems to
not inline ptw32_cond_check_need_init and creates an undefined
reference to the same function that should be defined in another
translation unit (which doesn't exist).
See https://www.greenend.org.uk/rjk/tech/inline.html for more details
on this.
Martin Storsjö [Fri, 23 Feb 2018 22:14:13 +0000 (00:14 +0200)]
contrib: goom: Fix building for i386 with clang
This is based on a patch from gst-plugins-good (which bundles a copy
of the goom sources), based on a patch from FreeBSD ports.
Martin Storsjö [Tue, 19 Dec 2017 09:05:47 +0000 (11:05 +0200)]
contrib: x264: Fix building for windows on arm
This includes a backport of one patch (from original git commit
7b13b31be60, included in the x264 master branch since Dec 24 2017),
and passing the necessary configure parameters for setting up
gas-preprocessor for this configuration.
Rémi Denis-Courmont [Sun, 25 Feb 2018 19:39:23 +0000 (21:39 +0200)]
compat: remove no longer used ffsll()
We don't need two ways to count trailing zeroes.
Rémi Denis-Courmont [Sun, 25 Feb 2018 19:30:40 +0000 (21:30 +0200)]
opengl: use ctz() instead of ffsll()
When manipulating bit fields, zero-based ctz() is generally simpler
than one-based ffs().
By definition: ffs(x) = x ? (ctz(x) + 1) : 0
Rémi Denis-Courmont [Sun, 25 Feb 2018 19:05:19 +0000 (21:05 +0200)]
picture_pool: simplify using ctz()
Same as
09fa628168421b5d8881b72ced9390d84dd58123.
Rémi Denis-Courmont [Sun, 25 Feb 2018 19:06:40 +0000 (21:06 +0200)]
picture_pool: fix cancellation handling with lock
If there is a deprecated lock callback, the mutex might be released
and the cancellation flag much be rechecked.
Conversely, if the pool is empty, then there is no point in checking
the flag: allocation will anyway fail immediately.
Rémi Denis-Courmont [Sun, 25 Feb 2018 19:05:19 +0000 (21:05 +0200)]
picture_pool: simplify using ctz()
Zero-based value is easier than one-based in this context.
Martin Storsjö [Sat, 24 Feb 2018 22:02:47 +0000 (00:02 +0200)]
contrib: upnp: Improve and generalize a patch for handling inet_pton
libupnp locally overrides the version of _WIN32_WINNT via
configure.ac and autoconfig.h (which is disabled by a vlc contrib
patch when targeting winrt though).
Make sure that autoconfig.h is included everywhere necessary, to
show/hide the relevant parts of winsock headers depending on the
chosen version of _WIN32_WINNT (either default or overridden).
This avoids including the system declarations of these functions if
the default target is >= vista but the build tries to override it
to a lower version.
On the other hand, if the override of _WIN32_WINNT is removed (as
when targeting winrt) and the default is >= vista, skip the local
version of inet_pton.
This should have the same effect as the previous patch, but
evaluated by the preprocessor instead of hardcoding commenting out
of certain source files.
Jean-Baptiste Kempf [Sat, 24 Feb 2018 17:50:43 +0000 (18:50 +0100)]
avcodec: map MagicYUV codec id
Jean-Baptiste Kempf [Sat, 24 Feb 2018 17:49:47 +0000 (18:49 +0100)]
FourCC for MagicYUV
Steve Lhomme [Sat, 24 Feb 2018 12:46:53 +0000 (13:46 +0100)]
d3d11va: do not use the external if there's not enough pictures
Do the detection earlier and avoid fetching pictures from the pool for nothing.
Steve Lhomme [Sat, 24 Feb 2018 12:41:30 +0000 (13:41 +0100)]
d3d11_fmt: simplify the nvidia check
Rémi Denis-Courmont [Sat, 24 Feb 2018 07:57:45 +0000 (09:57 +0200)]
dummy vout: fix sign warning
Rémi Denis-Courmont [Sat, 24 Feb 2018 07:53:54 +0000 (09:53 +0200)]
include: fix clz on pure ISO C compilers
Thomas Guillem [Fri, 23 Feb 2018 12:39:34 +0000 (13:39 +0100)]
contrib: ffmpeg: enable bsf=vp9_superframe
This is used to mux VP9 inside webm/mkv
Francois Cartegnie [Fri, 23 Feb 2018 17:48:47 +0000 (18:48 +0100)]
demux: avi: fix fpe (#19688)
Rémi Denis-Courmont [Fri, 23 Feb 2018 17:18:32 +0000 (19:18 +0200)]
qt: remove unused parameter
Thomas Guillem [Fri, 23 Feb 2018 16:54:41 +0000 (17:54 +0100)]
Revert "input: use the original demux for slave synchronisation"
This reverts commit
2a8dda4c43b8967b5d53ee57a4de7f6aa99cff29.A
cf.
2e3120ad713190473134af431db78fbe9b25e033
Thomas Guillem [Fri, 23 Feb 2018 17:12:29 +0000 (18:12 +0100)]
chromecast: disable SPU
cf. comment
Rémi Denis-Courmont [Fri, 23 Feb 2018 17:01:58 +0000 (19:01 +0200)]
demux: extend demux_FilterChainNew() documentation
Thomas Guillem [Fri, 23 Feb 2018 16:43:18 +0000 (17:43 +0100)]
chromecast: fix typo in msg logs
Francois Cartegnie [Fri, 23 Feb 2018 16:15:03 +0000 (17:15 +0100)]
Qt: fix drawing of preview (#18109)
Thomas Guillem [Fri, 23 Feb 2018 16:08:13 +0000 (17:08 +0100)]
mediacodec: don't override sar if already correct
Thomas Guillem [Thu, 1 Feb 2018 12:42:14 +0000 (13:42 +0100)]
chromecast: add SPU blending support
Thomas Guillem [Fri, 23 Feb 2018 14:18:09 +0000 (15:18 +0100)]
qt: always enable subtitle selection menu
This was incoherent with audio/video selection menus. Indeed, audio/video
selection menus are always visible (regardless of vout/aout state).
This allows users to change the spu track when using a sout (and a renderer).
Thomas Guillem [Fri, 23 Feb 2018 13:47:47 +0000 (14:47 +0100)]
input: use the original demux for slave synchronisation
When using a renderer, the filtered demux will report the time currently
displayed by the renderer. If slaves synchronize to this time, SPU or other ES
tracks will always come too late. To fix this issue, we fetch the time on the
original demux (that will report the time being buffered).
This could be removed in VLC 4.0 in favor of a new demux control, like
DEMUX_GET_BUFFERED_TIME.
Francois Cartegnie [Fri, 23 Feb 2018 10:43:29 +0000 (11:43 +0100)]
demux: ts: reject ffmpeg/libav default SDT
Thomas Guillem [Fri, 23 Feb 2018 12:36:29 +0000 (13:36 +0100)]
chromecast: fix webm support
VP9 and OPUS are webm. Also configure the muxer for webm.
Thomas Guillem [Fri, 23 Feb 2018 12:35:31 +0000 (13:35 +0100)]
packetizer: avparser: set keyframe flag
Marvin Scholz [Fri, 23 Feb 2018 12:17:19 +0000 (13:17 +0100)]
macosx: Display icons depending on renderer capabilities
Marvin Scholz [Fri, 23 Feb 2018 12:11:05 +0000 (13:11 +0100)]
macosx: Remove a SDK 10.11 preprocessor check
Marvin Scholz [Fri, 23 Feb 2018 11:59:16 +0000 (12:59 +0100)]
service_discovery/bonjour: Parse Chromecast capabilities
Add support for correctly parsing the Chromecast capability flags and
correctly set VLC_RENDERER_CAN_VIDEO/AUDIO based on those.
Thomas Guillem [Fri, 23 Feb 2018 10:52:43 +0000 (11:52 +0100)]
chromecast: show perfs dialog only one time (if accepted)
This fixes the dialog reappearing after a seek.
Thomas Guillem [Fri, 23 Feb 2018 10:35:17 +0000 (11:35 +0100)]
audiotrack: fix wrong init parameter
My bad, just changed in last minute the int to int64_t instead of using jint.
Steve Lhomme [Fri, 23 Feb 2018 09:32:13 +0000 (10:32 +0100)]
demux:mkv: fix i_last_dts mtime_t init
Steve Lhomme [Fri, 23 Feb 2018 08:51:51 +0000 (09:51 +0100)]
demux:mkv: fix the position displayed for ordered chapters
Steve Lhomme [Fri, 23 Feb 2018 08:43:45 +0000 (09:43 +0100)]
demux:mkv: fix the PCR for ordered chapters
Fixes #19101
Steve Lhomme [Fri, 23 Feb 2018 08:30:17 +0000 (09:30 +0100)]
demux:mkv: explicitly turn chapter timestamps into mtime_t values
Steve Lhomme [Thu, 22 Feb 2018 16:53:00 +0000 (17:53 +0100)]
demux:mkv: prevent a crash with multiple edition files
Steve Lhomme [Thu, 22 Feb 2018 16:52:39 +0000 (17:52 +0100)]
demux:mkv: log the tag target type even if we don't use it
Alexandre Janniaux [Thu, 22 Feb 2018 13:42:02 +0000 (14:42 +0100)]
audiotrack: add support for audio session id
Add a module variable to store an audio session id and use it when creating new
AudioTrack. This session id is generated by AudioManager.getAudioSessionId() in
the Android-side. This allows LibVLC users to broadcast intent allowing
external application to plug on the audio output and apply effect, for instance
an external equalizer.
See also android.media.audiofx.AudioEffect.
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Thomas Guillem [Fri, 23 Feb 2018 07:55:34 +0000 (08:55 +0100)]
microdns: renderer: fix no-video option
Thomas Guillem [Fri, 23 Feb 2018 07:41:24 +0000 (08:41 +0100)]
chromecast: clean up variables
- Hide "video" option. This option should only be set by the core (via the
renderer item). If a user doesn't want video, he could disable the video
track now.
- Remove mux/mime options: this code has only been tested for the default
mime/mux, there is no point of changing it.
- Remove translations for privates options.
This make the chromecast advanced preferences more understandable.
Marvin Scholz [Thu, 22 Feb 2018 21:41:45 +0000 (22:41 +0100)]
macosx: Save/share time remaining state in fullscreen controller
There was no identifier set for the time remaining label in the
fullscreen controller, this sets one to ensure the state is saved
correctly. Additionally this is the same identifier as the one in
the main window label, so make sure the state is shared between those.
Fix #19813
Francois Cartegnie [Thu, 22 Feb 2018 21:13:00 +0000 (22:13 +0100)]
demux: subtitle: fix <= first sub seek regression
Rémi Denis-Courmont [Thu, 22 Feb 2018 19:51:05 +0000 (21:51 +0200)]
configure: test for newlocale() separate from uselocale()
As NetBSD only implements a barely sensical subset of the locale_t API.
Rémi Denis-Courmont [Thu, 22 Feb 2018 19:50:09 +0000 (21:50 +0200)]
compat: remove shadowing variable
Lyndon Brown [Tue, 20 Feb 2018 05:04:33 +0000 (05:04 +0000)]
config/file: ignore obsolete options on read
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Lyndon Brown [Tue, 20 Feb 2018 04:46:18 +0000 (04:46 +0000)]
config/file: reject saved unsaveables
Options which are unsaveable can nevertheless end up being present in the
saved settings file either from a past release where they were not
considered unsaveable, or through external modification of the file. Values
for such options should simply be rejected when reading the file.
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Thomas Guillem [Thu, 22 Feb 2018 16:50:49 +0000 (17:50 +0100)]
chromecast: report cc timestamp even when paused
Thomas Guillem [Thu, 22 Feb 2018 16:50:25 +0000 (17:50 +0100)]
chromecast: init first time/position after first demux() call
Some demuxers give invalid results (0) just after a seek.
Thomas Guillem [Thu, 22 Feb 2018 15:58:06 +0000 (16:58 +0100)]
chromecast: reset time/position when changing es tracks
This fixes inconsistency of reported time when changing es tracks.
Thomas Guillem [Thu, 22 Feb 2018 15:55:52 +0000 (16:55 +0100)]
chromecast: late init of demux time/position
init time/position from the first demux call if they failed from Open/Seek.
Thomas Guillem [Thu, 22 Feb 2018 15:54:17 +0000 (16:54 +0100)]
chromecast: don't fallback to original pos in case of error
Since the original position can be way in advance.
Francois Cartegnie [Thu, 22 Feb 2018 15:17:41 +0000 (16:17 +0100)]
Revert "input: es_out: compute position from buffering only on update"
This reverts commit
5e3a04980044b94bfd5aa38390846544a43a4c21.
That does not behave well with streams not updating position... "growing"
Francois Cartegnie [Thu, 22 Feb 2018 15:09:29 +0000 (16:09 +0100)]
demux: ts: bump probing
issues with 4K
Francois Cartegnie [Thu, 22 Feb 2018 15:05:45 +0000 (16:05 +0100)]
demux: ts: don't set growing end on when not probed
Francois Cartegnie [Thu, 22 Feb 2018 14:16:37 +0000 (15:16 +0100)]
demux: ts: set dolbyvision to non default
Thomas Guillem [Thu, 22 Feb 2018 15:03:29 +0000 (16:03 +0100)]
chromecast: fix track selection when EOF
Thomas Guillem [Thu, 22 Feb 2018 14:47:45 +0000 (15:47 +0100)]
chromecast: lower vorbis encoding quality
cf. comment
Thomas Guillem [Thu, 22 Feb 2018 14:46:21 +0000 (15:46 +0100)]
chromecast: force mp3 transcoding for the last try
Marvin Scholz [Thu, 22 Feb 2018 14:04:31 +0000 (15:04 +0100)]
package/macosx: Update dmg background and icon positions
The previous background had the orange bar at the bottom, but with
some configurations of the Window it would be covered by the status
bar. Therefore move the orange bar to the top and adjust the icon
positions accordingly.
Thomas Guillem [Thu, 22 Feb 2018 08:29:40 +0000 (09:29 +0100)]
chromecast: http_url: send data per 512kB minimum
Thomas Guillem [Wed, 21 Feb 2018 13:11:33 +0000 (14:11 +0100)]
chromecast: remove error message
This is now likely to happen (in case of Flush).
Thomas Guillem [Wed, 21 Feb 2018 08:30:46 +0000 (09:30 +0100)]
chromecast: escape meta sent via JSON
Thomas Guillem [Tue, 20 Feb 2018 16:52:13 +0000 (17:52 +0100)]
chromecast: fix clock gap when paused
This commit try to work arround the internal clock gap caused by
input_clock_ChangePause() when the input is paused since the chromecast
internal clock won't change when paused.
This is far from perfect and can fail in a number of cases.
Thomas Guillem [Tue, 20 Feb 2018 16:48:15 +0000 (17:48 +0100)]
chromecast: don't drop data when serving multiple clients
When doing a lot a load requests, we can serve data to a client that will be
closed (the close request is already sent). In that case, we should also serve
data used by the old client to the new one.
Thomas Guillem [Tue, 20 Feb 2018 17:13:56 +0000 (18:13 +0100)]
chromecast: always start video with a keyframe
Thomas Guillem [Tue, 20 Feb 2018 16:41:11 +0000 (17:41 +0100)]
chromecast: fix use-after-free
Since the url can use the fifo from its callbacks.
Thomas Guillem [Tue, 20 Feb 2018 17:18:37 +0000 (18:18 +0100)]
chromecast: increase lock range
This could lead to a use-after-free of the header block.
Thomas Guillem [Tue, 20 Feb 2018 16:36:42 +0000 (17:36 +0100)]
chromecast: remove unused requestPlayerSeek method
Thomas Guillem [Tue, 20 Feb 2018 16:59:00 +0000 (17:59 +0100)]
chromecast: rework sout/demux_filter behavior
This commit drastically improves the buffering speed when casting to a CC
receiver. Indeed, some CC receivers need a 1minute buffer. Since the input
thread was previously paced, you could wait 59.7 sec (1min - file-caching
value) to get the playback started.
To fix this issue, the CC sout can now control the pacing
(ACCESS_OUT_CONTROLS_PACE = true). The input thread, via the cc demux-filter,
is now paced by the CC sout. The input-thread is paced in order to avoid
unresponsive controls. Indeed, we want to prevent the case when the input
thread is waiting for the sout that is waiting for the http buffer to be
emptied (via the fifo wait from input_DecoderDecode()).
Now that the CC can buffer 1 minute of data before failing, the transcode
fallback also needed to be reworked. It's now handled by the demux-filter that
will seek back (if possible) to the last position before doing the fallback.
The same goes when disabling the CC filter or when changing es tracks.
This commit also improves the CC time report by comparing the system clock with
the CC one.
This commit also reworks seeking. We need to flush the sout (and the muxer) and
request a new input. The previous method, using the seek command could not work
well with live streaming.
Thomas Guillem [Tue, 20 Feb 2018 16:10:19 +0000 (17:10 +0100)]
chromecast: demux: call init() when enabled
Thomas Guillem [Tue, 20 Feb 2018 16:08:59 +0000 (17:08 +0100)]
chromecast: demux: add init() method
Thomas Guillem [Tue, 20 Feb 2018 16:06:41 +0000 (17:06 +0100)]
chromecast: add isStateError() method
Thomas Guillem [Tue, 20 Feb 2018 16:04:32 +0000 (17:04 +0100)]
chromecast: remove unused method declarations
Thomas Guillem [Tue, 20 Feb 2018 16:01:53 +0000 (17:01 +0100)]
chromecast: queue stop only when needed
Thomas Guillem [Tue, 20 Feb 2018 15:58:49 +0000 (16:58 +0100)]
chromecast: don't use atomic
msg are always sent locked.
Thomas Guillem [Tue, 20 Feb 2018 15:58:15 +0000 (16:58 +0100)]
chromecast: lock when sending a message
Thomas Guillem [Tue, 20 Feb 2018 15:55:12 +0000 (16:55 +0100)]
chromecast: change msg return values
All msg*() methods return kInvalidId on error, 1 or the receiver/player
request ID on success.
Thomas Guillem [Tue, 20 Feb 2018 15:48:56 +0000 (16:48 +0100)]
chromecast: start requestId at 1
Since 0 is reserved when the chromecast send spontaneous messages.
Thomas Guillem [Fri, 9 Feb 2018 10:09:29 +0000 (11:09 +0100)]
chromecast: remove useless define
Thomas Guillem [Wed, 7 Feb 2018 16:27:33 +0000 (17:27 +0100)]
chromecast: rework VLCToCC time conversion
Thomas Guillem [Mon, 12 Feb 2018 13:00:01 +0000 (14:00 +0100)]
chromecast: create interrupt context from intf_sys_t
Since it's needed only by this class
Thomas Guillem [Mon, 12 Feb 2018 12:59:28 +0000 (13:59 +0100)]
chromecast: clean on error
Thomas Guillem [Thu, 22 Feb 2018 09:15:17 +0000 (10:15 +0100)]
compat: poll: work around event loss on WIN32
Signed-off-by: Steve Lhomme <robux4@videolabs.io>
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Alexandre Janniaux [Wed, 21 Feb 2018 17:35:06 +0000 (18:35 +0100)]
demux:mkv: fix hvcC detection with mkvmerge
mkvmerge had an issue with the first reserved bits and fixed it in v16.0.0
in the commit
4bb8ad6f5565e87ad6d6a8e7e9d453e64985344e. Some files done
with anterior versions were not played by VLC with mediacodec.
See the changelog of mkvmerge for version 16.0.0, especially the
following:
* mkvmerge: HEVC/h.265: the generation of the HEVCC structure stored in
`CodecPrivate` was wrong in two places: 1. the position of the number of
sub-layers was swapped with reserved bits and 2. the VPS/SPS/PPS/SEI lists
did not start with a reserved 1 bit.
See also https://code.videolan.org/videolan/vlc-android/issues/466 for issue
and sample.
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
Zhao Zhili [Mon, 5 Feb 2018 08:05:38 +0000 (16:05 +0800)]
demux: adaptive: case-insensitive compare of scheme
Signed-off-by: Francois Cartegnie <fcvlcdev@free.fr>
Francois Cartegnie [Wed, 21 Feb 2018 22:18:05 +0000 (23:18 +0100)]
demux: adaptive: remove old TLS api and network primitives
fixes old api leak
Marvin Scholz [Thu, 30 Nov 2017 10:05:53 +0000 (11:05 +0100)]
configure: Simplify mingw flag checks
Marvin Scholz [Fri, 16 Feb 2018 16:25:15 +0000 (17:25 +0100)]
VLSub: Handle error when fetching translations list
Marvin Scholz [Fri, 16 Feb 2018 16:25:14 +0000 (17:25 +0100)]
VLSub: Correct casing of "VLC" string
Marvin Scholz [Fri, 16 Feb 2018 16:25:13 +0000 (17:25 +0100)]
VLSub: Correct VLSub version in User-Agent and Window title
The VLSub user agent was still at 0.9, which would be confusing as the
Window title indicates the this string, showing VLSub 0.9 even though
this is VLSub 0.10.0.