Copy link to clipboard
Copied
How do I get Premiere to give me high range pixels out of ->RenderVideoFrame() ? I have selected the PrPixelFormat_BGRA_4444_32f pixel format, so I assumed I would get pixels with values above 1.0f (using some high color depth Red files). Is there another flag I need somewhere?
Thanks!
Hi Jeff,
Have you confirmed that you are getting PrPixelFormat_BGRA_4444_32f frames in the PPixHand returned from your RenderVideoFrame() call? If you are not, you may also include PrPixelFormat_BGRX_4444_32f in the request, which is the same as BGRA but without an alpha channel, which is the case for RED files.
Also, to make sure you're getting values above 1.0f, you could apply a ProcAmp effect and crank up the brightness.
Regards,
Zac
Copy link to clipboard
Copied
Hello, hello...?
Copy link to clipboard
Copied
Is "Me" an Exporter plug-in?
Copy link to clipboard
Copied
Yes, of course.
Copy link to clipboard
Copied
Hi Jeff,
Have you confirmed that you are getting PrPixelFormat_BGRA_4444_32f frames in the PPixHand returned from your RenderVideoFrame() call? If you are not, you may also include PrPixelFormat_BGRX_4444_32f in the request, which is the same as BGRA but without an alpha channel, which is the case for RED files.
Also, to make sure you're getting values above 1.0f, you could apply a ProcAmp effect and crank up the brightness.
Regards,
Zac
Copy link to clipboard
Copied
I've tried both PrPixelFormat_BGRA_4444_32f and PrPixelFormat_BGRA_4444_32f_linear. I'm getting all of the pixels from the RED files - I'm just not getting HDR values (values above 1.0f). Does Premiere normalize the files when it imports them? Is there a flag to say that I want large pixel values (larger than 1.0f). Are only certain import file types imported as HDR files? Is there an HDR video file that you know exports as HDR that I can test with?
Copy link to clipboard
Copied
I guess my point here is that - since you use PrPixelFormat_BGRA_4444_32f for normal SDR output (when you decode to normal video files) and that gets scaled down to SDR range, how does Premiere even know to send me HDR pixels?? You know? It seem like there has to be an additional flag or just using the normal output export pipeline wouldn't work.
Copy link to clipboard
Copied
I believe this is what you're looking for: Try setting exQueryOutputSettingsRec.outUseMaximumRenderPrecision to kPrTrue / non-zero.
Copy link to clipboard
Copied
> exQueryOutputSettingsRec.outUseMaximumRenderPrecision
That's already set to true - and it's set to true in your SDR example, so that can't be the HDR setting, right?
Can't we just ask the HDR team instead randomly trying stuff? Obviously, there is a way to get HDR pixels, since the OpenEXR exporter works. Can we make a heavier request for answers?
Copy link to clipboard
Copied
A search on outUseMaximumRenderPrecision doesn't yield any results in the SDK_Exporter code. Where do you see it?
Also, feel free to check out the code for the OpenEXR plug-ins here:
Copy link to clipboard
Copied
Sorry, it's in my plugin, but not the SDR example (which is weird, since I just copied). Anyway, that flag doesn't work, regardless.
I still always get 0.0 to 1.0f no matter what input file type. I expect 0.0 to 125.0 (10K nits), which is what I get if I read the openexr file directly...
Copy link to clipboard
Copied
I suppose you could be storing everything 0.0 to 1.0 *always*, and then leaving the max as open to interpretation. Is there a way to ask for the input file maxLuma or however it was imported initially?
Copy link to clipboard
Copied
I'm seeing greater than 1.0 values using the SDK_Exporter from the CC 2017 SDK with the following modifications in SDK_File.cpp:
Line 520 set to: pixelFormats[0] = PrPixelFormat_BGRA_4444_32f;
Line 1099 replace with:
if (pixelFormat == PrPixelFormat_VUYA_4444_32f ||
pixelFormat == PrPixelFormat_BGRA_4444_32f)
Set breakpoint on 1202.
Create a project with footage, apply ProcAmp, increase brightness to 100 (so everything is pushed to overbrights). Export.
The result in the debugger is I see values like this:
+ | tempSrcBuffer 0x00000000987e0080 {1.18431377} float * |
*(tempSrcBuffer + 1) 1.18248522 float | |
*(tempSrcBuffer + 2) 1.19046533 float | |
*(tempSrcBuffer + 3) 1.00000000 float |
Although the code is not going to treat them as RGB floats (it is written for YUV), these are the RGB values coming in greater than 1.0.
So it looks like setting exQueryOutputSettingsRec.outUseMaximumRenderPrecision is unnecessary, and my original response in step 4 is sufficient.
Copy link to clipboard
Copied
Can you try it with HDR source material? I'll test with ProcAmp, but that's less important than returning the right values for imported files. Grab any HDR file off here: Demo UHD-3D - Ultra-HD / 4K / HDR / 3D They are HDR BT.2020, 10-bit input files - none ever give me more than 0..1.0 - and I should be getting 0..125.0.
The values should be WAY higher than 1.0, not just a little...
Copy link to clipboard
Copied
Hi Jeff,
While the pipeline supports HDR, not every importer plug-in supports HDR. Recently we added support for JPEG2000 MXF and HEVC with PQ curve, and before that we supported OpenEXR, CinemaDNG, and assorted RAW formats. Perhaps you could find some OpenEXR footage to use as your source material.