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

nvenc RGB pixel upload mode #1347

Closed
totaam opened this issue Oct 28, 2016 · 6 comments
Closed

nvenc RGB pixel upload mode #1347

totaam opened this issue Oct 28, 2016 · 6 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Oct 28, 2016

Issue migrated from trac ticket # 1347

component: encodings | priority: major | resolution: fixed

2016-10-28 09:44:50: antoine created the issue


Split from #1260, see also #1308 (10-bit).
Saves us doing the CSC conversion using CUDA - though we may still want to keep this code around for older cards / drivers.

@totaam
Copy link
Collaborator Author

totaam commented Feb 20, 2017

2017-02-20 11:43:30: antoine changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Feb 20, 2017

2017-02-20 11:43:30: antoine commented


Makes sense to deal with this one at the same time as #1317 and #1308.

@totaam
Copy link
Collaborator Author

totaam commented May 2, 2017

2017-05-02 17:52:39: antoine commented


Done:

  • preparatory work in r15770: splitting code into more re-usable methods
  • RGB upload supported added in r15778: the CUDA kernel step is now optional, RGB mode uploads straight to the encoder's input buffer (confusingly called CUDA output buffer.. since this is normally the output of the CUDA kernel)

We also gained:

  • more fine-grained attributes: the "YUV444" and "lossless" flags are now per-codec. (ie: we don't disable them globally for "H264" if "HEVC" doesn't support it - and vice versa)
  • ability to turn off some input formats using env vars: XPRA_NVENC_NATIVE_RGB=0, XPRA_NVENC_YUV420P=0 and XPRA_NVENC_YUV444P=0.

Tested on MS Windows only with NVFBC (#1317) because the NVENC encoder refuses to run on my Linux system: with the GTX 1070 it crashes, with other cards it errors out (and the exact same card and code work on MS Windows!)

I am keeping this ticket open because I would like to test RGB upload on Linux. (maybe try a different card, or diff the long list of API call arguments with a working example: ffmpeg or the samples provided)

@totaam
Copy link
Collaborator Author

totaam commented Jul 23, 2017

2017-07-23 14:24:13: antoine changed status from assigned to closed

@totaam
Copy link
Collaborator Author

totaam commented Jul 23, 2017

2017-07-23 14:24:13: antoine set resolution to fixed

@totaam
Copy link
Collaborator Author

totaam commented Jul 23, 2017

2017-07-23 14:24:13: antoine commented


Not sure how I got it to work on MS Windows in the past, but since it just refuses to work with the latest code, r16455 disables it on win32.
See #1552#comment:4 for details. No big loss since we often get the buffers from NVFBC anyway (#1317) so doing the CSC via CUDA is cheap.

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

1 participant