10-Bit Video
AVPro Video has growing support for playback of 10-bit content. Encoding videos as 10-bit can give improved quality for very little extra storage space, especially for gradients.
Note
We are not talking about HDR videos here. We're simply talking about videos encoded with a higher per-pixel bit depth.
Note
Even if you are displaying the 10-bit video on an 8-bit screen, there are still quality benefits to using 10-bit video.
Warning
Ability to decode 10-bit depending on your operating system and GPU capabilities. This is still a relatively new technology and shouldn't be used if compatibility is a high priority.
Editions
Ultra Edition
The Ultra edition now supports 10-bit textures on Windows, macOS, iOS and tvOS.
Core Edition
On the Core Edition only 8-bit textures are supported. In this case the 10-bit videos will be rendered to 8-bit, either directly or sometimes the driver will apply some smart dithering.
Platform Specifics
Windows Support
In the Ultra Edition you can specify to use 10-bit textures (in the Platform Specific
section). This will give the best results when displaying to a 10-bit back buffer and monitor. We have found that using the WinRT
API setting gives the best quality decode for 10-bit, whereas Media Foundation
API setting still seems to add some sort of dithering/resolve step.
Currently Windows is only officially supported:
H.264 Main 10 Profile | HEVC Main 10 Profile | VP9 | AV1 | |
---|---|---|---|---|
Windows (WinRT / Media Foundation) | . 1 | ✓ 2 | ? | ? |
Windows (DirectShow) | ✓ 3 | ✓ 3 | ? | ? |
1 Microsoft's H.264 Decoder doesn't support the Main 10 profile or output to 10-bit (P010) textures
2 Requires Windows 10 and Microsoft's HEVC Video Extensions. WinRT API gives the best quality results
3 Only when using a suitable 3rd-party codec such as LAV Filters
iOS / macOS / tvOS
iOS 11.0 and above
Only HEVC Main 10 Profile is supported.
iOS, macOS and tvOS will automatically generate textures capable of supporting 10 bits per component when the source media is 10-bit.
Depending on the texture format chosen this will be:
Texture Format |
---|
BGRA |
Y CbCr 420 |
Other platforms
This is a new feature which we hope to expand support and documentation for soon.
Encoding
Using the command-line tool FFMPEG we have found the following command useful in testing:
ffmpeg -y -i %1 -pix_fmt yuv420p10le -color_primaries 1 -color_trc 1 -colorspace 1 -color_range 2 -crf 4 -vcodec libx265 -movflags +write_colr -movflags +faststart %i-hevc-10bit-rec709-high.mp4
Note
For best results use Rec709
as we do not yet support other primaries/colorspaces and incorrect rendering of colours will result otherwise.