]> git.sesse.net Git - nageru/blob - NEWS
Release Nageru and Futatabi 2.1.0.
[nageru] / NEWS
1 Nageru and Futatabi 2.1.0, February 6th, 2022
2
3   - Support unsynchronized HDMI/SDI output.
4     
5     This is for if you want just a monitor output without synchronizing
6     your entire stream chain to the output card (ie., you want to keep
7     some other camera as the master). Sound support is untested, and is
8     probably going to crackle a fair bit.
9     
10     There's no GUI support for changing this currently (you enable it
11     by using --output-card-unsynchronized and then using HDMI/SDI output
12     as usual).
13
14   - Support sending a separate x264 encode to disk
15     (--separate-x264-disk-encode and associated --x264-separate-disk-*
16     flags).
17     
18     This is useful for machines that don't have Quick Sync, but where
19     you want to have an archival copy on disk in higher quality
20     than what you streamed out.
21
22   - Fix compilation issues with FFmpeg 5.0.
23
24
25 Nageru and Futatabi 2.0.2, September 3rd, 2021
26
27   - Fix issues with various upstream software:
28     DeckLink 11.7 (and newer) drivers, FFmpeg 4.4, newer CEF.
29
30   - Add a --no-transcode-video flag to Kaeru.
31     
32     This is useful primarily if you want Kaeru to rewrap the stream into
33     Metacube (for Cubemap) and do nothing else with it. Only H.264
34     is supported for now, since everything else assumes that.
35
36
37 Nageru and Futatabi 2.0.1, July 9th, 2020
38
39   - Upgrade DeckLink SDK to 10.11.4.
40
41   - Various bugfixes.
42
43
44 Nageru and Futatabi 2.0.0, June 2nd, 2020
45
46   - Native support for SRT inputs; by default, Nageru will listen
47     for incoming connections on port 9710 and treat them as hotplugged
48     cameras. They do not need any special handling in the theme,
49     and can pick up e.g. the SRT stream ID to be used in the UI.
50     They generally have fewer limitations than using an srt:// URL
51     on an FFmpeg capture; e.g., there is no forced scaling, and they
52     can be used as master clock (although this is not generally
53     recommended).
54
55     For license reaseons, please be sure that libsrt does not link to
56     OpenSSL when building Nageru.
57
58   - You do no longer need to set up a fixed amount of capture cards
59     at startup; by default, at least two will be created for you
60     (fake capture cards) as before, but if you have more, or hotplug
61     more, more slots will be automatically available, and will go
62     away (not take up any resources like fake capture cards do)
63     when unplugged. If you wish to artificially limit the maximum
64     number of cards like before, you can use the new switch
65     --max-num-cards.
66
67   - MJPEG handling now includes 4:2:0 support in both Nageru and
68     Futatabi, as SRT inputs are often 4:2:0 and not 4:2:2.
69
70   - FFmpeg capture cards (including SRT cards) now use VA-API
71     hardware acceleration for decoding whenever available.
72
73
74 Nageru and Futatabi 1.9.3, April 12th, 2020
75
76   - Support (video-only) V4L2 output. The intended use case is output into
77     v4l2loopback to get into videoconferencing or the likes:
78
79      sudo apt install v4l2loopback-dkms
80      sudo modprobe v4l2loopback video_nr=2 card_label='Nageru loopback' max_width=1280 max_height=720 exclusive_caps=1
81      nageru --v4l-output /dev/video2
82
83    Start Nageru before any readers.
84
85
86 Nageru and Futatabi 1.9.2, March 29th, 2020
87
88   - Support handling white balance directly in Nageru, without themes
89     manually inserting a WhiteBalanceEffect or handling set_wb().
90     To use it, call scene:add_white_balance() instead of
91     scene:add_effect(WhiteBalanceEffect.new()). If using this functionality,
92     white balance will be properly propagated to the MJPEG feed and
93     through Futatabi, so that replays get the correct white balance.
94     Futatabi's UI will still be uncorrected, though.
95
96   - Make it possible to siphon out a single MJPEG stream, for remote
97     debugging, single-camera recording, single-camera streaming via
98     Kaeru or probably other things. The URL for this is /feeds/N.mp4
99     where N is the card index (starting from zero).
100
101   - The theme can now access some audio settings; it can get (not set)
102     number of buses and names, get/set fader volume, get/set mute,
103     and get/set EQ parameters.
104
105   - In Futatabi, it is now possible to set custom source labels, with
106     the parameter --source-label NUM:LABEL (or -l NUM:LABEL).
107
108   - When the playback speed changes in Futatabi, ease into the new speed.
109     The easing period is nominally 200 ms, but it will be automatically
110     shortened or lengthened (up to as much as two seconds in extreme
111     cases, especially involving very slight speed change) if this
112     helps getting back into a cadence of hitting the original frames.
113     This can mean significant performance improvements when ramping
114     from higher speeds back into 100%.
115
116   - Updates for newer versions of CEF (tested with Chrome 80).
117
118   - Various bugfixes and performance improvements.
119
120
121 Nageru and Futatabi 1.9.1, November 17th, 2019
122
123   - Support disabling optional effects if a given other effect is _enabled_
124     (typically for mutually exclusive effects).
125     
126   - Make it possible for the theme to override the status line, by declaring
127     a function format_status_line() in the theme. Inspired by a C++ patch by
128     Alex Thomazo in the Breizhcamp repository.
129
130   - Various bugfixes.
131
132
133 Nageru and Futatabi 1.9.0, July 20th, 2019
134
135   - Significant reworking of the theme engine: Chains (now called scenes)
136     can now instantiate different versions behind-the-scenes instead of the
137     user having to worry about input types, low/high quality, or replacing
138     effects with others. Menus can have submenus and checkboxes. Finally, some
139     callbacks, such as num_channels(), have been replaced with easier-to-use
140     imperative functions, ie., an explicit call to Nageru.set_num_channels(N).
141
142     See the documentation for more information, or the included themes,
143     which have been ported to the new interfaces. Existing themes will continue
144     to run without modification, but the old interfaces are deprecated.
145
146     Martin Sandsmark contributed a bugfix to this work.
147
148   - Support cross-compilation. Patch from Helmut Grohne.
149
150   - Kaeru now has a parameter --disable-audio for transcoding streams
151     with no audio.
152
153   - Various bugfixes. In particular, work around an issue where Mesa's shader
154     cache interacts with Qt's EGL support to create a confusing crash with
155     “vertex shader lacks `main'”.
156
157
158 Nageru and Futatabi 1.8.6, April 19th, 2019
159
160   - Filenames for the recordings are now without colons; it caused
161     too much problems with various software, including most players.
162
163   - Various bugfixes.
164
165
166 Nageru and Futatabi 1.8.5, March 30th, 2019
167
168   - Experimental support for audio in Futatabi: The MJPEG export from
169     Nageru now supports audio, and Futatabi will store it and play it
170     back. Audio is currently only supported when playing at 100% speed
171     (no pitch shift or time stretching), and there is no audio output
172     to the Futatabi operator.
173
174   - Significant optimizations to MJPEG encoding, both when in use and when
175     not in use.
176
177   - Various bugfixes.
178
179
180 Nageru and Futatabi 1.8.4, March 11th, 2019
181
182   - Various bugfixes, in particular for 32-bit platforms.
183
184
185 Nageru and Futatabi 1.8.3, March 10th, 2019
186
187   - Allow controlling video mixing from MIDI events. Adapted from a patch
188     by Yann Dubreuil, from the BreizhCamp repository.
189
190   - Use ALSA hardware timestamps for input; gives more stable delay.
191     Patch by Yann Dubreuil, from the BreizhCamp repository.
192
193   - For FFmpeg inputs, add an option for playing as fast as possible
194     (set rate >= 10.0).
195
196   - In Futatabi, support queueing and playing clips with no cue-out point.
197     This opens up for new and even faster UI workflows.
198
199   - Many bugfixes.
200
201
202 Nageru and Futatabi 1.8.2, January 19th, 2019
203
204   - Futatabi now supports MIDI controllers like Nageru, including an editor
205     and a sample mapping for the Behringer CMD PL-1.
206
207   - Futatabi now supports changing master speed during play, both via a
208     MIDI controller and the GUI.
209
210   - Various bugfixes.
211
212
213 Nageru and Futatabi 1.8.1, December 30th, 2018
214
215   - Futatabi can now communicate its queue status through a subtitle track,
216     and Nageru can consume it. This allows Nageru themes to get precise
217     information programmatically, e.g. to show status or automatically
218     switch away when the queue is about to end.
219
220   - Futatabi can now reuse the computed flow across successive frames when
221     interpolating between the same frame pair. This significantly reduces
222     the GPU load when doing super-slow motion (slower than 0.5x).
223
224   - Various smaller fixes.
225
226
227 Nageru and Futatabi 1.8.0, December 20th, 2018
228
229   - Initial release of Futatabi, a multicamera slow motion video server
230     designed to be used with Nageru. Futatabi is currently in alpha stage
231     and largely undocumented.
232
233   - Add support for multi-camera export from Nageru. A multi-camera stream
234     contains all frames from all camera inputs (unless overridden by
235     --mjpeg-export-cards), unprocessed except for MJPEG encoding.
236     MJPEG encoding is done in hardware (via VA-API) on Skylake or newer,
237     or using libjpeg otherwise. The intended user of this stream is Futatabi.
238
239
240 Nageru 1.7.5, November 11th, 2018
241
242   - Fix a bug where --record-x264-video would not work when VA-API was
243     not present, making the option rather useless (broken in 1.7.2).
244     Bug reported by Peter De Schrijver.
245
246   - The build system has been switched to Meson; see the README for new
247     build instructions.
248
249   - Various smaller fixes.
250
251
252 Nageru 1.7.4, August 31st, 2018
253
254   - Rework the x264 speedcontrol presets, again. (They earlier assumed
255     we could control B-frame settings on the fly, which we cannot with
256     threaded lookahead.) Also support x264 >= 153, which can support
257     multiple bit depths in the same library.
258
259   - Default to SDI inputs instead of HDMI.
260
261   - Add a mode to run in full screen (--fullscreen). Adapted from a patch
262     by Yoann Dubreuil.
263
264   - Add support for lift/gamma/gain in the theme. Patch by Alexandre Thomazo.
265
266
267 Nageru 1.7.3, May 22nd, 2018
268
269   - When using multichannel audio, add a control for adjusting the
270     stereo width (from normal stereo to mono, all the way to
271     inverted stereo).
272
273   - Removed --http-coarse-timebase (it is now always on).
274
275   - Various bugfixes.
276
277
278 Nageru 1.7.2, April 28th, 2018
279
280   - Several improvements to video (FFmpeg) inputs: You can now use
281     them as audio sources, you can right-click on video channels
282     to change URL/filename on-the-fly, themes can ask for forced
283     disconnection (useful for network sources that are hanging),
284     and various other improvements. Be aware that the audio support
285     may still be somewhat rough, as A/V sync of arbitrary video
286     playout is a hard problem.
287
288   - The included themes have been fixed to properly make the returned
289     chain preparation functions independent of global state (e.g. if
290     the white balance for a channel was changed before the frame was
291     actually rendered). If you are using a custom theme, you may want
292     to apply similar fixes to it.
293
294   - In Metacube stream output, mark each keyframe with a pts metadata
295     block. This allows Cubemap 1.4.0 or newer to serve fMP4 fragments
296     for HLS from Nageru's output, without any further remuxing or
297     transcoding.
298
299   - If needed, Nageru will now automatically try to autodetect a
300     usable --va-display parameter by probing all DRM nodes for H.264
301     encoders. This removes the need to set --va-display in almost all
302     cases, and also removes the dependency on libpci.
303
304   - For GPUs that support querying available memory (in practice only
305     NVIDIA GPUs at the current time), expose the amount of used/total
306     GPU memory both on standard output and in the Prometheus metrics
307     (as well as included Grafana dashboard).
308
309   - The Grafana dashboard now supports heatmaps for the chosen x264
310     speedcontrol preset (requires Grafana 5.1 or newer). (There used to
311     be a heatmap earlier, but it was all broken.)
312
313   - Various bugfixes.
314
315
316 Nageru 1.7.1, March 26th, 2018
317
318   - Various bugfixes, mostly related to HTML and video inputs.
319
320
321 Nageru 1.7.0, March 8th, 2018
322
323   - Support for HTML5 graphics directly in Nageru, through CEF
324     (Chromium Embedded Framework). This performs better and is more
325     flexible than integrating with CasparCG over a socket. Note that
326     CEF is an optional component; see the documentation for more
327     information.
328
329   - Add an HTTP endpoint for enumerating channels and one for getting
330     only their colors. Intended for remote tally applications;
331     set the documentation.
332
333   - Add a video grid display that removes the audio controls and shows
334     the video channels only, potentially in multiple rows if that makes
335     for a larger viewing area.
336
337   - Themes can now present simple menus in the Nageru UI. See the
338     documentation for more information.
339
340   - Various bugfixes.
341
342
343 Nageru 1.6.4, January 25th, 2018
344
345   - Fix compilation with the upcoming FFmpeg 3.5.
346
347   - Switch to LuaJIT for the theme engine, which is faster.
348
349   - Various bugfixes and smaller optimizations.
350
351
352 Nageru 1.6.3, November 8th, 2017
353
354   - Add quick-cut keys (Q, W, E, etc.) below the preview keys.
355     Since it's easy to hit these by accident and put up a signal
356     you didn't want, they are disabled by default (they can be
357     enabled in the video menu, or with the command line flag
358     --quick-cut-keys).
359
360   - Rework the x264 speedcontrol presets to better match newer
361     x264 versions.
362
363   - Add an option for changing the HTTP port (--http-port).
364
365   - Various smaller bug and integration fixes.
366
367
368 Nageru 1.6.2, July 16th, 2017
369
370   - Various smaller Kaeru fixes, mostly around metrics. Also,
371     you can now adjust the x264 bitrate in Kaeru (in 100 kbit/sec
372     increments) by sending SIGUSR1 (higher) or SIGUSR2 (lower).
373
374
375 Nageru 1.6.1, July 9th, 2017
376
377   - Add native export of Prometheus metrics.
378
379   - Rework the frame queue drop algorithm. The new one should handle tricky
380     situations much better, especially when a card is drifting very slowly
381     against the master timer.
382
383   - Add Kaeru, an experimental transcoding tool based on Nageru code.
384     Kaeru can run headless on a server without a GPU to transcode a
385     Nageru stream into a lower-bitrate one, replacing VLC.
386
387   - Work around a bug in some versions of NVIDIA's OpenGL drivers that would
388     crash Nageru after about three hours (fix in cooperation with Movit).
389
390   - Fix a crash with i965-va-driver 1.8.x.
391
392   - Reduce mutex contention in certain critical places, causing lower tail
393     latency in the mixer.
394
395
396 Nageru 1.6.0, May 29th, 2017
397
398   - Add support for having videos (from file or from URL) as a separate
399     input channels, albeit with some limitations. Apart from the obvious use of
400     looping pause clips or similar, this can be used to integrate with CasparCG;
401     see the manual for more details.
402
403   - Add a frame analyzer (accessible from the Video menu) containing an
404     RGB histogram and a color dropped tool. This is useful in calibrating
405     video chains by playing back a known signal. Note that this adds a
406     dependency on QCustomPlot.
407
408   - Allow overriding Y'CbCr input interpretation, for inputs that don't
409     use the correct settings. Also, Rec. 601 is now used by default instead
410     of Rec. 709 for SD resolutions.
411
412   - Support other sample rates than 48000 Hz from bmusb.
413
414
415 Nageru 1.5.0, April 5th, 2017
416
417   - Support for low-latency HDMI/SDI output in addition to (or instead of) the
418     stream. This currently only works with DeckLink cards, not bmusb. See the
419     manual for more information.
420
421   - Support changing the resolution from the command line, instead of locking
422     everything to 1280x720.
423
424   - The A/V sync code has been rewritten to be more in line with Fons
425     Adriaensen's original paper. It handles several cases much better,
426     in particular when trying to match 59.94 and 60 Hz sources to each other.
427     However, it might occasionally need a few extra seconds on startup to
428     lock properly if startup is slow.
429
430   - Add support for using x264 for the disk recording. This makes it possible,
431     among other things, to run Nageru on a machine entirely without VA-API
432     support.
433
434   - Support for 10-bit Y'CbCr, both on input and output. (Output requires
435     x264 disk recording, as Quick Sync Video does not support 10-bit H.264.)
436     This requires compute shader support, and is in general a little bit
437     slower on input and output, due to the extra amount of data being shuffled
438     around. Intermediate precision is 16-bit floating-point or better,
439     as before.
440
441   - Enable input mode autodetection for DeckLink cards that support it.
442     (bmusb mode has always been autodetected.)
443
444   - Add functionality to add a time code to the stream; useful for debugging
445     latency.
446
447   - The live display is now both more performant and of higher image quality.
448
449   - Fix a long-standing issue where the preview displays would be too bright
450     when using an NVIDIA GPU. (This did not affect the finished stream.)
451
452   - Many other bugfixes and small improvements.
453
454
455 Nageru 1.4.2, November 24th, 2016
456
457   - Fix a thread race that would sometimes cause x264 streaming to go awry.
458
459
460 Nageru 1.4.1, November 6th, 2016
461
462   - Various bugfixes.
463
464
465 Nageru 1.4.0, October 26th, 2016
466
467   - Support for multichannel (or more accurately, multi-bus) audio,
468     choosable from the UI or using the --multichannel command-line
469     flag. In multichannel mode, you can take in inputs from multiple
470     different sources (or different channels on the same source, for
471     multichannel sound cards), apply effects to them separately and then
472     mix them together. This includes both audio from the video cards
473     as well as ALSA inputs, including hotplug. Ola Gundelsby contributed
474     invaluable feedback on this feature throughout the entire
475     development cycle.
476
477   - Support for having MIDI controllers control various aspects of the
478     audio UI, with relatively flexible mapping. Note that different
479     MIDI controllers can vary significantly in what protocol they speak,
480     so Nageru will not necessarily work with all. (The primary testing
481     controller has been the Akai MIDImix, and a pre-made mapping for
482     that is included. The Korg nanoKONTROL2 has also been tested and
483     works, but it requires some Korg-specific SysEx commands to make
484     the buttons and lights work.)
485
486   - Add a disk space indicator to the main window.
487
488   - Various bugfixes. In particular, an issue where the audio would pitch
489     up sharply after a series of many dropped frames has been fixed.
490
491
492 Nageru 1.3.4, August 2nd, 2016
493
494   - Various bugfixes.
495
496
497 Nageru 1.3.3, July 27th, 2016
498
499   - Various changes to make distribution packaging easier; in particular,
500     theme data can be picked up from /usr/local/share/nageru.
501
502   - Fix various FFmpeg deprecation warnings, now that we need FFmpeg
503     3.1 for other reasons anyway.
504
505
506 Nageru 1.3.2, July 23rd, 2016
507
508   - Allow limited hotplugging (unplugging and replugging) of USB cards.
509     You can use the new command-line option --num-fake-cards (-C) to add
510     fake cards that show only a single color and that will be replaced
511     by real cards as you plug them in; you can also unplug cards and have
512     them be replaced by fake cards. Fake cards can also be used for testing
513     Nageru without actually having any video cards available.
514
515   - Add Metacube timestamping of every keyframe, for easier detection of
516     streams not keeping up. Works with the new timestamp feature of
517     Cubemap 1.3.1. Will be ignored (save for some logging) in older
518     Cubemap versions.
519
520   - The included default theme has been reworked and cleaned up to be
521     more understandable and extensible.
522
523   - Add more command-line options for initial audio setup.
524
525
526 Nageru 1.3.1, July 1st, 2016
527
528  - Various display bugfixes.
529
530
531 Nageru 1.3.0, June 26th, 2016
532
533  - It is now possible, given enough CPU power (e.g., a quad-core Haswell or
534    faster desktop CPU), to output a stream that is suitable for streaming
535    directly to end users without further transcoding. In particular, this
536    includes support for encoding the network stream with x264 (the stream
537    saved to disk is still done using Quick Sync), for Metacube framing (for
538    streaming to the Cubemap reflector), and for choosing the network stream
539    mux. For more information, see the README.
540
541  - Add a flag (--disable-alsa-output) to disable ALSA monitoring output.
542
543  - Do texture uploads from the main thread instead of from separate threads;
544    may or may not improve stability with NVIDIA's proprietary drivers.
545
546  - When beginning a new video segment, the shutdown of the old encoder
547    is now done in a background thread, in order to not disturb the external
548    stream. The audio still goes into a somewhat random stream, though.
549
550  - You can now override the default stream-to-card mapping with --map-signal=
551    on the command line.
552
553  - Nageru now tries to lock itself into RAM if it has the permissions to do
554    so, for better realtime behavior. (Writing the stream to disk tends to
555    fill the buffer cache, eventually paging less-used parts of Nageru out.)
556
557  - Various fixes for deadlocks, memory leaks, and many other errors.
558
559
560 Nageru 1.2.1, April 15th, 2016
561
562  - Images are now updated from disk about every second, so that it is possible
563    to update e.g. overlays during streaming, although somewhat slowly.
564
565  - Fix support for PNG images.
566
567  - You can now send SIGHUP to start a new cut instead of using the menu.
568
569  - Added a --help option.
570
571  - Various tweaks to OpenGL fence handling.
572
573
574 Nageru 1.2.0, April 6th, 2016
575
576  - Support for Blackmagic's PCI and Thunderbolt cards, using the official
577    (closed-source) Blackmagic drivers. (You do not need the SDK installed, though.)
578    You can use PCI and USB cards pretty much interchangeably.
579
580  - Much more stable handling of frame queues on non-master cards. In particular,
581    you can have a master card on 50 Hz and another card on 60 Hz without getting
582    lots of warning messages and a 10+ frame latency on the second card.
583
584  - Many new options in the right click menu on cards: Adjustable video inputs,
585    adjustable audio inputs, adjustable resolutions, ability to select card for
586    master clock.
587
588  - Add support for starting with almost all audio processing turned off
589    (--flat-audio).
590
591  - The UI now marks inputs with red or green to mark them as participating in
592    the live or preview signal, respectively. Red takes priority. (Actually,
593    it merely asks the theme for a color for each input; the theme contains
594    the logic.)
595
596  - Add support for uncompressed video instead of H.264 on the HTTP server,
597    while still storing H.264 to files (--http-uncompressed-video). Note that
598    depending on your client, this might not actually be more CPU efficient
599    even on localhost, so be sure to check.
600
601  - Add a simpler, less featureful theme (simple.lua) that should be easier to
602    understand for beginners. Themes are now also choosable with -t on the command
603    line.
604
605  - Too many bugfixes and small tweaks to list. In particular, many memory leaks
606    in the streaming part have been identified and fixed.
607
608
609 Nageru 1.1.0, February 24th, 2016
610
611  - Support doing the H.264 encoding on a different graphics device from the one
612    doing the mixing. In particular, this makes it possible to use Nageru on an
613    NVIDIA GPU while still encoding H.264 video using Intel Quick Sync (NVENC
614    is not supported yet) -- it is less efficient since the data needs to be read
615    back via the CPU, but the NVIDIA cards and drivers are so much faster that it
616    doesn't really matter. Tested on a GTX 950 with the proprietary drivers.
617
618  - In the included example theme, fix fading to/from deinterlaced sources.
619
620  - Various smaller compilation, distribution and documentation fixes.
621
622
623 Nageru 1.0.0, January 30th, 2016
624
625  - Initial release.