7 months agoWhen the delay analyzer wants audio from an ALSA card, temporarily auto-enable captur... audio-delay
Steinar H. Gunderson [Sun, 11 Aug 2019 21:17:33 +0000 (23:17 +0200)]
When the delay analyzer wants audio from an ALSA card, temporarily auto-enable capture from it.

7 months agoDon't reset an ALSA device when the only thing that changes is which channels to...
Steinar H. Gunderson [Sun, 11 Aug 2019 17:28:17 +0000 (19:28 +0200)]
Don't reset an ALSA device when the only thing that changes is which channels to pick out.

7 months agoMake an automated delay estimate, by way of cross-correlation.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:51:05 +0000 (10:51 +0200)]
Make an automated delay estimate, by way of cross-correlation.

7 months agoMake it possible to adjust the delay without resetting the resampler.
Steinar H. Gunderson [Sun, 11 Aug 2019 15:20:00 +0000 (17:20 +0200)]
Make it possible to adjust the delay without resetting the resampler.

7 months agoTime out grabbing if we don't get any data.
Steinar H. Gunderson [Sun, 11 Aug 2019 20:38:14 +0000 (22:38 +0200)]
Time out grabbing if we don't get any data.

7 months agoMake the delay analyzer understand that two sources can have different starting times.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:50:55 +0000 (10:50 +0200)]
Make the delay analyzer understand that two sources can have different starting times.

If we didn't truncate the two sources so that they have different starting times,
the perceived delay would be skewed (unless the are different channels of the same
source, in which case they'd always be in sync anyway).

7 months agoBegin working on a delay analyzer.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:50:52 +0000 (10:50 +0200)]
Begin working on a delay analyzer.

7 months agoFactor out a convert_audio_to_fp32() function.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:50:50 +0000 (10:50 +0200)]
Factor out a convert_audio_to_fp32() function.

7 months agoSupport delaying audio sources selectively.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:50:37 +0000 (10:50 +0200)]
Support delaying audio sources selectively.

This can be useful if you have video sources with significant delay
and wish to delay audio from other sources (e.g. ALSA) correspondingly.
It works by simply changing the length of the resampling queue,
from the default 100 ms.

Inspired by a patch by Yoann Dubreuil in the Breizhcamp repository.

7 months agoAdd a mailmap file to change my personal email address in old commits.
Steinar H. Gunderson [Sun, 11 Aug 2019 08:47:42 +0000 (10:47 +0200)]
Add a mailmap file to change my personal email address in old commits. has been de facto dead for a year or two,
and is now definitely dead.

7 months agoFix the wording of a warning.
Steinar H. Gunderson [Wed, 31 Jul 2019 17:44:53 +0000 (19:44 +0200)]
Fix the wording of a warning.

8 months agoSupport disabling optional effects if a given other effect is _enabled_.
Steinar H. Gunderson [Sun, 28 Jul 2019 20:06:24 +0000 (22:06 +0200)]
Support disabling optional effects if a given other effect is _enabled_.

There are some restrictions (see the comments), but this is generally
useful if two effects are mutually exclusive, e.g., an overlay that can
be at one of many different points in the chain.

8 months agoMake it possible for the theme to override the status line.
Steinar H. Gunderson [Wed, 24 Jul 2019 13:06:29 +0000 (15:06 +0200)]
Make it possible for the theme to override the status line.

This is done by declaring a function format_status_line, which receives
the text that would normally be there (disk space left), as well as the
length of the current recording file in seconds. It can then return
whatever it would like.

My own code, but inspired by a C++ patch by Alex Thomazo in the Breizhcamp
repository (which did it by hardcoding a different status line in C++).

8 months agoRelease Nageru and Futatabi 1.9.0. 1.9.0
Steinar H. Gunderson [Sat, 20 Jul 2019 14:57:39 +0000 (16:57 +0200)]
Release Nageru and Futatabi 1.9.0.

8 months agoFix a typo in NEWS.
Steinar H. Gunderson [Sat, 20 Jul 2019 09:05:35 +0000 (11:05 +0200)]
Fix a typo in NEWS.

8 months agoMake it possible to call set_channel_name() for live and preview.
Steinar H. Gunderson [Fri, 19 Jul 2019 15:34:48 +0000 (17:34 +0200)]
Make it possible to call set_channel_name() for live and preview.

The use case for this is if you want to copy the channel name to
preview or similar. Does not affect the legacy channel_name()
callback (it is still guaranteed never to get 0 or 1).

Probably doesn't affect the analyzer; I haven't tested.

8 months agoClean some duplicate code from the default theme.
Steinar H. Gunderson [Fri, 19 Jul 2019 14:56:18 +0000 (16:56 +0200)]
Clean some duplicate code from the default theme.

8 months agoMake it possible to put checkboxes on theme menu entries.
Steinar H. Gunderson [Fri, 19 Jul 2019 11:54:17 +0000 (13:54 +0200)]
Make it possible to put checkboxes on theme menu entries.

8 months agoAdd get_frame_width() and get_frame_height() to the signals given to the theme, which...
Steinar H. Gunderson [Fri, 19 Jul 2019 11:24:03 +0000 (13:24 +0200)]
Add get_frame_width() and get_frame_height() to the signals given to the theme, which is usually what the user wants.

8 months agoFix a Lua crash on exit.
Steinar H. Gunderson [Fri, 19 Jul 2019 10:39:48 +0000 (12:39 +0200)]
Fix a Lua crash on exit.

8 months agoDeal better with the user forgetting to set width/height on effects that require...
Steinar H. Gunderson [Wed, 17 Jul 2019 13:46:40 +0000 (15:46 +0200)]
Deal better with the user forgetting to set width/height on effects that require them.

8 months agoFix an issue where we would show no signal even when there was a signal. Patch by...
Steinar H. Gunderson [Tue, 16 Jul 2019 11:40:02 +0000 (13:40 +0200)]
Fix an issue where we would show no signal even when there was a signal. Patch by Martin Sandsmark.

9 months agoRemove some leftover debugging code.
Steinar H. Gunderson [Tue, 25 Jun 2019 18:03:19 +0000 (20:03 +0200)]
Remove some leftover debugging code.

9 months agoAdd disable_if_always_disabled() to Block objects.
Steinar H. Gunderson [Sat, 22 Jun 2019 13:16:14 +0000 (15:16 +0200)]
Add disable_if_always_disabled() to Block objects.

This allows the theme to specify that a given effect only makes sense
if another effect is enabled; e.g. a crop that only makes sense if
immediately followed by a resize. This can cut down the number of
instantiations in some cases.

Also change so that 0 is no longer always the canonical choice;
if disabling a block is a possibility, that is. In situations with
things disabling each other transitively, this could reduce the
number of instantiations further.

9 months agoMore theme cleaning.
Steinar H. Gunderson [Fri, 21 Jun 2019 21:31:40 +0000 (23:31 +0200)]
More theme cleaning.

9 months agoFix cross-compilation.
Steinar H. Gunderson [Fri, 21 Jun 2019 20:11:39 +0000 (22:11 +0200)]
Fix cross-compilation.

Patch from Helmut Grohne.

9 months agoMove is_plain_signal(), which was now placed a bit confusingly.
Steinar H. Gunderson [Fri, 21 Jun 2019 18:16:57 +0000 (20:16 +0200)]
Move is_plain_signal(), which was now placed a bit confusingly.

9 months agoConvert channel_signal() and supports_set_wb() to imperative versions.
Steinar H. Gunderson [Fri, 21 Jun 2019 18:12:39 +0000 (20:12 +0200)]
Convert channel_signal() and supports_set_wb() to imperative versions.

This completes the theme conversion for all called-only-once functions.
As before, the old versions are supported for pre-1.9.0 compatibility.

9 months agoCorrect a comment.
Steinar H. Gunderson [Fri, 21 Jun 2019 18:05:55 +0000 (20:05 +0200)]
Correct a comment.

9 months agoAdd a missing hint.
Steinar H. Gunderson [Fri, 21 Jun 2019 18:04:22 +0000 (20:04 +0200)]
Add a missing hint.

9 months agoMake it possible to set number of channels imperatively instead of using a callback.
Steinar H. Gunderson [Fri, 21 Jun 2019 17:43:29 +0000 (19:43 +0200)]
Make it possible to set number of channels imperatively instead of using a callback.

num_channels() will still be used if it exists, for compatibility with older

9 months agoMake it possible to set channel names imperatively instead of using a callback.
Steinar H. Gunderson [Fri, 21 Jun 2019 17:31:28 +0000 (19:31 +0200)]
Make it possible to set channel names imperatively instead of using a callback.

channel_name() will still be used if it exists, for compatibility with older

9 months agoMove the handling of human-readable input resolution printing into C++; every theme...
Steinar H. Gunderson [Fri, 21 Jun 2019 16:22:28 +0000 (18:22 +0200)]
Move the handling of human-readable input resolution printing into C++; every theme should not need to care about this.

9 months agoSupport submenus within theme menus.
Steinar H. Gunderson [Fri, 21 Jun 2019 15:45:54 +0000 (17:45 +0200)]
Support submenus within theme menus.

9 months agoFix a possible deadlock in CEF.
Steinar H. Gunderson [Tue, 18 Jun 2019 20:47:08 +0000 (22:47 +0200)]
Fix a possible deadlock in CEF.

9 months agoSupport optional effects with multiple inputs.
Steinar H. Gunderson [Sun, 16 Jun 2019 17:14:24 +0000 (19:14 +0200)]
Support optional effects with multiple inputs.

This allows you to prune away entire sections of the chain; the typical
case is if you have an OverlayEffect(a, b) and want to disable that.
In the disabled versions of the chain, the OverlayEffect will be replaced
with an IdentityEffect that passes through a only and leaves the entire
subgraph under b noninstantiated.

9 months agoRefactor out find_inputs_for_block().
Steinar H. Gunderson [Sun, 16 Jun 2019 17:12:11 +0000 (19:12 +0200)]
Refactor out find_inputs_for_block().

9 months agoAdd an enable_if() to Block, for convenience.
Steinar H. Gunderson [Sun, 16 Jun 2019 09:02:11 +0000 (11:02 +0200)]
Add an enable_if() to Block, for convenience.

9 months agoSmall refactoring in Block.
Steinar H. Gunderson [Sun, 16 Jun 2019 08:38:03 +0000 (10:38 +0200)]
Small refactoring in Block.

9 months agoRename chain -> scene as appropriate.
Steinar H. Gunderson [Sun, 16 Jun 2019 08:30:38 +0000 (10:30 +0200)]
Rename chain -> scene as appropriate.

9 months agoMake Block.choose() return the effect that was chosen.
Steinar H. Gunderson [Sat, 15 Jun 2019 23:14:55 +0000 (01:14 +0200)]
Make Block.choose() return the effect that was chosen.

9 months agoFix so that parameters directly on effects actually override the ones on the block...
Steinar H. Gunderson [Sat, 15 Jun 2019 23:14:40 +0000 (01:14 +0200)]
Fix so that parameters directly on effects actually override the ones on the block, as was intended.

9 months agoRename choose_alternative() to choose().
Steinar H. Gunderson [Sat, 15 Jun 2019 22:31:20 +0000 (00:31 +0200)]
Rename choose_alternative() to choose().

9 months agoAllow calling disable() on everything that has an IdentityEffect as alternative.
Steinar H. Gunderson [Sat, 15 Jun 2019 22:02:56 +0000 (00:02 +0200)]
Allow calling disable() on everything that has an IdentityEffect as alternative.

9 months agoAllow giving class names to Block.choose_alternative.
Steinar H. Gunderson [Sat, 15 Jun 2019 22:01:05 +0000 (00:01 +0200)]
Allow giving class names to Block.choose_alternative.

9 months agoScene doesn't need theme->input_state to be set, as we never get Lua callacks from...
Steinar H. Gunderson [Sat, 15 Jun 2019 14:23:24 +0000 (16:23 +0200)]
Scene doesn't need theme->input_state to be set, as we never get Lua callacks from its setup_chain.

9 months agoGive a slightly friendlier error message if the user forgets to connect an input.
Steinar H. Gunderson [Sat, 15 Jun 2019 13:03:52 +0000 (15:03 +0200)]
Give a slightly friendlier error message if the user forgets to connect an input.

9 months agoRework the chain concept.
Steinar H. Gunderson [Thu, 13 Jun 2019 20:59:18 +0000 (22:59 +0200)]
Rework the chain concept.

For complex themes, building the multitude of chains one might need
has become very bothersome, with tricky Lua scripting and non-typesafe
multidimensional tables.

To alleviate this somewhat, we introduce a concept called Scenes.
A Scene is pretty much an EffectChain with a better name and significantly
more functionality. In particular, scenes don't consist of single Effects;
they consist of blocks, which can hold any number of alternatives for
Effects. On finalize, we will instantiate all possible variants of
EffectChains behind-the-scenes, like the Lua code used to have to do itself,
but this is transparent to the theme.

In particular, this means that inputs are much more flexible. Instead of
having to make separate chains for regular inputs, deinterlaced inputs,
video inputs and CEF inputs, you now just make an input, and can connect
any type to it runtime (or “display”, as it's now called). Output is also
flexible; by default, any scene will get both Y'CbCr and RGBA versions
compiled. (In both cases, you can make non-flexible versions to reduce
the number of different instantiations. This can be a good idea in
complex chains.)

This also does away with the concept of the prepare function for a chain;
any effect settings are snapshotted when you return from get_scene() (the new
name for get_chain(), obviously), so you don't need to worry about capturing
anything or get threading issues like you used to.

All existing themes will continue to work unmodified for the time being,
but it is strongly recommended to migrate from EffectChain to Scene.

9 months agoMove some Lua utility functions into a separate header file.
Steinar H. Gunderson [Tue, 11 Jun 2019 20:31:30 +0000 (22:31 +0200)]
Move some Lua utility functions into a separate header file.

9 months agoWork around a Mesa shader cache issue.
Steinar H. Gunderson [Sat, 25 May 2019 15:36:33 +0000 (17:36 +0200)]
Work around a Mesa shader cache issue.

9 months agoAdd a helper so that theme script warnings get line numbers.
Steinar H. Gunderson [Mon, 10 Jun 2019 10:07:49 +0000 (12:07 +0200)]
Add a helper so that theme script warnings get line numbers.

10 months agoDefer creation of effects until they are added to a chain.
Steinar H. Gunderson [Mon, 20 May 2019 16:41:12 +0000 (18:41 +0200)]
Defer creation of effects until they are added to a chain.

Right now, this is pretty much a no-op, but it is a necessary building
block for making auto-chains (chains that can specialize depending on
the conditions).

10 months agoFix ImageInput sRGB behavior.
Steinar H. Gunderson [Sun, 19 May 2019 08:37:18 +0000 (10:37 +0200)]
Fix ImageInput sRGB behavior.

After we made the different ImageInput instances share OpenGL textures,
some of them would assume they could output sRGB. Fix by the same way
we've done video textures, ie., use sRGBSwitchingInput.

10 months agoAlways require GL_EXT_texture_sRGB_decode.
Steinar H. Gunderson [Sun, 19 May 2019 08:34:24 +0000 (10:34 +0200)]
Always require GL_EXT_texture_sRGB_decode.

Keeping the pure OpenGL path does not seem to actually buy us any
compatibility, so we simplify things a bit for an upcoming fix.
Strangely enough, this does not seem to be in any OpenGL standard.
Sampler objects, which we also require, is, though.

10 months agoRemove a fixed FIXME.
Steinar H. Gunderson [Sat, 18 May 2019 18:45:41 +0000 (20:45 +0200)]
Remove a fixed FIXME.

10 months agoMake the ImageInput cache store textures, not images.
Steinar H. Gunderson [Sat, 18 May 2019 09:26:33 +0000 (11:26 +0200)]
Make the ImageInput cache store textures, not images.

This saves on a lot of texture memory when the same image is used
in multiple chains, but perhaps more importantly, will allow us to
decouple ImageInputs from which images they show later.

10 months agoRemove unused code.
Steinar H. Gunderson [Tue, 14 May 2019 22:14:46 +0000 (00:14 +0200)]
Remove unused code.

10 months agoIn ImageInput, make one global update thread instead of one per image.
Steinar H. Gunderson [Tue, 14 May 2019 16:12:20 +0000 (18:12 +0200)]
In ImageInput, make one global update thread instead of one per image.

Makes for fewer threads (obviously), and also probably makes it easier
to give it an OpenGL context later.

10 months agoRemove unused member in ImageInput.
Steinar H. Gunderson [Mon, 13 May 2019 22:55:09 +0000 (00:55 +0200)]
Remove unused member in ImageInput.

10 months agoFix another whitespace error.
Steinar H. Gunderson [Sun, 12 May 2019 10:23:18 +0000 (12:23 +0200)]
Fix another whitespace error.

10 months agoFix an indentation error.
Steinar H. Gunderson [Sat, 11 May 2019 16:44:28 +0000 (18:44 +0200)]
Fix an indentation error.

10 months agoRefactor out a function for adding the end of EffectChains.
Steinar H. Gunderson [Sat, 11 May 2019 14:47:33 +0000 (16:47 +0200)]
Refactor out a function for adding the end of EffectChains.

11 months agoAdd a --disable-audio option to Kaeru, to transcode streams with no audio.
Steinar H. Gunderson [Sat, 20 Apr 2019 14:12:59 +0000 (16:12 +0200)]
Add a --disable-audio option to Kaeru, to transcode streams with no audio.

11 months agoRelease Nageru and Futatabi 1.8.6. 1.8.6
Steinar H. Gunderson [Fri, 19 Apr 2019 07:22:44 +0000 (09:22 +0200)]
Release Nageru and Futatabi 1.8.6.

11 months agoMake the default theme dir pick up the --prefix option given to Meson.
Steinar H. Gunderson [Thu, 18 Apr 2019 20:52:00 +0000 (22:52 +0200)]
Make the default theme dir pick up the --prefix option given to Meson.

11 months agoFix saving of MIDI mappings with camera switch buttons that have no associated lights...
Steinar H. Gunderson [Mon, 8 Apr 2019 20:27:12 +0000 (22:27 +0200)]
Fix saving of MIDI mappings with camera switch buttons that have no associated lights (or vice versa).

This could cause invalid protobufs to be saved, causing assertion errors
when loading them back.

Reported by Niall Walsh.

11 months agoFix MIDI mapping setup of camera buttons/lights when clicking on them.
Steinar H. Gunderson [Mon, 8 Apr 2019 15:18:38 +0000 (17:18 +0200)]
Fix MIDI mapping setup of camera buttons/lights when clicking on them.

Reported by Niall Walsh.

12 months agoRemove the colons from the recording file names.
Steinar H. Gunderson [Thu, 4 Apr 2019 07:25:08 +0000 (09:25 +0200)]
Remove the colons from the recording file names.

They cause problems for just too much software, including most players.

12 months agoFix HTTP tally for the last two channels.
Steinar H. Gunderson [Wed, 3 Apr 2019 15:44:22 +0000 (17:44 +0200)]
Fix HTTP tally for the last two channels.

Reported by Niall Walsh.

12 months agoFix -o short option.
Steinar H. Gunderson [Sun, 31 Mar 2019 12:17:15 +0000 (14:17 +0200)]
Fix -o short option.

12 months agoErrors in flags do not need core dumps.
Steinar H. Gunderson [Sun, 31 Mar 2019 12:16:43 +0000 (14:16 +0200)]
Errors in flags do not need core dumps.

12 months agoRelease Nageru and Futatabi 1.8.5. 1.8.5
Steinar H. Gunderson [Sat, 30 Mar 2019 14:55:49 +0000 (15:55 +0100)]
Release Nageru and Futatabi 1.8.5.

12 months agoAdd audio output when playing at 100% speed.
Steinar H. Gunderson [Sat, 30 Mar 2019 13:45:58 +0000 (14:45 +0100)]
Add audio output when playing at 100% speed.

Fairly untested, but should work both on single-track export and
on realtime output. No audio stretching or pitch shift, so only
plays when we're at regular speed. Note: There's no monitor output yet,
so the Futatabi operator will be deaf. There are also no VU bars.

12 months agoFix storing of audio sizes in the database.
Steinar H. Gunderson [Sat, 30 Mar 2019 13:23:58 +0000 (14:23 +0100)]
Fix storing of audio sizes in the database.

12 months agoTiny fix in variational_refinement.txt.
Steinar H. Gunderson [Sat, 30 Mar 2019 12:51:42 +0000 (13:51 +0100)]
Tiny fix in variational_refinement.txt.

12 months agobmusb 0.7.4 is out, and we need it.
Steinar H. Gunderson [Fri, 29 Mar 2019 21:34:44 +0000 (22:34 +0100)]
bmusb 0.7.4 is out, and we need it.

12 months agoMake multitrack export include audio.
Steinar H. Gunderson [Thu, 28 Mar 2019 19:25:59 +0000 (20:25 +0100)]
Make multitrack export include audio.

12 months agoRemove a legacy FFmpeg test which is no longer needed (we have required 4.0 for a...
Steinar H. Gunderson [Thu, 28 Mar 2019 18:10:24 +0000 (19:10 +0100)]
Remove a legacy FFmpeg test which is no longer needed (we have required 4.0 for a while).

12 months agoMake Futatabi accept and record the audio, although it cannot use it for anything...
Steinar H. Gunderson [Thu, 28 Mar 2019 17:57:57 +0000 (18:57 +0100)]
Make Futatabi accept and record the audio, although it cannot use it for anything yet.

12 months agoInclude the raw audio in the MJPEG output.
Steinar H. Gunderson [Thu, 28 Mar 2019 17:49:01 +0000 (18:49 +0100)]
Include the raw audio in the MJPEG output.

12 months agoFix handling of truncated frame files.
Steinar H. Gunderson [Thu, 28 Mar 2019 08:25:13 +0000 (09:25 +0100)]
Fix handling of truncated frame files.

12 months agoOn errors, abort() instead of exit(1); exit() in a multithreaded program just gives...
Steinar H. Gunderson [Wed, 27 Mar 2019 23:56:20 +0000 (00:56 +0100)]
On errors, abort() instead of exit(1); exit() in a multithreaded program just gives more problems, and we want a core file.

12 months agoIn Futatabi, ignore non-video streams for now.
Steinar H. Gunderson [Wed, 27 Mar 2019 22:15:54 +0000 (23:15 +0100)]
In Futatabi, ignore non-video streams for now.

12 months agoCorrect a tiny miscalculation in convert_fixed24_to_fp32().
Steinar H. Gunderson [Mon, 25 Mar 2019 20:33:49 +0000 (21:33 +0100)]
Correct a tiny miscalculation in convert_fixed24_to_fp32().

12 months agoIf a HTTP server backlog becomes very large (>1 GB), kill the connection to avoid...
Steinar H. Gunderson [Fri, 22 Mar 2019 21:56:41 +0000 (22:56 +0100)]
If a HTTP server backlog becomes very large (>1 GB), kill the connection to avoid runaway OOM.

12 months agoFix some memory leaks in the VA-API upload code (also make it more RAII-ish to be...
Steinar H. Gunderson [Mon, 18 Mar 2019 21:53:21 +0000 (22:53 +0100)]
Fix some memory leaks in the VA-API upload code (also make it more RAII-ish to be fail safe).

12 months agoIncrease the size of the VA-API resource freelist, to try to trickle the threading...
Steinar H. Gunderson [Mon, 18 Mar 2019 18:31:18 +0000 (19:31 +0100)]
Increase the size of the VA-API resource freelist, to try to trickle the threading issues a tiny bit less.

12 months agoUse vaCreateImage + vaPutImage instead of vaDeriveImage.
Steinar H. Gunderson [Mon, 18 Mar 2019 18:29:38 +0000 (19:29 +0100)]
Use vaCreateImage + vaPutImage instead of vaDeriveImage.

Seemingly, this largely fixes the L3 issues I've been seeing, taking
CPU usage down from ~2.1–2.2 to ~1.4 cores.

A test run with eight full 1080p59.94 inputs demonstrates that it can
be done without the GPU keeling over, although there are some issues with
VA-API threading.

12 months agoWhen uploading MJPEG data to VA-API, do it directly into the buffer.
Steinar H. Gunderson [Sun, 17 Mar 2019 21:53:36 +0000 (22:53 +0100)]
When uploading MJPEG data to VA-API, do it directly into the buffer.

Besides the obvious of spending less time copying, this has two positive effects:

 - The VA-API thread is no longer a choke point; uploading can happen from
   multiple cores.
 - With one copy less, we seem to be reducing L3 cache pressure a bit;
   at some point between five and six 1080p sources, we “fall off a cliff”
   wrt. the L3 and start thrashing. This doesn't fix the issue, but alleviates
   it somewhat.

All in all, we seem to go down from ~2.6 to ~2.1–2.2 cores used with one
720p channel and five 1080p channels. I haven't tried saturating channels
yet to see how many we can actually encode.

12 months agoFix more repetition of the Userdata cast.
Steinar H. Gunderson [Sun, 17 Mar 2019 18:15:13 +0000 (19:15 +0100)]
Fix more repetition of the Userdata cast.

12 months agoFix some overly repetitive code in PBOFrameAllocator.
Steinar H. Gunderson [Sat, 16 Mar 2019 23:42:31 +0000 (00:42 +0100)]
Fix some overly repetitive code in PBOFrameAllocator.

12 months agoFix a confusing variable name (frame_bytes sounded like a number of bytes).
Steinar H. Gunderson [Thu, 14 Mar 2019 08:32:34 +0000 (09:32 +0100)]
Fix a confusing variable name (frame_bytes sounded like a number of bytes).

12 months agoFix an unneeded copy when muxing MJPEGs.
Steinar H. Gunderson [Wed, 13 Mar 2019 20:36:40 +0000 (21:36 +0100)]
Fix an unneeded copy when muxing MJPEGs.

Saves ~10% of one core at five 1080p50 sources.

12 months agoRelease Nageru and Futatabi 1.8.4. 1.8.4
Steinar H. Gunderson [Mon, 11 Mar 2019 22:40:21 +0000 (23:40 +0100)]
Release Nageru and Futatabi 1.8.4.

12 months agoVarious fixes for 32-bit platforms.
Steinar H. Gunderson [Mon, 11 Mar 2019 22:39:43 +0000 (23:39 +0100)]
Various fixes for 32-bit platforms.

12 months agoMove to one JPEG decoder thread per view.
Steinar H. Gunderson [Sun, 10 Mar 2019 22:29:24 +0000 (23:29 +0100)]
Move to one JPEG decoder thread per view.

This is, surprisingly, the most useful for VA-API decodes; they can
have long latency at 1080p, and Futatabi's dropping scheme sometimes
caused massive unfairness. Our system doesn't pipeline all that
nicely, so just having multiple threads was the simplest solution.
The risk is that we now access VA-API from multiple threads, which
has a tendency to tickle bugs, but we'll see.

Of course, for CPU decoding, you will also benefit.

12 months agoRelease Nageru and Futatabi 1.8.3. 1.8.3
Steinar H. Gunderson [Sun, 10 Mar 2019 19:23:25 +0000 (20:23 +0100)]
Release Nageru and Futatabi 1.8.3.

12 months agoUnbreak audio transcoding in Kaeru, which has seemingly been broken from the very...
Steinar H. Gunderson [Sun, 10 Mar 2019 11:40:35 +0000 (12:40 +0100)]
Unbreak audio transcoding in Kaeru, which has seemingly been broken from the very start.

12 months agoFor FFmpeg inputs, add an option for playing as fast as possible.
Steinar H. Gunderson [Sun, 10 Mar 2019 11:04:27 +0000 (12:04 +0100)]
For FFmpeg inputs, add an option for playing as fast as possible.

This is intended for live streams, where setting rate 2.0 or similar
would cause it to spew errors and keep resetting the clock. This mode
is automatically activated if rate >= 10.0.

12 months agoGet rid of an unneeded sleep and message on Futatabi exit.
Steinar H. Gunderson [Sun, 10 Mar 2019 00:36:14 +0000 (01:36 +0100)]
Get rid of an unneeded sleep and message on Futatabi exit.