Since the node graph can have transform cross nodes, input keyframes may occur
at a different times requiring transforming between sequence time and media
time. This commit implements such a mechanism in all UI classes that need it.
Updates drag mime data to include a variable determining which streams are
enabled and which ones aren't (a binary qint64 where the 0s are disabled
and the 1s are enabled) rather than relying solely on the stream->enabled
values which can't be modified as part of the drag process.
Since other parts of the UI use OpenGL (through Qt), the viewer's context can
sometimes become non-current until the next time it draws. Since the color
processor is created before the main drawing function, the context could
occasionally be non-current causing its creation to fail. Subsequently trying
to use that color processor would trigger a segfault. This commit addresses that
by always making the context current before creating the color processor shader.
We don't develop with MSVC, we only use it for Windows builds so constantly
having to synchronize the warnings between it and GCC seems like a waste of
time.
Minor optimization, now that the FootageViewer's nodes are
connected/disconnected as part of the process, the second call to invalidate
is unnecessary and will only serve to re-invalidate actually valid cache data.
Fixes bug where random/uninitialzed audio values may appear in some
circumstances.
Also switches swr_convert_frame to swr_convert for a small
optimization/improvement, no need to use AVFrame struct when we're only
interested in samples.
Fixed bug where code erroneously multipled by full channel height. This is an
incorrect assumption since the full range of -1.0 to 1.0 is 2.0 which means the
difference needs to be halfed to create a range from 0.0 to 1.0.
Addresses a flaw where if the user changed the OCIO "display", Olive wouldn't
check whether the currently selected "view" still existed in the new display
or not which would create an invalid color processor if not. This commit now
checks whether the new display contains the current view, and sets the default
view for the new display if not.
Should address any XML parsing issues and allows for simpler, more maintainable
code. Should also address a crash that could occur when pasting nodes that had
inputs that weren't copied.