Hacker News new | ask | show | jobs
by muststopmyths 2654 days ago
> Nvidia and co. now have specialised GPU circuits allowing one to stream the encoded video output to memory.

Could you clarify what you (and the comments mentioning NVENC below) are talking about ?

As far as I understand it, NVENC and the ilk are solutions that capture video output and encode it to H264. So they are x264 encoding accelerators, nothing more.

If you were running a datacenter this way, you'd be much better of having a bank of Matrox capture cards (which support multiple simultaneous inputs) in dedicated hardware converting your video game output to x264 streams for broadcast. They even support capturing, x264 encoding and streaming to IP addresses on your network for further distribution.

What would be interesting is if they bypass the video display output phase completely and render the finished framebuffers to memory (or an encoder chip via DMA over PCI) instead. I assume this would cut down manufacturing (+licensing for HDMI ?) costs a bit.

I know AMD has DirectGMA that allows other devices on the PCI bus access to limited chunks of GPU memory. There are signalling mechanisms in DirectGMA so that devices can basically implement producer-consumer pairs.

As far as I know this doesn't exist in consumer chips though. You need "workstation" GPUs. Which might explain Google's particular GPU choice, now that I think about it.

3 comments

You:

>> As far as I understand it, NVENC and the ilk are solutions that capture video output and encode it to H264. So they are x264 encoding accelerators, nothing more.

Me:

>> allowing one to stream the encoded video output to memory.

You're being pedantic. What I meant is that OnLive actually needed specialised hardware because they could not provide their service without it (as in: there was no capability in hardware, without changes to the codebase - to render not to an external display). You, on the other hand - are speaking about the conceptualised "perfect" implementation.

Google doesn't need that hardware in order to provide that service because by now there's a hardware capability that allows you to capture the screen of the device you are rendering to. They could try to be more efficient by using other hardware, but that's not a prerequisite for their Gaming Service.

>What would be interesting is if they bypass the video display output phase completely and render the finished framebuffers to memory...

That's exactly what NVENC, Capture SDK, AMD's AMF, and Intel's QuickSync do. Just encode the framebuffer output of whatever game engine you're using with one of those API's. (And remember to make sure your game engine license allows you to use it that way. As always, if you use Unity, you're out of luck, they specifically forbid you from doing this.)

Thank you for this. I was thinking that my understanding of NVENC was completely wrong based on what the sibling posts are positing.