Set 1-subdevice-full-duplex for 3D mode as it seems to be the only
supported (1 device half-duplex would work as well but it doesn't seem
to support 2 streams while full-duplex supports at least 2 streams in
the opposite direction, at least for 8K Pro).
- removed `needs_mainloop` attribute and deduce if mainloop is needed
from the presence of _run callback (the information is now redundant
only displays needing/running mainloop should announce _run callback)
- run the custom mainloop (currently only Syphon!) only when display
doesn't run its mainloop. This allows running Syphon and GL/SDL
display because it connects to the display mainloop.
Frame scheduling is clearly non-blocking but even the sync calls are
non-blocking - for video, next video frame is replaced, for audio, the
samples are written to ring buffer (with possible overflow). So the
numbers are almost everytime near zero.
Return a macro ((void *) 1) from modules returning pointer to signalize
that help was printed (for correct UG return value). This replaces the
old behavior when module class specific value (eg. &display_init_noerr)
was returned.
Replace blocking/nonblock/discard flags with numerical timeout for
fine-grainer control of latency.
The original flags are kept as convenience macros so the API changes is
only small as long as non-block (default) or blocking is used.
Use name (MOD_NAME) provided by module rather than name given from
command-line. Those 2 may not match - in command-line it is
case-insensitive so ("gl" or even "gL" would be printed inestead of
expected "GL"). Also there may be input/output module of the same name
(eg. decklink) for which we may want to distinguish.
- use 16 bytes to be safe (compiler incorrectly warns)
- allocate temporary variable on heap
- improved asserts for assumed numeric ranges (counting with leap
seconds)
* Added soxr 0.1.3 as an external dependency (for the resampling code)
* Removed resampler quality parameter
* The decklink drift fixing class has been changed to be disabled by default. The help for the decklink has also been updated to include details about the dynamic resampling process.
* Stopped the dynamic resampler spamming the verbose log too much