STEAM GROUP
Steam Remote Play homestream
STEAM GROUP
Steam Remote Play homestream
3,862
IN-GAME
38,452
ONLINE
Founded
November 7, 2013
GeeEl Feb 26, 2014 @ 10:55pm
Summary of decode/encode hardware support
I was wondering if I might want to pick up a newer video card to try hardware encoding on my host (AMD HD 7750) so I did a bit of web searching today to try and find out what hardware supports hardware encoding/decoding of H.264.

Summary:
For hardware decode, AMD/Nvidia graphic cards dating back to 2007ish
For hardware encode, Intel CPUs and AMD/Nvidia GPUs from 2012(ish) onwards.

The big caveat is how easily these are integrated into Steam IHS. As expected software support for the hardware encode/decode is good in Windows, reasonable in Mac and patchy in Linux (especially due to older graphic cards being kicked into "legacy" mode).

AMD H.264 Decode/Encode support
Decoding
Wikipedia knows all: Unified Video Decoder[en.wikipedia.org].
So, most Radeon HD 2000 (circa 2007) and beyond (but not the HD 2900 series) should support H.264 decode.

Encoding
It was surprisingly hard to find out when AMD added in H.264 hardware encoder support (I guess they're modest, and my GoogleFu is weak), but it turns out that it was the Radeo HD 7700 series and Catalyst 13.10 Beta. That's fairly recent, the beginning of 2012.

http://us.hardware.info/reviews/2609/8/amd-radeon-hd-7000-series-reviewed-video-encoder-and-gpgpu

AMD call it the Video Codec Engine in the AMD Radion HD 7700 specs[www.amd.com]
  • Video Codec Engine (VCE)
    • Multi-stream hardware H.264 encoder
    • Full-fixed mode: 1080p @ 60 FPS encoding
    • Hybrid mode: Stream Processor-assisted encoding

Intel H.264 Decode/Encode support
Intel (not exactly known for video cards, but wanting to provide H.264 anyway) provides video decode/encode support via dedicated CPU hardware and their Intel Quick Sync Video[www.intel.com] system.
The Wikipedia page[en.wikipedia.org] seems a little more informative than the snazzy Intel site.

Encode
It looks like Sandy Bridge only supports encoding MPEG 2, but not H.264 (from Tom's Hardware review[www.tomshardware.com]

Tetrachrome did some tests[www.tetrachromesoftware.com] on HD 4000 (Ivy) vs HD 6000 (Haswell) H.264 encoding using Quick Sync, and found the Ivy encoding to be faster, but a little lower in quality than Haswell. They concluded that seeing as Ivy was very fast but quality was a bit iffy that it was a sensible tradeoff.

The question I have is whether there's a great advantage for streaming to have the hardware encoder on the graphics card. Does that allow streaming to skip a "Capture" phase? For game streaming purposes (as opposed to transcoding video files) is doing it via GPU better?

Nvidia H.264 Decode/Encode support
Decoding
Nvidia provides H.264 decoding via "PureVideo HD[en.wikipedia.org]", on what loosk to be everything from 2006 onwards.

Encoding
The GeForce 600 Series[en.wikipedia.org] (2012) introduced NVENC for hardware encoding of H.264. This is what is used by the Nvidia Shield and Shadowplay systems.
Last edited by GeeEl; Feb 26, 2014 @ 10:59pm
< >
Showing 1-6 of 6 comments
wrathchild67 Mar 2, 2014 @ 1:12pm 
I have yet to get hardware decoding working with the HD4000 in my i3 3225. I've used the latest drivers from Intel's site dated October 2013 and then tried the newer drivers that only Windows Update seems to have which are dated this January. Software decoding was working alright until recently. I used to be able to get 60fps over my powerline network and now I'm luck to get 25fps. Nothing changed on my network and I get over 100Mb/s real bandwidth between client and host. There must have been a regression introduced in the latest Steam client beta..
Last edited by wrathchild67; Mar 2, 2014 @ 1:12pm
GeeEl Mar 2, 2014 @ 1:47pm 
Certainly possible.
Are you running SteamOS on the client?
( EDIT: oh, windows update.. Probably not)

And I should again make clear that this isn't a list of what is currently using hardware encode/decode or even what is confirmed as going to be supported (although I hope it all will be).

The issue will be that valve probably have to write different bits of code to talk to each of these implementations (possibly different per major versions of the driver) across the clients (windows, Mac, Linux). That makes...(math time) at least 18 implementations to develop and test.
:-/
Last edited by GeeEl; Mar 2, 2014 @ 2:16pm
mkdr Mar 2, 2014 @ 6:07pm 
This cant be correct, AMD HD5800 series has hardware encode, and it's from 2009.
Last edited by mkdr; Mar 2, 2014 @ 6:09pm
GeeEl Mar 3, 2014 @ 12:36am 
Hmmmm, it'd be nice if that's so - do you have a link for where you read it had a hardware H.264 encoder?

Some of the older cards had dedicated encoders for MPEG-2 (for instance) or parallel computing components that could help out software with transcoding video, but I think dedicated hardware encoding of H.264 was new in the 7000s.
mkdr Mar 3, 2014 @ 3:46pm 
Nope. The newer lines may be much faster or have newer profiles, but the 5800 had already 264 encoding. I doubt thought Steam Streaming uses 264 encoding, mpeg2 for example or any other much less compress codec makes much more sense, because it needs to be as low latency as possible, and the bandwidth is like 20-30mbit, it doesnt need to be compressed that high in LAN. It was called ATI Stream technology btw (what you called parallel computing components is hardware encoding), and there were applications which could be uses for 264 encoding of the chip, an AMD tool for example too.
Last edited by mkdr; Mar 3, 2014 @ 3:47pm
GeeEl Mar 3, 2014 @ 11:02pm 
That doesn't seem to match what AMD says about their 7700s

http://www.amd.com/us/Documents/UVD3_whitepaper.pdf
Video codec engine (Vce)
As the PC has become the central hub for multimedia content in the house, there a growing need for end-users access and transfer video content to other devices like tablets, or streaming to other PCs in real-time, requiring video encode, which is a very complex and long processing, especially for to encode or stream HD video. For years, HD video encode has been limited to PCs with high-end CPU and was slower than real-time, creating frustration to end-users.

To solve this challenge, new and dedicated hardware named the Video Codec Engine (VCE) was introduced with AMD Radeon™ HD 7900 Series to accelerate HD video encoding. This technology is also present in the AMD Radeon™ HD 7700 and HD 7800 Series GPUs.

At the heart of VCE is a multi-stream hardware H.264/AVC encoder (Figure 11). It is power-efficient and faster than real-time, enabling 60 FPS encoding of content with a resolution up to 1920x1080 (1080p).

VCE supports 4:2:0 color sampling encode, the most commonly used color space of consumer video formats. VCE also includes optimizations for scene changes and variable compression bitrate for an enhanced visual quality of the encoded video.

Sounds a lot like the previous streaming was a slower hardware/software thing.

Streaming is definitely using h.264, BTW
Edit: unless libx264 does other codecs - I hadn't considered that.
Last edited by GeeEl; Mar 3, 2014 @ 11:26pm
< >
Showing 1-6 of 6 comments
Per page: 1530 50

Date Posted: Feb 26, 2014 @ 10:55pm
Posts: 6