Commit Graph

451 Commits

Author SHA1 Message Date
Jonas Kvinge
5fcb71d08f Formatting 2025-12-09 01:16:41 +01:00
Jonas Kvinge
93af866185 Formatting 2025-12-08 23:49:48 +01:00
Jonas Kvinge
afe6967c46 GstEnginePipeline: Handle "missing-plugin" messages 2025-11-30 18:13:30 +01:00
Jonas Kvinge
e91bab6d42 GstEngine: Only emit error for debugstr if it's set 2025-11-30 18:13:30 +01:00
Jonas Kvinge
a6ab1a7689 GstEngine: Enable exclusive mode for wasapi2sink 2025-10-19 19:09:49 +02:00
Jonas Kvinge
098b21d818 Use MMDeviceFinder for wasapi2sink 2025-10-19 18:32:42 +02:00
Jonas Kvinge
7844a2b932 Update Spotify access token
Fixes #1769
2025-08-04 22:11:44 +02:00
Madeline Schreiber
d901258f11 GstEnginePipeline: Ignore about-to-finish when position is 0 2025-07-07 01:05:47 +02:00
Jonas Kvinge
71287dd77e Add option to turn off playbin3 2025-04-08 21:19:29 +02:00
Jonas Kvinge
2c9b14f5f2 GstEnginePipeline: Simplify version checks 2025-04-04 22:12:38 +02:00
corubba
954c21e21e AlsaDeviceFinder: Use card id instead of card index
Like the card index, the card id is guaranteed to be unique. While card
index can easily change between reboots, the card id is based on the
actual audio hardware and does not change between reboots; or even
hardware changes. This makes using the card id preferable, because it
will "just work" 99% of the time, and removes the need to force cards to
have a specific index.

There is a corner case where card ids may change between reboots: If you
have two (or more) of the same audio hardware in the system. But that
should be rare enough, and requires explicit system configuration
anyway, so using the "custom" option should work here.

If there is an previously-saved index-based ALSA device in the config,
it will continue to work as-is and does not need to be migrated. There
is only a small UI side-effect: Because the index-based device will no
longer match any found id-based device, the settings window will show it
as "custom". Simply selecting the ALSA device from the drop-down again
will change it to the id-based device.
2025-03-28 19:54:32 +01:00
Jonas Kvinge
5e031be42c Fix cast warnings with MSVC 2025-03-25 18:05:41 +01:00
Jonas Kvinge
cd4adf6f89 ebur128analysis: Handle extra enums with GStreamer 1.25 and higher 2025-03-17 22:57:36 +01:00
Roman Lebedev
70b7c4560d gst_channel_to_ebur_channel(): handle new top-surround channels
These seem to have appeared in gstreamer 1.26,
which is the version we need to use to guard the handling.

These are effectively geometrically located on the same azimuth,
but on the layer above than the non-top (i.e. middle layer)
surround channels. But they are still surround channels,
which ebur128 does not bias loudness-wise.

At least this is my understanding.
2025-03-12 22:20:56 +01:00
Roman Lebedev
2687dc31cc Support arbitrarily large EBU R 128 loudness normalization
While i have fixed gstreamer's `volume` in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5063
i did not see anything that followed after it was merged, namely, in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6222,
the feature was moved, `"volume"` was reverted to only handle `x10` gain,
and one needs to use `"volume-full-range"` instead to do arbitrary gain.
So let's do that.

This, of course, requires run-time detection of the version
of gstreamer base plugins that we are running with,
specifically, we need version `1.24`.
2025-03-12 22:20:56 +01:00
Jonas Kvinge
8349a8b0ee Port back to "output" and "device" settings in lowercase
Was accidentally changed to capitalized.
2025-02-01 00:48:57 +01:00
Jonas Kvinge
0db082fca0 Replace Q_OS_WIN with Q_OS_WIN32 2025-01-28 20:30:43 +01:00
Jonas Kvinge
e6a0945dfa Call QObject::metaObject 2025-01-17 09:08:59 +01:00
Jonas Kvinge
d73cbc3a1d EngineBase: Fix mismatched definition 2025-01-17 08:26:11 +01:00
Jonas Kvinge
ab558f87b5 GstEnginePipeline: Use SetStateAsync in finish if needed 2025-01-15 07:01:43 +01:00
Jonas Kvinge
72447fecfb StandardPaths: Remove inheritance 2025-01-07 21:40:06 +01:00
Jonas Kvinge
cbce9f7191 Override config, data and cache location 2025-01-05 23:45:29 +01:00
Jonas Kvinge
6e7aaed4ee Use QSharedPointer for GstEnginePipeline 2025-01-05 19:03:16 +01:00
Jonas Kvinge
7afae70bb0 GstEnginePipeline: Make sure all set states are finished before finishing pipeline 2025-01-05 18:58:03 +01:00
Jonas Kvinge
d66126f998 GstEngine: Add missing seek
Fixes #1568
2024-12-06 23:44:27 +01:00
Jonas Kvinge
0fff5f672a Rename variables 2024-12-06 23:43:44 +01:00
Jonas Kvinge
c62fd2b58a GstEnginePipeline: Add more logging for fader 2024-11-14 22:05:06 +01:00
Jonas Kvinge
712db598f7 GstEnginePipeline: Fix setting volume after fader timeout 2024-11-14 22:04:53 +01:00
Jonas Kvinge
16c9a0f974 GstEnginePipeline: Set final fader volume on timeout 2024-11-11 16:17:57 +01:00
Jonas Kvinge
18000b1b2c GstEnginePipeline: Increase fader timeout 2024-11-11 16:17:35 +01:00
Jonas Kvinge
f1b56028b7 GstEnginePipeline: Use fully-qualified names for QTimeLine 2024-11-11 16:17:11 +01:00
Jonas Kvinge
3d2315f754 GstEnginePipeline: Add mutex locker for Spotify access token 2024-11-11 16:16:29 +01:00
Jonas Kvinge
6612eeb9e3 GstEnginePipeline: Simplify next uri reset code 2024-11-10 15:38:00 +01:00
Jonas Kvinge
93929c73ee GstEnginePipeline: Add fader timeout 2024-11-10 02:07:22 +01:00
Jonas Kvinge
d68bede374 GstEnginePipeline: Fix fader fudge timer naming 2024-11-10 01:53:38 +01:00
Jonas Kvinge
b659b27f95 GstEnginePipeline: Replace QBasicTimer with QTimer 2024-11-10 01:50:53 +01:00
Jonas Kvinge
70d0772e04 GstEnginePipeline: Add separate set state async function 2024-11-10 01:36:48 +01:00
Jonas Kvinge
f9f47458d5 Remove engine type 2024-11-10 01:21:43 +01:00
Jonas Kvinge
975d0dff25 Move GstStartup 2024-11-09 23:39:31 +01:00
Jonas Kvinge
c0f5b53aaf GstEnginePipeline: Simplify checking for NULL state 2024-11-09 19:36:41 +01:00
Jonas Kvinge
ba285925ca GstEnginePipeline: Check that state is actually NULL before finishing pipeline
Possible fix for #1582
2024-11-09 19:30:28 +01:00
Jonas Kvinge
a0dd2c66e4 GstEnginePipeline: Always set state to NULL 2024-11-09 19:26:39 +01:00
Jonas Kvinge
64a9d557a4 GstEnginePipeline: Add missing declarations 2024-11-09 19:26:09 +01:00
Jonas Kvinge
3a5e5d4aaa GstEngine: Improve pipeline finish handling 2024-11-09 19:24:07 +01:00
Jonas Kvinge
f59c6c356e GstEnginePipeline: Get audio-sink 2024-11-09 19:22:56 +01:00
Jonas Kvinge
65b6e6d540 GstEnginePipeline: Save fader state 2024-11-09 19:21:56 +01:00
Jonas Kvinge
8da2b9cd94 Refactoring 2024-11-01 23:04:42 +01:00
Jonas Kvinge
ef9ef63f02 Port to QStringLiteral operator 2024-10-20 06:38:55 +02:00
Jonas Kvinge
0e330b81db Use Qt::Literals::StringLiterals 2024-10-18 20:17:23 +02:00
Jonas Kvinge
0768298b95 Refactor CMake files 2024-10-04 22:05:20 +02:00