In the release build runner this seems to be an issue [^1].
```
Making all in src
Makefile:3751: warning: ignoring prerequisites on suffix rule definition
Makefile:3755: warning: ignoring prerequisites on suffix rule definition
make[2]: Entering directory '/builds/videolan/vlc/winarm64-ucrt/src'
CC fourcc_gen
GEN stamp-revision
GEN ../include/vlc_about.h
fatal: detected dubious ownership in repository at '/builds/videolan/vlc'
To add an exception for this directory, call:
git config --global --add safe.directory /builds/videolan/vlc
cat: /builds/videolan/vlc/extras/package/win32/../../../src/revision.txt: No such file or directory
make[2]: *** [Makefile:3781: stamp-revision] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/builds/videolan/vlc/winarm64-ucrt/src'
make[1]: *** [Makefile:1573: all-recursive] Error 1
make[1]: Leaving directory '/builds/videolan/vlc/winarm64-ucrt'
make: *** [Makefile:1460: all] Error 2
```
[^1]: https://code.videolan.org/videolan/vlc/-/jobs/2288139
After vlc_memstream_close() the memstream cannot be used anymore.
(cherry picked from commit 02b47bc2e4) (edited)
- vlc_strfplayer is vlc_strfinput in 3.0
- es_out and vlc_player don't have the related API's in 3.0
It's easier to spot of NULL pointer dereference than a use after free.
In the POSIX implementation [1] the status of the pointer is undefined on
error. In our implementation it's free'd.
In both cases it's better some to use that pointer value after exiting
vlc_memstream_close().
[1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.html
(cherry picked from commit e957881f71)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
The caller of subpicture_region_New() can change it afterwards
in the region format and the picture format.
By default the values were undefined and might pick the
colorimetry of the video.
Ref. #27877 and #26180
Similar to 35396660ac adapted to 3.0
We let the concatenation decide if there's enough room or not.
And use the Wide char calls where wide char pointers are used.
(cherry picked from commit 28241fad50) (rebased)
rebased:
- the code around is slightly different
The API is available in UWP builds. _wgetcwd() should work as well.
(cherry picked from commit d00ede66bf) (edited)
edited:
- 3.0 already disabled the code in UWP differently
The option is defined as "Allow metadata network access". If it's false (default but query during the first run) that means the
user doesn't want to check metadata from the network.
So we should not start a network job when there's a possibility to do it.
This is a regression from ea88b8d68e.
Before that we only used FETCHER_SCOPE_LOCAL if the option wasn't set.
(cherry picked from commit 1a85d67939)
"Interactive" filters can only do one output per input.
Only "static" filters are allowed to generate more frames, like the deinterlacers.
There is no way at this point to probe the module that will be used
if it will output many frames or not. And even if it could the order of
filters would need to be respected. We cannot dynamically add filters
on one chain or the other.
(cherry picked from commit b3379d35c9)
This fixes#28377 -- the issue when double-clicking on
MOUSE_BUTTON_CENTER (mouse wheel) would result in plugins receiving
mouse events only for the first click, as VLC was filtering out all
non-left-mouse-button double-clicks.
The non-left-mouse-button double-click events, instead of being entirely
filtered out, are now being passed as regular mouse button presses
without any indication that they are double-clicks. While it would be
more proper to pass them as double-clicks with the corresponding mouse
button being pressed, that might break some 3rd party plugins that rely
on (vlc_mouse_t.b_double_click == true) to mean that the left mouse
button was double-clicked, without checking if the left mouse button was
actually pressed. Still, even with b_double_click not being set on
non-left-mouse-button double-clicks, passing such double-clicks as
regular press+release events does fix the issue of VLC "eating up" the
second click of a MOUSE_BUTTON_CENTER, so this is a good change.
On iOS and tvOS, dylibs must be wrapped into a framework and frameworks
must be flattened into the frameworks/ application directory (or global
to the system which is not possible in the general case), so dylibs
can't be in the VLC_PKG_LIB_DIR/plugins folder. Redirect
VLC_PKG_LIB_DIR/plugins toward VLC_PKG_LIB_DIR/ on those platforms.
Manual cherry-pick from commit 89e90672db.
The code is written directly in the src/modules/bank.c code given that
config_GetSysPath doesn't exist in 3.0.
The arguments to AllocatePluginFile were written in reverse, leading to
vlc_stat failing to find the file. In addition the value that should
have been written `-(sizeof ".framework" -1)` was actually written as
`-sizeof ".framework" -1` and thus `foo_plugin` was instead `foo_plug`.
Typo from function refactor in 70d3002be1.
Cherry-picked from commit eb47c931a0.
Darwin platforms are using frameworks to embed libraries. Some of them
like iOS and tvOS even forbid the use of dynamic libraries that are not
wrapped into a framework.
Since frameworks can contain various things (headers, resources, etc),
we don't necessarily want to browse their whole tree if their structure
is well-defined. In our case, since plugins are bundles and not dylibs,
there's not linking and there's no point in supporting versionning so we
can expect the plugin's dynamic library in the root of the framework,
named like the framework without the .framework part.
Since MacOSX can also make use of frameworks, this is enabled for all
darwin platforms, though it might not use them.
Cherry-picked from commit 70d3002be1.
Fix the following link errors when building for iOS with shared
libraries:
Undefined symbols for architecture arm64:
"_CFNetworkCopySystemProxySettings", referenced from:
_vlc_getProxyUrl in netconf.o
"_kCFNetworkProxiesHTTPPort", referenced from:
_vlc_getProxyUrl in netconf.o
"_kCFNetworkProxiesHTTPProxy", referenced from:
_vlc_getProxyUrl in netconf.o
ld: symbol(s) not found for architecture arm64
This avoid to fill up the decoder FIFO for nothing (ESes will be flushed
on resume).
(cherry picked from commit ff1316724f)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Don't hack the buffering values, but fake the buffering state: tell the
input_thread to demux() until the vout has a picture.
Fixes#2951
(cherry picked from commit ea93b2c847)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
It seems the latest FFmpeg requires 64 bits alignment for some I420 output.
Fixes#27285
(cherry picked from commit fa75a43b0b)
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
This adds support for 32-bit RISC-V, which only supports 64-bit time_t,
and thus lacks a plain futex system call. This also adds (future)
support for building with a 64-bit time_t ABI on a 32-bit platform.
(cherry picked from commit 949fb1d03d)