Skip to content
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

webrtc-rs-rtp was yanked #3

Open
nirvdrum opened this issue Oct 8, 2022 · 4 comments
Open

webrtc-rs-rtp was yanked #3

nirvdrum opened this issue Oct 8, 2022 · 4 comments

Comments

@nirvdrum
Copy link

nirvdrum commented Oct 8, 2022

I just cloned the project (rev 2f4e0d4) 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
Copy link
Author

nirvdrum commented Oct 8, 2022

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
Copy link
Member

tuxuser commented Oct 8, 2022

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
Copy link
Author

nirvdrum commented Oct 8, 2022

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
Copy link
Member

tuxuser commented Oct 22, 2022

Update on the state of the project:

What currently works in the PoC:

  • Creating a connection to XCloud
  • Downloading the list of playable titles
  • Automatically choose the first title in the (alphabetical) list
  • Starting a WebRTC session
  • Once session is established, write audio/video stream to video.mkv/audio.ogg respectively

Whats missing:

  • Handling of the DataChannels to enable Gamepad input. The logic for that (what to send, what to receive) is already enabled in the base library.
  • Rendering audio/video to a surface

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?

  • GStreamer should be able to do everything that webrtc-rs can + it brings its own implementation to render video / playback audio. Also it does decoding by itself.
  • Only the DataChannels would be handled then in the background

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"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants