-
-
Notifications
You must be signed in to change notification settings - Fork 7.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC 39: Overhaul services #9220
Conversation
c9980ae
to
ceaecb2
Compare
9a930a9
to
0008f40
Compare
I do have feedback on some specific changes made in the PR, but I'd rather focus on the architectural issues first, as they only focus on where files are moved and how we set up our repo:
I think the changes go in the right direction, but it's also a chance to create new paradigms/architectural decisions that clean up existing issues and we don't have to repeat old mistakes (i.e., throwing stuff into the |
|
||
void OBSBroadcastFlow::ManageBroadcast(bool streamingActive) | ||
{ | ||
if (flow.manage_broadcast2) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't the broadcast flow an entirely new class? Why is the function called manage_broadcast2
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check the new structure in the OBS Frontend API and it's related documentation.
TLDR: There is two variant of the manage_broadcast
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't check if the a certain flag is set 🤦 while checking for the 2
variant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it - I dunno what other maintainers think about this, but in general I really don't like the current practise of just slapping a number to an existing function when we extend its signature - it's a quick and dirty workaround, but not good API design.
Given that we are creating a new API from scratch here, we can be more elegant and this case I'd rather give the function a more descriptive name, because so far "2" means "new variant, use this", but these 2 functions can and should be used depending on functionality of the service.
So I'd suggest using something closer to manage_broadcast_with_stream_status
or something similar. ObjC and Swift both make extensive use of identical functions with different signatures (allowing different variations of parameters) and verbose function names that tell you by themselves what they do.
Technically only the login dialogs module are Qt, but ❤️.
Unless, outputs plugin are put in in their own and same for other plugin types. They are technically plugins, separating them from other plugin is not good in my opinion.
I'm thinking about doing a PR about doing this.
I'm thinking to add that to the "doing a PR" idea.
👍 PS: The next push will only be a rebase + reformatting. |
Allow to apply encoder settings per encoder and codec.
0008f40
to
ff0873a
Compare
In an effort to adhere more strictly to our current RFC process, we are opting to close this PR until the linked RFC has been finalized. Linking to and discussion of the branch itself on the RFC remains completely welcome, but we do not feel it is appropriate to open a PR for an unfinalized RFC, especially one that has as much open discussion as #39. We are looking forward to re-opening this when the RFC has been completed and merged! |
Just to specify a thing, when you force-push a branch is linked to a closed PR, the PR is made unable to be re-opened again. So it will to be a new PR. |
Description
This PR is related to obsproject/rfcs#39, it does not include:
This PR overhaul services to replace the unique
rtmp-common
/rtmp-custom
combo by a service per streaming services and one for custom (and also internal service per protocol).This PR provides:
obs-restream
,obs-twitch
andobs-youtube
)rtmp-common
/rtmp-custom
to the new services in a new fileobs-services
JSON parser and its JSON schema alignedIf I forgot to mention something that you think is necessary, tell me.
Twitch with integration:
![Screenshot from 2023-07-08 21-02-53](https://private-user-images.githubusercontent.com/17492366/252053540-c56f24b0-5bd1-4410-a802-dcd140aad67c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE1NjYxNDUsIm5iZiI6MTcyMTU2NTg0NSwicGF0aCI6Ii8xNzQ5MjM2Ni8yNTIwNTM1NDAtYzU2ZjI0YjAtNWJkMS00NDEwLWE4MDItZGNkMTQwYWFkNjdjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIxVDEyNDQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA4ODJlNzc0Mzc2NjNhYTZkNjlkNTI1MWM2YTRjM2MzMWU5OTg1NWE1Yzk1ODhjNTM5NTZkZjZkYzQyYzIxMzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FCSks2lxbPHizMS8sINUn0D9k7ncp3i-bTzGLgLuZoQ)
YouTube with integration:
![Screenshot from 2023-07-08 21-03-34](https://private-user-images.githubusercontent.com/17492366/252053547-0001a24c-bf21-465f-bafd-603b7cdca719.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE1NjYxNDUsIm5iZiI6MTcyMTU2NTg0NSwicGF0aCI6Ii8xNzQ5MjM2Ni8yNTIwNTM1NDctMDAwMWEyNGMtYmYyMS00NjVmLWJhZmQtNjAzYjdjZGNhNzE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIxVDEyNDQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU3MmQ3ODJmN2U1NjBjYmEwZDg4ZTEzOTFkNTkwYTBkMTc4ZWYwNGFlYTVjNTFjZDYxMzQ3YmZmYjVkZjRmODUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.BGoiKBFBAhOun_TfBasuEw9SIEsD0cqW2C1aM9QfVqI)
Custom service:
![Screenshot from 2023-07-08 21-03-24](https://private-user-images.githubusercontent.com/17492366/252053542-aeb5dfe3-71c6-4a50-bd34-6d4473f7d3d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE1NjYxNDUsIm5iZiI6MTcyMTU2NTg0NSwicGF0aCI6Ii8xNzQ5MjM2Ni8yNTIwNTM1NDItYWViNWRmZTMtNzFjNi00YTUwLWJkMzQtNmQ0NDczZjdkM2Q1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIxVDEyNDQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU2OTdlMzg2OWQyYzZmMDFmZjI3ODEyZDNjZTI1MzQ1ZDRiMTdhYzEzOTVkMmYzYTliYzhhNDc1ZDcxYjA5NmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bpZTKnd0p9eKpmY0kBDERn3MaSKJNaeF11gRC4FGejw)
![Screenshot from 2023-07-08 21-03-11](https://private-user-images.githubusercontent.com/17492366/252053544-3371c113-9217-412e-9cfc-8fe01581df99.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE1NjYxNDUsIm5iZiI6MTcyMTU2NTg0NSwicGF0aCI6Ii8xNzQ5MjM2Ni8yNTIwNTM1NDQtMzM3MWMxMTMtOTIxNy00MTJlLTljZmMtOGZlMDE1ODFkZjk5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIxVDEyNDQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhNjFjYzc0Nzk4MzA4ZTFlNGUwNzM0ODAyMGIzZDFlZDZmZTIxMGRlNjliMTEzMzY1ZjRkZTUzOWRmYjRiMDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zMyGJeD-P0P6Vtav8kHMLJ0LhZo5sL_wFubEKu8Hc3U)
![Screenshot from 2023-07-08 21-03-07](https://private-user-images.githubusercontent.com/17492366/252053546-d978b7be-5bec-42cd-86ed-51b0fa633f16.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE1NjYxNDUsIm5iZiI6MTcyMTU2NTg0NSwicGF0aCI6Ii8xNzQ5MjM2Ni8yNTIwNTM1NDYtZDk3OGI3YmUtNWJlYy00MmNkLTg2ZWQtNTFiMGZhNjMzZjE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIxVDEyNDQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI0ODIwZjE3YjZjMzhlY2Y0Y2NjNGVlMWI0M2ZhY2Y2ODMyYjU4OGQ1OTE0NWFiYzMwMWZlNzQ0YTYwMmI0ZmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Ee24EZfy_oVjkFIg2FSqptbZfrzYKM0qcvDGqfmQ_8Q)
Motivation and Context
How Has This Been Tested?
Types of changes
Checklist: