* Close down ZMQ context to stop the zmq threads (related to sentry bug: OPENSHOT-3X)
* Add Support for Windows 7/8.1 (#881)
Adding protection around getting current sample rate for win 7, if audio device not found. Also added mutex for Singleton method. Also, making whitespace consistent on AudioPlaybackThread.cpp
* Big refactor of audio device opening - with multiple sample rates attempted, for better recovery from a missing or unsupported sample rate. Debug logs added for testing.
* Additional failure logging for windows audio device init
* Refactor of Audio Device Initialization (#882)
* Huge refactor of audio device initialization:
- Attempt requested audio device first, and then iterate through all known audio types and devices, and common sample rates. The idea is to ignore an invalid default or invalid requested device, and keep looking until we find a valid one
- New public method to return active, open audio device
- Added methods for AudioDeviceInfo struct, to make it callable from Python
- Some code clean-up and whitespace fixes
- New unit tests for AudioDeviceManagerSingleton
* Ignore audio device unit tests on systems with "No Driver" returned in the audio error message
* Ignore audio device unit tests if any error is found during initialization (i.e. build servers don't have audio cards)
* Trying to update GitHub libomp errors during build checks
* Remove zmq context shutdown call, due to the method missing on newer versions of zmq.hpp
* Downgrading GitHub Ubuntu latest image to Ubuntu 20.04, for compatibility with Catchv2
* Initialize all audio device manager variables correctly, and ignore unit test on low or missing sample rate systems (i.e. GitHub build servers)
- Replace all juce::CriticalSection with std::recursive_mutex
- Replace all juce::AudioSampleBuffer with juce::AudioBuffer<float>
- Eliminate implicit reliance on 'using namespace juce;'
- Replace OpenShotAudio.h includes with targeted juce modules
* reuse-managed license/copyright headers
reuse is a tool for compliance with the REUSE recommendations. See
<https://reuse.software/> for more information, and
<https://reuse.readthedocs.io/> for the online documentation.
* Set jsoncpp license
* Add MIT license for Decklink sources
* Explicitly license examples/
- Add headers to source files
- Change blanket licensing in .reuse/dep5 to only cover binary media
- Import CC-BY-3.0 license and assign to sintel_trailer
Add an openshot::Settings boolean `DEBUG_TO_STDERR`, which when
set true will direct all AppendDebugMethod() messages to std::clog,
in addition to (possibly) being sent over the ZeroMQ wire.
The logger can be closed from the external thread (openshot-qt), while
same logger instance is still in use in libopenshot.
This change prevents crash on attempts to use debug logger if it was
closed.
Co-authored-by: Frank Dana <ferdnyc@users.noreply.github.com>
Give the AppendDebugMethod() declaration a set of default values for
all parameters after the first. (It uses `""` and `-1.0`, which are
what callers were passing in anyway.) This way, callers have the
_option_ to eschew this kind of thing:
```
ZmqLogger::Instance()->AppendDebugMethod("Message", "start", start,
"length", length, "", -1, "", -1, "", -1, "", -1);
```
instead, they can use the functionally equivalent:
```
ZmqLogger::Instance()->AppendDebugMethod("Message", "start", start,
"length", length);
```
Passing meaningless args is the compiler's job, not the programmer's.