as far as I understand ffmpeg filters themselves does not do fp 32bit filtering ... so it converted to 16bit per channel stage buffer, see cinelerra/pluginfclient.C and function in cinelerra/ffmpeg.C
AVPixelFormat FFVideoConvert::color_model_to_pix_fmt(int color_model) { switch( color_model ) { case BC_YUV422: return AV_PIX_FMT_YUYV422; case BC_RGB888: return AV_PIX_FMT_RGB24; case BC_RGBA8888: return AV_PIX_FMT_RGBA; case BC_BGR8888: return AV_PIX_FMT_BGR0; case BC_BGR888: return AV_PIX_FMT_BGR24; case BC_ARGB8888: return AV_PIX_FMT_ARGB; case BC_ABGR8888: return AV_PIX_FMT_ABGR; case BC_RGB8: return AV_PIX_FMT_RGB8; case BC_YUV420P: return AV_PIX_FMT_YUV420P; case BC_YUV422P: return AV_PIX_FMT_YUV422P;
case BC_YUV444P: return AV_PIX_FMT_YUV444P; case BC_YUV411P: return AV_PIX_FMT_YUV411P;
case BC_RGB565: return AV_PIX_FMT_RGB565; case BC_RGB161616: return AV_PIX_FMT_RGB48LE; case BC_RGBA16161616: return AV_PIX_FMT_RGBA64LE; case BC_AYUV16161616: return AV_PIX_FMT_AYUV64LE; case BC_GBRP: return AV_PIX_FMT_GBRP; default: break; }
{ "format", "Output pixel format", OFFSET(user_format), AV_OPT_TYPE_INT, { .i64 = AV_PIX_FMT_NONE }, AV_PIX_FMT_NONE, AV_PIX_FMT_GBRAP12LE, FLAGS, .unit = "fmt" }, ENUM("yuv420p", AV_PIX_FMT_YUV420P, "fmt"), ENUM("yuv420p10", AV_PIX_FMT_YUV420P10, "fmt"), ENUM("yuv420p12", AV_PIX_FMT_YUV420P12, "fmt"), ENUM("yuv422p", AV_PIX_FMT_YUV422P, "fmt"),
ENUM("yuv422p10", AV_PIX_FMT_YUV422P10, "fmt"),
ENUM("yuv422p12", AV_PIX_FMT_YUV422P12, "fmt"), ENUM("yuv444p", AV_PIX_FMT_YUV444P, "fmt"),
ENUM("yuv444p10", AV_PIX_FMT_YUV444P10, "fmt"),
ENUM("yuv444p12", AV_PIX_FMT_YUV444P12, "fmt"),
I can't see floating-point formats here ....
ffmpeg/libavfilter/vf_colorspace.c
you can try to chain cingg's video output to external ffmpeg binary via y4m filetype, but then you need separate pass for audio ....
Historically cinelerra was avoiding making decisions for users, may be partially because making everything fully automatic and working in all cases is not really trivial ?