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