Update to the latest available stable sparkle release.
This sparkle release supports macOS 10.13 as minimum version,
which is the minimum version we require on VLC 4 now as well.
If artwork is undefined/null, fallback is not used because the mechanism that
switches to the fallback source is activated when the status becomes
`Image.Error`. In undefined/null case, the source ends up being an empty string,
which makes the status `Image.Null`, rather than `Image.Error`.
Currently we are not additionally checking if the address is available but
empty.
It is not deterministic relative to the time it takes to update the properties,
currently in some cases properties may be updated before `sourceChanged()` is
emitted and in some cases not, depending on the pace of the rendering and the
rendering thread.
If we signal the change immediately after the source changes, we don't have
this problem.
Currently this is asymptomatic, but better to correct it.
This is mostly relevant when the new source is null (no more source),
since if there is a new source the properties would be updated in
most cases in 1/FPS, if everything goes well, provided that the new
source is a texture provider.
This eases maintenance, because we don't need to have additional
rectangle where `DualKawaseBlur` is reused depending on the
graphics backend when background coloring is wanted.
This fixes exposing what is underneath, provided that the source texture is not
ready or was invalidated.
This is especially problematic when switching to the player page, because bare
window may be exposed, which means in most cases what is beneath the interface
window getting exposed (such as the desktop). We currently rely on transparency
to expose the video window, so this is not limited to window backdrop blur case.
This should also fix the same in other situations, such as switching the artist
in the artists page, but I can still reproduce the issue. It appears that this is
because when `Image` source changes to another valid source, its texture (it is a
texture provider) is not invalidated in between (even though we are not using
`retainWhileLoading`). This issue is handled with a workaround in a later commit.
Note that if blending is set to false, which may be due to automatic adjustments,
any translucent fragment is going to punch a hole in the interface. This may be
a problem during texture changes, since `DualKawaseBlur` makes the decision on
whether to use blending or not based on what the texture says. This decision is
routed through the QML engine due to technical reasons, so it is not possible to
fix this problem completely. If that is a problem, `blending` may be set to `true`
manually or the source texture may be invalidated before switching to a new
texture with different properties (such as old texture is opaque while new one
is translucent). Currently this is not a symptomatic matter therefore is not
considered to be a problem.
There are 2 now paths, the legacy path (before API 30) and the AImage
path (after API 31).
The new AImage path:
- No more inflight pictures: picture can outlive the decoder and be
displayed more than one time (the AImageReader need to outlive all
pictures but it's handled naturally from the video context).
- Can be rendered by OpenGL or directly (ASurfaceControl), without
hardcoding it before creating MediaCodec (contrary to the legacy path)
fmt_out color should already be set by the demuxer or the packetizer.
I don't know if there is a possibility that the hdr metadata is found by
the decoder and not by our demuxer or packetizer.
Will replace MediaCodec direct rendering once AImageReader is handled by
MediaCodec.
- Support HDR metadata (should be the same than legacy vout).
- Fully support vout crop/scale/size controls, without the need to
external JNI calls to libvlcjni AWindow class.
- Support picture re-display (it was not possible before)
Both APIs are avalaible since API 29+, but some new functions were added
in API 31. As I don't want to add a third behavior to test (legacy,
API29, API31), I force usage of API31+ to enable new AImageReader /
ASurfaceControl path.
This allows the drag item to reuse the texture.
This was previously missed, because I thought that the
view delegate was `TableViewDelegateExt` (which was
handled in 1d85e323 and 4e351b9c).
Clipping should be avoided when possible, especially in delegates, as
noted in the docs (https://doc.qt.io/qt-6/qtquick-performance.html):
> Clipping inside a delegate is especially bad and should be avoided at
> all costs.
Instead of an overlay, the progress bar is now placed under the video
thumbnail. This can be done, because we can now set individual corner
radii since a47d9fb6.
We could do this at the moment, possibly even with Qt 6.2, but it
is not worth the maintenance. Rhi headers are available in gui-private,
and for Qt versions older than 6.6 we also need quick-private.
External process preparsing is not available on Android and iOS-derived
platforms (iOS, tvOS, watchOS, visionOS) as spawning external processes
is either restricted or impractical on these platforms.
Use the internal (in-process) preparser instead.
External process preparsing is not available on Android and iOS-derived
platforms (iOS, tvOS, watchOS, visionOS) as spawning external processes
is either restricted or impractical on these platforms.
Use the internal (in-process) preparser instead.
External process preparsing is not available on Android and iOS-derived
platforms (iOS, tvOS, watchOS, visionOS) as spawning external processes
is either restricted or impractical on these platforms.
Use the internal (in-process) preparser instead.
External process preparsing is not available on Android and iOS-derived
platforms (iOS, tvOS, watchOS, visionOS) as spawning external processes
is either restricted or impractical on these platforms.
Use the internal (in-process) preparser instead.
```
test_src_player_titles: ../../../test/src/player/common.h:924: test_end_prestop_length: Assertion `ctx->params.length == vlc_player_GetLength(player)' failed.
```
The test playback duration is very small. Therefore the player might be
stopped or playing at the end of the test. If stopped, player does not
have an input_thread_t and return VLC_TICK_INVALID from
vlc_player_GetLength().
This test is mainly checking titles, so it's ok to not call test_prestop
here.
Maybe, we could keep the input_thread_t alive when stopped, to allow
users getting previous values, but that won't be possible if a media is
scheduled next...
Fixes#29581
TARGET_OS_* macros from TargetConditionals.h are always defined (to 0
or 1), so checking `defined(TARGET_OS_IPHONE)` is incorrect. Because of
this, the Qt check executable wasn't probed anymore on MacOS.
Instead, check the macro value directly. Also include
TargetConditionals.h which was missing.