- Mar 02, 2025
-
-
libtool doesn't handle frameworks as dependencies, and only support them as linker argument (ie. -Wl,-framework arguments). Remove them from the link to prevent the linkage failure. This also means that they must be provided manually in the makefile afterwards...
-
- Mar 01, 2025
-
-
Steve Lhomme authored
No need to set it on each iteration.
-
Steve Lhomme authored
realloc works fine on NULL. The pointer is set in p_subtitle->psz_text which is free'd later. It's OK to free a NULL pointer if there wasn't any line to use.
-
Steve Lhomme authored
No need to do a lengthy strlen() call each time the concatenated string grows.
-
Steve Lhomme authored
We're just concatenating the lines in psz_text.
-
Steve Lhomme authored
-
Steve Lhomme authored
We already use flags to fill some arrays like AOUT_MIX_MODE_xxx or VOUT_ALIGN_xxx. The downside is that we cannot change the defines without breaking the libvlc API. But SUBPICTURE_ALIGN_xxx defines are also used by many module as source for parameters, so these would break as well.
-
Steve Lhomme authored
It's clearer when it's not weird.
-
- `GetSystemMetrics()` function already scales most of the metrics for the primary monitor [1], evidently because Qt makes the application DPI aware. - Currently by multiplying the `GetSystemMetrics()` result with `windowDpi / screenDpi`, we apply the window's DPI which is what is wanted here. - If the window is in the primary monitor, there is no problem. If there are multiple monitors but they share the same DPI, there should also be no problem. But if there are multiple monitors that have different DPIs, in that case dragging would be problematic. - The solution that Windows recommends [2] is using `GetSystemMetricsForDpi` and `GetDpiForWindow`. Unfortunately these are only available on Windows 10, so I dynamically load the necessary library and resolve the symbols. - Handling `WM_DPICHANGED` and calling `SetWindowPos()` should not be necessary, because Qt already calls it to resize the window according to the new dpi. [1] https://learn.microsoft.com/en-us/windows/win32/gdi/multiple-monitor-system-metrics [2] https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows#updating-existing-applications
-
-
-
If the display is opened on a window that is not matching with a DirectComposition backend or HWND backend, the module should not even try to open.
-
The decoder fifo level metric allows interpreting the situation that led to the fifo from the decoder to be flushed (ie. the fifo reached 400MiB of undecoded data stored). The metrics generates a lot of points though, so be sure to aggregate when displaying it. Example of query in flux language: from(bucket: v.defaultBucket) |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r._measurement == "measurement" and r._field == "fifo_size" ) |> aggregateWindow(every: 1s, fn: max) The size metrics are casted into uint64_t, but are always below the uint64_t max value anyway given they represent lesser values than 400MiB.
-
-
-
-
Unsigned support allows tracing sizes and counters.
-
Steve Lhomme authored
Now that we can position subpictures outside of the video.
-
Steve Lhomme authored
-
Steve Lhomme authored
If subtitles in black bar is disabled, it's equivalent to the video area.
-
Steve Lhomme authored
SPUs using substext can change it if they need to be in the video. This does the same as using the window dimensions when SPU in black bars was forced by the core.
-
Steve Lhomme authored
-
Steve Lhomme authored
...rather than in the video. It's off by default for now. This effectively disables "subtitles in black bars" as no SPU source is setting this flag yet.
-
Steve Lhomme authored
"subtitle in black bars" is not opt-in per SPU codec, and per region for each codec. It is off by default. Each subpicture needs to decide for itself if it's using the whole display area. We can't tell before the region is created/updated if it's going to be in video coordinates or display coordinates. The core doesn't need to know anymore if a picture is a "subtitle" (contains timestamps) in "absolute" (video or screen?) coordinates. It just needs to provide both dimensions.
-
Steve Lhomme authored
-
Steve Lhomme authored
Since we keep the alignment as well.
-
Steve Lhomme authored
-
Steve Lhomme authored
-
Steve Lhomme authored
-
Steve Lhomme authored
They are always "absolute", no need to set it on internal regions.
-
Steve Lhomme authored
-
Steve Lhomme authored
-
Steve Lhomme authored
-
Steve Lhomme authored
This is how the IOCallback abstraction works [^1]. Either you read the amount requested, or you return 0. vlc_stream_Read() reads the whole amount of data, unless it reaches the end of file. In that case it returns the amount it could read. [^1]: https://github.com/Matroska-Org/libebml/blob/ba5707e3268be330516c678c7de14af734f0f3b9/ebml/IOCallback.h#L30
-
Steve Lhomme authored
Since a878e9d6. Also remove duplicate include of <climits>.
-
- Feb 28, 2025
-
-
-
This commit signal the mostlyclean and other dependant targets that it should clean the targets generated by cargo. We use a separate target name and add the dependency to mostlyclean-local so that we can still extend the known automake target. We also don't use CLEANFILES so that dependencies files are also removed when using `make mostlyclean-local-rust` to avoid a corrupted tree where the dependencies would not be removed but the target files they reference would not exist anymore.
-
It's easier to setup CLEANFILES to $(NULL) at the top makefile and then always append to it whenever needed.
-
Either when the video is in portrait mode or when the subtitles are shown in the black bars and the video area is in portrait mode, the text can become very large just because we apply a percentage base on the output height. We switch mode when the height becomes bigger than the width so there's a continuity in the ratio when growing/shrinking the video in one direction or the other.
-
Alexandre Janniaux authored
The static libraries are used in multiple modules for the android codebase.
-