feat(video): use unified color conversion matrix generator (#4387)

This commit is contained in:
ns6089
2025-11-05 16:49:56 +03:00
committed by GitHub
parent eb72930a8e
commit cdb7e2b813
5 changed files with 54 additions and 92 deletions

View File

@@ -330,7 +330,7 @@ namespace cuda {
}
void sws_t::apply_colorspace(const video::sunshine_colorspace_t &colorspace) {
auto color_p = video::color_vectors_from_colorspace(colorspace);
auto color_p = video::color_vectors_from_colorspace(colorspace, true);
CU_CHECK_IGNORE(cudaMemcpy(color_matrix.get(), color_p, sizeof(video::color_t), cudaMemcpyHostToDevice), "Couldn't copy color matrix to cuda");
}

View File

@@ -698,7 +698,7 @@ namespace egl {
}
void sws_t::apply_colorspace(const video::sunshine_colorspace_t &colorspace) {
auto color_p = video::color_vectors_from_colorspace(colorspace);
auto color_p = video::color_vectors_from_colorspace(colorspace, true);
std::string_view members[] {
util::view(color_p->color_vec_y),
@@ -811,7 +811,7 @@ namespace egl {
gl::ctx.UseProgram(sws.program[1].handle());
gl::ctx.Uniform1fv(loc_width_i, 1, &width_i);
auto color_p = video::color_vectors_from_colorspace(video::colorspace_e::rec601, false);
auto color_p = video::color_vectors_from_colorspace({video::colorspace_e::rec601, false, 8}, true);
std::pair<const char *, std::string_view> members[] {
std::make_pair("color_vec_y", util::view(color_p->color_vec_y)),
std::make_pair("color_vec_u", util::view(color_p->color_vec_u)),

View File

@@ -457,12 +457,12 @@ namespace platf::dxgi {
}
void apply_colorspace(const ::video::sunshine_colorspace_t &colorspace) {
auto color_vectors = ::video::color_vectors_from_colorspace(colorspace);
auto color_vectors = ::video::color_vectors_from_colorspace(colorspace, true);
if (format == DXGI_FORMAT_AYUV ||
format == DXGI_FORMAT_R16_UINT ||
format == DXGI_FORMAT_Y410) {
color_vectors = ::video::new_color_vectors_from_colorspace(colorspace);
color_vectors = ::video::color_vectors_from_colorspace(colorspace, false);
}
if (!color_vectors) {
@@ -775,7 +775,7 @@ namespace platf::dxgi {
BOOST_LOG(warning) << "Failed to increase encoding GPU thread priority. Please run application as administrator for optimal performance.";
}
auto default_color_vectors = ::video::color_vectors_from_colorspace(::video::colorspace_e::rec601, false);
auto default_color_vectors = ::video::color_vectors_from_colorspace({::video::colorspace_e::rec601, false, 8}, true);
if (!default_color_vectors) {
BOOST_LOG(error) << "Missing color vectors for Rec. 601"sv;
return -1;