]>
git.sesse.net Git - nageru/log
Steinar H. Gunderson [Fri, 1 Mar 2024 13:34:05 +0000 (14:34 +0100)]
Make header files individually compilable.
Steinar H. Gunderson [Fri, 1 Mar 2024 13:29:54 +0000 (14:29 +0100)]
Some random #include fixing.
Steinar H. Gunderson [Fri, 1 Mar 2024 11:00:56 +0000 (12:00 +0100)]
Add a theme function Nageru.schedule_cut().
This allows the theme to schedule a video file cut.
Based on code by Marcus Nilsen.
Steinar H. Gunderson [Fri, 1 Mar 2024 10:53:51 +0000 (11:53 +0100)]
Remove a workaround for FFmpeg before 5.0.
We require 5.1 now anyway.
Steinar H. Gunderson [Fri, 1 Mar 2024 10:51:28 +0000 (11:51 +0100)]
Remove a now-obsolete Meson workaround, which also fixes a warning.
Steinar H. Gunderson [Wed, 29 Nov 2023 16:08:31 +0000 (17:08 +0100)]
Disable a Clang warning we do not care for.
Steinar H. Gunderson [Wed, 29 Nov 2023 16:08:09 +0000 (17:08 +0100)]
Remove an unused (and wrong!) forward-declaration.
Steinar H. Gunderson [Wed, 29 Nov 2023 16:02:05 +0000 (17:02 +0100)]
Remove an unused variable from PBOPool (Clang warning).
Steinar H. Gunderson [Wed, 29 Nov 2023 16:00:35 +0000 (17:00 +0100)]
Fix compilation with SRT and CEF together (macro conflict via sys/syslog.h).
Steinar H. Gunderson [Wed, 29 Nov 2023 15:59:19 +0000 (16:59 +0100)]
Remove some dead code from speedcontrol.
Steinar H. Gunderson [Wed, 29 Nov 2023 15:55:01 +0000 (16:55 +0100)]
Fix a missing #include in the CEF code.
Steinar H. Gunderson [Wed, 29 Nov 2023 15:55:20 +0000 (16:55 +0100)]
Bump version number.
Steinar H. Gunderson [Wed, 4 Oct 2023 22:26:26 +0000 (00:26 +0200)]
Release Nageru and Futatabi 2.3.0.
Steinar H. Gunderson [Wed, 4 Oct 2023 22:18:16 +0000 (00:18 +0200)]
Drop buffered SRT data if the connection is down for too long.
This stops huge backlogs from building up, like we can get with HTTP.
Steinar H. Gunderson [Wed, 4 Oct 2023 22:13:06 +0000 (00:13 +0200)]
Rename global_flags.srt_output_latency to have a proper unit.
Steinar H. Gunderson [Sun, 1 Oct 2023 21:28:05 +0000 (23:28 +0200)]
Port FFmpegCapture to the AVChannelLayout API.
This removes the last compilation warnings with FFmpeg 6.0.
Steinar H. Gunderson [Sun, 1 Oct 2023 09:51:42 +0000 (11:51 +0200)]
Remove more not-so-useful output.
Steinar H. Gunderson [Sun, 1 Oct 2023 09:48:16 +0000 (11:48 +0200)]
Remove an informational message that has no value to the user.
Steinar H. Gunderson [Sun, 1 Oct 2023 09:23:51 +0000 (11:23 +0200)]
Use AVFrame::duration instead of AVFrame::pkt_duration.
This field was introduced in FFmpeg 5.2 and then the old one
promptly deprecated; the difference seems to be effectively nil?
Use an #ifdef so that we retain bookworm (FFmpeg 5.1) compatibility.
Steinar H. Gunderson [Sun, 1 Oct 2023 09:16:03 +0000 (11:16 +0200)]
Work around a bogus compilation warning (it claimed the generated copy constructor of PendingDecode could be using fade_alpha uninitialized during push_back).
Steinar H. Gunderson [Sun, 1 Oct 2023 09:11:52 +0000 (11:11 +0200)]
Stop using av_init_packet().
It's a shame that we now need to call malloc for each and every
allocation of a common 104-byte struct, but evidently, that's the way
FFmpeg wants it. So move to heap allocation everywhere, silencing
a barrage of deprecation warnings during build.
Steinar H. Gunderson [Sun, 1 Oct 2023 08:44:48 +0000 (10:44 +0200)]
The new channel layout API requires FFmpeg 5.1.
Steinar H. Gunderson [Sun, 1 Oct 2023 08:42:55 +0000 (10:42 +0200)]
Fix channel layout deprecations in AudioEncoder.
Steinar H. Gunderson [Sun, 1 Oct 2023 08:39:06 +0000 (10:39 +0200)]
Update most code to the new FFmpeg channel layout API.
Fixes a bunch of noisy deprecation warnings. FFmpegCapture and
AudioEncoder are not done yet.
Steinar H. Gunderson [Sun, 1 Oct 2023 08:27:01 +0000 (10:27 +0200)]
Fix a Qt build warning.
Steinar H. Gunderson [Sun, 17 Sep 2023 15:57:02 +0000 (17:57 +0200)]
Use nonblocking srt_connect(), to allow faster abort on quit.
Steinar H. Gunderson [Sun, 17 Sep 2023 14:59:19 +0000 (16:59 +0200)]
Fix some addrinfo leaks in the error paths for outbound SRT, by means of RAII.
Steinar H. Gunderson [Sun, 17 Sep 2023 14:33:59 +0000 (16:33 +0200)]
Make it possible to quit while SRT is not connected, although slowly.
Steinar H. Gunderson [Thu, 7 Sep 2023 22:26:09 +0000 (00:26 +0200)]
Software README updates.
Steinar H. Gunderson [Thu, 7 Sep 2023 22:23:00 +0000 (00:23 +0200)]
Update hardware demands in README.
Steinar H. Gunderson [Thu, 7 Sep 2023 20:12:05 +0000 (22:12 +0200)]
If a FFmpeg input does not give a frame for at least ten seconds, consider it a fatal error (causing a restart).
Steinar H. Gunderson [Thu, 7 Sep 2023 19:45:56 +0000 (21:45 +0200)]
Fix a warning wording in FFmpegCapture.
Steinar H. Gunderson [Thu, 7 Sep 2023 18:44:39 +0000 (20:44 +0200)]
Fix crash without SRT output.
Steinar H. Gunderson [Mon, 4 Sep 2023 22:28:17 +0000 (00:28 +0200)]
When muxing in the background, write the header in the background, too.
This is especially important with SRT output, which can hang pretty much
forever on connect. Note that we still buffer forever (which we probably
shouldn't), and we don't exit cleanly if SRT is not connected.
Steinar H. Gunderson [Sun, 27 Aug 2023 16:41:53 +0000 (18:41 +0200)]
Remove some stray help.
Steinar H. Gunderson [Sun, 6 Aug 2023 22:52:08 +0000 (00:52 +0200)]
Add metrics for the SRT output (basically same as on inputs).
Steinar H. Gunderson [Sun, 6 Aug 2023 21:10:02 +0000 (23:10 +0200)]
Move the SRT Prometheus metrics into its own class, for reusability.
Steinar H. Gunderson [Sun, 6 Aug 2023 20:51:18 +0000 (22:51 +0200)]
Implement SRT output.
This is useful for push, and for bad networks (e.g. 4G).
You can in theory push to another Nageru instance, but the most
logical would either be to a Cubemap (running FFmpeg to demux,
unfortunately), or to something like YouTube, which is now working
on SRT ingest.
Note that for YouTube SRT ingest to work, someone from YouTube needs to
set a special flag on your account for now.
Steinar H. Gunderson [Sat, 5 Aug 2023 16:13:55 +0000 (18:13 +0200)]
Fix another crash with newer SVT-AV1.
Steinar H. Gunderson [Sat, 5 Aug 2023 16:07:02 +0000 (18:07 +0200)]
Explicitly set VBR for AV1 (the default is CRF, seemingly).
Steinar H. Gunderson [Sat, 5 Aug 2023 15:54:28 +0000 (17:54 +0200)]
Fix a crash with SVT-AV1.
Steinar H. Gunderson [Sat, 5 Aug 2023 12:15:09 +0000 (14:15 +0200)]
Remove a check for very old SVT-AV1.
Steinar H. Gunderson [Sat, 5 Aug 2023 12:03:24 +0000 (14:03 +0200)]
Add AVFMT_FLAG_AUTO_BSF when muxing, just in case.
Steinar H. Gunderson [Fri, 4 Aug 2023 22:37:36 +0000 (00:37 +0200)]
Remove/hide some SRT flags if not compiling with SRT.
Steinar H. Gunderson [Fri, 4 Aug 2023 19:59:50 +0000 (21:59 +0200)]
Include the Nageru version in the timecode display.
Steinar H. Gunderson [Fri, 4 Aug 2023 19:55:00 +0000 (21:55 +0200)]
Specify font family explicitly for the stream timecode.
Seemingly the default is now a font where not all digits are equally wide,
and that makes the text jump constantly back and forth. Noto Sans should
be pretty widely supported, and if not, we'll probably fall back to
whatever we had before.
Steinar H. Gunderson [Fri, 4 Aug 2023 19:56:00 +0000 (21:56 +0200)]
Bump version number.
Steinar H. Gunderson [Mon, 24 Jul 2023 12:02:31 +0000 (14:02 +0200)]
Release Nageru and Futatabi 2.2.3.
Steinar H. Gunderson [Mon, 24 Jul 2023 12:01:24 +0000 (14:01 +0200)]
Fix missing NEWS entry.
Steinar H. Gunderson [Mon, 24 Jul 2023 12:00:17 +0000 (14:00 +0200)]
Fix theme menu check state.
We'd always (wrongly) get the value from the last entry in the list.
Reported by Stefano Rivera.
Steinar H. Gunderson [Mon, 24 Jul 2023 11:50:46 +0000 (13:50 +0200)]
Fix SRT with newer libsrt.
Upstream changed their bind behavior:
https://github.com/Haivision/srt/issues/2764
Steinar H. Gunderson [Mon, 24 Jul 2023 11:50:43 +0000 (13:50 +0200)]
Bump the version number.
Steinar H. Gunderson [Sat, 15 Jul 2023 15:16:56 +0000 (17:16 +0200)]
Release Nageru and Futatabi 2.2.2.
Steinar H. Gunderson [Sat, 15 Jul 2023 15:15:42 +0000 (17:15 +0200)]
Fix a build failure with GCC 13.
Steinar H. Gunderson [Wed, 12 Jul 2023 21:05:42 +0000 (23:05 +0200)]
Fix an inverted condition in YCbCr format choice.
Steinar H. Gunderson [Tue, 4 Jul 2023 18:55:01 +0000 (20:55 +0200)]
Stop caring about FFmpeg pre-5.0.
Steinar H. Gunderson [Tue, 4 Jul 2023 18:09:54 +0000 (20:09 +0200)]
Rename stream_mux to http_mux.
Steinar H. Gunderson [Tue, 4 Jul 2023 18:15:11 +0000 (20:15 +0200)]
Fix compilation break with SVT-AV1.
Steinar H. Gunderson [Tue, 4 Jul 2023 18:09:19 +0000 (20:09 +0200)]
Bump the version number.
Steinar H. Gunderson [Mon, 17 Apr 2023 16:35:47 +0000 (18:35 +0200)]
Release Nageru and Futatabi 2.2.1.
Steinar H. Gunderson [Mon, 17 Apr 2023 16:19:46 +0000 (18:19 +0200)]
Fix a buffer overrun when receiving 4K (or 8K etc.) FFmpeg streams.
Of course, it would be better to just support this than to throw them away,
but at least we avoid a crash.
Steinar H. Gunderson [Mon, 17 Apr 2023 16:16:05 +0000 (18:16 +0200)]
Unify all the FRAME_SIZE #defines.
Steinar H. Gunderson [Sun, 16 Apr 2023 08:35:13 +0000 (10:35 +0200)]
Improve selection of software formats on hwaccel fallback.
We assumed the first format was a software format, whereas in practice,
it would now seemingly be vdpau or cuda, causing multiple trips
through the selection function.
Steinar H. Gunderson [Sat, 15 Apr 2023 23:49:51 +0000 (01:49 +0200)]
Add a warning when trying to hardware-decode H.264 Baseline streams.
Steinar H. Gunderson [Sat, 15 Apr 2023 23:31:44 +0000 (01:31 +0200)]
Improve error messaging when VAAPI/VDPAU pixel format selection fails.
Steinar H. Gunderson [Sat, 15 Apr 2023 22:50:34 +0000 (00:50 +0200)]
Fix autodetection of VA-API H.264 encoders without the right profile support.
These would sometimes be chosen, and then error out when actually trying to use them.
Steinar H. Gunderson [Sat, 15 Apr 2023 22:33:28 +0000 (00:33 +0200)]
Support decoding FFmpeg via VDPAU.
This fixes a bug where we hit the VAAPI-by-VDPAU emulation,
which is seemingly bad and just hangs.
Note that this means that if you have a VDPAU card with worse
format support than your VA-API card, you'll now lose some formats.
Steinar H. Gunderson [Sat, 15 Apr 2023 17:03:35 +0000 (19:03 +0200)]
Be more resilient to video decoding errors.
In particular, hardware decoding of SRT streams that don't start
on a keyframe can throw errors the first few frames, but then
recover afterwards.
Steinar H. Gunderson [Thu, 13 Apr 2023 15:02:14 +0000 (17:02 +0200)]
Rename MAX_FPS to TYPICAL_FPS.
Steinar H. Gunderson [Thu, 13 Apr 2023 14:58:34 +0000 (16:58 +0200)]
Fix crashes when the master clock goes faster than 60 Hz.
This could happen in particularly when using a video as the master card;
e.g. Larix Broadcaster sometimes sends SRT with 60.06 fps or similar.
We solve it by completely rewriting how DTS is calculated when doing
Quick Sync encoding, which ended up being much simpler than what we
had before (and probably a lot more common)
This essentially removes the meaning of MAX_FPS; we could now easily
do e.g. 144 fps if needed.
Steinar H. Gunderson [Wed, 12 Apr 2023 22:46:54 +0000 (00:46 +0200)]
Add some asserts to track down pts/dts problems before we get crashes back from FFmpeg way down the chain.
Steinar H. Gunderson [Sun, 19 Mar 2023 12:51:05 +0000 (13:51 +0100)]
Work around an issue with OpenGL on Wayland.
Steinar H. Gunderson [Thu, 17 Nov 2022 23:27:20 +0000 (00:27 +0100)]
Typo fix.
Steinar H. Gunderson [Thu, 17 Nov 2022 23:26:39 +0000 (00:26 +0100)]
zita-resampler was mentioned twice in the dependency list.
Steinar H. Gunderson [Thu, 17 Nov 2022 23:26:21 +0000 (00:26 +0100)]
Bump the version number.
Steinar H. Gunderson [Mon, 14 Nov 2022 23:25:44 +0000 (00:25 +0100)]
Release Nageru and Futatabi 2.2.0.
Steinar H. Gunderson [Mon, 14 Nov 2022 23:07:06 +0000 (00:07 +0100)]
Remove the QCustomPlot dependency.
This was becoming more a liability than an asset, so replace it with
some custom drawing code. It's not 100% as nice, but pretty close.
Steinar H. Gunderson [Fri, 5 Aug 2022 20:07:08 +0000 (22:07 +0200)]
Use VBR for AV1.
CBR isn't really ready yet; it requires low-delay mode, which limits
SVT-AV1 to three cores and also is pretty bad for quality in general.
(Also, its CBR isn't really CBR yet; see SVT-AV1 bug 1959.)
Steinar H. Gunderson [Fri, 22 Jul 2022 15:50:03 +0000 (17:50 +0200)]
Change ALSA output period size to 2048 samples.
Anything less seemingly triggers a bug in the ALSA PulseAudio
plugin when used against PipeWire (audio just never starts playing).
It would be nice to generally have less latency here, but with the
current design based on large resampling queues, this isn't going
to be what causes it.
Steinar H. Gunderson [Thu, 21 Jul 2022 23:05:58 +0000 (01:05 +0200)]
Update the comment on get_scene() about the signals parameter.
Users won't know what InputState is, and scene selection isn't
a thing anymore after the themes became a thing.
Steinar H. Gunderson [Thu, 21 Jul 2022 23:02:12 +0000 (01:02 +0200)]
Make the theme cardinality warnings more lenient.
The default theme hits the 200 limit, so it felt a bit weird to warn on that.
Steinar H. Gunderson [Thu, 21 Jul 2022 23:00:47 +0000 (01:00 +0200)]
Remove the zerocopy warnings.
It's unlikely that the user will be able to glean meaningful information
from this.
Steinar H. Gunderson [Thu, 21 Jul 2022 22:23:50 +0000 (00:23 +0200)]
Expose BlurEffect and UnsharpMaskEffect.
This was mostly so that people could sharpen the input if they wanted to
(even though unsharp mask is not the best sharpener). BlurEffect was added
mainly because it felt wrong that one could only use a compound effect and not
the underlying one.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:48:15 +0000 (23:48 +0200)]
Small consistency fix in --help.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:47:54 +0000 (23:47 +0200)]
Remove a now-obsolete reference in --help.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:46:47 +0000 (23:46 +0200)]
Take --x264-speedcontrol-verbose out of the --help output.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:44:17 +0000 (23:44 +0200)]
Take --no-flush-pbos out of the --help output.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:42:58 +0000 (23:42 +0200)]
Remove the x264 VBV settings.
The user shouldn't generally muck around with this, so remove them.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:39:19 +0000 (23:39 +0200)]
Remove the --http-uncompressed-video flag.
This is probably unused; it is so expensive to send uncompressed data
across sockets, and it was made at a time where it was envisioned
that we do most of our encoding externally.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:35:57 +0000 (23:35 +0200)]
Collapse all the 10-bit flags.
It's unlikely that a user would want 10-bit input but not 10-bit-output,
or the other way around. Having only one flag simplifies things for the
user (although not much in the code, as we're already fp16 internally
anyway).
Steinar H. Gunderson [Thu, 21 Jul 2022 21:02:05 +0000 (23:02 +0200)]
Add support for 10-bit AV1 encoding.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:01:26 +0000 (23:01 +0200)]
Fix a read-past-the-end in av_write_header(); extradata must have AV_INPUT_BUFFER_PADDING_SIZE padding as per avformat.h comments.
Steinar H. Gunderson [Thu, 21 Jul 2022 15:40:58 +0000 (17:40 +0200)]
Drop the SSE2 fastpath.
Pre-Haswell CPUs are not really worth optimizing for anymore.
Steinar H. Gunderson [Thu, 21 Jul 2022 15:12:09 +0000 (17:12 +0200)]
Support --record-x264-video with AV1 HTTP output.
Steinar H. Gunderson [Thu, 21 Jul 2022 14:45:02 +0000 (16:45 +0200)]
Support AV1 streaming over HTTP, via SVT-AV1.
This is optional, and pretty rough currently. But it might be interesting
for certain use cases, in particular around 1080p or 4K streaming.
Steinar H. Gunderson [Thu, 21 Jul 2022 11:35:09 +0000 (13:35 +0200)]
Update README for Debian bullseye.
Steinar H. Gunderson [Tue, 19 Jul 2022 21:24:55 +0000 (23:24 +0200)]
Slightly more verbose error messages in Mux when a libavformat error happens.
Steinar H. Gunderson [Tue, 19 Jul 2022 12:21:13 +0000 (14:21 +0200)]
Make an interface to wrap X264Encoder.
This will be useful when adding more video codecs later.
Steinar H. Gunderson [Sun, 17 Apr 2022 18:46:38 +0000 (20:46 +0200)]
Update CEF file names (this is compatible with CEF 100).
Steinar H. Gunderson [Sun, 17 Apr 2022 18:45:19 +0000 (20:45 +0200)]
Remove the web_security flag for newer CEF, since it is no longer available (https://bitbucket.org/chromiumembedded/cef/issues/3058/remove-cefbrowsersettingsweb_security).