]> git.sesse.net Git - nageru/log
nageru
17 months agoRelease Nageru and Futatabi 2.2.0. 2.2.0
Steinar H. Gunderson [Mon, 14 Nov 2022 23:25:44 +0000 (00:25 +0100)]
Release Nageru and Futatabi 2.2.0.

17 months agoRemove the QCustomPlot dependency.
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.

20 months agoUse VBR for AV1.
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.)

21 months agoChange ALSA output period size to 2048 samples.
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.

21 months agoUpdate the comment on get_scene() about the signals parameter.
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.

21 months agoMake the theme cardinality warnings more lenient.
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.

21 months agoRemove the zerocopy warnings.
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.

21 months agoExpose BlurEffect and UnsharpMaskEffect.
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.

21 months agoSmall consistency fix in --help.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:48:15 +0000 (23:48 +0200)]
Small consistency fix in --help.

21 months agoRemove a now-obsolete reference in --help.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:47:54 +0000 (23:47 +0200)]
Remove a now-obsolete reference in --help.

21 months agoTake --x264-speedcontrol-verbose out of the --help output.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:46:47 +0000 (23:46 +0200)]
Take --x264-speedcontrol-verbose out of the --help output.

21 months agoTake --no-flush-pbos 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.

21 months agoRemove the x264 VBV settings.
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.

21 months agoRemove the --http-uncompressed-video flag.
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.

21 months agoCollapse all the 10-bit flags.
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).

21 months agoAdd support for 10-bit AV1 encoding.
Steinar H. Gunderson [Thu, 21 Jul 2022 21:02:05 +0000 (23:02 +0200)]
Add support for 10-bit AV1 encoding.

21 months agoFix a read-past-the-end in av_write_header(); extradata must have AV_INPUT_BUFFER_PAD...
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.

21 months agoDrop the SSE2 fastpath.
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.

21 months agoSupport --record-x264-video with AV1 HTTP output.
Steinar H. Gunderson [Thu, 21 Jul 2022 15:12:09 +0000 (17:12 +0200)]
Support --record-x264-video with AV1 HTTP output.

21 months agoSupport AV1 streaming over HTTP, via SVT-AV1.
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.

21 months agoUpdate README for Debian bullseye.
Steinar H. Gunderson [Thu, 21 Jul 2022 11:35:09 +0000 (13:35 +0200)]
Update README for Debian bullseye.

21 months agoSlightly more verbose error messages in Mux when a libavformat error happens.
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.

21 months agoMake an interface to wrap X264Encoder.
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.

2 years agoUpdate CEF file names (this is compatible with CEF 100).
Steinar H. Gunderson [Sun, 17 Apr 2022 18:46:38 +0000 (20:46 +0200)]
Update CEF file names (this is compatible with CEF 100).

2 years agoRemove the web_security flag for newer CEF, since it is no longer available (https...
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).

2 years agoAdd explicit check arguments to run_command, to fix a Meson warning.
Steinar H. Gunderson [Sun, 17 Apr 2022 18:23:58 +0000 (20:23 +0200)]
Add explicit check arguments to run_command, to fix a Meson warning.

2 years agoFix (?) the mode scanning.
Steinar H. Gunderson [Sun, 17 Apr 2022 15:12:45 +0000 (17:12 +0200)]
Fix (?) the mode scanning.

2 years agoBump the version number.
Steinar H. Gunderson [Sun, 17 Apr 2022 15:12:40 +0000 (17:12 +0200)]
Bump the version number.

2 years agoRelease Nageru and Futatabi 2.1.0. 2.1.0
Steinar H. Gunderson [Sun, 6 Feb 2022 15:09:11 +0000 (16:09 +0100)]
Release Nageru and Futatabi 2.1.0.

2 years agoFix compilation with FFmpeg _before_ version 5.0.
Steinar H. Gunderson [Sun, 6 Feb 2022 14:41:27 +0000 (15:41 +0100)]
Fix compilation with FFmpeg _before_ version 5.0.

2 years agoFix compilation with FFmpeg 5.0.
Steinar H. Gunderson [Mon, 31 Jan 2022 21:51:26 +0000 (22:51 +0100)]
Fix compilation with FFmpeg 5.0.

2 years agoFix an issue where scrubbing in Futatabi could lock up if there were no inputs going...
Steinar H. Gunderson [Thu, 14 Oct 2021 19:29:58 +0000 (21:29 +0200)]
Fix an issue where scrubbing in Futatabi could lock up if there were no inputs going, with certain GL drivers.

2 years agoFix white balance with non-VAAPI decoding.
Plastkast user [Fri, 8 Oct 2021 17:51:20 +0000 (19:51 +0200)]
Fix white balance with non-VAAPI decoding.

2 years agoSupport unsynchronized HDMI/SDI output.
Steinar H. Gunderson [Sat, 2 Oct 2021 14:54:58 +0000 (16:54 +0200)]
Support unsynchronized HDMI/SDI output.

This is for if you want just a monitor output without synchronizing
your entire stream chain to the output card (ie., you want to keep
some other camera as the master). Sound support is untested, and is
probably going to crackle a fair bit.

There's no GUI support for changing this currently.

2 years agoYet another crash fix in changing output cards.
Steinar H. Gunderson [Sat, 2 Oct 2021 14:17:35 +0000 (16:17 +0200)]
Yet another crash fix in changing output cards.

This got broken when we started sharing the IDeckLinkInput interface
for the driver bugfix workaround.

2 years agoFix mode-switching on output cards.
Steinar H. Gunderson [Sat, 2 Oct 2021 14:12:31 +0000 (16:12 +0200)]
Fix mode-switching on output cards.

2 years agoNewer drivers can seemingly send completions out-of-order on shutdown, so adjust...
Steinar H. Gunderson [Sat, 2 Oct 2021 14:12:24 +0000 (16:12 +0200)]
Newer drivers can seemingly send completions out-of-order on shutdown, so adjust asserts accordingly.

2 years agoFix a typo (hopefully).
Steinar H. Gunderson [Sat, 2 Oct 2021 14:06:28 +0000 (16:06 +0200)]
Fix a typo (hopefully).

2 years agoFix a wrong assertion.
Steinar H. Gunderson [Sat, 2 Oct 2021 14:01:42 +0000 (16:01 +0200)]
Fix a wrong assertion.

2 years agoSupport sending a separate x264 encode to disk.
Steinar H. Gunderson [Sun, 26 Sep 2021 18:36:48 +0000 (20:36 +0200)]
Support sending a separate x264 encode to disk.

This is useful for machines that don't have Quick Sync,
but where you want to have an archival copy on disk
in higher quality than what you streamed out.

2 years agoRelease Nageru and Futatabi 2.0.2. 2.0.2
Steinar H. Gunderson [Fri, 3 Sep 2021 16:44:26 +0000 (18:44 +0200)]
Release Nageru and Futatabi 2.0.2.

2 years agoBump bmusb submodule (no real changes for us).
Steinar H. Gunderson [Fri, 3 Sep 2021 16:12:51 +0000 (18:12 +0200)]
Bump bmusb submodule (no real changes for us).

2 years agoFix an audio encoder issue with newer FFmpeg.
Steinar H. Gunderson [Fri, 3 Sep 2021 16:10:46 +0000 (18:10 +0200)]
Fix an audio encoder issue with newer FFmpeg.

2 years agoFix DeckLink capture using the 11.7 or newer drivers.
Steinar H. Gunderson [Sun, 15 Aug 2021 13:06:34 +0000 (15:06 +0200)]
Fix DeckLink capture using the 11.7 or newer drivers.

Reported by Marcus Nilsen.

3 years agoAdd an explicit dependency om libdrm.
Steinar H. Gunderson [Mon, 5 Apr 2021 16:06:32 +0000 (18:06 +0200)]
Add an explicit dependency om libdrm.

3 years agoAdd some missing FFmpeg dependencies in shared/.
Steinar H. Gunderson [Mon, 5 Apr 2021 15:58:22 +0000 (17:58 +0200)]
Add some missing FFmpeg dependencies in shared/.

Reported by Einar Jørgen Haraldseid.

3 years agoFix a Qt deprecation warning.
Steinar H. Gunderson [Mon, 5 Apr 2021 15:56:42 +0000 (17:56 +0200)]
Fix a Qt deprecation warning.

3 years agoFix a Qt deprecation on pixmap().
Steinar H. Gunderson [Mon, 5 Apr 2021 15:51:51 +0000 (17:51 +0200)]
Fix a Qt deprecation on pixmap().

3 years agoStop decoding video/audio in FFmpegCapture if we are not going to use the decoded...
Steinar H. Gunderson [Sun, 4 Apr 2021 11:41:29 +0000 (13:41 +0200)]
Stop decoding video/audio in FFmpegCapture if we are not going to use the decoded information anyway.

3 years agoPass through non-ADTS data (used when transcoding from MP4 instead of MPEG-TS).
Steinar H. Gunderson [Sun, 4 Apr 2021 13:23:32 +0000 (15:23 +0200)]
Pass through non-ADTS data (used when transcoding from MP4 instead of MPEG-TS).

3 years agoMake kaeru insert the aac_adtstoasc filter when needed.
Steinar H. Gunderson [Sun, 4 Apr 2021 10:35:17 +0000 (12:35 +0200)]
Make kaeru insert the aac_adtstoasc filter when needed.

This seemingly fixes mp4 + aac passthrough with no reencoding.

3 years agoAdd a --no-transcode-video flag to Kaeru.
Steinar H. Gunderson [Sun, 4 Apr 2021 09:55:23 +0000 (11:55 +0200)]
Add a --no-transcode-video flag to Kaeru.

This is useful primarily if you want Kaeru to rewrap the stream into
Metacube (for cubemap) and do nothing else with it. Only H.264
is supported for now, since everything else assumes that.

Currently, we only really support --http-mux=mpegts; other muxes seem
to have issues.

3 years agoFix a bug where FFmpegCapture would get the wrong height, causing bogus scaling.
Steinar H. Gunderson [Sun, 4 Apr 2021 09:22:39 +0000 (11:22 +0200)]
Fix a bug where FFmpegCapture would get the wrong height, causing bogus scaling.

3 years agoReset jitter history when frame rate changes.
Steinar H. Gunderson [Sun, 30 Aug 2020 22:25:40 +0000 (00:25 +0200)]
Reset jitter history when frame rate changes.

This is seemingly especially important when we have input format autodetect
and PAL input rates; it gives us one 59.97 fps frame, then a delay as the
card autodetects and resyncs (might be as much as 30–50 ms; not entirely sure),
and then a steady stream of 50 fps frames. This then causes us to overestimate
the jitter by a lot until we get more than 1000 frames and can reject that
very first event as the outlier it is.

3 years agoFix an oversight in JitterHistory::clear().
Steinar H. Gunderson [Sun, 30 Aug 2020 21:01:46 +0000 (23:01 +0200)]
Fix an oversight in JitterHistory::clear().

3 years agoIn DeckLinkOutput, keep a list of all the scheduled frames instead of just a count.
Steinar H. Gunderson [Sun, 30 Aug 2020 17:23:43 +0000 (19:23 +0200)]
In DeckLinkOutput, keep a list of all the scheduled frames instead of just a count.

This will be important when we want to track frames the driver inserts
on our behalf; we'll need to be able to adjust their estimated pts then.

3 years agoClarify a parameter name to update_policy().
Steinar H. Gunderson [Sun, 30 Aug 2020 13:45:07 +0000 (15:45 +0200)]
Clarify a parameter name to update_policy().

3 years agoUpdate README; Debian ships libsrt-gnutls-dev now.
Steinar H. Gunderson [Sun, 6 Dec 2020 17:21:51 +0000 (18:21 +0100)]
Update README; Debian ships libsrt-gnutls-dev now.

3 years agoLink to libcef.so in the current directory.
Steinar H. Gunderson [Mon, 9 Nov 2020 19:24:25 +0000 (20:24 +0100)]
Link to libcef.so in the current directory.

Newer CEF hard-codes that icudtl.dat _must_ be in the same directory
as libcef.so, but the release tarballs have a different structure,
so this fails. This should be fine on installs, but it won't work
for running Nageru from the build directory. Search for the library
in the local directory instead, where we have a symlink. This makes
the build rpath point to ., which makes sure icudtl.dat is picked up
from the other symlink.

3 years agoStop using the deprecated srt_socket().
Steinar H. Gunderson [Sat, 31 Oct 2020 16:21:26 +0000 (17:21 +0100)]
Stop using the deprecated srt_socket().

3 years agoSmall indent fix.
Steinar H. Gunderson [Wed, 26 Aug 2020 22:17:42 +0000 (00:17 +0200)]
Small indent fix.

3 years agoMove Jitterhistory / QueueLengthPolicy into a separate header file.
Steinar H. Gunderson [Tue, 25 Aug 2020 22:06:12 +0000 (00:06 +0200)]
Move Jitterhistory / QueueLengthPolicy into a separate header file.

3 years agoFix a bug; 60.00 fps would never be autoselected for output. (Then again, 59.97 shoul...
Steinar H. Gunderson [Mon, 24 Aug 2020 21:08:54 +0000 (23:08 +0200)]
Fix a bug; 60.00 fps would never be autoselected for output. (Then again, 59.97 should always exist.)

3 years agoQueueLengthPolicy::reset() does nothing anymore, so just remove it.
Steinar H. Gunderson [Sun, 23 Aug 2020 19:18:19 +0000 (21:18 +0200)]
QueueLengthPolicy::reset() does nothing anymore, so just remove it.

In its place, what we often want is to clear the associated jitter history,
so do that instead.

3 years agoRelease Nageru and Futatabi 2.0.1. 2.0.1
Steinar H. Gunderson [Thu, 9 Jul 2020 07:56:24 +0000 (09:56 +0200)]
Release Nageru and Futatabi 2.0.1.

3 years agoUnbreak compilation with libmicrohttpd 0.9.71.
Steinar H. Gunderson [Wed, 8 Jul 2020 18:49:21 +0000 (20:49 +0200)]
Unbreak compilation with libmicrohttpd 0.9.71.

3 years agoMake Futatabi look for multicam.mp4, not multiangle.mp4.
Steinar H. Gunderson [Mon, 8 Jun 2020 21:31:05 +0000 (23:31 +0200)]
Make Futatabi look for multicam.mp4, not multiangle.mp4.

The use of multiangle.mp4 is confusing when the HTTP endpoint is called
multicam.mp4.

3 years agoSkip DeckLink cards marked as inactive.
Steinar H. Gunderson [Wed, 3 Jun 2020 21:45:02 +0000 (23:45 +0200)]
Skip DeckLink cards marked as inactive.

This prevents a crash on startup with e.g. Duo 2 in the default mode,
which disables connectors 3 and 4 by default (well, uses them for dual link).

3 years agoUpgrade DeckLink SDK to 10.11.4.
Steinar H. Gunderson [Wed, 3 Jun 2020 21:40:37 +0000 (23:40 +0200)]
Upgrade DeckLink SDK to 10.11.4.

This is the oldest version that supports the duplex information
used in the next patch.

3 years agoRelease Nageru and Futatabi 2.0.0. 2.0.0
Steinar H. Gunderson [Tue, 2 Jun 2020 08:05:32 +0000 (10:05 +0200)]
Release Nageru and Futatabi 2.0.0.

3 years agoUpdate README for libsrt.
Steinar H. Gunderson [Tue, 2 Jun 2020 08:10:48 +0000 (10:10 +0200)]
Update README for libsrt.

3 years agoFix FFmpeg frame rate calculation with VA-API acceleration.
Steinar H. Gunderson [Mon, 1 Jun 2020 21:45:54 +0000 (23:45 +0200)]
Fix FFmpeg frame rate calculation with VA-API acceleration.

3 years agoSupport decoding FFmpeg videos via VA-API.
Steinar H. Gunderson [Mon, 1 Jun 2020 20:36:58 +0000 (22:36 +0200)]
Support decoding FFmpeg videos via VA-API.

This is more relevant now that having multiple SRT cameras can lead to
decoding lots of videos at the same time. It would be possible to support
other mechanisms (e.g. VDPAU) in FFmpeg depending on what FFmpeg is
built against, but it's a bit cumbersome to do, so this is VA-API only for now.

3 years agoWhen hot-unplugging capture cards, actually allow making them inactive.
Steinar H. Gunderson [Mon, 1 Jun 2020 19:38:16 +0000 (21:38 +0200)]
When hot-unplugging capture cards, actually allow making them inactive.

This was an oversight; removed cards would always be replaced by fake ones.
However, this exposed a few tricky issues, like that the master card can
go away, that needed to be dealt with.

3 years agoIncrease the master card timeout to 200 ms.
Steinar H. Gunderson [Mon, 1 Jun 2020 19:37:03 +0000 (21:37 +0200)]
Increase the master card timeout to 200 ms.

5 fps is pretty crappy, but evidently, 100 ms happens with SRT cards
all the time even when nothing is wrong. Perhaps a situation with
B-frames at 30 fps? I haven't really checked.

3 years agoWhen creating a fake master card frame, create some fake silence with it.
Steinar H. Gunderson [Mon, 1 Jun 2020 19:31:48 +0000 (21:31 +0200)]
When creating a fake master card frame, create some fake silence with it.

3 years agoWhen the master card times out, print a message.
Steinar H. Gunderson [Mon, 1 Jun 2020 19:29:46 +0000 (21:29 +0200)]
When the master card times out, print a message.

3 years agoSmall stylistic cleanup.
Steinar H. Gunderson [Mon, 1 Jun 2020 19:29:04 +0000 (21:29 +0200)]
Small stylistic cleanup.

3 years agoWhen hotplugging cards, reset resampler only after the device name and number of...
Steinar H. Gunderson [Mon, 1 Jun 2020 19:24:43 +0000 (21:24 +0200)]
When hotplugging cards, reset resampler only after the device name and number of channels are set.

3 years agoIf there is no frame from the master card after 100 ms, tick anyway.
Steinar H. Gunderson [Mon, 1 Jun 2020 18:01:43 +0000 (20:01 +0200)]
If there is no frame from the master card after 100 ms, tick anyway.

This is especially relevant now that SRT cards can be the master card.

3 years agoFix a deadlock exposed by the previous patch.
Steinar H. Gunderson [Mon, 1 Jun 2020 18:01:37 +0000 (20:01 +0200)]
Fix a deadlock exposed by the previous patch.

3 years agoFix a missing lock around handle_hotplugged_cards().
Steinar H. Gunderson [Mon, 1 Jun 2020 16:17:34 +0000 (18:17 +0200)]
Fix a missing lock around handle_hotplugged_cards().

3 years agoRefresh mainwindow.ui in newer Qt Creator.
Steinar H. Gunderson [Mon, 1 Jun 2020 10:31:03 +0000 (12:31 +0200)]
Refresh mainwindow.ui in newer Qt Creator.

The changes seem inconsequential, but it's nice to keep future diffs down.

3 years agoAdd a UI toggle to turn off SRT at runtime.
Steinar H. Gunderson [Mon, 1 Jun 2020 10:30:11 +0000 (12:30 +0200)]
Add a UI toggle to turn off SRT at runtime.

This is both useful for discoveirng the feature, and also should you be
on a hostile network where suddenly someone connects to you when you
don't want to. Existing connections will remain just fine.

3 years agoRemove a TODO that was fixed a while back.
Steinar H. Gunderson [Mon, 1 Jun 2020 10:19:42 +0000 (12:19 +0200)]
Remove a TODO that was fixed a while back.

3 years agoSuppress repeated chroma location warnings from FFmpeg.
Steinar H. Gunderson [Mon, 1 Jun 2020 08:25:52 +0000 (10:25 +0200)]
Suppress repeated chroma location warnings from FFmpeg.

It's no good getting one of these for every frame. This works around
an FFmpeg bug where HEVC doesn't get the right chroma location set.

3 years agoFix a crash on startup with MJPEG software encoding.
Steinar H. Gunderson [Mon, 1 Jun 2020 08:12:00 +0000 (10:12 +0200)]
Fix a crash on startup with MJPEG software encoding.

3 years agoMake number of cards flexible at runtime.
Steinar H. Gunderson [Sat, 30 May 2020 16:29:38 +0000 (18:29 +0200)]
Make number of cards flexible at runtime.

This is a cleanup that should really have been done when we added
hotplug in the first place, but it's becoming even more relevant
now that SRT “cards” are supported.

Basically, empty slots can now be filled with nothing instead of
fake capture cards (which generate frames and take a little bit
of CPU time); we only instantiate fake capture cards if the slot is
below some certain minimum index or has been used by the theme.
(Cards that are unused are now “inactive” and will generally not
show up in the UI.) This means that the --num-cards parameter is now
largely irrelevant; it is only there for guaranteeing a minimum
amount of fake cards, for testing. Most users will be happy just using the
default of 2. There's also a new --max-num-cards in the unlikely case
that you want to leave some cards unused, e.g. for other applications
on the same machine.

This also unifies handling of regular capture cards, FFmpeg “cards”
and CEF “cards”; they are indexed pretty much the same way.

3 years agoIn Futatabi, support 4:2:0 MJPEG decoding via VA-API.
Steinar H. Gunderson [Fri, 29 May 2020 20:27:43 +0000 (22:27 +0200)]
In Futatabi, support 4:2:0 MJPEG decoding via VA-API.

This was fairly easy now that all the VA-API code was unified with
Nageru, which already supported 4:2:0.

3 years agoMove VAResourcePool into a shared class between MJPEGEncoder in Nageru and the VA...
Steinar H. Gunderson [Fri, 29 May 2020 20:01:10 +0000 (22:01 +0200)]
Move VAResourcePool into a shared class between MJPEGEncoder in Nageru and the VA-API JPEG decoder in Futatabi.

3 years agoFix another lingering reconfigure bug; the previous fix was incomplete.
Steinar H. Gunderson [Sun, 24 May 2020 21:23:27 +0000 (23:23 +0200)]
Fix another lingering reconfigure bug; the previous fix was incomplete.

3 years agoMove texture uploading out of a lambda.
Steinar H. Gunderson [Sun, 24 May 2020 19:16:00 +0000 (21:16 +0200)]
Move texture uploading out of a lambda.

This doesn't make all that much sense anymore, and having it outside
std::function helps debuggability. (Also, it probably saves a few
allocations.)

3 years agoStop leaking SRT sockets on disconnect.
Steinar H. Gunderson [Sun, 24 May 2020 17:40:41 +0000 (19:40 +0200)]
Stop leaking SRT sockets on disconnect.

3 years agoUnify VA-API initialization.
Steinar H. Gunderson [Thu, 21 May 2020 13:49:05 +0000 (15:49 +0200)]
Unify VA-API initialization.

We initialized VA-API and enumerated configs etc. in three different
ways for H.264 encoding (Nageru), MJPEG encoding (Nageru) and MJPEG
decoding (Futatabi). Unify them into one shared function, to reduce
the amount of duplication.

3 years agoMove VADisplayWithCleanup into its own header file, in shared/.
Steinar H. Gunderson [Thu, 21 May 2020 09:38:22 +0000 (11:38 +0200)]
Move VADisplayWithCleanup into its own header file, in shared/.

This is the first step on trying to unify the initialization code
a bit between Nageru and Futatabi.

3 years agoCorrect sampling factors for 4:2:2 VA-API encoding.
Steinar H. Gunderson [Thu, 21 May 2020 09:20:14 +0000 (11:20 +0200)]
Correct sampling factors for 4:2:2 VA-API encoding.

3 years agoCorrect a comment in YCbCrConverter.
Steinar H. Gunderson [Wed, 20 May 2020 22:21:08 +0000 (00:21 +0200)]
Correct a comment in YCbCrConverter.

3 years agoGive in the right VAAPI context when decoding MJPEG.
Steinar H. Gunderson [Wed, 20 May 2020 22:04:54 +0000 (00:04 +0200)]
Give in the right VAAPI context when decoding MJPEG.

This mirrors the fixes of e550c3b, but for the MJPEG decoding in
Futatabi instead of the MJPEG encoding in Nageru.

3 years agoUnbreak Futatabi software (non-VA-API) MJPEG decoding.
Steinar H. Gunderson [Wed, 20 May 2020 22:00:16 +0000 (00:00 +0200)]
Unbreak Futatabi software (non-VA-API) MJPEG decoding.

This was all broken after adc0df0, it seems. It not only assumed 4:2:2,
but had broken chroma pitch, too.

3 years agoSupport MJPEG encoding of planar Y'CbCr sources.
Steinar H. Gunderson [Tue, 19 May 2020 21:49:57 +0000 (23:49 +0200)]
Support MJPEG encoding of planar Y'CbCr sources.

This enables MJPEG encoding for video sources, but in practice,
only SRT cameras are enabled. There's VA-API support for 4:2:0 only,
by means of converting to NV12; if you had 4:2:2 or 4:4:4, you will
get fallback to libjpeg, which should handle that gracefully.
(If I actually had an SRT source doing 4:2:2, I might have added
more support, but it seems pretty narrow.)

Futatabi seemingly has some problems handling these files, but that
should be fixable.