Skip to main content

Testing Shows AMD's AMF Encoder Finally on Par With Nvidia NVENC

Radeon RX 6800 XT
(Image credit: AMD)

After almost a decade of quality issues, AMD's AMF encoder has finally received a massive upgrade in image quality thanks to the introduction of B-Frames in AMF Release 1.4.24. The update actually dropped months ago, but it wasn't until yesterday that Chris Griffith from Code Calamity finally put the new update to the test.

According to Griffith, he saw massive gains from the update. The AMF encoder was able to close in on Nvidia's newest NVENC encoder found in its RTX 20 series and 30 series GPUs. This update could see AMD Radeon GPUs as much more viable solution for game streaming, with low bitrate images looking almost as good as Nvidia's counterpart.

Major issues surrounding AMD's encoders have gone back as far as the 400 series Polaris GPUs, and in some cases even further. Support and quality have been constant issues and, for the most part, were always inferior to other encoders such as Nvidia's NVENC or Intel's QuickSync encoder. 

But the quality issue was compounded by the introduction of Nvidia's 6th generation NVENC encoder, introduced into the RTX 20 series, which elevated GPU encoding significantly, putting performance on par with good x264 encoding.

Despite 6th generation NVENC coming out over four years ago, AMD never really made a comeback, with its encoders remaining largely the same, even on the latest Radeon RX 6000 series GPUs. Streaming expert EposVox's video illustrates how terrible AMF's streaming performance is in low-bitrate scenarios running on the H.264 codec.

The only exception to this is HVEC encoding, where AMD's AMF encoder performs exceptionally well. But this capability will almost never be used in the real world, with all modern video players today requiring H.264 support.

B-Frames Are Back

The decisive feature improving AMF's image qulaity is the re-introduction of B-frames into the AMD encoder. Ironically, AMD originally had B-Frame support with its original encoder and decoder engine VCE (starting with the 2nd gen implementation). But AMD seems to have dropped support for it when the company released its new VCN engine, which was first released with AMD Raven Ridge APUs and RDNA1 graphics cards.

B-Frames are a very important aspect of video compression in the modern era. These frames are paired with I and P frames to build a highly compressed video file. B frames allow the H.264 compression algorithm to predict image data from both past frames and future frames in a video stream. It is an optional feature, but one that has proven to significantly increase the image quality of streams at lower bit rates.

Benchmarks

Code Calamity used VMAF to measure the image quality differentiation between AMF, NVENC and Intel QuickSync, with Big Buck Bunny as the reference video. In this benchmark, the highest possible score 100 is points. For reference, NVENC scores 96.13 points, and Intel QuickSync scored 96.37 in this test. According to Code Calamity, AMD's AMF encoder is just half a point behind both those encoders, where as before (without B-Frames), AMD's AMF  was a full two points behind.

This benchmark can be difficult to understand. But basically, it means AMF's image quality is right underneath Nvidia's latest NVENC encoder right now, which is much much better than where it used to sit before the latest update.

Support Is Still Largely Absent

As of now, the only problem with this new AMF encoder update is that no streaming platform has offered support, including OBS, despite the update being out for nearly four months. It's unclear why no one has implemented support for the update yet, but AMD does have a history of not broadly supporting developers in implementing its encoder SDKs. This might be the reason why support is taking so long to implement.

So for now, we have to take this benchmark as a future look into AMF's performance. Hopefully, it won't take long for apps like OBS to take advantage of the new update, so that current and future owners of AMD cards can make better use of them for streaming and other tasks.

Aaron Klotz
Aaron Klotz

Aaron Klotz is a freelance writer for Tom’s Hardware US, covering news topics related to computer hardware such as CPUs, and graphics cards.

  • -Fran-
    Good to know they're adding things to make the HW encoder better, but no one working with videos will EVER use a hardware encoder. Even when streaming, I'd be willing to say most people will still use software encoder with the fast preset for either H264 and H265. Save the output raw and then process it; that is why most video editors salivate for ThreadRipper XD

    Anyway, pedantries and saltiness aside, it's still good to know they're now at least viable on paper. I wish more Devs force AMD to help them add support for these features and AMD, please, realize you're not doing your Company any favours by ignoring such important tools like OBS, FRAPS (does it still exist? XD) and a plethora of other encoding and decoding software out there (LAV, madVR, X264, etc!).

    Regards.
    Reply
  • gggplaya
    Author said:
    The only exception to this is HVEC encoding, where AMD's AMF encoder performs exceptionally well. But this capability will almost never be used in the real world, with all modern video players today requiring H.264 support.

    You should probably qualify that as live streaming support.

    I used AMD relive all the time years ago with my Vega64, the h.265 enconding was superior to Nvidia's latest h.264 at the same bitrate. I would save the last 20 minutes for games that I won. The clips were cleaner on AMD h.265 than my RTX3080 I have now saving with shadowplay in h.264 for the same file size. AMD and Intel Quicksync h.264 encoding was Macroblocking galore at lower bitrates.

    CPU encoding is still the cleanest at any given bitrate, but especially at low bitrates. If you're a streamer, you should consider a 12 core or 16 core CPU so you can allocate a few cores to video encoding.
    Reply
  • salgado18
    -Fran- said:
    Good to know they're adding things to make the HW encoder better, but no one working with videos will EVER use a hardware encoder. Even when streaming, I'd be willing to say most people will still use software encoder with the fast preset for either H264 and H265. Save the output raw and then process it; that is why most video editors salivate for ThreadRipper XD

    Anyway, pedantries and saltiness aside, it's still good to know they're now at least viable on paper. I wish more Devs force AMD to help them add support for these features and AMD, please, realize you're not doing your Company any favours by ignoring such important tools like OBS, FRAPS (does it still exist? XD) and a plethora of other encoding and decoding software out there (LAV, madVR, X264, etc!).

    Regards.
    People working with videos will invest in CPU encoding, because to them time and quality is money. But GPU encoding is very important to casual streamers, who commonly have 8 or less cores to work with, and probably don't mind a slight drop in quality.

    It will be very useful for other types of streaming too, like playing through Steam Link or Parsec, or even Xbox and Playstation, which uses AMD GPUs.

    Also, they got to evolve the tech, so one day it reaches CPU quality on the GPU, right?
    Reply
  • -Fran-
    salgado18 said:
    People working with videos will invest in CPU encoding, because to them time and quality is money. But GPU encoding is very important to casual streamers, who commonly have 8 or less cores to work with, and probably don't mind a slight drop in quality.

    It will be very useful for other types of streaming too, like playing through Steam Link or Parsec, or even Xbox and Playstation, which uses AMD GPUs.

    Also, they got to evolve the tech, so one day it reaches CPU quality on the GPU, right?
    Hm... I'll be willing to say dedicated encoders will never be as good as software ones only because of how much you can tweak per scene or frame types. Plus, the "accelerated" part is rather a small one in the whole pipeline. We all talk about "hardware based encoding", but in reality is like 1/5th of the whole pipeline? For both encoding and decoding. This is what I remember, but I'd imagine it hasn't changed that much from when I investigated all of this. Going to doom9.org is always a good reminder :D

    In any case, I don't disagree it's a useful feature to have; not at all. As I said, it was mostly a salty comment, as I personally don't like hardware encoders over software. Plus, as a bit of a counter: even 8 core CPUs actually do an excellent job at encoding on the fly with AVX1/2 nowadays. You just need to know how to tweak the encoder in OBS or whatever you're using (usually wrapping X264). It's ironic how most games, as they don't fully use the whole thing, that spare capacity is more than enough for the software encoder to do a great job. You'll use more power and endager hiccups, but from personal experience, the GPU having to deal with less usually yields better results. Maybe it would be an interesting set of tests? :p

    EDIT: Talking in the Tom's Discord, I remembered this article: https://www.tomshardware.com/reviews/video-transcoding-amd-app-nvidia-cuda-intel-quicksync,2839.html
    It is definitely a good read to understand the intricancies of "hardware encoding and decoding".

    Regards.
    Reply
  • Sleepy_Hollowed
    Huh, I did not know the 264 encoding was bad on AMD before this article, since I've only been using 265 to transcode my video files and save space, and it looks real good without artifacts, but this is good.

    I'm also amazed that there's so little support for 265 for streaming as well, but I guess it's not surprising since web cams that come in 4K are still rare and heck, 1080p on mass laptops is now becoming mainstream.
    Reply
  • Kamen Rider Blade
    I'm still hoping for H.266 VVC to quickly take off and EVC Baseline to get support since it's "Royalty Free".
    Reply
  • Giroro
    "But the quality issue was compounded by the introduction of Nvidia's 6th generation NVENC encoder, introduced into the RTX 20 series, which elevated GPU encoding significantly, putting performance on par with good x264 encoding"

    I don't think this statement properly expresses the idea that the NVENC hardware H.264 encoding is visually closer to a specific setting in a specific software encoder.

    "The only exception to this is HVEC encoding, where AMD's AMF encoder performs exceptionally well. "

    I've seen no testing to support the idea that AMD is "exceptional" at HEVC encoding. The testing I've seen is that AMD's HEVC encoding looks somewhat better than NVENC's h.264, and good enough that its not that critical for video that will ultimately get crushed for internet delivery... but it is still far inferior to HEVC encoding from NVidia and in software.

    But, its hard to prove that encoding quality "looks better", and the overwhelming majority of the information out there was made by streamers who know almost nothing about video...outside of the OBS settings they heard about from another streamer, who copied the "how to" content from another streamer, and so on.
    Reply
  • gggplaya
    Giroro said:
    "But the quality issue was compounded by the introduction of Nvidia's 6th generation NVENC encoder, introduced into the RTX 20 series, which elevated GPU encoding significantly, putting performance on par with good x264 encoding"

    I don't think this statement properly expresses the idea that the NVENC hardware H.264 encoding is visually closer to a specific setting in a specific software encoder.

    "The only exception to this is HVEC encoding, where AMD's AMF encoder performs exceptionally well. "

    I've seen no testing to support the idea that AMD is "exceptional" at HEVC encoding. The testing I've seen is that AMD's HEVC encoding looks somewhat better than NVENC's h.264, and good enough that its not that critical for video that will ultimately get crushed for internet delivery... but it is still far inferior to HEVC encoding from NVidia and in software.

    But, its hard to prove that encoding quality "looks better", and the overwhelming majority of the information out there was made by streamers who know almost nothing about video...outside of the OBS settings they heard about from another streamer, who copied the "how to" content from another streamer, and so on.

    From my anecdotal observation, comparing output from my Vega 64 to my RTX 3080, AMD HEVC looks much cleaner than Nvidia h.264 Shadowplay at the same file size output for 20 minutes of video, around 3GB is what I aim for. I can't get Nvidia to use h.265 encoding for shadowplay, whereas h.265 is available on AMD Relive.
    Reply
  • Kamen Rider Blade
    gggplaya said:
    From my anecdotal observation, comparing output from my Vega 64 to my RTX 3080, AMD HEVC looks much cleaner than Nvidia h.264 Shadowplay at the same file size output for 20 minutes of video, around 3GB is what I aim for. I can't get Nvidia to use h.265 encoding for shadowplay, whereas h.265 is available on AMD Relive.
    Now imagine halving that file size with H.266 VVC once it gets supported in hardware.
    Reply
  • LuxZg
    Kamen Rider Blade said:
    Now imagine halving that file size with H.266 VVC once it gets supported in hardware.

    Why not AV1 ? Which is royalty free and already in upcoming hardware?
    Reply