moonlight-stream / moonlight-qt

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
GNU General Public License v3.0
10.4k stars 609 forks source link

Add support for nvdec on tegra x1 chip #335

Closed GavinDarkglider closed 4 years ago

GavinDarkglider commented 4 years ago

Is your feature request related to a problem? Please describe. nvidia's l4t build userspace uses gstreamer/v4l to implement its hardware decoder. This is the chip that is used on the Nintendo Switch. If we could get support for this in linux, it would be nice, as there is much better support in linux for the joycons as inputs, as analog doesnt work in current android build, and nvdec isnt working in the next revision.

Describe the solution you'd like I would like to see support for the tegra nvdec on the tegra X1 added to moonlight.

Describe alternatives you've considered Not sure what other options there are, outside of api wrappers, and that can get messy real quick, and isnt guaranteed to work in future builds. Unfortunatly nvpipe doesnt support jetson boards, so it isnt an option.

Additional context https://developer.download.nvidia.com/embedded/L4T/r32_Release_v1.0/Docs/Accelerated_GStreamer_User_Guide.pdf?yZ5bjRRuZ1ysQI0YJktqQN3aZgw4pRHyJNI1fmPQiLpumjuBcJ35qX6Qy8uyWds2-wiFwuMzX-lFItOQd91H-CXWqUW0Ru4Qr7oHetBNmSY-eYdhzz8-5XroD_YJM2pfCTIFcSvBOXiWq-FXQS_y8qvlAVxTCqDMA2Mx6StYtxLC4ZOZ8_Y

https://docs.nvidia.com/drive/nvvib_docs/NVIDIA%20DRIVE%20Linux%20SDK%20Development%20Guide/baggage/group__nvmedia__top.html

auto-comment[bot] commented 4 years ago

If this is a question about Moonlight or you need help troubleshooting a streaming problem, please use the help channels on our Discord server instead of GitHub issues. There are many more people available on Discord to help you and answer your questions.

This issue tracker should only be used for specific bugs or feature requests.

Thank you, and happy streaming!

cgutman commented 4 years ago

@GavinDarkglider and I have been discussing this on Discord, but I'll post an update here too.

The jetson-ffmpeg implementation is supported as of https://github.com/moonlight-stream/moonlight-qt/commit/f0119b1231131f0f84966ef7ab029f909eca5903

Moonlight requires the latest code in jetson-ffmpeg with https://github.com/jocover/jetson-ffmpeg/pull/22 and https://github.com/jocover/jetson-ffmpeg/pull/23 applied.

I created a Bintray repo with the packages built for L4T Bionic and tested on the Jetson Nano:

echo "deb https://dl.bintray.com/cgutman/moonlight-l4t bionic main" | sudo tee /etc/apt/sources.list.d/moonlight-l4t.list 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
sudo apt update
sudo apt install moonlight 
cgutman commented 4 years ago

Officially released in v2.0.0 in the moonlight-stream repo.

@GavinDarkglider If you can please update the Moonlight tutorial thread to point to the offical repo as listed on https://github.com/moonlight-stream/moonlight-docs/wiki/Installing-Moonlight-Qt-on-Linux4Tegra-(L4T)-Ubuntu