17.09.2020, 10:15
So conversions will only be done if the following filter does not support the current bit depth or color sampling.
In your scenario:
Hybrid would take the 10bit source convert it to RGB30 since it's the 'nearest' to the supported formats of TimeCube.
Depending on what the Denoiser supports Hybrid will either:
a. keep the current color format and bit depth
b. convert to one that is supported by the noise reduction filter
Depending on what format the noise reduction outputs Hybrid will either:
a. keep the current color format and bit depth
b. convert to one that is supported by the resize filter
then at the end of the queue Hybrid will convert to the output format the video encoder expects.
So wether you got a mainly 32bit/16bit/12bit/10bit/9bit/8bit filter chain depends on the filter choice of the user.
Blindly upsampling any source to 32bit RGB doesn't make sense since:
a. conversion between RGB<>YUV is relatively slow
b. not all filters all color formats
As far as I can tell Hybrid does the conversion thing correctly, so the problems you describe do not seem like a bug in Hybrid more like a bug in Vapoursynth or TimeCube. Since http://www.vapoursynth.com/doc/functions/levels.html does not mention any color space restrictions Hybrid assumes that Levels and all it's options work fine on all color spaces in Vapoursynth. If the developers of Vapoursynth say this is not the cause and the documentation should mention that 'gamma' only works of YUV-color spaces, I can adjust Hybrid to make sure Levels is always fed with YUV color spaces, but until then I'm not changing Hybrid to blindly add color conversions.
Cu Selur
In your scenario:
10 bit source -> 32 bit TimeCube -> 32/16 bit color correction -> 32/16 bit noise Reduction -> 32 bit resize -> export to 12 or 10 bit video file.
Depending on what the Denoiser supports Hybrid will either:
a. keep the current color format and bit depth
b. convert to one that is supported by the noise reduction filter
Depending on what format the noise reduction outputs Hybrid will either:
a. keep the current color format and bit depth
b. convert to one that is supported by the resize filter
then at the end of the queue Hybrid will convert to the output format the video encoder expects.
So wether you got a mainly 32bit/16bit/12bit/10bit/9bit/8bit filter chain depends on the filter choice of the user.
Blindly upsampling any source to 32bit RGB doesn't make sense since:
a. conversion between RGB<>YUV is relatively slow
b. not all filters all color formats
As far as I can tell Hybrid does the conversion thing correctly, so the problems you describe do not seem like a bug in Hybrid more like a bug in Vapoursynth or TimeCube. Since http://www.vapoursynth.com/doc/functions/levels.html does not mention any color space restrictions Hybrid assumes that Levels and all it's options work fine on all color spaces in Vapoursynth. If the developers of Vapoursynth say this is not the cause and the documentation should mention that 'gamma' only works of YUV-color spaces, I can adjust Hybrid to make sure Levels is always fed with YUV color spaces, but until then I'm not changing Hybrid to blindly add color conversions.
Cu Selur