The rendering code here was one of the older code bases, which was riddled with bugs and leaks. The new code doesn't look pretty, but it works for the time being until a better solution is found or made. It should be able to handle HDR inputs now, but it may not be completely correct yet. This also fixes the double-free bug.
As an additional improvement, I've moved the allocation of the effect to a shared class which should reduce the memory usage slightly when multiple effects are in play. And now selecting nothing selects the filter target itself without infinitely adding references to the filter. Good enough in my eyes.
Fixes#819
* New translations en-US.ini (Danish)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Japanese)
It seems to be possible to encode with a different framerate than what libOBS is configured for. While technically any framerate appears to be possible, it is currently limited to integer fractions only in order to make the implementation much easier. Integer fractions only require skipping N frames and multiplying the denominator by N, where N is the configured integer. For sanity reasons, the limit of N is currently 10.
This allows power users to split their streaming and recording framerates with relative ease, and opt for things such as:
- 30 FPS (1/4) streaming with 120 FPS (1/1) recording.
- 30 FPS (1/10) streaming with 300 FPS (1/1) recording.
- 30 FPS (1/10) streaming with 100 FPS (1/3) recording.
- and so on.
While some of these combinations are just stupid, they are now available to power users.
* New translations en-US.ini (Russian)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Danish)
* New translations en-US.ini (French)
* New translations en-US.ini (French)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Ukrainian)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Chinese Traditional)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (French)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Czech)
* New translations en-US.ini (German)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Swedish)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Thai)
To ensure better stability of future releases, we need to adopt multiple stages in the release cycle. As we already label Alpha, Beta, Candidate and Stable differently, simply adopting this classification system already does everything for us. This also allows us to maintain compatibility with the existing system, while offering something new entirely.
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Bosnian)
* New translations en-US.ini (Bulgarian)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Chinese Traditional, Hong Kong)
* New translations en-US.ini (Chinese Traditional)
* New translations en-US.ini (Croatian)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Danish)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (English, Australia)
* New translations en-US.ini (English, Canada)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Estonian)
* New translations en-US.ini (Faroese)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (French)
* New translations en-US.ini (German)
* New translations en-US.ini (Greek)
* New translations en-US.ini (Hebrew)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Icelandic)
* New translations en-US.ini (Indonesian)
* New translations en-US.ini (Irish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Mongolian)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Persian)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Serbo-Croatian)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Swedish)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Ukrainian)
* New translations en-US.ini (Vietnamese)
When FFmpeg Encoders was originally written, FFmpeg 4.2 was still new and OBS Studio did not seem to want to update to anything newer for a while. This led to code being fine-tuned for FFmpeg 4.2, which stops working the moment OBS Studio upgrades FFmpeg. This removes the dependency on FFmpeg 4.2 hopefully, and allows using newer FFmpeg versions - or perhaps even older versions.
Additionally the nonsensical behavior of the Target Quality slider was fixed. It is now from 0 to 51, instead of from 0 to 100, and as such matches FFmpeg exactly.
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Chinese Traditional)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (German)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (French)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (German)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (German)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Swedish)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (French)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Polish)
Implements File, Source and Enumeration type for Texture shader inputs, completing the initial Shader implementation.
Related: #5
Co-authored-by: Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
Originally intended to be an experiment with no future, it turned out to be very popular with streamers that move a lot. In the end it was popular enough that NVIDIA added their own variant to their Broadcast software, which works decently enough. Unfortunately my wrapper code around the library was written very poorly, so it didn't take long for it to break out of nowhere.
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Croatian)
* New translations en-US.ini (Ukrainian)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Chinese Traditional)
* New translations en-US.ini (Vietnamese)
* New translations en-US.ini (Icelandic)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Estonian)
* New translations en-US.ini (Russian)
* New translations en-US.ini (English, Australia)
* New translations en-US.ini (English, Canada)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Faroese)
* New translations en-US.ini (Chinese Traditional, Hong Kong)
* New translations en-US.ini (Bosnian)
* New translations en-US.ini (Sinhala)
* New translations en-US.ini (Serbo-Croatian)
* New translations en-US.ini (Swedish)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (French)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Arabic)
* New translations en-US.ini (Bulgarian)
* New translations en-US.ini (Czech)
* New translations en-US.ini (Danish)
* New translations en-US.ini (German)
* New translations en-US.ini (Greek)
* New translations en-US.ini (Irish)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Hebrew)
* New translations en-US.ini (Hungarian)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Korean)
* New translations en-US.ini (Mongolian)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (Indonesian)
* New translations en-US.ini (French)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (French)
* New translations en-US.ini (Turkish)
* New translations en-US.ini (Chinese Simplified)
* New translations en-US.ini (Portuguese, Brazilian)
* New translations en-US.ini (Thai)
* New translations en-US.ini (Russian)
* New translations en-US.ini (English, United Kingdom)
* New translations en-US.ini (Portuguese)
* New translations en-US.ini (Romanian)
* New translations en-US.ini (Finnish)
* New translations en-US.ini (French)
* New translations en-US.ini (Spanish)
* New translations en-US.ini (Czech)
* New translations en-US.ini (German)
* New translations en-US.ini (Polish)
* New translations en-US.ini (Italian)
* New translations en-US.ini (Japanese)
* New translations en-US.ini (Dutch)
* New translations en-US.ini (Norwegian)
* New translations en-US.ini (French)
* New translations en-US.ini (Russian)
* New translations en-US.ini (Polish)
* New translations en-US.ini (French)
* New translations en-US.ini (Russian)
* New translations en-US.ini (French)
* New translations en-US.ini (German)
'Perspective' and 'Orthographic' work great if you know what the parameters were to generate the exact object position, but what if you don't know them? That is where 'Corner Pin' comes in! With it you can specify the exact location of every corner down to the micro-pixel, instead of fiddling with parameters.
Fixes#565