When the video window is closed normally, there are no needs to
reparent it. In this case, we can retain the pre-3.0.13 behaviour
whence we simply close the video window as a children of the Qt UI.
This fixes a transient visual glitch when stopping playback or
disabling the video track. This also saves one full round-trip through
the X server at that time as XSync().
The video widget is normally released when the window provider is
closed. But it can also be released when the main UI is closed, even
though the window provider is still active.
Even if it is redundant with vlc_killed() (but not all APIs return
-EINTR when killed).
(cherry picked from commit 797e1f3b97)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
The reason why the playback panel is not aligned to the bottom in fullscreen mode on Linux is because the desktop environment panels (like taskbar, topbar, etc.) set `struts` that limit the area over which the top-level window can be moved programmatically. To get around this, we need to tell the window to ignore window manager hints (by setting the Qt::X11BypassWindowManagerHint flag) and manually limit its movement.
BUG: 22563
The X and Y values are pixel coordinates in the potentially subsampled
plane resolution. This must be converted to an octet offset as the type
of the pixel plane pointer is pointer-to-uint8_t.
So the X value must be multiplied by the sample size. The current code
was instead rounding the value down to a multiple of the sample size.
Bug reported by Philipp Marek on IRC.
(cherry picked from commit 87733c5011)
The kVTVideoDecoderReferenceMissingErr error is not a critical one,
but without it being handled here, it would lead to aborting with
VideoToolbox and falling back to Software.
Reproduced this with a sample provided by zhilizhao(赵志立),
related to !1790.
I assume that before this error code was introduced in macOS 12/iOS 15,
VT did just return the NULL image buffer with a success status code,
leading to the issue seen in !1790.
(cherry picked from commit f7434e60fc)
Signed-off-by: Marvin Scholz <epirat07@gmail.com>
There's no requirement in v3 and v4 that we don't support.
v5 doesn't exist yet.
Ref. #26999
(cherry picked from commit 6fd29e31d7)
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
The destination texture (sys->sceneTexture) has the visible dimensions, not the
decoder dimensions.
Factorize the size processing for the stretching and the vertex computing.
Ref. https://forum.videolan.org/viewtopic.php?f=14&t=159861
(cherry picked from commit 8684656505) (edited)
- 3.0 is based on the rectangles computed in the common code
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
We will never copy more than the visible area (plus one if the source is an
odd dimension).
(cherry picked from commit 70a2dab831) (edited)
- 3.0 is based on the rectangles computed in the common code
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
(cherry picked from commit d7e9562be3) (edited)
edited:
- 3.0 is based on the rectangles computed in the common code
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
`UpnpInit` is deprecated since 1.8.3 and removed in 1.14. `UpnpInit2`
offer a better replacement, working for both ipv6 and ipv4. There is no
reason to keep using `UpnpInit` apart from keeping the module usable
with 1.6.
These functions are inline and will be removed by the compiler anyway if
unused. The #if guards add unecessary compexity.
(cherry picked from commit aaef25ce7a)
DISPLAY_SIZE controls are emitted by the windowing system to control the
display state, but the caopengllayer display module is handling its own
windowing state without window and doesn't need to react to those events.
Instead, store the new size into the internal vout_display_cfg_t and
avoid trying to report the size to itself.
Fixes#26845
Refs #25264
Cherry-picked from commit bd24889a0b.
Signed-off-by: Alexandre Janniaux <ajanni@videolabs.io>
Store the current modified vout_display_cfg_t and inline the calls to
vout_display_PlacePicture.
Refs #26845
Refs #25264
Cherry-picked from commit 689b64b1aa.
Signed-off-by: Alexandre Janniaux <ajanni@videolabs.io>
The i_extra_picture_buffers is used to add pictures to the pool that the core
will allocate. dav1d is actually using n_threads frames. And the core is
allocating 10 frames per default for AV1. So we need to add the missing ones.
(cherry picked from commit a32031dc0f) (rebased)
rebased:
- the code dav1d 1.0.0 in 3.0 uses different max versions
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
(cherry picked from commit dbf45cea2a) (edited)
edited:
- 3.0 has the 128 pixels padding elsewhere
- 3.0 has an extra parameter for add_integer_with_range()
- 3.0 was setting i_extra_picture_buffers further down in the code
- 3.0 uses 16 threads max
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
It was causing seek error when seeking past INT_MAX
Regression from c23709134c
(cherry picked from commit 9646722d61)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Not sure when this regression happened on the libsmb2 side.
But setting the password to an empty string do enable anonymous login
now.
(cherry picked from commit 205963ad09)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Errors can also be reported via generic cbs, that will cause the
vlc_smb2_mainloop to abort. In that case, we should destroy the smb2
context to fix the issue mentioned by 924c951518
(cherry picked from commit 960ef3f8ef)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
op->smb2 won't be used in case of error but it is cleaner like that.
(cherry picked from commit 5264a62539)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
No changes since this function is only checked for != 0 (for now).
(cherry picked from commit 0d51ab8a3e)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
If the smb2_timeout was valid, then not valid (infinite), the last value
was not taken into account.
(cherry picked from commit ac95bf19f9)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
If interrupted by the user, just close the connection whitout sending a
close request and don't save the context in the cache in that case.
(cherry picked from commit cf7d48cd02)
Signed-off-by: Thomas Guillem <thomas@gllm.fr>