OpenXbox / xcloud-rs

XCloud experiments in RUST
19 stars 3 forks source link

webrtc-rs-rtp was yanked #3

Open nirvdrum opened 1 year ago

nirvdrum commented 1 year ago

I just cloned the project (rev 2f4e0d498958506fef1108d96ca57b54457af5c9) and was unable to build it because gamestreaming's webrtc-rs-rtp dependency cannot be found. It was yanked and gamestreaming does not have a Cargo lock file causing a search for the most recent version to fail.

nirvdrum commented 1 year ago

Looking at the org page in GitHub, I saw there was activity in this project only a day ago, but the master branch hasn't been updated since 13-03-2021. That led me to discover develop branch, which swaps out the dependency.

I don't know what the project's policy is with regards to when things get marked as fixed. It's fixed on the develop branche, but the issue currently appears on the default branch (master) and that's what the README's instructions use.

tuxuser commented 1 year ago

Hey @nirvdrum, thanks for your interest. This project is unfortunately not in a usable state at all. As you noticed, I just recently upgraded the dependencies and fixed up the resulting API changes.

Now the next step is to soft-deprecate the gamestreaming module by renaming it to gamestreaming_native and freeze further development for now - as this native protocol is not fully researched yet.

Instead, a new modue gamestreaming_webrtc will be introduced, which will base off the implementation by @unknownskl (https://github.com/unknownskl/xbox-xcloud-player) - but instead of using the internet browser WebRTC functionality, I would like to use https://github.com/webrtc-rs/webrtc

TL;DR: It's a work-in-progress codebase :)

PS: Good hint on the Cargo.lock file!

nirvdrum commented 1 year ago

Ahh, no worries. Thanks for the info. Based on the I was under the impression the openxbox.org site, I was under the impression this was further along. Although, I was also surprised because the last time I looked into this topic, I couldn't find any information. I was hoping to learn more about the protocol by digging into the code. Incidentally, I started by looking at xbox-cloud-player, but an implementation that didn't require Node or Electron was appealing.

I'd be happy to help contribute. I don't know much about WebRTC, but this could be an interesting learning opportunity.

tuxuser commented 1 year ago

Update on the state of the project:

What currently works in the PoC:

Whats missing:

With that in mind, I am targeting a second approach for a client implementation -> GStreamer (instead of webrtc-rs, see: https://docs.rs/gstreamer/latest/gstreamer/)

Why?

If you like to have a chat, about areas to contribute, jump to Discord

PS: PoC can be invoked by:

# Auth and get tokens.json
cargo run --bin auth-webview --features=webview
# Start PoC client
cargo run --bin client-webrtc --features="xal webrtc-rs"