swscale/utils: fix XYZ primaries tagging

Swscale currently handles XYZ by embedding a forced conversion to
BT.709 RGB with a hardcoded matrix. This is not ideal, but to preserve the
status quo and avoid any unexpected changes in behavior, this patch merely
fixes the inferred primaries tag to match the reality.

In the future, I would like to handle XYZ properly, via direct conversion
to the target colorspace (or possibly simply by using a more fitting
RGB intermediate like SMPTE428), but for now just keep the status quo.
pull/391/head
Niklas Haas 1 month ago
parent 1f0c500784
commit 7b7c32322d
  1. 2
      libswscale/utils.c

@ -2684,7 +2684,7 @@ SwsFormat ff_fmt_from_frame(const AVFrame *frame, int field)
} else if (desc->flags & AV_PIX_FMT_FLAG_XYZ) { } else if (desc->flags & AV_PIX_FMT_FLAG_XYZ) {
fmt.csp = AVCOL_SPC_UNSPECIFIED; fmt.csp = AVCOL_SPC_UNSPECIFIED;
fmt.color = (SwsColor) { fmt.color = (SwsColor) {
.prim = AVCOL_PRI_SMPTE428, .prim = AVCOL_PRI_BT709, /* swscale currently hard-codes this XYZ matrix */
.trc = AVCOL_TRC_SMPTE428, .trc = AVCOL_TRC_SMPTE428,
}; };
} else if (desc->nb_components < 3) { } else if (desc->nb_components < 3) {

Loading…
Cancel
Save