Request for Technical Advice.

Jimmyjames

Site Champ
Posts
675
Reaction score
763
Not sure if this belongs in the Apple section? It involves Apple, but is more technical really.

Elgato, maker of capture cards (among other things) has just released a new usb capture device called the “4K X”. Looks great and allows 4K 144fps capture over usb 3.2 (I think). It’s also Mac compatible. Yay!

The one wrinkle, HDR is not supported on macOS but is on Windows. Dissapointing. I asked one of Elgato’s representatives what prevents HDR capture on macOS and the reply was:

"No HDR capture on Mac is a MacOS limitation. macOS does not support the P010 video format which 4K X (and other capture cards) use for HDR. When Apple adds P010 support HDR capture in apps like OBS Studio will be possible."

OK. Interesting. I am surprised this is the case but at least it’s something to file a feedback for. Nevertheless there was something at the back of my mind nagging me. I was sure I had seen mention of P010 when converting videos in ffmpeg previously, so I open Termina.app, run ‘ffmpeg -h encoder=hevc_videotoolbox’ and see the output. Among the instructions was:

'Supported pixel formats: videotoolbox_vld nv12 yuv420p bgra p010le'

Hmmm, that last one looks like the supposed missing HDR pixel format. I then decide to go to GitHub and look at the ffmpeg source code. A relevant file called ‘videotoolbox.c'

I search for P010 and find this code:
C:
 #if HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE
    if (depth > 8) {
        return AV_PIX_FMT_P010;
    }

Ok, so that looks promising. I then search for ‘KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE’ and a page on Apple’s dev site returns this page

So now I’m in the position to think that macOS does indeed support P010, and either Elgato doesn’t know that , or they are…I don’t know.


After that long opening, my request is…am I right? I am not the most familiar with low level code and pixel formats. Have I missed something?
 

Jimmyjames

Site Champ
Posts
675
Reaction score
763
Wikipedia seems to indicate that Apple supports HDR10+ which is backward-compatible with HDR10, but, to what extent is unclear. Likely there are SoC components in M-series chips that would obviate the need for a card.
Thanks. I believe HDR10+ is just for the Apple TV. At least according to this: https://support.apple.com/en-gb/102205

While the M-series chips are powerful enough to capture the internal displays or application windows for recording or streaming, the capture cards are useful for other devices like a PS5 or switch etc.
 

Jimmyjames

Site Champ
Posts
675
Reaction score
763
I feel like either I’m going mad, or I’m missing something obvious here. There’s another response from Avermedia, who also make capture cards.
1707173002599.png


Then I go and look at Apple’s dev site and check to see if RGB24 is supported and I see
1707173079415.png


It’s been there for years.

What is going on???
 

Nycturne

Elite Member
Posts
1,139
Reaction score
1,488
It’s been there for years.

What is going on???

I’ll just point out that HDR is different than the raw pixel buffer support. HDR is a pixel buffer + metadata (i.e. what transfer function to use, what the peak brightness is, etc). RGB24 support being old isn’t a surprise, since that’s just a 24-bit color framebuffer. aka “Millions of Colors” back in the Classic MacOS days. P010 isn’t new either, although more recent. Both are usable without HDR though. So the fact that Core Video knows about these pixel buffer variants doesn’t say much about supporting HDR while using them, unfortunately. But I’m not sure why that matters so long as you can specify the transfer function. I see that you can tell the frameworks to use HLG, but not HDR10. So HDR10 must be coming from some sort of metadata.

Sadly I’m not well versed in the HDR side of video. I’ve not been keeping up as I’d like. So I have no clue why HDR wouldn’t be supported other than the only real documentation on how to do it is in WWDC talks.

Their answer isn’t very good for sure. Apple has HDR support on the Mac, and the AV stack is doing it today for playing back Apple TV+ content, rented movies, and the like. It’s also working in Final Cut Pro. There’s just simply no information here to really dig into, as the response is from CSS, not the product team.
 

Jimmyjames

Site Champ
Posts
675
Reaction score
763
I’ll just point out that HDR is different than the raw pixel buffer support. HDR is a pixel buffer + metadata (i.e. what transfer function to use, what the peak brightness is, etc). RGB24 support being old isn’t a surprise, since that’s just a 24-bit color framebuffer. aka “Millions of Colors” back in the Classic MacOS days. P010 isn’t new either, although more recent. Both are usable without HDR though. So the fact that Core Video knows about these pixel buffer variants doesn’t say much about supporting HDR while using them, unfortunately. But I’m not sure why that matters so long as you can specify the transfer function. I see that you can tell the frameworks to use HLG, but not HDR10. So HDR10 must be coming from some sort of metadata.

Sadly I’m not well versed in the HDR side of video. I’ve not been keeping up as I’d like. So I have no clue why HDR wouldn’t be supported other than the only real documentation on how to do it is in WWDC talks.

Their answer isn’t very good for sure. Apple has HDR support on the Mac, and the AV stack is doing it today for playing back Apple TV+ content, rented movies, and the like. It’s also working in Final Cut Pro. There’s just simply no information here to really dig into, as the response is from CSS, not the product team.
Many thanks. I’m sure you’re correct and there is something I’m missing that can’t be communicated in short reddit posts! Frustrating nonetheless as I am not sure what to use in a feedback to Apple. My experience has been if you aren’t really specific, you don’t get far. Sometimes even if you are specific you don’t get far, but that’s another problem.
 
Top Bottom
1 2