Separate the commonly used functions into service-ingest.c/h.
Split the Amazon IVS support out of the Twitch specific files
and into the new amazon-ivs.c/h files. This allows for clean
usage of `struct ingest` between the two services.
If the server URL is not an RTMP(S) URL, the protocol field becomes
required.
The output field becomes required on non-RTMP(S) services to keep
backward compatibility.
Also skip service if the protocol is not available.
This commit adds the stream key link URLs to services that have them
from UI/window-basic-auto-config.cpp and
UI/window-basic-settings-stream.cpp. This will enable querying these
values from services.json and remove service-specific code from UI code.
The bitrate matrix allows specifying maximum bitrate values based upon
resolution and framerate values. This allows more fine-tuned enforcement
of bitrate to prevent users from setting a bitrate that is less ideal
for their particular framerate and resolution combination.
(This commit also modifies rtmp-services and UI)
Changes the maximum resolution size to a resolution list, and splits the
maximum FPS to its own function.
(Note: ABI has not been modified because the last changes still haven't
been released yet, so it's safe to modify this as long as the changes
haven't been officially released)
(This commit also modifies rtmp-services)
Implements obs_service_get_max_bitrate, which allows retrieving the
maximum audio/video bitrates directly rather than being forced to use
the apply method. Makes it a bit easier to get the bitrate values.
(Jim) Allows the ability to get a link from the service's settings about
a specific service selection the user chooses and display it as a "More
Info" button that the user can click to find out more information about
that particular service.
This isn't particularly needed, as a service with multiple tracks won't
be using multiple tracks to begin with anyway. This might change later,
but for now just mark it deprecated.
This fixes ovewritting hidden "profile" setting in ffmpeg vaapi which is
a number and not a string. It also shouldnt be overwritten as it is
required on some AMD hardware for the encoder to work.
Code submissions have continually suffered from formatting
inconsistencies that constantly have to be addressed. Using
clang-format simplifies this by making code formatting more consistent,
and allows automation of the code formatting so that maintainers can
focus more on the code itself instead of code formatting.
Allows the ability for services to specify alternate or old names that
they used to have in the json service list so they can safely be renamed
seamlessly and use the proper service settings. This way, if a user is
using an older service in their configuration, it can still detect which
service it's supposed to be using and apply those service-specific
settings for that user.
Prevents services with special exception services from unintentionally
using the wrong server. There's no real reason to be doing this on
anything but Facebook at the moment anyway.
"Auto" is sort of a special use-case for certain services
(Twitch/Mixer), and the code recently added in be8ddc06a would
unintentionally override it. This would for example cause the "Auto"
setting on Twitch to set the user to use an Asia server unintentionally
because "auto" is not in the json file.