Plex on iOS stutters playing HEVC mp4 with codec ID as HEV1 - Infuse does not

Server Version#: 1.31.2.6810
Player Version#: 8.16

Using an iPhone 8 Plus

Plex on iOS shows constant stutter on playback when playing HEVC mp4 with codec ID set as HEV1

If the codec ID is set as HVC1 then playback is normal without issue

HEV1 is SW based decode and HVC1 is HW based decode

Infuse will play both HVC1 and HEV1 on iOS without issue

Included are a sample mp4 with codec ID set to HVC1 and a sample mp4 with codec ID set to HEV1 along with mediainfo screenshots

Sample_Files.zip (4.9 MB)

Here is video showing playback of the files so you can see the stutter issue

HEV1 Playback

HVC1 Playback

1 Like

@anon18523487 @elan can I get an acknowledgement of any sort here?

I’m looking into this. I’ll get back to you in a bit.

2 Likes

Thanks for the samples. I do see the same stuttering as you. I’ll file this with the team.

2 Likes

Thanks

Just a heads up, the same thing occurs with Dolby Vision MP4s with codec IDs of DVHE/DVH1

DVH1 is the HW decode, DVHE is SW decode - DVHE will give stutter too

Fixing it for HVC1/HEVC should fix the issue for DVHE/DVH1 as well I think? But if you want some samples of DVHE/DVH1 let me know :+1:

1 Like

I see the same behavior on an iPad (7th generation) and Apple TV 4K (2017). FWIW both samples play smoothly on an iPhone 13 Pro.

Apple really only supports hvc1. There are advantages to using hvc1 - compatibility with QuickTime Player, the Finder/Quick Look, Messages, etc. For Plex that also means hvc1 is compatible with the Old/Legacy player. hvc1 can also Direct Play to Safari, while hev1 has to Direct Stream.

I’m not aware of any disadvantages to using hvc1.

HEV1 is SW based decode and HVC1 is HW based decode

Why do you say this? I believe both are passed to the HW decoder. I think that’s a red herring.

I suspect so. hvc1 and dvh1 are structurally equivalent. Apple similarly supports dvh1.

  • hvc1/dvh1 parameter sets are stored out-of-band, in the sample entry
  • hevc/hev1/dvhe parameter sets are in-band, in the samples themselves
    (and optionally out of band in the sample entry)

HDR10+ works best in MP4 hvc1, and DV P5 and DV P8 work best in MP4 dvh1, for similar reasons. The newer (mpv) Plex player doesn’t support those forms of HDR well on Apple devices, so MP4 dvh1 is ideal because that’s what the old/legacy/Apple (avplayer)/Safari player work best with.

Many examples of MP4 dvh1 can Direct Play to Apple TV or to Safari, and play correctly and smoothly, enabling the correct display color modes. The Apple player also works on some non-HDR/non-DV devices, tone-mapping them correctly.

Those same examples would require Direct Stream in any other format, might not play at all if dvhe, or might enable the wrong display color modes if MKV.

1 Like

@Volts There’s content out there that won’t play properly in HVC1 and only plays back properly in HEV1, so it’s not about downsides to HVC1 and more about lack of proper HEV1 to begin with - as mentioned especially when Infuse supports both on same devices

As for SW/HW decode - you can find info in a Google search, I’m on phone right now and away otherwise I’d link

Also search my posts at MakeMKV forums, recently and from a few months back - you’ll find all the info for everything above if want to see what I’m talking about, otherwise I’ll just PM you later

Share a link or an example? This doesn’t make sense.

There are a ton of files with mangled metadata, claiming to be one thing but they’re actually another. That’s a different issue.

When you get a chance, please share. Again this doesn’t make sense.

I’m not disagreeing that Plex may be able to improve support for hevc/hev1/dvhe media. I hope they can.

I was confusing SW/HW decode for some reason with this thing I read a while back (stupid me lol)

‘hvc1’ stores all parameter sets inside the MP4 container below the sample description boxes. ‘hev1’ stores all parameter sets in band (inside the HEVC stream).

The parameter sets are essentially mandatory metadata necessary to decode the streams.

So you have two slightly different ways of muxing HEVC into MP4.

I’d choose based on the play out and transport scenario.

Your player or your transport specification may require one or the other.

PM’d you some more info on the problematic content in particular

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.