Improved Threading, better Frame Submission and more
The encoder is now capable of delayed or immediate threading (using fixed latency) which allows for a much better performance and works better with older VFW encoders that assume they are being used for transcoding instead of live-encoding. In addition to the above, the MPEG-2 rewrite code for Matrox MPEG-2 encoders is completely done now and will fix up the bitstream Matroxs encoder sends out to be mostly correct, allowing for better seeking. The last change this encompasses is the removal of the need to flip a RGBA frame to BGRA. This doesn't break any support and should work better with what we have. This exposed several bugs in OBS Studio: - Color Range, Space & Format are ignored by OBS Studio if set by the encoder. - The ffmpeg-mux process freezes when writing the header for a correct MPEG-2 stream that doesn't match what OBS thinks it should be. ffmpeg itself has no issues writing this header, so this is an OBS Studio issue. And exposed the following bugs in Matrox VFW: - The MPEG-2 bitstream is written as interlaced Top-Field-First instead of Progressive - the content itself is Progressive. - The encoder ignores FastCompress mode and just behaves identically in either mode. - Some parameters that should be set are not being set by Matrox (extended Framerate for example).
This commit is contained in:
+20
-16
@@ -20,26 +20,30 @@
|
||||
#endif
|
||||
|
||||
// Plugin
|
||||
#define PLUGIN_NAME "Video For Windows"
|
||||
#define PLUGIN_NAME "Video For Windows"
|
||||
#include "Version.h"
|
||||
|
||||
// Logging
|
||||
#define PLOG(level, ...) blog(level, "[VFW] " __VA_ARGS__);
|
||||
#define PLOG_ERROR(...) PLOG(LOG_ERROR, __VA_ARGS__)
|
||||
#define PLOG_WARNING(...) PLOG(LOG_WARNING, __VA_ARGS__)
|
||||
#define PLOG_INFO(...) PLOG(LOG_INFO, __VA_ARGS__)
|
||||
#define PLOG_DEBUG(...) PLOG(LOG_DEBUG, __VA_ARGS__)
|
||||
#define PLOG(level, ...) blog(level, "[VFW] " __VA_ARGS__);
|
||||
#define PLOG_ERROR(...) PLOG(LOG_ERROR, __VA_ARGS__)
|
||||
#define PLOG_WARNING(...) PLOG(LOG_WARNING, __VA_ARGS__)
|
||||
#define PLOG_INFO(...) PLOG(LOG_INFO, __VA_ARGS__)
|
||||
#define PLOG_DEBUG(...) PLOG(LOG_DEBUG, __VA_ARGS__)
|
||||
|
||||
// Properties
|
||||
#define PROP_BITRATE "Bitrate"
|
||||
#define PROP_QUALITY "Quality"
|
||||
#define PROP_INTERVAL_TYPE "IntervalType"
|
||||
#define PROP_KEYFRAME_INTERVAL "KeyframeInterval"
|
||||
#define PROP_FORCE_KEYFRAMES "ForceKeyframes"
|
||||
#define PROP_CONFIGURE "Configure"
|
||||
#define PROP_BITRATE "Bitrate"
|
||||
#define PROP_QUALITY "Quality"
|
||||
#define PROP_INTERVAL_TYPE "IntervalType"
|
||||
#define PROP_KEYFRAME_INTERVAL "KeyframeInterval"
|
||||
#define PROP_KEYFRAME_INTERVAL2 "KeyframeInterval2"
|
||||
#define PROP_FORCE_KEYFRAMES "ForceKeyframes"
|
||||
#define PROP_MODE "Mode"
|
||||
#define PROP_MODE_NORMAL "Mode.Normal"
|
||||
#define PROP_MODE_TEMPORAL "Mode.Temporal"
|
||||
#define PROP_MODE_SEQUENTIAL "Mode.Sequential"
|
||||
|
||||
#define PROP_CONFIGURE "Configure"
|
||||
#define PROP_MODE_NORMAL "Mode.Normal"
|
||||
#define PROP_MODE_TEMPORAL "Mode.Temporal"
|
||||
#define PROP_MODE_SEQUENTIAL "Mode.Sequential"
|
||||
#define PROP_ICMODE "ICMode"
|
||||
#define PROP_ICMODE_COMPRESS "ICMode.Normal"
|
||||
#define PROP_ICMODE_FASTCOMPRESS "ICMode.Fast"
|
||||
#define PROP_LATENCY "Latency"
|
||||
#define PROP_ABOUT "About"
|
||||
Reference in New Issue
Block a user