Commit Graph
67 Commits
Author SHA1 Message Date
itsmattkc 3d3e40d431 minor code cleanup and fixed opengl thread desync issue 2019-12-11 03:20:23 +11:00
itsmattkc 3f76f4cb00 correctly identify openimageio data as alpha associated
Also added note for potential concern regarding alpha association.
2019-12-09 23:45:16 +11:00
itsmattkc 8866428589 removed unnecessary debug line in ffmpegdecoder 2019-11-30 02:54:49 +11:00
itsmattkc 1a54d18862 wrote sample rate conform code into ffmpegdecoder
Audio no longer needs to be the same format/sample rate to play correctly. This
should be the last step to making audio work correctly (minus several
optimizations still yet to be done).
2019-11-30 02:52:31 +11:00
itsmattkc c19cf8f8e6 fixed issue in waveinput where the format would be detected incorrectly
Floating point detection was backwards causing float-based audio to be
detected as integer and vice versa (for >32-bit formats)
2019-11-30 02:49:19 +11:00
itsmattkc e5e68c8947 added parameter access to waveoutput class 2019-11-30 02:48:54 +11:00
itsmattkc a71c03b1ed conformed oiiodecoder to new retrieve functions 2019-11-30 02:48:14 +11:00
itsmattkc 1a9ae53181 separated decoder retrieve functions for video and audio
It became increasingly clear that video and audio retrieval require different
parameters so it started to make sense to separate these functions out.
2019-11-30 02:46:49 +11:00
itsmattkc 16f4ec8468 began audio conform code in ffmpegdecoder
For accuracy, whenever we need to perform an audio resample, we need to do it
in advance. This is in a process called "conforming" and this commit introduces
the framework by which the decoder can automatically conform an audio stream
to arbitrary parameters for accurate rendering.
2019-11-29 02:10:28 +11:00
itsmattkc 755b4233ff fixed bug where a timecode of 0 wouldn't always return the first frame
Not all media starts with a timecode of 0 and the Decoder class needs to
handle such a situation. This commit corrects that.
2019-11-29 01:35:53 +11:00
itsmattkc d5b1768d70 reimplement Q_DISABLE_COPY_MOVE for full compatibility with versions < 5.13
I was under the impression Q_DISABLE_COPY_MOVE was a much older function than
it is. Since we historically target 5.6 and these functions are small
convenience functions, I just implemented them in the actual codebase.
2019-11-24 14:57:57 +09:00
itsmattkc ba191399ff add qtglobal header to decoder class
This may be required for resolving Qt functions in some situations.
2019-11-24 14:39:32 +09:00
itsmattkc 59f658f73a removed old retrieve code from ffmpegdecoder
Code cleanup
2019-11-24 02:04:37 +09:00
itsmattkc 60a27961c2 cache frames alongside the frame index
Decoder will now pre-render/decode frames in advance of needing
them
2019-11-17 12:29:53 +09:00
itsmattkc a9660201f1 miscellaneous other changes to make audio rendering work
Many changes were made throughout the codebase to support audio, these are
most of the small changes necessary.

The audio support still is not perfect. I still need to write in resampling
support. After that it should work correctly with all audio types.
2019-11-15 13:57:49 +09:00
itsmattkc 336b3a8e05 added support for returning audio in the FFmpegDecoder
FFmpeg decoder now indexes and returns audio as expected
2019-11-15 13:53:58 +09:00
itsmattkc 9a44e656b5 added simple wave classes
To assist the input/output of PCM data, we use the fairly straight-forward
WAVE format. These classes simplify the input and output of such data.
2019-11-15 13:49:40 +09:00
itsmattkc 663ae56ac4 more coherent render threading for now
Once again, conceptually this system should work, however it does not seem to
be the most efficient and it wouldn't surprise me if the multithreading was
eventually upgraded to an even more coherent system one day. However for
"core principles" this should be fairly decent.
2019-11-03 04:05:43 +11:00
itsmattkc 133dab1666 some code cleanup
Removal of translations around debug messages since these waste cycles and are
likely not useful
2019-10-31 21:45:53 +11:00
itsmattkc 77bcb70dac started porting renderer to new portable form 2019-10-31 19:14:58 +11:00
itsmattkc 3fb53586d4 updated decoder debug messages 2019-10-26 15:33:25 +11:00
itsmattkc 076f2699c5 implemented audio decoder and some of the audio node functionality 2019-10-24 21:33:46 +11:00
itsmattkc af702835da forked MediaInput into two derived classes for video and audio
Rather than convoluting the MediaInput node, te MediaInput is now an abstract
base class that provides access to a Decoder and derived classes are
responsible for handling it
2019-10-24 17:03:33 +11:00
itsmattkc 2fdf78df4a implemented preliminary pre-cacher for audio
FFmpegDecoder now implements an "indexer" for audio, which actually just
extracts the raw PCM audio from an audio codec and saves it to disk
2019-10-24 16:36:26 +11:00
itsmattkc ce20dc159e correct duration/rate in project explorer 2019-09-26 16:00:21 +10:00
itsmattkc 9fa22938b9 work towards making timeline actions all undoable 2019-09-23 23:00:15 +10:00
itsmattkc 1207e180ec fix for transport streams with no duration 2019-09-17 13:40:23 +10:00
itsmattkc 197cf86382 don't allow ffmpeg through oiio 2019-09-14 02:52:33 +10:00
itsmattkc 69ca2b2a50 fixed bug where an unindexed video would cache a blank first frame 2019-09-10 19:12:19 +10:00
itsmattkc 4c40475a6c fixed flicker issue when previewing some media 2019-09-10 15:55:59 +10:00
itsmattkc ba7a10177f fixed various caching issues when rapidly changing values 2019-09-09 04:07:51 +10:00
itsmattkc faa7f798ff more or less completed OIIO decoder 2019-09-05 01:15:50 +10:00
itsmattkc 695adea562 added OIIO decoder 2019-09-05 00:03:26 +10:00
itsmattkc e87ed9dd3d finished hashing algorithm for cache 2019-09-02 19:51:31 +10:00
itsmattkc b563b9e783 began node hashing for improved cache 2019-09-02 12:06:24 +10:00
itsmattkc b9ce02a0ec separated setting time and processing node functions 2019-08-27 23:38:24 +10:00
itsmattkc 46ea071b99 mild decoder adjustment 2019-08-26 15:15:20 +10:00
itsmattkc 438e7081f9 foundations for background caching 2019-08-24 22:16:01 +10:00
itsmattkc c0f6ee534a minor code cleanups 2019-08-09 10:43:14 +10:00
itsmattkc f26eea1620 moved more objects to shared ptrs 2019-08-09 08:21:54 +10:00
itsmattkc dfd33310a2 use qvector instead of raw array 2019-08-09 07:49:17 +10:00
itsmattkc 7a858aeca3 moved decoders to shared ptrs 2019-08-09 07:46:53 +10:00
itsmattkc 6833b18829 merged probe functions into decoder class 2019-08-08 17:22:26 +10:00
itsmattkc c6dfab4caf use decoder ID in media node 2019-08-08 15:52:53 +10:00
itsmattkc f3b60369aa use IDs for multiple decoders 2019-08-08 15:38:58 +10:00
itsmattkc 8730da4b43 improved decoder documentation and fixed error with >8bppc media 2019-08-08 14:02:12 +10:00
itsmattkc 6708eca0c1 renamed ffmpeg decoder function names 2019-08-08 13:13:01 +10:00
itsmattkc 410c1ff06c cache frame indexes to disk 2019-08-07 12:14:48 +10:00
itsmattkc 1138600f37 indexing prototype 2019-08-06 09:34:37 +10:00
itsmattkc 73a32ad9cd use node graph time to get frame 2019-08-06 08:41:27 +10:00