So, in order to build a Plex Media Player client that has the ability to Direct Play as much as possible: What are the Criteria ?
What factors determine the possibilities for a PLayer to Direct Play ?
Is it only the software/Operating System or does the Hardware also lpay a part ?
Both.
Particularly on lower cost / small form factor devices the hardware playback support is a must. Otherwise the device wouldn’t be able to play at all because its cpu is so slow that it wouldn’t be able to decode the data in software.
On a higher powered PC, you will be able to play many media formats purely in software, using the Plex Media Player (free download below).
But even this software needs in most cases hardware decoding support in order to show you the most demanding video codec or the highest picture resolution (namely HEVC/H.265 and 4K/UHD video) without stuttering.
BTW ‘Plex Media Player’ (PMP) is not an umbrella term which covers all Plex clients. PMP stands for the PC hardware Plex client with the biggest media format support that exists in the Plexiverse.
Plex clients on other hardware are usually called “Plex for [device/platform]”
A popular example of a device which can only show you video with hardware decoding support is the Raspberry Pi. If Plex player wouldn’t use its integrated H.264 decoder hardware, you’d only get a ‘slide show’ instead of a video.
Each device type has its own set of video and audio codecs it can decode in hardware.
Each device has its own CPU which may or may be not able to decode additional media formats purely in software.
Each device has its own software stack which may or may not allow 3rd party software (like the Plex client) to make use of its inbuilt hardware playback abilities.
Many of these hardware decoders only support a given media format if it adheres to a certain set of rules, like maximum bitrate, color depth, compression methods etc.pp. (Yes, even if you have 2 video files which both use the H.264 codec, some devices could only play one of them because the other file exceeds some of the individual restrictions of that device.)
Each device has its own quirks and bugs which may prevent usage of some of its, theoretically supported hardware feature
Many a device could be “coaxed” to play more media formats with hardware support, given enough developer time. But developer time is limited.
Given the above list, I think you understand that there is no definitive list which shows which device is supporting which media formats under which circumstances. The number of possible combinations is just too big.
That’s why there is the Plex Transcoder which transforms files, which exceed the abilities of a certain player down to a secure, supported file format.
Yes, sometimes transcoding happens unnecessarily, either because Plex doesn’t know about the precise abilities of this particular device or because the manufacturer didn’t care to note the abilities in its firmware (from where Plex could read them. This happens very often with cheap Android TV boxes.)