diff --git a/QSVPipeline/rgy_filter_colorspace.cpp b/QSVPipeline/rgy_filter_colorspace.cpp index 6962b172..fdd49af9 100644 --- a/QSVPipeline/rgy_filter_colorspace.cpp +++ b/QSVPipeline/rgy_filter_colorspace.cpp @@ -1451,7 +1451,16 @@ RGY_ERR ColorspaceOpCtrl::setHDR2SDR(const VideoVUIInfo &in, const VideoVUIInfo if (csp_to2.matrix == RGY_MATRIX_UNSPECIFIED) { csp_to2 = csp_to2.to(RGY_MATRIX_BT709).to(RGY_TRANSFER_BT709).to(RGY_PRIM_BT709); } - const auto csp_from2 = csp_to2.to(RGY_PRIM_BT2020).to(RGY_TRANSFER_LINEAR).to(RGY_MATRIX_RGB); + auto csp_from2 = csp_to1; + if (csp_from2.matrix == RGY_MATRIX_UNSPECIFIED) { + csp_from2 = csp_from2.to(RGY_MATRIX_RGB); + } + if (csp_from2.transfer == RGY_TRANSFER_UNSPECIFIED) { + csp_from2 = csp_from2.to(RGY_TRANSFER_LINEAR); + } + if (csp_from2.transfer == RGY_PRIM_UNSPECIFIED) { + csp_from2 = csp_from2.to(RGY_PRIM_BT2020); + } CHECK(setPath(csp_from2, csp_to2, sdr_source_peak, approx_gamma, scene_ref, height)); return RGY_ERR_NONE; }