color: input colorspace auto-detection, HDR export tags, LGG/white balance nodes, more LUT formats, waveform parade

- media color primaries/transfer tags now flow from the FFmpeg probe
  through VideoParams into Footage::get_colorspace_to_use(); precedence
  is user override > media tags > project default
- export nclc tags derive from the output colorspace (PQ/HLG/BT.2020,
  P3, sRGB, Rec.601, Rec.709) instead of hardcoded BT.709
- new OCIO Color Grading (Log) node (lift/gamma/gain) and White Balance
  node (kelvin temperature + tint, HDR-safe)
- LUT whitelist extended to 9 OCIO-supported formats
- waveform scope gains an RGB parade mode (GPU and software paths)
- tests updated for the new colorspace precedence
This commit is contained in:
2026-07-19 21:45:51 +08:00
parent a7ddc0f114
commit 76f5c2a65b
37 changed files with 1449 additions and 40 deletions
+8
View File
@@ -419,6 +419,10 @@ void VideoParams::load(QXmlStreamReader *reader)
} else if (reader->name() == QStringLiteral("colorrange")) {
set_color_range(
static_cast<ColorRange>(reader->readElementText().toInt()));
} else if (reader->name() == QStringLiteral("colorprimaries")) {
set_color_primaries(reader->readElementText().toInt());
} else if (reader->name() == QStringLiteral("colortransfer")) {
set_color_transfer(reader->readElementText().toInt());
} else {
reader->skipCurrentElement();
}
@@ -463,6 +467,10 @@ void VideoParams::save(QXmlStreamWriter *writer) const
writer->writeTextElement(QStringLiteral("colorspace"), colorspace_);
writer->writeTextElement(QStringLiteral("colorrange"),
QString::number(color_range_));
writer->writeTextElement(QStringLiteral("colorprimaries"),
QString::number(color_primaries_));
writer->writeTextElement(QStringLiteral("colortransfer"),
QString::number(color_transfer_));
}
}