#๐ฅ-vesktop-development
1 messages ยท Page 2 of 1
idk what caused it to start logging
but uh
this now repeats semi-regularly while i stream with hardware accel stuff enabled
I installed the flatpak
Flatpak is completely separated from your System. That you have installed libunity on your Host doesn't matter. Libunity is included in the Flatpak anyway, but there are a few changes needed to make the notifications work. See my PR for more Details.
@Vendicated so, should I open this issue somewhere else? or there's just nothing no one can do about it anyway?
open vanilla discord in your browser and see if it works there. if it doesn't, it's a discord issue and there's nothing we can do
yeah, in vanilla discord it works, I made sure that it did before opening this issue
Hey look thats me! CatKiss
dupe of #435 (should prob rename it)
Looks like another user was having a similar issue on Obsidian
That obsidian error log looks much different?
were you ever able to do this
I'm experiencing this issue as well. It's likely a limitation of electron and it likely wouldn't be worth it to try and fix. I think a more sensible solution would be to have the option to disable idle functionality all together as suggested in #451
I'm experiencing this issue as well. It's likely a limitation of Electron and it likely wouldn't be worth it to try and fix. I think a more sensible solution would be to have the option to disable idle functionality all together as suggested in #451.
I don't think so, because stock discord desktop is also an electron app and it doesn't have this issue...
I may have phrased that wrong. Discord is Electron + a bunch of proprietary stuff, such as their rich status API and screen sharing (which is why it didn't work with Wayland and why it doesn't have sound in the official client). I would assume (I am assuming here) that this would be another custom component that would instead have to be implemented manually.
Is that what you expected? Or did you expect it to be mapped different?
We currently map the ports by their name (i.e. FL -> FL)
Or did you expect this mapping?
If so, I'll have to adjust the mappings a bit
Yes
Yes to what xd
idk what I was expecting
This looks right to me though
this is the mapping that I got ๐
Might be a long-standing chromium bug that we could work around
Okay, I might have something interesting to note about this.
I've found a way to push the framerate up from ~5 to ~25 and this workaround would explain what @MiMillieuh was initially seeing, i.e., focus playing some sort of role.
This is unrelated to hardware acceleration so if the maintainer agrees we could move this to a new issue.
When screencasting, the fr...
Might be a long-standing chromium bug that we could work around
Okay, I might have something interesting to note about this. I've found a way to push the framerate up from ~5 to ~25 and this workaround would explain what @MiMillieuh was initially seeing, i.e., focus playing some sort of role. This is unrelated to hardware acceleration so if the maintainer agrees we could move this to a new issue.
When screencasting...
One more thing to add, as this issue is present in chromium itself, so a proper solution / issue will have to be forwarded to the respective maintainers. If a solution isn't found here, I'm hoping that someone there can find a solution using this issue.
i feel like it would make more sense to make a discord thread for this
that sounds like a good idea tbh
Might be a long-standing chromium bug that we could work around
Okay, I might have something interesting to note about this. I've found a way to push the framerate up from ~5 to ~25 and this workaround would explain what @MiMillieuh was initially seeing, i.e., focus playing some sort of role. This is unrelated to hardware acceleration so if the maintainer agrees we could move this to a new issue.
When scr...
Might be a long-standing chromium bug that we could work around
Okay, I might have something interesting to note about this. I've found a way to push the framerate up from ~5 to ~25 and this workaround would explain what @MiMillieuh was initially seeing, i.e., focus playing some sort of role. This is unrelated to hardware acceleration so if the maintainer agrees we could move this to a new issue.
...
Might be a long-standing chromium bug that we could work around
Okay, I might have something interesting to note about this. I've found a way to push the framerate up from ~5 to ~25 and this workaround would explain what @MiMillieuh was initially seeing, i.e., focus playing some sort of role. This is unrelated to hardware acceleration so if the maintainer agrees we could move this to a new issu...
Flatpak vesktop krisp noise supression also does not work but stock discord flatpak does.
From the people i tested with, they didn't perceive much of a difference with a video playing or not. I didn't collect any specific numbers but I was told that it looked to be around 10-15fps no matter what.
Can you still reproduce this with the latest vesktop version?
From the people i tested with, they didn't perceive much of a difference with a video playing or not. I didn't collect any specific numbers but I was told that it looked to be around 10-15fps no matter what.
Interesting, what hardware are you using?
I've also noticed that when there isn't much of a difference per-frame the stream will be decently smooth already; this only seems to help on games with a lot of per-frame differences.
This is a simpler example with no camera, then camera...
not completely sure. i'm using wayland (experimental) on linux mint
Wayland support on Linux Mint is still currently highly experimental and prone to breakage. Make sure to run a stable version of provided software before issuing such bug reports, and bugs related to Linux Mint itself should be reported to the Linux Mint project.
I have some new findings; I've done some tests while in debug mode for the screenshare.
My current theory is that the fundamental issue that drops the framerate is hitting the bitrate cap; this is presented as two independent components:
- max bitrate is set at 2.500kbps
- resolution setting is broken (#463) sending more data than required
So, first of all, in Vesktop's [source code](https://github.com/Vencord/Vesktop/blob/4abae9c7082081dcae667916d9608e23adf688a9/src/renderer/componen...
@vernal lintel you're going to want to read this
i already did :p
okay good
i have no words
if that's the issue that is wack as hell
(obv its not the only issue i think because its recreatable in other screen recording apps on electron/chromium)
tbh i just took the bitrate values from discord desktop lol
that's probably a good idea
to avoid discord from rate limiting
but uhhh
we may want to look into raising that bitrate limit from 2.5kbps
cuz rn chromium is still limited even tho you used 80kbps according to that issue
I do believe the root cause may be StreamSettings failing to apply. Not only would that remove the set bitrate of 80kbps, but it would also cause the resolution setting to fail. I'll test with that and see if I can find any improvements to stream quality/framerate.
Just want to add that I'm runnning EndeaviorOS (Arch linux based), with Flatpak Vesktop 1.5.1 and fcitx5 5.1.8-1 installed from pacman, I'm able to use IMEs inside the app with the flag
/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=startvesktop dev.vencord.Vesktop --enable-wayland-ime
So the bug about chromium flags not being passed mentioned in previous replies might have been fixed.
On my machine, Krisp does not work on Vencord (installed via .rpm on Fedora 39) but works on stock Discord on the same machine.
so uh
progress has been made
im going to try and rewrite parts of the screensharing logic in the RTCRtpSender API
doing that should hopefully fix the framerate issues
Ive been talking with IlChitarrista
this seems to be the API that discord desktop uses
which would explain a lot
*not really rewrite, more of just i think i see what's weird
does vesktop have a custom navigator? (browser thingy thing i forgot the name of)
agent*
it uses the default chrome user agent
why
i was going to attempt to make a fork that adds vesktop to platformindicators because currently it shows all vesktop users are on web which is technically true, (also 99% of the time i see a web icon its either a scammer or someone doing dev work (or vesktop)) 
idk if that's impossible to perform due to privacy reasons or etc
Able to repro over here. Vesktop Flatpak 1.5.1 has the issue but Discord Flatpak 0.0.47 does not.
not possible
aww
solution: make pr to mark vesktop as desktop platform (and watch it get denied)
@vernal lintel the issue with screensharing is believed to be because
this is applied to the first connection through portals
which is then broken
and then a new connection is made to start the stream
i believe if we were to either re-apply or just only apply those here before the callback, it may work
if not we may have to look into creating an instance of RTCRtpSender
and apply the settings to that
I can also reproduce this on 1.5.1. When I find the time I'll try and test a bunch of older versions.
yeah
it doesn't support any of that stuff
we've looked around a bit more
we have a few options that make sense
we either make a new instance of RTCRtpSender
and use that
or we monkeypatch the one electron uses by default somehow
this is the elegant solution
not sure how to make electron use it for a WebRTC stream though
@vernal lintel this right here is the only thing stopping the streams from being on par with windows as far as we can tell
the fps holds high until the bitrate cap of like 2500kbps gets hit
and then it throttles
2500kbps bitrate limit 
yeah its a hardcoded limit in chromium
what the FUCK
once its correctly applied
itll work
hopefully
alright
does anyone know where RTC connections are made
in this code
@vernal lintel im really sorry to bother you again i just cannot for the life of me understand what api this connection is from/ what it even is and how it can be modified
discord
yea but like
is it an rtc connection?
or is it some sort of proprietary thing that makes no sense to anyone
Describe the solution you'd like.
If we can consume the gamescope:out_0 pipewire video source we can use that for screensharing under gamescope.
I'm new to the project, and would love to try to set the contentHint to "motion" for the mediaStreamTrack in addition to the stream settings, but I haven't found a function in vesktop / vencord.
Is there a way to set those?
I have noticed that Krisp noise suppression does not work on web discord on Firefox, same behavior as seen on Vesktop
it seems that it is a Discord issue
I'm starting to lean that way too. Discord Flatpak seems to initialize Krisp at application launchtime while Vesktop and Chromium both fail to initialize Krisp at VC join.
Plus some guys on Reddit complained their Discord desktop broke on Windows at about the same time this issue was filed.
Describe the bug
Apps do not appear in my profile through Discord RPC. They do appear when using the regular discord client.
To Reproduce
Steps to reproduce the behavior:
- Launch Vesktop
- Launch Minecraft
- Check the area on Vesktop where the "Currently Playing" should appear
- Nothing is there
Expected behavior
Expected to see Minecraft Java in the currently playing area on discord.
Screenshots
**Desktop (please complete the following information)...
arRPC only supports apps that explicitly set rich presence data. Minecraft does not support this unless you use a mod.
that's just not true??
since when 
when was this changed
this was added in some update i never read about afaik
whats the "currently playing" area? vesktop just sets your presence, aka your profile activity. it doesn't display it above the user panel
are you using vesktop via flatpak?
@vernal lintel am I getting it mixed up with the web arrpc
arrpc has supported process scanning forever
huh i didnt know
so in that case
how does it detect what processes are registered?
there's no settings in vesktop for it
figured it out
i will now document my findings
@vernal lintel you will
so hard when you read what i discovered
Hi, sorry about that earlier. I was (previously) unaware that this functionality existed in arRPC. After you read this, you will probably understand why I wasn't even aware this was a feature.
I have done some research, and I think I might be able to explain why Minecraft doesn't get registered through arRPC.
Looking at https://github.com/OpenAsar/arrpc/blob/main/src/process/index.js#L43 we see that it only strictly checks the [full process path on Linux](https://github.com/OpenAsar/arrpc...
your horror has been delivered
why post that here and not arrpc repo
i will file there too now
or i could attempt to fix it
should I try to fix it myself?
just remembered wmic is depreciated
love shit not working for no reason.
I'm new to the project, and would love to try to set the
contentHintto"motion"for the mediaStreamTrack in addition to the stream settings, but I haven't found a function in vesktop / vencord. This would favour available bitrate to be used for new frames instead of quality on existing ones.Is there a way to set those?
I've been experimenting with setting not just contenthint, but fixing the ...
I think the plugin is called VolumeBooster. Why is it not part of Vesktop? Isn't it pre-patched with vanilla Vencord?
Is there any current progress on the VolumeBooster Plugin for Vesktop?
I think the plugin is called VolumeBooster. Why is it not part of Vesktop? Isn't it pre-patched with vanilla Vencord?
This comment explains it: https://github.com/Vencord/Vesktop/issues/58#issuecomment-1887383325
I actually quite like the current logo for Vesktop on FlatHub
Unfortunately, it's the normal one on the Windows version for example....
Question: @Vendicated Why aren't all the Vesktop versions using the one on FlatHub? Perhaps at least give the option for the background?
Hmm, I guess its not in vesktop at the moment?
Where can I check the status? Can I apply that fix manually to check on my pc?
Hmm, I guess its not in vesktop at the moment?
Where can I check the status? Can I apply that fix manually to check on my pc?
No it's not in Desktop yet, you can however clone the vesktop repository and bump Venmic in the package.json to 3.3.3.
Thanks for mentioning, I still need to submit a PR for the update ^^
damn
always sad seeing new messages here and its just "star added"
i always think someone has some new crazy stuff LMAO
That's what I've been saying for ages
There's a signature check that the Krisp module does to verify discord has not been modified. I have a signature-scan based patch (meaning that it does the patch at runtime and is update-resistant) for this but might need some help with getting it working with electron better as it seems to make electron a bit unstable.
#starboard channel but instead of #โญ-starboard it's just all the GitHub stars
In theory, it should be possible to write a demo page to try out options quickly, using the plain chromium screenshare interface. Just something that encodes a media-track, and immediately decodes it.
Maybe I can try this out, to see how to make it slow / fast.
Might help in understanding the right options to set for streams, and see what's possible inside chromium
the web app loads krisp as wasm module, while the desktop uses a native node module for it. that's why I asked whether it works in web browser. whether it works on discord desktop is irrelevant, because vesktop also uses the wasm module. or rather, vesktop doesn't even handle krisp itself, it's just purely discord that does it
the web app loads krisp as wasm module, while the desktop uses a native node module for it. that's why I asked whether it works in web browser. whether it works on discord desktop is irrelevant, because vesktop also uses the wasm module, just like web. or rather, vesktop doesn't even handle krisp itself, it's just purely discord that does it
ah i thought they were referring to the desktop app.
IKR
YES
That may be a good idea, but I do not believe its the encoding/decoding causing the problem. It may be a good idea to create a small WebRTC streaming application to try and test.
It seems to be the bitrate that actually causes the issue.
I'm new to the project, and would love to try to set the
contentHintto"motion"for the mediaStreamTrack in addition to the stream settings, but I haven't found a function in vesktop / vencord. This would favour available bitrate to be used for new frames instead of quality on existing ones.Is there a way to set those?
Oh and I didn't fully answer this, I understand what you mean, but I be...
Where in the chromium codebase is the integer to adjust?
I can hard patch it to check
i recommend moving this discussion to the vesktop development channel on our discord server
I would be in favor of venmic support for macOS, not just for older version support, but because the official desktop app requires you to install a system extension for audio sharing. On M1, this is not intuitive at all as it requires you to reboot your system just to install it. Perhaps Vesktop could capture audio on macOS in a way similar to how OBS does.
Anyone got a lead on that 2.5kbps value chromium sets?
I can just patch and rebuild it for a quick test of the encoder
But I did not get much on my own searches of the codebase, it's a pretty thick tome
@azure verge
wassup
Heyo
I can spare the compile on my gentoo slab
And probably whip up a PKGBUILD for arch use
ive been trying to test it but GOD trying to worm through how id remake the api on vesktop is a pa i n
so
codebase of vesktop? or chromium?
oh
lmao
uhhh
im not sure where it's set in chromium
but yeah basically
if you test a stream, in the debug menu itll show a fuck ton of stats
the framerate is stable 30 with hw accel
but the framerate drops like a rock as soon as the bitrate goes above 2500kbps(idk if its 2.5 or 2500 the number is different in different places) until the bitrate goes down and then the framerate goes back up
Cloning repo to search on my own disk
alright !
so are you going to build chromium and then just test with discord web or somethin?
that'd be what I do
media/video/vpx_video_encoder.cc
Worth looking at
media/base/video_encoder.cc
uint32_t GetDefaultVideoEncodeBitrate(gfx::Size frame_size,
uint32_t framerate) {
// Let's default to 2M bps for HD at 30 fps.
const uint32_t kDefaultBitrateForHD30fps = 2'000'000u;
const uint32_t kHDArea = 1280u * 720u;
const int kMaxArea = 8000 * 8000;
const uint64_t kMinBitrate = 10000;
const uint64_t kMaxBitrate = std::numeric_limits<uint32_t>::max();
// Scale default bitrate to the given frame size and fps
base::ClampedNumeric<uint64_t> result = kDefaultBitrateForHD30fps;
result *= std::clamp(framerate, 1u, 300u);
result *= std::clamp(frame_size.GetArea(), 1, kMaxArea);
result /= kHDArea * 30u; // HD resolution, 30 fps
return std::clamp(result.RawValue(), kMinBitrate, kMaxBitrate);
}```
interesting
im pretty sure i just need to edit the bitrate through the RTCRtpSender
but its wack
you could try and build with that file edited
Why doesnt the call just normally work, we enter all the correct parameters
Are we not entering them into RTCRtpSender and instead something else?
Give me a primer, all this is new
What function in that class initiates the stream?
which class?
most of the screensharing logic is in src/main/screenShare.ts
but
the bitrate is applied in src/renderer/components/ScreenSharePicker.tsx
the issue (i believe) is that a portal is used to get access to the screen
that connection is then modified
and then closed
and another connection starts
and that one no longer has the modified settings
i could be wrong
that's just a hypothesis
this is helpful and may have more useful information on this topic
this is really interesting
there are like a billion RTC handshakes
the bitrate gets set to 8000000
and then
undefined
also the discord website forces it to 30fps due to it not being registered as desktop and yk
being registered as web discord
at least
i assume that's why it does it
@vernal lintel
https://issues.chromium.org/issues/40155218
this is something of note btw
and now i stop pinging you so much i am so sorry lmao
uhm
and then instantly
wtf
and yep
bitrate undefined again
oh my god
the first call to start stream
gives
720p30
at 2.5mbps
that's the fucking problem i think
wait no what the hell is that stream
is it my friend's camera?????
i am so confused lmao
okay so resolution is instantly removed
odd
for a basic solution
if may be worth making a button or something
to see if we can force reapply
the bitrate
i recommend moving this discussion to the vesktop development channel on our discord server
How does one actually get access to talk in the dev channels? I only see core and plugin dev and both say I dont have permission to send messages in channel. There does not appear to be a role that's self assignable for developers/contributors and if we have to jump through several hoops just to discuss on discord it might just be easier to discuss our findings on th...
i believe that it's for platform consistency, mac / linux icons usually have a background colour, while windows usually has icons with a transparent background
...you're contributing to a client mod for discord
omfg
i mean like
i get it
if you're not super familiar with discord but you know electron and you know how to fix the issue but

i still dont fully think WebRTCMediaEngine issues lie at an electron issue, but they very much could which is why discord just opted to make discord_voice
true
wait
so how much does discord_voice implement
isnt it just voice stuff
or is it literally like
a shit ton of webrtc
yes
oh god
the first issue is its a partial black box because no one has cared to reverse engineer it, which i dont blame them
oh g o d
i hope we dont have to update venmic to patch webrtc to force bitrates and shit
lmao
heh
welp gonna keep working on it eventually
discord_voice has arbitrary limits that would need to be patched out if anything if anyone cared enough but no one does
because the big one is stereo voice which has been more of a nuisance than used for constructive purposes
may i ask what you mean by it being a nuisance
theres a "scene" of mostly annoying kids that use stereo voice to be as loud as possible, known as "packing"
lightcord used to be used for it after they patched stereo voice in discord_voice because of lightcord version pinning native modules
but anyways
interesting
discord_voice also handles special encoders as well like av1
and hardware accelerated encode via cuda, nvenc and amf
which all have kamoji strings for the respective encoders
oh uhh i just kind of wondered if you had any idea if you knew about this at all because you seem to kind of understand webrtc
it seems to reset the streams to default settings about 1-2 seconds after they start
interesting
i know fuck all about webrtc, i only know the pitfalls of WebRTCMediaEngine from my own debugging
which i think may play into the fuckin 2.5mbps bitrate limit
ohhhh oki
like the fact that if you're already watching a stream and you try and screenshare for whatever reason the order of your packets get flipped
and thus your screenshare doesnt start properly
what the fuck
what the actual fuck
how the hell do you program a bug like that into existence
vanilla bug btw
that seems like it had to have been
like
put there
like
i mean obv it wasnt
but
how the hell
ive tried to fix it and have no idea where the fuck to even start
yeah that's
reasonable
god i am
honestly like
so fucking confused as to how to start even trying to fix this issue
because i dont know why it's un-applying
for all i know it could be discord's servers overwriting something but that wouldn't explain setting resolution to undefined
ive also tried to fix resolution being wrong and have gotten nowhere with that
changing the values just changed them in the print and the actual data sent had no effect
not even the "720p 30 FPS" label changed
or i mightve gotten that to change at one point idr
but the actual streamed res is
this was like, a year or two ago so
your screen resolution
i have a 1440p monitor
discord streams at 1440p no matter what
and 30fps
its really weird
also low as shit bitrate
with the setting set to maintain-quality
so it
drops to like 3fps
instead of looking bad
this debug menu is super helpful
it gets throttled if it goes above 2500kbps
and instantly gets the framerate lowered to hell and back
ill see what happens on native
btw
h264 is used if hw accel is found
if not disc uses vp8
afaik
idk when av1 is used
the debug menu isnt there afaik
i havent tested tho
im on windows so
oh gl
ah cool its broken
whar
interesting
actually
i think i know why its "broken"
i purposely disabled voice hooking to stop stacktrace polution but i might need to disable that patch
nvm its just broken ๐
ohhhhhh
interesting
it updates on vesktop
maybe that has some wack random shit to do with it

nope its fluxuating a lot but staying around 7.5k
discord on windows is so weird
h265 is a lot more efficient
yeah thats one of the special encoders within discord_voice
ahhhh
yeah
like holy hell
the problem is most browsers dont and wont officially support h265/hevc playback though because of licensing
which is annoying
which is why google is trying to push av1 but its still too early for support as it requires hardware decode
"ooh look at us we made a good thing but made it a hell of a lot harder for anyone to use it"
ahh
i mean
vaapi on linux and whatever shit windows has
mesa almost has full av1 support
arRPC doesn't display what i'm doing on vencord web(chrome)
i did enable the node server, it shows bridge connected but i don't see any activity on my profile even if i open youtube and stuff
almost
its still early
i mean it works but idk how well
probably could be somewhat backported

gonna try enabling the av1 experiment even though i think its only meant for nvidia cards
wcgw
nothing, its still just h265
Ensure your adblock isn't interfering. With uBlock Origin, you'll have to disable "Block Outside Intrusion to LAN" list.
damn
thats the logger class itself
its the squiggle line that the console pointed to
yeah
thought so
i have NO idea how to read minified code
findByCode("UnifiedConnection")
actually that prob wont work as well cause i dont think that gives module id nvm
oh lol
eh findbycode isnt defined in console anyways
i probably should have done it somewhere else but debugging this shit is wack to me
whar
ooh
i wonder what i can do with this
hehhehehe
i didnt realize i could use findbycodelazy to grab the BaseWebRTCConnection
Ensure your adblock isn't interfering. With uBlock Origin, you'll have to disable "Block Outside Intrusion to LAN" list.
it's not blocking anything, nor i have any filter that's "Block Outside Intrusion to LAN"
i believe that it's for platform consistency, mac / linux icons usually have a background colour, while windows usually has icons with a transparent background
Hmm mind sharing some examples of applications that have intentionally transparent background? Most apps I use are cross platform and share the same logo across platforms
the rainbow icon was originally only meant for mac, created by a contributor specially for it
it also looks way better on gnome, so we decided to also use it on Linux
Perhaps at least give the option for the background?
you can just change it yourself. create a shortcut to vesktop then right click > properties and change the icon
Hmm mind sharing some examples of applications that have intentionally transparent background? Most apps I use are cross platform and share the same logo across platforms
Discord has a circular icon on windows but follows the macos convention of squares with rounded edges
oml lmao
the stream itself is UnifiedConnection(stream) on every device
that may be useful
only on web
that stream class is not used on desktop when discord_voice is available
yea but for the sake of vesktop streaming
that's sustainably the same
and i feel it could reliably be used
as if we got discord_voice
well
we would rewrite streaming anyways
@upper pine did some testing and it appears to only scuff out when switching the audio output of the specific program (via plasma settings in my case) so this is very much an edge case
Good to know though, will test what causes it there
also changing the audio output twice on the streamed application breaks venmic entirely and does not connect to any application until vesktop is restarted
Interesting
Is your feature request related to a problem? Please describe.
I tried vesktop as it's being advertised as a lightweight discord client without having to worry about potential issues with discord's TOS. But then I noticed that by default, we can stream in higher resolution then 720p even if I am not having any nitro subscription. This could be easily detected by discord and I think this could lead to my account being banned. But I still want to stream my screen in 1080p with 5ps (I don't...
there is no ban risk
How can you be so sure about that? I think this could easily be detected serverwise, I mean it's normally a paid feature after all.
Also I think this would be really easy to implement. We just would need to add the 5 to the fps list and maybe do a UI adjustment.
if discord wanted to ban us, we'd all be gone immediately. doesn't matter if you use nitro screenshare or not. but they have no reason to do that, they'll just lose users
what's the point of ๐ reacting? i was simply stating how it is. yes, they could detect streaming with a quality you're not supposed to. but they could also just push code that detects vencord and other client mods. in fact, they already have such code. it detects betterdiscord, vencord, and a few other mods. but it is only used to disable error reporting for such devices and for nothing else
discord has nothing to gain and so much to lose by banning people who use mods. millions of people ...
Yeah you are absolutely right. My reaction was not meant to be provocative in any way. Sorry if it happened to be somewhat provocative for you. It was more of a reaction that I was not satisfied with the possibility of 5fps being disregarded completely. I mean in my opinion it would be a great option, even if it's hidden somewhere in the settings for rare users of 5fps like me. Just so that I would feel better not using any potential bandwidth that I am not paying for. I agree with you that t...
Yeah you are absolutely right. My reaction was not meant to be provocative in any way. Sorry if it happened to be somewhat provocative for you. It was more of a reaction that I was not satisfied with the possibility of 5fps being disregarded completely. I mean in my opinion it would be a great option, even if it's hidden somewhere in the settings for rare users of 5fps like me. Just so that I would feel better not using any potential bandwidth that I am not paying for. I agree with you that...
And on top of that yet again, the bandwidth is nothing to worry about as of right now. That same broken API limits it so much that streams don't even properly reach 10fps on most systems.
I see. Thanks for clarifying.
Cannot reproduce for breaking with single switch (I replied to the wrong message here xd)
Can also not reproduce breaking with changing twice
Ohhh
Wait
I think I might know what's causing it though
Are you changing the systems default speakers @humble mortar?
Because that might cause problems
But only when sharing whole desktop audio
But yeah with whole system audio I can reproduce venmic not sharing an application that is not playing to the default speakers
Describe the bug
It first started with me not being able to view messages in servers/DMs. Tried restarting and it didn't fix so I decided to reinstall.
After I reinstalled it prompted me to login, and I can't log in. so I tried running it through the command line, and it says that I've been rate limited.
This bug only happens on Vesktop and not on the web version of Discord.
To Reproduce
I don't know how to reproduce, it just happened while I was doing something else.
**...
you're rate limited from github, not discord. it doesn't matter just ignore it
it doesn't matter just ignore it
That's cool, but I can't use the app.
I guess I have to wait about an hour? The docs say the rate limit for unauthorized requests is 60 per hour.
gg
it may be worth it to not crash on failed update check
Describe the bug
When sharing the screen during high activity the stream turns into what others referred to as "a total slideshow" rather consistently. Notably this does not happen with the regular Discord client.
To Reproduce
- Start a stream
- Do something where the screen changes a lot, e.g. playing a fast-paced game
Expected behavior
The same streaming experience as with normal Discord, which in my case is smooth even on higher resolutions
**Screensho...
Describe the bug
when screensharing with a game open then the screensharing is lagging
To Reproduce
Steps to reproduce the behavior:
- open Vesktop
- Start Screensharing
- Open a Game
Expected behavior
that the screensharing is not laggy
Screenshots
Desktop (please complete the following information):
- OS/Distro: [Arch Linux x86_64]
- Desktop Environment (linux only): [KDE]
- Kernel Version: [6.8.2-zen2-1-zen]
I also have this issue
OS/Distro [Arch Linux x86_64]
Desktop Envrioment: Hyprland
Kernel Version: 6.8.2-zen2-1-zen
@vernal lintel they have actually banned for this before
this is something they used to kinda care about
don't seem to anymore though
source?
i have found nothing and like it's been in vencord for ages lol
i take any "fake nitro gets banned" with a massive grain of salt
misinfo spread by various people who want to justify their own rules with it
"message logger gets you banned"
"show hidden channels gets you banned"
"fake nitro gets you banned"
so i don't believe anything without proof :p
but yeah we've had no issues whatsoever even tho we've had it for more than a year
what i don't really understand is why they even let u do it lol
why not just add server side check and 403/400 ๐ญ
how do you 403 over a udp connection silly
it's very hard to do with their architecture
true
and i don't blame you lol
i just remember a few incidents so there's a chance i'm wrong
Ah, I guess i have to wait until arRPC gets fixed for Linux. Well, thank you anyway!
Is your feature request related to a problem? Please describe.
I can't seem to find anywhere in the git that breaks down where or how Vesktop differs from differs from Vencord. Is it Vencord with better Linux/Wayland support? No idea, that's the vibe I get but it's not made clear anywhere.
Describe the solution you'd like
Something in the Readme that makes it clear what this offers that Vencord doesn't.
Describe alternatives you've considered
I've checked Google and Redd...
no I'm changing the specifically shared application's output device
I'd record a video but ive been experiencing constant random freezes with plasmashell and im too busy IRL to figure it out :p
I have the same problem here :(
like i said above, this has nothing to do with vesktop. and works fine on my machine, watch my video
replying with "same problem here :(" is not useful, what am I supposed to do with that?
try googling for solutions, running vesktop from the command line to collect console output, etc
okay i may or may not have found something interesting
either that or the connection is just unloggable
nope
alright
major progress
the stream connection doesnt exist at all
until after the stream has started
so it cannot be updated
this whole function is useless lmao
please read the comments
i did
it's not useless
it is where its currently at
the connections array only has one element when its called
if you're creating a stream connection for the first time, there will only be 1 connection
that connection is patched on creation, via https://github.com/Vencord/Vesktop/blob/main/src/renderer/components/ScreenSharePicker.tsx#L54-L83
if you are changing your stream, it will reuse the old connection. that's what the code you showed is for
**ScreenSharePicker.tsx: **Lines 54-83
addPatch({
patches: [
{
find: "this.localWant=",
replacement: {
match: /this.localWant=/,
replace: "$self.patchStreamQuality(this);$&"
}
}
],
patchStreamQuality(opts: any) {
if (!currentSettings) return;
const framerate = Number(currentSettings.fps);
const height = Number(currentSettings.resolution);
const width = Math.round(height * (16 / 9));
Object.assign(opts, {
bitrateMin: 500000,
bitrateMax: 8000000,
bitrateTarget: 600000
});
Object.assign(opts.capture, {
framerate,
width,
height,
pixelCount: height * width
});
}
});
Alr I think I know what it is, will fix it after I've updated Rohrkabel to make this easier
in that case, commenting this out shouldn't do what it actually does i feel
for some reason if i do this, the later function that sets it for when you change windows also doesn't apply
wHAT
without that patch
the resolution may not be
higher than 720p
but its actually not just
forced to screen res
to recap
ahm
why is this set
oh
okay
uhhh
for testing i want to try something but i have no idea how to do it
interesting, is discord setting that?
yeah
i think its set for web clients
one of my friends has the same streaming issues when they stream from chrome on windows
yeah seems like the code controls it
search for it in discord code
call me dumb but uhhh how 
god i hate minified code
its a fucking nested mess
so its equal to e
holy shit literally everything in this file takes e
omfg
literally 99% of the functions in the file
including the very first line of the file
they all take e
would that mean its in another file....?
okay welp
this didnt help
interesting
its definitely correct
same ID
just didnt apply
(yes i relaunched)
this is why i need to learn how the patches work LMAO
did u do a patch or edit the file
with your cursor there it looks like you edited it with devtools lol
that doesn't work
i made an override to the file and relaunched but yeah i assumed it didnt work
im gonna make a patch rq
although idk where the patch should be called from
same place as bitrate i assume
just throw it anywhere for testing, doesn't matter
i can give u a patch in a bit (not at my pc rn)
im gonna test but idk if i can do it properly lmao
patch helper is way more useful than i realized tho
but it's really easy like
find: "x-google-max-bitrate",
replacement: {
match: /"x-google-max-bitrate".concat\(\i\)/,
replace: '"x-google-max-bitrate".concat(8_000_000)'
}
you can use underscores as separators in numbers, yes they're ignored
it's the same function as commas in english
but comma already has a different function in js so they used _
it edits stuff there too
yeah
so does this patch improve stuff
im getting stable 30fps with a shit ton of motion so id say
yes
yes it does
the only issue now is fuckin
res selector
wow that's huge
how did u even figure this stuff out
i dont fucking know
i was reading stuff in the webrtc debugger
and noticed it was set to 2500 for max bitrate
so i set it a fuck ton higher
ill find a better setting in a bit
but i just set it to like
8gbps
im gonna look into fixing the resolution selector but making this stable is my first priority
btw is this using hardware encoding or software?
hardware
like did u add the vaapi flags too?
yeah
try without vaapi
im curious
oki
i got like 15-20fps
its not great
not as bad as before this whole ordeal tho
why 30fps? have u tried 60fps
resolution selection isnt applying
๐ค
its the other issue
honestly now i wonder why discord sets max bitrate to 2.5k
is this on purpose so you use their desktop app
possibly
we definitely should forward this to other clients
do you want me to pr with this once i get some better settings?
:D
i take like 50% credit
@broken solstice helped me a good bit
alright
because the value is in kbps
ill set the max to 80,000
which would be 80mbps
that's what it was set to in your previous code at least
well
hmm
it seems to not use much more than 5mbps so maybe we set it to like 15
just to keep it low
this is at 1440p30
also uhhh
@vernal lintel do you think it would maybe be worth it to add this patch to vencord instead of vesktop?
it would still apply
but it would also help browser users
i meant like
not in vesktop
just in vencord
it'd still be applied to vesktop
just
also would apply to browser users
i know
oh
i see what you mean
oh
wait
what if i just make it a plugin
and we make it a core plugin on web clients or something
*required
not core
couldn't remember the word
that would work but it's still meh to have the code fragmented across different codebases
yeah
i know what you mean
do you think there's a good way to implement this for browser users?
every day we get closer to big vencord monorepo

i just imagine like
vencord logo on a skyscraper
"big vencord"
be careful or big vencord will get you
basically what the title says. streaming is now smooth on linux. finally.
to all of you who have been annoyed about this problem, here.
It's solved in this PR.
https://github.com/Vencord/Vesktop/pull/489
maybe they don't want to strain their webrtc infra?
cuz 2.5k is probably enough for the free stream qualities
and the web client doesn't allow you to change quality
its not
its almost enough
but not perfect
interesting
i should really spend some time trying to figure out voice
nobody knows how it works fully
@vernal lintel question about patches
actually wait
nvm
ill just split this into 2 patches
lemme take a look at this webrtc code
oh wow
there's a lot of options
don't think i've ever looked at this before
dear god this is terrifying
looks like this is where the bitrates are hardcoded
wonder if audio could use a bump too
@azure verge you can use \i
custom vencor functionality
Seem having issues with these things i compile with your pull request and i start and it crash i tried too to start on terminal and i have an error "SIGSEGV (Address boundary error)" with terminal it loading and when it loads two second and crash again :/
i only merged your pull on the fork i do
looks like you accidently duplicated this line
i didnt even notice i did that lol, was probably a remnant from testing. Only index.ts and ScreenSharePicker.tsx are necessary as far as I know
Okay, I'm testing this, the original theory I had on https://github.com/Vencord/Vesktop/issues/191#issuecomment-2030694090 seems to be correct.
So, what this MR does is remove the artificial limit to 2500kbps.
On my system the limit, as shown by the Bitrate(Target) in the debug menu, is not updated to 80.000kbps but only 4623 with some variability.
This improves things as now 1440p can hold 10-20fps and 1080p almost locked to 30 but it's still being throttled at some other level.
Th...
On my system the limit, as shown by the Bitrate(Target) in the debug menu, is not updated to 80.000kbps but only 4623 with some variability.
perhaps because it can only keep up with that much bitrate? iirc hardware encoding may not work with nvidia gpus, so you may be stuck with software encoding and thus have a bottleneck
Also, on a secondary note, there seems to be something off about multimonitor setups on Wayland.
If I disable the secondary monitor I get ~25fps at 1440p. It seems that, on multimonitors, the primary one gets somehow throttled when there isn't cursor movement.
Lastly, I think we should also look into contentHint.
Still, once this is ready, it will be a nice step in the right direction.
On my system the limit, as shown by the Bitrate(Target) in the debug menu, is not updated to 80.000kbps but only 4623 with some variability.
perhaps because it can only keep up with that much bitrate? iirc hardware encoding may not work with nvidia gpus, so you may be stuck with software encoding and thus have a bottleneck
I've just been able to recreate the same problem. I don't exactly know what's caused it, but it's definitely not limited to one client.
Also, on a secondary note, there seems to be something off about multimonitor setups on Wayland. If I disable the secondary monitor I get ~25fps at 1440p. It seems that, on multimonitors, the primary one gets somehow throttled when there isn't cursor movement. Lastly, I think we should also look into contentHint.
Still, once this is ready, it will be a nice step in the right direction.
The cursor issu...
I read over this a few times before making my post. Nothing really answers the question of "why Vesktop?"
The first point is that vencord is pre-installed. To me, that says "you can skip the step of manually having to patch Discord with Vencord".
The second point states it's more lightweight and faster than Discord, but doesn't mention if it's also more lightweight and faster than if I were to just download Discord and then patch it with Vencord myself.
The third point is about Scre...
Describe the bug
Vesktop has worked fine for me in the past, and still works fine if I use ethernet or my old Brostrend USB wifi adapter, but I recently got a new wifi card to use instead of the adapter, as it's much faster and I only have ethernet available to me around 70% of the time due to my housing situation. When I use vesktop and enter a call with this new wifi card, the other person in the call will constantly break up, wont hear me while I hear them, and eventually the call...
@vernal lintel i cannot for the life of me figure out what you mean by this
that line is there twice now
yes
wtf
its not for me
lemme
rm -rf and get a fresh pull
omfg
its duplicated now
welp
fixed
these should be obsolete
"VaapiVideoDecodeLinuxGL,VaapiVideoEncoder,VaapiVideoDecoder"
please verify that these 3 switches are actually necessary
replacement takes either one replacement or an array of replacements
instead of having two patches with the same find, merge them into one patch
well
@broken solstice figured out the issue with resolution selection not working
at least
they found out how to fix it
not in code just
basically you can do a thing and itll stream at the right resolution
(start stream button twice, select application/window, stream, and then close the second portal that opens)
framerate is always 30 though
and bitrate is still locked to 4696
I still want to try and raise the bitrate, as its somehow locked at 4696kbps right now. and during one of my tests it randomly jumped to 8000kbps
huh
I still want to try and raise the bitrate, as its somehow locked at 4696kbps right now. and during one of my tests it randomly jumped to 8000kbps
this has since been resolved
How are you able to monitor bitrate during streaming ? I'm still facing a few issues with FPS in this branch but it's already better than the current main branch
so removing those not needed flags fixed the bitrate?
go into src/main/mainWindow.ts and slap this under initArRPC:
const w = new BrowserWindow();
w.loadURL("chrome://webrtc-internals");
go into src/main/mainWindow.ts and slap this under initArRPC:
const w = new BrowserWindow(); w.loadURL("chrome://webrtc-internals");
that's one method, but not the one I use. If you click Video Connected above your profile name (where you would normally mute and shit in the bottom left) and then click debug.
it did a great deal to bump it up yeah
its still
iffy here and there
no it isnt
but why do you need that flag
it just makes electron run in Wayland instead of XWayland
Wayland electron still has many issues so making it the default isn't that good
that's fair
i for one still use it in XWayland cause Wayland electron has positioning issues for me
you dont need to run in wayland for pipewire capturer to work
interesting
its such an odd issue
have you searched for that number in the code
curious if there's another target/cap anywhere
nothing
might be on backend
maybe it's 5000
true
it seems plausible to limit bitrate
otherwise people might send crazy bitrate and maybe crash electron
their rtc workers were not made to handle any more than the 720p web discord streams
backend limit is 8mbps for 1080p60 afaik
so this could be an rtc worker limit only
unless you mean electron backend
not discord backend
wh
a
then how do they support 1080p60
fun
??????
girl?
are you not paying attention in math / physics class ๐ญ

maybe you're more used to seeing it with capital E
5E3
๐ญ
js supports it and 5e3 is one byte less than 5000 so the minifier uses it
have fun reading them all :)
yeah fair
my calculator has an E button for short
interesting
mine has a x10^y
okay so
it seems the reason 8mbps isnt enough for streaming
is because its lowering the framerate instead of the quality when it cannot keep up
i need to figure that out
isn't that desktop behavior too
it usually lowers quality
and looks really blurry and blocky
which id honestly prefer
to framerate going to 7fps
that's probably an option somewhere
search for isEmbedded() or whatever
might be isPlatformEmbedded()
it's the check for native


