Slashdot Mirror


AMD Open-Sources Video Encode Engine

An anonymous reader writes "AMD's latest feature added to their open-source Radeon DRM graphics driver is VCE video encoding via a large code drop that happened this morning. A patched kernel and Mesa will now allow the Radeon driver with their latest-generation hardware to provide low-latency H.264 video encoding on the GPU rather than CPU. The support is still being tuned and it only supports the VCE2 engine but the patches can be found on the mailing list until they land in the trunk in the coming months."

22 of 34 comments (clear)

  1. Re:Holy shit by jedidiah · · Score: 1

    > It's almost like this has been on Intel's CPUs for years...

    Oh really?

    So what build of ffmpeg on Linux supports this?

    Having some weaker-than-everyone-elses GPU feature and actually having libre support for that feature are two entirely different things.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  2. Re:binary driver by fuzzyfuzzyfungus · · Score: 1

    Unless the binary mentioned is different from the various others in the directory, it's firmware that the driver needs to load onto the card on startup (which has been the case for Radeons for some time now) rather than a binary driver component that runs on within the host OS.

    Distribution will be a hassle, as always; but it's not architecturally much different from just adding a chunk of flash to the card and storing the firmware there instead.

  3. Did you mean Gpu? GPU is four times as fast. by raymorris · · Score: 2

    You said Intel CPU. Did you mean Intel GPU?
    GPU encoding is about four times as fast as CPU. Of course that depends on which GPU is being compared to which CPU.

    1. Re:Did you mean Gpu? GPU is four times as fast. by PhrostyMcByte · · Score: 2

      I'm sure he means Intel's Quick Sync hardware codecs, which are integrated on Intel's CPUs and does not use the integrated GPU.

      My understanding of AMD's VCE is that it is also a fully separate codec which does not use any GPU compute power, though they do have optimized paths to copy the framebuffer into VCE for low-latency screen capture.

    2. Re:Did you mean Gpu? GPU is four times as fast. by UnknowingFool · · Score: 1

      No I think he means VAAPI which allows for hardware h.264 encoding on Intel GPU and has been open sourced for years. The limitation was not all older hardware supported this particular encoding.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
  4. Re:Holy shit by kry73n · · Score: 1

    FFmpeg (upstream SVN tree >= 2010/01/18 / version 0.6.x and onwards)

    for reference: http://www.freedesktop.org/wik...

  5. Quality vs Speed by deimios666 · · Score: 2

    While I applaud AMD for their initiative there have been tests that show a drop in quality of GPU encoded H264 vs a CPU/software solution.
    For details check out: http://www.behardware.com/articles/828-27/h-264-encoding-cpu-vs-gpu-nvidia-cuda-amd-stream-intel-mediasdk-and-x264.html and http://www.tomshardware.com/reviews/video-transcoding-amd-app-nvidia-cuda-intel-quicksync,2839-13.html

    --
    I think, therefore you are.
    1. Re:Quality vs Speed by K.+S.+Kyosuke · · Score: 1

      Use HSA, then. If the program running on the GPU won't give identical results, it's a hardware bug.

      --
      Ezekiel 23:20
    2. Re:Quality vs Speed by KingMotley · · Score: 1

      Not a hardware bug. The program running on the GPU isn't the same as the one running on the CPU.

    3. Re:Quality vs Speed by gl4ss · · Score: 1

      it's not the same program.

      that's the thing... these new codecs, they don't specify exactly how you should encode.

      --
      world was created 5 seconds before this post as it is.
    4. Re:Quality vs Speed by K.+S.+Kyosuke · · Score: 1

      Indeed, but if a source code compiled for the CPU and the same source code compiled for HSA don't give the same results, it's a hardware bug.

      --
      Ezekiel 23:20
    5. Re:Quality vs Speed by tlhIngan · · Score: 1

      that's the thing... these new codecs, they don't specify exactly how you should encode.

      That's the point. Because codec quality is highly dependent on the tables you use, which is the main selling point of the codecs. In other words, the quality of the final output is strictly determined by the quality of the coder.

      The decoder rarely adds quality loss itself - it just reconstructs the signal based on what it is given and few decoders actually have a say in quality decisions.

      The coder part though is where the magic happens. It's where all the quality decisions are made. And it's how two coders can compete with each other - perhaps one encodes with higher quality, while another encodes faster.

      It's why you use say, LAME to encode MP3s over some commercial codec - LAME's encoding model has been refined over the years to be so good it can be indistinguishable. Even x264 has pretty good quality

      It's how the coders differentiate themselves on the market. There is no canonical encoding of a signal - there is so much flexibility that the encoder has a bunch of choices it can make that affect the final output.

  6. Codecs as far as the eye can see.... by ThatsDrDangerToYou · · Score: 4, Interesting
    If I never see another video codec in my career it will be too soon.

    Video decoder verification was the most tedious task I have ever been assigned. Just sayin.

  7. Re:binary driver by Kjella · · Score: 3, Informative

    From the mailing list, it appears you still need to link this all to a closed source binary...

    No, it's firmware/microcode. The driver sends it to the GPU at boot as a blob, it lives inside the card hidden from everything. The alternative would be to have an EEPROM and a firmware flashing utility, it'd still be there and closed source but it wouldn't be in the driver. It's not really part of the programming model, it's hardware initialization/configuration/tweaks to make the it work correctly according to the model.

    --
    Live today, because you never know what tomorrow brings
  8. Re:Holy shit by UnknowingFool · · Score: 2

    That's not what he's saying and you know it. He's staying on the topic of this article which is Intel has provided open source h.264 encoding (VAAPI) for years while AMD is now releasing code. You could do a little research. As for ffmpeg, it doesn't support VAAPI but that is a choice of the ffmpeg developers not to include it; however, through the external libx264 library, you can get ffmpeg to encode h.264. This has nothing to do with Intel as they released the code. That's like complaining that it's the Khronos Group's fault if PowerVR decided not to support OpenCL on their new GPUs.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  9. Re:Holy shit by Kjella · · Score: 3, Informative

    They have decoding support, but at least as recently as Google Summer of Code 2013 they don't have hardware encoding support. That seems to be the fault of the ffmpeg project though, encoding was added to the VA API in June 2009. Lack of interest?

    --
    Live today, because you never know what tomorrow brings
  10. Re:Nice work AMD by symbolset · · Score: 1

    It is still a step backward, a last ditch attempt to rescue the patent encumbered CODEC before it becomes extinct. They should let it die, for the good of progress. Who wants a CODEC backed by a group that sued a mom for publishing a birthday video online over patent licensing?

    --
    Help stamp out iliturcy.
  11. interesting, hardware video chip on the CPU by raymorris · · Score: 1

    That's interesting. For anyone who, like me, wasn't familiar with Quick Sync, it seems to be a dedicated video codec chip on the CPU. In testing, it was much faster than CPU or even GPU encoding, but at lower picture quality per megabyte.

    1. Re:interesting, hardware video chip on the CPU by hattig · · Score: 1

      Yes, this is the sort of task-oriented dedicated function blocks for video decode and encode that have been popular in GPU, ARM SoC and now x86 "APU" for quite some time.

      Useless for high quality encoding, but great for standard consumer uses, quick encoding and transcoding of all those phone videos.

      The PS4 probably uses VCE for its TwitchTV integration, for example.

  12. Re:Holy shit by wagnerrp · · Score: 1

    Encoding was added to the VAAPI interface, but was never supported by Intel hardware. There's not much sense implementing a protocol when there's no hardware to interface with. You may be looking for the Intel Media SDK, which wasn't made publicly available until the middle of last year.

  13. not exactly. Can real time vs can't by raymorris · · Score: 2

    I don't think it's quite nonsense. A motorcycle has lower latency than a truck (you can get there faster), but a truck has higher throughput (it can deliver 1000 boxes quicker). That's a useful distinction.

    Especially Quick Sync can easily encode IN REAL TIME, so it's useful for DVRs, etc. (Think instant replay). An unassisted CPU will struggle with real time encoding. Being able to encode even multiple streams in real time is better than not being able to.

  14. Re:Holy shit by UnknowingFool · · Score: 1

    Encoding was added to the VAAPI interface, but was never supported by Intel hardware. There's not much sense implementing a protocol when there's no hardware to interface with. You may be looking for the Intel Media SDK [intel.com], which wasn't made publicly available until the middle of last year.

    Intel says otherwise: Hardware encoding is supported with Intel HD 2000 and newer (Sandy Bridge)

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.