Commit Graph
320 Commits
Author SHA1 Message Date
itsmattkc bf787b1d2f projectproperties: updated to assume empty config is default config 2020-04-22 14:04:10 +10:00
itsmattkc 8272f482d9 colormanager: temporarily hardcoding default input color space
The first input color space is "linear" which is very rare for footage to be
in. For simplicity, it'll default to sRGB for now.
2020-04-22 13:44:18 +10:00
itsmattkc d15b08c181 sampleformat: fixed erroneous constant 2020-04-22 13:10:48 +10:00
itsmattkc ccb02d30aa colormanager: implement default config 2020-04-22 05:08:33 +10:00
itsmattkc afa3d3babe audiomonitor: rewrote to handle audio independently of output
This gives the AudioMonitor more control over its own timing and appearance
and also reduces the load on the audio processing threads.
2020-04-22 01:09:49 +10:00
itsmattkc 38fcad6a3f cache: fixed signalling issue where changing default input didn't update the cache 2020-04-21 23:48:26 +10:00
itsmattkc 05eae1e28a audio: don't use a shared QIODevice
This system was kind of janky anyway. It makes more sense ultimately for the
audio management classes to contain the file handle rather than the renderer.
2020-04-21 17:55:55 +10:00
itsmattkc 0ced48d4df histogram: implemented color management 2020-04-21 01:59:06 +10:00
itsmattkc 707e9d5522 project: fixed bug where ocio config wouldn't automatically load from a saved project 2020-04-18 17:55:23 +10:00
itsmattkc d3b71e6576 nodes: color management when setting color parameters is now preserved 2020-04-18 17:43:37 +10:00
itsmattkc d8e0a31375 color: when converting to a QColor for UI, clamp to 0.0-1.0 2020-04-17 01:17:14 +10:00
itsmattkc 2f80be437a node: fixed issue with "taking" values from input tables
As opposed to simply leaving all values in the table, nodes can now "take"
values that they use to free up memory (e.g. "taking" input buffers if they're
used to produce an output buffer).

This is a fairly large change, expect regressions.
2020-04-16 23:12:05 +10:00
itsmattkc 32969d2403 colordialog: updated to show input/reference/display values 2020-04-15 18:11:46 +10:00
itsmattkc a0a7d106dc mathnode: implemented add/subtract/multiply/divide/power functions
Includes implementing combobox UI for the NodeParamViewWidgetBridge.
2020-04-15 01:52:24 +10:00
itsmattkc 2eb03bf386 various: removed constructor.h include 2020-04-14 00:53:25 +10:00
itsmattkc aac47ba776 viewer: re-queue video renderer even when beyond the length
Ensures video renderer always renders where the playhead is.
2020-04-13 13:19:08 +10:00
itsmattkc fa16d2169b videorenderbackend: render sequentially rather than outwards 2020-04-12 02:11:55 +10:00
itsmattkc a8fbe686e2 openglrenderer: retrieve frame in each worker thread rather than in the proxy thread
Since we now have decoders in each thread, we can parallelize by retrieving
frames in each thread as well.
2020-04-11 17:37:00 +10:00
itsmattkc 0c3ce03348 renderer: use a dedicated decoder per thread 2020-04-11 13:18:31 +10:00
itsmattkc f5a9dee139 exportdialog: added elapsed/remaining time indicator 2020-04-08 01:48:03 +10:00
itsmattkc 78c592cf8d audiorenderer: fixed bug where conform signals would send corrupt re-cache time 2020-04-06 17:10:15 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc 6ea52e4123 audio renderer/timeline: pass through channel count of waveform visualizations 2020-04-05 19:59:14 +10:00
itsmattkc e3a8d32e4a audiorenderer: fill destination buffer with zeroes before copying samples over
Ensures no uninitialized values end up in the audio cache.
2020-04-05 13:29:04 +10:00
itsmattkc 92da0c220d exporter: wait for conforms/indexes when exporting audio
The audio rendering system uses an event-based mechanism where if audio needs
to be converted (i.e. to a different sample rate), it will create a conform
task and re-render that section again when the audio is ready. Unfortunately,
the export code didn't respect this and would start encoding audio once the
initial queue was done. This usually resulted in silent audio, but could also
result in "uninitialized" audio that would crash any float-based encoders
(e.g. AAC). Now we use a different signal that only emits once the queue is done
AND all conforms are done.
2020-04-05 00:13:26 +11:00
itsmattkc 626c50477c renderer: set null value on shader if no value was found in the table 2020-04-04 19:28:38 +11:00
itsmattkc c82ca3c716 audiorenderer: don't memcpy if the copy length is zero 2020-04-04 17:25:31 +11:00
itsmattkc 615e227f9a renderer: convert footage frames to reference pixel format
Due to an oversight, incoming footage frames were NOT converted to the
working pixel format (usually half or float). For most frames, this meant the
OCIO conversion would occur on frames while they were still in their source
format (usually either RGB8 or RGB16). This leads to rounding error
inaccuracies, but even worse GLSL will clamp integer textures to 1.0 potentially
losing a lot of data.

While later nodes would correctly convert to the appropriate format, by then it
would be too late. This commit corrects this issue, converting the frames to
float during the OCIO shader pass.
2020-04-04 14:15:18 +11:00
itsmattkc b2090c113c videorenderingparams: added divider to constructor that doesn't have mode or timebase 2020-04-04 14:09:46 +11:00
itsmattkc 3ba31f9d5f openglframebuffer: fixed erroneous error message 2020-04-04 14:09:24 +11:00
itsmattkc dfb00d9f15 pixelformat: added convenience function for whether a format is float or not 2020-04-04 13:46:12 +11:00
itsmattkc 666bd64943 pixelformat: fixed regression that broke pixel format conversion
Affected all exports.
2020-04-04 12:45:14 +11:00
itsmattkc 07d1123978 renderer: disassociate requires float as well, so we may as well do the version before 2020-04-04 12:24:36 +11:00
itsmattkc 30be89ac2d color: QDebug implementation
Makes debugging color values easier.
2020-04-04 04:18:06 +11:00
itsmattkc ce88da80ef openglproxy: for shader inputs, use our new Color class instead of QColor 2020-04-04 04:15:57 +11:00
itsmattkc e1ca5f2f82 various: removed hardcoded OCIO::ROLE_SCENE_LINEAR to allow for a configurable reference space 2020-04-03 01:30:47 +11:00
itsmattkc 552163320c colorpicker: implemented color management
Also moves some items to ColorManager from Project for better accessibility and
re-uses some widgets in ExportDialog for improved code.
2020-04-03 01:23:08 +11:00
itsmattkc 4d0b8f18e2 colordialog/picker/wheel: finished color picker UI
Dialog is still unmanaged, but that's the only remaining step.
2020-04-02 19:26:30 +11:00
itsmattkc a2ed1035da Merge branch 'master' into colorpicker 2020-04-02 15:30:55 +11:00
itsmattkc f3290003be colordialog/wheel/gradient: implemented basic UI components for color picking 2020-04-02 13:02:30 +11:00
itsmattkc 5e609882d8 color: fixed oiio incompatibility
While developing, we used a function that only exists in OpenImageIO 2.1.x+.
Fortunately however, it seems to have simply existed with a different name in
earlier versions so we can maintain compatibility with 1.6+.
2020-04-02 12:47:05 +11:00
itsmattkc 6ea6dd810e pixelsampler: added pixel sampler panel
When visible, this panel will show the current reference and display transformed
color under the cursor of any viewer.
2020-04-01 16:57:10 +11:00
itsmattkc 1363d2b94c mathnode: expanded math node
Implemented handling of various different types.
2020-04-01 05:21:50 +11:00
itsmattkc 74e36bc99d audiorenderworker: fixed segfault in audiorenderworker
Switches memset/memcpy pointers to a char* pointer specifically to work on the
byte level rather than the float* level.
2020-04-01 05:20:56 +11:00
itsmattkc b562a84e00 videorenderparams: don't consider a null timebase invalid
Not all items that use VideoRenderParams need a timebase much like they don't
all need a render mode.
2020-04-01 05:19:04 +11:00
itsmattkc 6f0d72c05d renderer: switched audio rendering over to planar buffers
While planar audio cannot be used for playback, it's much easier for processing.
This should lead to cleaner and easier to write code in the future.
2020-03-31 18:01:20 +11:00
itsmattkc 8413886c17 audiobackend: fixed bug that sometimes extended the
While we implement an audio cache "truncate" function when the sequence length
changes, the render functions also have the ability to extend it. This is fine,
but if truncation happened while workers were caching, it could truncate and
then extend beyond the length of the sequence. This commit changes the worker
extend function to only extend as much as the length, therefore not undoing the
truncation.
2020-03-31 13:56:02 +11:00
itsmattkc 9603f90072 ffmpegencoder: added range support to audio encoding
There isn't UI for this yet, but sending a time range to the encoder will now
encode just that range of audio.
2020-03-31 13:55:57 +11:00
itsmattkc 51c834f375 exporter: start debug timer before EncodeFrame() call
Minor code path improvement. Since EncodeFrame() will try to stop the debug
timer if the encode is finished, it doesn't make sense to always start it
unconditionally after calling EncodeFrame().
2020-03-31 12:10:45 +11:00
itsmattkc 26d02e82ad exporter: fixed double-free 2020-03-31 11:50:23 +11:00