Pass down texture/host memory choice for fallback encoders. During
fallback we don't (can't) initialize a shared texture pool and should
use the regular host memory path.
This fixes usage on multi-GPU systems, and enables texture encoders.
Calling `set_higher_ts` before offsets are known pollutes
`highest_video_ts` with timestamps that are out of range of actual
timestamps. They're generally somewhere high above 0 until an
offset for all streams is found, where they are then reset to 0 or
slightly below 0 in the presence of b-frames.
`highest_video_ts` also needs to start below 0 for the same reason.
Even with timestamps being reset to close to 0, b-frames will
cause initial DTS to drop below 0, thus we need a value that should
"always" be below any "real" timestamps observed.
`highest_video_ts` tracking now only starts once all input streams
are ready, and is computed based on all buffered packets at that
point.
We had these advances laying around but didn't use them here. Loading
the glyphs from the fonts is extremely slow, so let's avoid that since
we take the time to cache these already.
NV12 and P010 device functions were not exported on all platforms.
Windows was exporting from C files instead. After CMake 3.0 we started
hiding symbols and resolution failed.
These comments do not actually match the color values here:
* (0xff, 0xff, 0xff) is white
* (0xcc, 0xcc, 0xcc) is light gray
Instead of just fixing the comments, use the values from the System
theme and also correct the comments.
Effectively revert 743117f080.
This action began failing recently. Updating the Dockerfile per the
action's repo did not fix this. Unpinning Sphinx fixed it.
We now support the new, modern CMake path on all platforms. Encourage
everyone to migrate by deprecating the legacy CMake path. The legacy
CMake path will be removed in a future update.
When a capture card or video capture source is contained in the scene
collection's list of sources, but the source is not a part of any
scene, it will be first created but then destroyed again in a deferred
fashion (as it has no strong references to it anymore).
This will happen before the capture source has finished its own
initialization, hence why the source pointer can be invalid at that
point.
Not strictly necessary, and does not fix any bug. This just corrects a
nitpick that technically audio encoder packets are start points, but
that they aren't being labeled accordingly as keyframes.