Commit Graph
298 Commits
Author SHA1 Message Date
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
itsmattkc 18c36155d7 Merge branch 'master' into mathnode 2020-03-31 02:39:46 +11:00
itsmattkc 2bda306866 timeline/various: implemented block copy/paste
Implemented the ability to copy/paste blocks/clips in the timeline. This did
require some large scale changes and reworking of the copy/paste system
introduced a few commits ago, but should be largely functional now.
2020-03-31 02:19:05 +11:00
itsmattkc 7100d00060 nodes: made changes to the node system to allow for context sensitive shader code
Primarily implemented for the math node so a new shader can be generated and
compiled based on what inputs the node is receiving.
2020-03-29 03:11:30 +11:00
itsmattkc f9fc27c6eb renderer: invalid cache when viewer node changes
Ensures frames get re-rendered rather than stuck on the previous viewer node.
2020-03-22 20:03:14 +11:00
itsmattkc bbb00029e9 Merge branch 'master' of https://github.com/olive-editor/olive 2020-03-19 12:22:10 +11:00
itsmattkc e5ac72fa9d Merge branch 'master' into typos 2020-03-19 12:16:09 +11:00
itsmattkc 7771bab5a0 audiobackend: truncate PCM cache size when the length is reduced 2020-03-18 19:08:18 +11:00
itsmattkc 79bc9594b9 audiorenderer: clear tasks waiting for conforms when their ranges are invalidated
Minor code optimization.
2020-03-18 15:49:29 +11:00
itsmattkc 50061e4e55 waveformview: show in/out points in waveformview
Moved drawing routines to the base class that is used by both TimeRuler
and WaveformView
2020-03-15 18:21:14 +11:00
itsmattkc 78baf7661f audiorenderer: split audio rendering up into chunks for better parallelism 2020-03-14 23:27:41 +11:00
itsmattkc 7f2dcc8200 waveformview: made UI seekable 2020-03-14 01:57:40 +11:00
itsmattkc 2ac6b601bf renderer: fixed segfault when no texture is generated 2020-03-13 17:03:27 +11:00
itsmattkc 9e4c79699e node: split off traversing functions from renderer for usage elsewhere
Fixes issue where Viewer node wouldn't pick up correct length if a tracks
weren't in use.
2020-03-13 15:31:15 +11:00
luz.paz 321e7d1606 Fix doxygen and misc. typos
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc 16b072fa98 various: allow users to override the start and end index of image sequences
Also includes various fixes to footage property setting/signalling.
2020-03-09 19:58:42 +11:00
itsmattkc f2d6d3b32c timeline/renderer: automatically update timeline view when a visual waveform
has updated
2020-03-07 02:44:15 +11:00
itsmattkc 3f043496f3 nodeparam: allowed for dynamic nodeparam property change to affect UI widgets
immediately
2020-03-07 02:16:48 +11:00
itsmattkc c75a0e8498 timeline/renderer: implemented basic waveform display support 2020-03-06 16:18:07 +11:00
itsmattkc 0f5cd40c45 exporter: add ability to cancel exports (including a confirm to cancel if the
user closes the dialog mid-export)
2020-03-03 02:37:18 +11:00
itsmattkc 644dd2df30 renderer: fixed bug that would hang exports after 1 x (cores) frames
were exported
2020-03-03 01:49:37 +11:00
itsmattkc 8825ff9953 exporter: print extra debugging information
Should be helpful for debugging any potential export hangs if there
are any in the future.
2020-03-03 01:48:38 +11:00
itsmattkc c44c73e376 renderer: handle null frame
Minor reliability improvement.
2020-03-02 14:42:20 +11:00