X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.cpp;h=efd4abc49a611c233164089858d586a0538d075b;hp=3d4fc6f8af6eaa0900bbfbf305b2cd4fb6adfbf0;hb=90ac46cdc5845432df13385f946c63b5496c685e;hpb=aa1fce6c5356faa368758b15b3ad257c0f7bda0b diff --git a/effect_chain.cpp b/effect_chain.cpp index 3d4fc6f..efd4abc 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -97,7 +97,8 @@ void EffectChain::add_output(const ImageFormat &format, OutputAlphaFormat alpha_ } void EffectChain::add_ycbcr_output(const ImageFormat &format, OutputAlphaFormat alpha_format, - const YCbCrFormat &ycbcr_format, YCbCrOutputSplitting output_splitting) + const YCbCrFormat &ycbcr_format, YCbCrOutputSplitting output_splitting, + GLenum output_type) { assert(!finalized); assert(num_output_color_ycbcr < 2); @@ -109,14 +110,12 @@ void EffectChain::add_ycbcr_output(const ImageFormat &format, OutputAlphaFormat assert(output_ycbcr_format.luma_coefficients == ycbcr_format.luma_coefficients); assert(output_ycbcr_format.full_range == ycbcr_format.full_range); assert(output_ycbcr_format.num_levels == ycbcr_format.num_levels); - assert(output_ycbcr_format.chroma_subsampling_x == ycbcr_format.chroma_subsampling_x); - assert(output_ycbcr_format.chroma_subsampling_y == ycbcr_format.chroma_subsampling_y); - assert(fabs(output_ycbcr_format.cb_x_position - ycbcr_format.cb_x_position) < 1e-3); - assert(fabs(output_ycbcr_format.cb_y_position - ycbcr_format.cb_y_position) < 1e-3); - assert(fabs(output_ycbcr_format.cr_x_position - ycbcr_format.cr_x_position) < 1e-3); - assert(fabs(output_ycbcr_format.cr_y_position - ycbcr_format.cr_y_position) < 1e-3); + assert(output_ycbcr_format.chroma_subsampling_x == 1); + assert(output_ycbcr_format.chroma_subsampling_y == 1); + assert(output_ycbcr_type == output_type); } else { output_ycbcr_format = ycbcr_format; + output_ycbcr_type = output_type; } output_ycbcr_splitting[num_output_color_ycbcr++] = output_splitting; @@ -127,12 +126,8 @@ void EffectChain::add_ycbcr_output(const ImageFormat &format, OutputAlphaFormat void EffectChain::change_ycbcr_output_format(const YCbCrFormat &ycbcr_format) { assert(num_output_color_ycbcr > 0); - assert(output_ycbcr_format.chroma_subsampling_x == ycbcr_format.chroma_subsampling_x); - assert(output_ycbcr_format.chroma_subsampling_y == ycbcr_format.chroma_subsampling_y); - assert(fabs(output_ycbcr_format.cb_x_position - ycbcr_format.cb_x_position) < 1e-3); - assert(fabs(output_ycbcr_format.cb_y_position - ycbcr_format.cb_y_position) < 1e-3); - assert(fabs(output_ycbcr_format.cr_x_position - ycbcr_format.cr_x_position) < 1e-3); - assert(fabs(output_ycbcr_format.cr_y_position - ycbcr_format.cr_y_position) < 1e-3); + assert(output_ycbcr_format.chroma_subsampling_x == 1); + assert(output_ycbcr_format.chroma_subsampling_y == 1); output_ycbcr_format = ycbcr_format; if (finalized) { @@ -1652,7 +1647,7 @@ void EffectChain::add_ycbcr_conversion_if_needed() return; } Node *output = find_output_node(); - ycbcr_conversion_effect_node = add_node(new YCbCrConversionEffect(output_ycbcr_format)); + ycbcr_conversion_effect_node = add_node(new YCbCrConversionEffect(output_ycbcr_format, output_ycbcr_type)); connect_nodes(output, ycbcr_conversion_effect_node); }