Certain services have custom server lits handling which I had forgotten
about, so although it would have been nice to have this refactor, we'll
have to live with relying on the plugin properties object directly for a
while.
This also reverts obsproject/obs-studio#6530 and
obsproject/obs-studio#6683 because that change depended on this
problematic refactor code.
This reverts commits:
f2e6122881,
bc80d0ca95,
050a29da1a,
22ffc04f73,
275e510aad,
2fa5ffe4df.
This commit accomplishes three different things:
- Makes it much less difficult to communicate service settings
between the UI and the plugin.
- Refactors some code and makes it cleaner and easier to modify to our
needs (although there is still a lot of work to do on that front
because of heavy code duplication issues between auto-config and the
stream settings pane).
- Significantly reatly reduces the number of times the json file has to
be opened and parsed.
This also kind of denotes a bit of a failure on the plugin communication
aspect. The properties system is too limited and jank for a lot of
things we would like to do at times.
Fix the service check for services where its name in the UI does not
match its Auth::Def service string.
In Restream's case, the service name in the UI and rtmp-services is
"Restream.io" while the service name in its Auth::Def is "Restream".
This mismatch causes the `service_check` bool to be false, whereas the
previous condition (`!!main->auth && service.find(main->auth->service())
!= std::string::npos`) would have evaluated to true.
This was broken in commit e6f1daab8c.
Fixes GitHub Issue 5290.
Using the newly added stream key links in services.json from
rtmp-services, we can fetch the URLs from that source instead of
hardcoding them here. This allows us to remove service-specific code
from UI code and allows out-of-band updates to these URLs.
(Jim note: Adds abstraction to the OAuth class to allow the ability to
perform OAuth via external browser, and adds an AuthListener to act as
the local auth server.)
(Additional note by Jim: Apparently, dacast doesn't use "stream key" for
whatever reason on its website, so this commit apparently changes the
text "Stream Key" to "Encoder Key" or whatever for whatever reason I'll
never know. I guess we need arbitrary names for things these days
because services can't get their names in order or something. Whatever.
I'm seriously tired of dealing with this sort of stuff. Seriously, this
is just dumb. This is dumb, and I wish I wasn't merging it, but at this
point, I'm like, whatever. I don't care. I've stopped caring. Why should
I care anymore? I'm losing it. I am absolutely losing it.)
Fix the returned display resolution when scaling is enabled to determine
the correct canvas resolution in the auto-config utility, using the same
approach as in 2787e63. This fixes#4298.
(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.
Facebook provides CDN endpoints for users to optimize their bandwidth or
latency using the speed test on facebook.com/live/ingests/. In this case
streamers use a custom server endpoint that looks like
"rtmps://edgetee-upload-fml.xx.fbcdn.net:443/rtmp/".
This diff adds detection to users using the custom field for CDN
endpoints so we can show the stream key link button.
If style is not set it default's to Mac's style on Mac which adds
padding for a background. Looks like wasted space on Mac because there
is no background. Matches windows. Does not affect Linux.
https://doc.qt.io/qt-5/qwizard.html#elements-of-a-wizard-page
Adds a virtual camera button to the main user interface. If virtual
camera is not installed, it will not add the button. On Windows, it
detects whether the virtual camera filters are properly registered, and
will only add the button if the virtual camera filter is confirmed
registered.
Also adds a virtual camera option to the auto-configuration wizard,
which will just simply set the user's resolution/scale to 1920x1080 at
30 FPS.
AllDockWidgetFeatures is now deprecated. Use underlying values instead.
Use default QFlags constructor instead of nullptr/0.
Use QWheelEvent::angleDelta() in place of orientation() and delta(), and
position() in place of x() and y().
Follow up to #2145: https://github.com/obsproject/obs-studio/pull/2145
The wizard has a stream link URL as well, adding the button in the
wizard to match. Additionally, fixing a few errors in the UI layout
and spacing where items were not padded.
Fixes an issue where when trying to connect a Twitch account, and the
Twitch two-factor authentication check fails, the user will still
technically be logged in because the cookies will still be present, thus
when they try to click the "Connect" button again, it will skip the
login part (because they're already technically logged in), and just
give them the two-factor failure message without letting them enter in
their login information again.
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.
The message boxes that tell you that the browser is initializing or that
you're authenticating with twitch are annoying on startup. It makes
sense to do it in the settings/autoconfig dialogs where you sort of need
to know what's going on while waiting for it to connect, but on startup
it's not really necessary and can be kind of annoying.
In the auto-configuration dialog, use hardware encoding by default if
NVENC is available due to the fact that the latest generations of NVENC
currently has a better quality to bitrate ratio than veryfast x264 and
most other hardware devices.