FFmpeg by default decodes VP8/VP9 via its internal encoders, however
those internal encoders do not support alpha. Encoded alpha is stored
via meta/side data in the container, so the only way to decode it
properly is via forcing FFmpeg to use libvpx for decoding.
Captions do something unusual with encoder packets: they reallocate them
due to appending extra h.264 data. Due to the way allocations are
handled with core encoder packets (they now store a reference in their
data), instead of modifying the encoder data directly, create a new
encoder packet instead and release the old packet.
Allows generating captions via the windows speech recognition API
(SAPI).
This is currently marked as experimental due to speech recognition
technology still being less than ideal. Speech recognition technology
in general is probably never going to be anywhere near perfect.
Microsoft's speech recognition in particular requires a bit of training
via the windows speech recognition tool to ensure it can dictate better.
Clear speech with a good mic is recognized fairly well, but casual
speech and/or speaking with a poor microphone will have some significant
issues. Captions can often be way off when speaking casually rather
than with clear diction.
When the C header circlebuf.h is used from a C++ source file, this
implicit cast from void to uint8_t* will cause an error unless changed
to an explicit cast.
If the backbuffer count is larger than 3, it could still try to assign
backbuffers to pointers beyond the variable's array size when calling
swap->GetBuffer.
Use a d3d9 device and allocator to encode in QSV.
This fixes a random crash that could only happen on Windows 7. The QSV
Deviced returned a DEVICE_FAILURE after a random amount of time with the
old method.
This fix is totally based on Shinck's QSVHelper.exe patch for OBS
Classic (see
https://obsproject.com/forum/threads/0-633b-qsvhelper-exe-was-killed-encode-failed.19230/page-3#post-161984
for more information)
This is more like a proof of concept, but that fix is currently stable
and tested more than 50 hours, with a single session of +14 hours.
That commit doesn't respect all OBS Guidelines. It is currently
recommended to wait for a more "cleaner" implementation.
Due to using FindWindowEx to search for certain windows, certain windows
will show up that aren't usable/capturable. Prevent these windows from
showing up in the window lists.
For some unknown reason, GetWindow will not traverse the entire window
tree. It could be due to Microsoft purposely hiding certain UWP
windows, though the reason is unknown. For some equally unknown reason
FindWindowEx does work in its place.
This fixes the issue of not being able to find/capture certain windows,
such as halo 5: forge.
D3D12 capture does not take in to account when multiple backbuffers are
in used. With previous versions of Direct3D there was no need to do
this, but with D3D12 you must explicitly capture each specific
backbuffer currently in use.