itsmattkc
fb1cf1edaf
ffmpegencoder: improvements to resampling
...
Updates the AVFrame's nb_samples field to the amount of samples retrieved from
swresample so it doesn't encode more or less samples than it has.
2020-04-05 00:12:23 +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
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
7328a813f9
ffmpegencoder: fixed bug that failed to flush the audio encoder
...
For some reason, when the encoder closed it only flushed the video encoder and
not the audio encoder. Now it does both.
2020-03-31 12:09:43 +11:00
itsmattkc
51f02ea01b
viewer: allow switching open sequences
2020-03-21 22:18:17 +11:00
itsmattkc
d4d969872f
ffmpegdecoder: if data is less than duration, fill remainder with 0s
...
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.
2020-03-18 19:05:02 +11:00
itsmattkc
4bc5378116
ffmpegencoder: explicit cast from int64_t to int
2020-03-15 20:08:56 +11:00
itsmattkc
9e8a384f14
encoder/exportdialog: add compression options for H264 exporting
2020-03-03 01:47:04 +11:00
itsmattkc
de5955b403
oiiodecoder: implemented rudimentary image sequence support
2020-03-02 14:06:44 +11:00
itsmattkc
597f50fa37
ffmpeg: print more debug information, less useless information
2020-02-29 17:22:19 +11:00
itsmattkc
139c14f941
footage: fixed appearance of some metadata, particularly audio metadata
2020-02-29 17:19:47 +11:00
itsmattkc
adcab06d4e
fixed faulty while loop break
2020-02-27 18:15:55 +11:00
itsmattkc
d87b4fde8c
renderer/decoder: use divider at the footage level
...
Optimizes rendering if a divider is being used.
2020-02-27 15:47:08 +11:00
itsmattkc
02ce48d0c6
various: pixel optimizations
...
Several things are accomplished in this commit, including:
- Use OIIO instead of our own functions for pixel format conversions
(cleaner code/less for us to maintain)
- Fold all PixelService functions into the PixelFormat class
(cleaner code)
- Moved OpenGL pixel definitions to OpenGL classes and out of the
global classes.
- Add support for RGB buffers as well as RGBA (optimization)
2020-02-27 13:54:38 +11:00
itsmattkc
0fbffc9b8f
ffmpegdecoder: mild code cleanup
2020-02-27 01:05:22 +11:00
itsmattkc
faffbb0f38
renderer: re-use already created textures if the images are known not to change
2020-02-25 14:57:49 +11:00
itsmattkc
6239107670
ffmpegdecoder: run timer in main thread at all times
2020-02-24 11:56:48 +11:00
itsmattkc
412ea9cede
ffmpegdecoder: fixed bug with frame identification
2020-02-24 02:01:42 +11:00
itsmattkc
8f5a92af9c
ffmpegframecache: removed unnecessary debug line
2020-02-24 02:01:21 +11:00
itsmattkc
6956e159e6
ffmpegdecoder: remove debug messages
2020-02-23 22:18:59 +11:00
itsmattkc
d3bc12b2f5
ffmpegdecoder: use stricted memory interval
2020-02-23 22:18:10 +11:00
itsmattkc
c7cb227abb
ffmpegdecoder: fixed memory leak introduced in previous commit
2020-02-23 21:24:07 +11:00
itsmattkc
b1cb8489df
memory: try caching frameptrs instead of avframes so we have more control
2020-02-23 21:20:33 +11:00
itsmattkc
48cdb3a6dd
memorymanager: rewrote entire memory management system
2020-02-23 20:29:51 +11:00
itsmattkc
547990b920
ffmpegdecoder/memorymanager: fixed race condition in garbage collection
2020-02-21 23:15:09 +11:00
itsmattkc
b0c9711974
ffmpegdecoder: fixed double mutex lock
...
Error() would call Close() getting stuck in a double mutex lock that could
stall workers. This commit fixes that.
2020-02-21 20:04:36 +11:00
itsmattkc
dcedf12dbe
ffmpegdecoder: stop clear_timer on deconstruction
2020-02-21 14:25:27 +11:00
itsmattkc
e74c4c2d1c
global: implemented rudimentary memory manager to use available system memory
...
without forcing the OS to page swap
2020-02-21 14:20:57 +11:00
itsmattkc
7797bf4971
ffmpegdecoder: added helper functions for memory handling
2020-02-21 01:18:21 +11:00
itsmattkc
4532c3884e
ffmpegdecoder: fixed cast issue on gcc
2020-02-21 00:21:31 +11:00
itsmattkc
2299fda73a
ffmpegdecoder: handle media that starts at a non-zero pts
2020-02-21 00:09:45 +11:00
itsmattkc
162c91ec52
ffmpegdecoder: allow probe duration pickup to be cancelled
2020-02-20 23:54:40 +11:00
itsmattkc
bc2be7a2a4
ffmpegdecoder: use simpler loop to find duration if the container doesn't
...
provide one
2020-02-20 23:52:23 +11:00
itsmattkc
73e639757e
ffmpegdecoder: fix bug that slowed down low fps footage unnecessarily
2020-02-20 23:34:49 +11:00
itsmattkc
e373c40853
ffmpegdecoder: handle eof in retrieve
2020-02-20 16:50:03 +11:00
itsmattkc
2145efa2a0
decoder/renderer: use memory cache and single decoder to optimize frames for
...
cycles
2020-02-20 15:32:12 +11:00
itsmattkc
71048f40a8
ffmpegdecoder: removed all old code to clean up
2020-02-20 02:22:59 +11:00
itsmattkc
95ca19d547
ffmpegdecoder: began work on the index process working in tandem with the
...
retrieval process
2020-02-20 00:06:20 +11:00
itsmattkc
08e6c6ffc0
decoder: move conform function to base class
...
There's no reason the Conform() function can't live in the base class since its
functionality isn't necessarily specific to FFmpeg.
2020-02-19 12:28:37 +11:00
itsmattkc
53551246da
decoder: signal indexing progress
...
Better UI interactions, actually shows the progress of the index function in
the task manager now.
2020-02-19 12:19:42 +11:00
itsmattkc
03bdf01357
decoder/renderer: no longer index automatically as part of the retrieve
...
functions
Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
2020-02-19 11:44:29 +11:00
itsmattkc
22046535ca
various: added hooks so that various lengthy functions could be cancelled from another thread
2020-02-17 02:10:12 +11:00
itsmattkc
35ab379e9f
ffmpegdecoder: updated comment to better describe error handling
2020-02-16 10:28:18 +11:00
itsmattkc
cdfba418fc
ffmpegdecoder: added fixme comments for errors that aren't handled
2020-02-16 00:45:36 +11:00
itsmattkc
3efbcc28ef
ffmpegdecoder: improved index reliability
2020-02-15 23:39:33 +11:00
itsmattkc
f5de19dd6b
ffmpeg: allow decoders immediate access to frames even while indexing
...
Previously, FFmpeg decoders needed to wait for the initial index to finish
before they could retrieve frames. Now they can retrieve frames while the
index is occurring, provided the appropriate frame has already been indexed (if
not, the retrieve will need to wait still).
2020-02-15 13:57:29 +11:00
itsmattkc
9de164cfba
ffmpeg: disable multithreading in favor of our own
...
Our renderer system is already heavily multithreaded and prioritized to keep the
main thread active. As a result, FFmpeg receives little benefits from being
multithreaded and is actually detrimental to our main thread as it hasn't been
prioritized to keep the main thread as active as possible.
2020-02-14 10:08:19 +11:00
itsmattkc
149d125e39
msvc: updated code for higher warning level
2020-01-24 12:00:55 +11:00
itsmattkc
c0300371c7
ffmpegdecoder: fixed flawed debug line
2020-01-20 04:58:39 +11:00
itsmattkc
4697b98980
fixed gcc compile issues
2020-01-19 20:39:48 +11:00