Commit Graph

441 Commits

Author SHA1 Message Date
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
Jonas Kvinge
b50da3eba4 GstEnginePipeline: Add missing end of stream
A bug was introduced when I added the mutex locker for the URLs, it did nothing when it was supposed to emit end of stream.

Fixes #1568
2024-09-29 23:40:09 +02:00
Jonas Kvinge
4479daeaf1 GstEngine: Finish pipeline before resetting in end of stream 2024-09-29 23:35:14 +02:00
Jonas Kvinge
a123de06c6 GstEngine: Add mutex lock for checking stream url 2024-09-29 23:33:47 +02:00
Jonas Kvinge
e4a57aa768 Remove VLC 2024-09-28 16:38:23 +02:00
Jonas Kvinge
3cb0f60900 Add missing names for parameter variables 2024-09-28 12:32:12 +02:00
Jonas Kvinge
dae4943593 Replace Spotify username/password with access token 2024-09-28 00:09:23 +02:00
Jonas Kvinge
1ef50333a6 UWPDeviceFinder: Silence codecvt deprecation warning 2024-09-26 01:06:15 +02:00
Jonas Kvinge
1663fa3ef1 ebur128analysis: Fix typo 2024-09-24 16:25:23 +02:00
Jonas Kvinge
c3008b4179 Silence Clang Wunused-const-variable 2024-09-22 13:15:19 +02:00
Jonas Kvinge
6d68f7f008 GstEngine: Don't set state to play if already playing 2024-09-17 22:23:17 +02:00