5 ms·
This is actually a trick comparison. A lot of desktop software doesn't make use of hardware encoding facilities, even if available, since a good software encode
by realityking 6y ago
This is actually a trick comparison. A lot of desktop software doesn't make use of hardware encoding facilities, even if available, since a good software encoder will provide better quality.
- chrisseaton 6y ago> a good software encoder will provide better quality Why is hardware lower quality? Isn't the encoding algorithm deterministic and so the same wether you do it in hardware and software?
- galad87 6y agoThe decoder is deterministic. The encoder is free to decide where to allocate more bit of which block type is better in a specific place or other things. A software encoder can be improved without replacing the entire cpu/gpu.
- chrisseaton 6y agoAh so I guess hardware is generally a bit behind due to longer release cycles and more conservative in design due to cost of experimentation and mistakes.
- jeroenhd 6y agoMany video codecs allow you to pick quality settings. This allows live transcoding and streaming on things like phones and other low-power devices at the cost of quality (or size). This allows a lot of versatility with the same video format, because this way it can be used for both 4k movie footage and security camera streams. You wouldn't want to encode a movie with phone settings. Encoders like NVENC and QuickSync would drastically improve encoding speed at the same cost, albeit likely at slightly higher quality because those chips can be actively cooled and therefore process more data within a time frame.
- p_l 6y agoHardware encoders are also often limited in features, often in relation to expected usage - which is often realtime video encoding from camera. Software encoders allow complex settings or just spending more time on each frame, as well as they just might have more memory (I'm not an expert, but IIRC h.264 quality levels corresponded to huge jumps in memory usage, which had impact on available hw encoders)
- dehrmann 6y agoOne part might be that hardware encoders target real-time encoding. Fire up ffmpeg and you'll find that you can't encode x265 with its better quality settings in real time.
- Youden 6y ago> Isn't the encoding algorithm deterministic There is no "the encoding algorithm" when it comes to video encoding. Think of a video codec as being analogous to HTML. HTML isn't defined as "this is the algorithm for producing a HTML file", it's defined as "these are the things a browser will do when you give it this data". How to combine those things to do what you want is up to you. It's the same for video: the codec standard doesn't tell you how to encode the video, it tells you what you need to support if you want to _decode_ the video. So different encoders can encode videos in entirely different ways, even when using the same codec. As such, they can have very different performance characteristics. As for why a software encoder will provide better quality, it's because a software encoder has luxuries like a high-power general-purpose CPU and copious amounts of memory that allow it to do things that are difficult in dedicated hardware. A hardware encoder on a mobile device for example will often be a tiny tiny piece of silicon in some corner of the SoC, so it'll have limited physical space for complex logic. It'll also have serious power and thermal constraints. These are things a hardware encoder has to work around that a software encoder doesn't.
- nojito 6y agoThis just proves my point. At the end of the day the enduser doesn’t care about the technical differences. They just want their videos. Which is why the iPad is so impressive.