X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fycbcr_converter.cpp;h=ef402a57d3926a974317db8e3b0bb52faafc1f7a;hb=1d61930066e4509637e28bfb675c313824157ce4;hp=a8a40b123c805b83db0bafa28a013f255f9a2693;hpb=5c1bc79d6c26c96cb8d2195ae8ef457c30ed364a;p=nageru diff --git a/futatabi/ycbcr_converter.cpp b/futatabi/ycbcr_converter.cpp index a8a40b1..ef402a5 100644 --- a/futatabi/ycbcr_converter.cpp +++ b/futatabi/ycbcr_converter.cpp @@ -1,5 +1,6 @@ #include "ycbcr_converter.h" +#include "flags.h" #include "jpeg_frame.h" #include @@ -63,15 +64,15 @@ YCbCrConverter::YCbCrConverter(YCbCrConverter::OutputMode output_mode, ResourceP ycbcr_output_format.chroma_subsampling_x = 1; // Planar Y'CbCr decoding chain. - planar_chain.reset(new EffectChain(1280, 720, resource_pool)); - ycbcr_planar_input = (YCbCrInput *)planar_chain->add_input(new YCbCrInput(inout_format, ycbcr_format, 1280, 720, YCBCR_INPUT_PLANAR)); + planar_chain.reset(new EffectChain(global_flags.width, global_flags.height, resource_pool)); + ycbcr_planar_input = (YCbCrInput *)planar_chain->add_input(new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, YCBCR_INPUT_PLANAR)); setup_outputs(output_mode, inout_format, ycbcr_output_format, planar_chain.get()); planar_chain->set_dither_bits(8); planar_chain->finalize(); // Semiplanar Y'CbCr decoding chain (for images coming from VA-API). - semiplanar_chain.reset(new EffectChain(1280, 720, resource_pool)); - ycbcr_semiplanar_input = (YCbCrInput *)semiplanar_chain->add_input(new YCbCrInput(inout_format, ycbcr_format, 1280, 720, YCBCR_INPUT_SPLIT_Y_AND_CBCR)); + semiplanar_chain.reset(new EffectChain(global_flags.width, global_flags.height, resource_pool)); + ycbcr_semiplanar_input = (YCbCrInput *)semiplanar_chain->add_input(new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, YCBCR_INPUT_SPLIT_Y_AND_CBCR)); setup_outputs(output_mode, inout_format, ycbcr_output_format, semiplanar_chain.get()); semiplanar_chain->set_dither_bits(8); semiplanar_chain->finalize(); @@ -80,13 +81,13 @@ YCbCrConverter::YCbCrConverter(YCbCrConverter::OutputMode output_mode, ResourceP for (bool first_input_is_semiplanar : { false, true }) { for (bool second_input_is_semiplanar : { false, true }) { FadeChain &fade_chain = fade_chains[first_input_is_semiplanar][second_input_is_semiplanar]; - fade_chain.chain.reset(new EffectChain(1280, 720, resource_pool)); + fade_chain.chain.reset(new EffectChain(global_flags.width, global_flags.height, resource_pool)); fade_chain.input[0] = (movit::YCbCrInput *)fade_chain.chain->add_input( - new YCbCrInput(inout_format, ycbcr_format, 1280, 720, - first_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); + new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, + first_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); fade_chain.input[1] = (movit::YCbCrInput *)fade_chain.chain->add_input( - new YCbCrInput(inout_format, ycbcr_format, 1280, 720, - second_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); + new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, + second_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); fade_chain.mix_effect = (movit::MixEffect *)fade_chain.chain->add_effect( new MixEffect, fade_chain.input[0], fade_chain.input[1]); setup_outputs(output_mode, inout_format, ycbcr_output_format, fade_chain.chain.get()); @@ -99,17 +100,17 @@ YCbCrConverter::YCbCrConverter(YCbCrConverter::OutputMode output_mode, ResourceP // directly from the GPU anyway). for (bool second_input_is_semiplanar : { false, true }) { FadeChain &fade_chain = interleaved_fade_chains[second_input_is_semiplanar]; - fade_chain.chain.reset(new EffectChain(1280, 720, resource_pool)); + fade_chain.chain.reset(new EffectChain(global_flags.width, global_flags.height, resource_pool)); ycbcr_format.chroma_subsampling_x = 1; fade_chain.input[0] = (movit::YCbCrInput *)fade_chain.chain->add_input( - new YCbCrInput(inout_format, ycbcr_format, 1280, 720, - YCBCR_INPUT_INTERLEAVED)); + new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, + YCBCR_INPUT_INTERLEAVED)); ycbcr_format.chroma_subsampling_x = 2; fade_chain.input[1] = (movit::YCbCrInput *)fade_chain.chain->add_input( - new YCbCrInput(inout_format, ycbcr_format, 1280, 720, - second_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); + new YCbCrInput(inout_format, ycbcr_format, global_flags.width, global_flags.height, + second_input_is_semiplanar ? YCBCR_INPUT_SPLIT_Y_AND_CBCR : YCBCR_INPUT_PLANAR)); fade_chain.mix_effect = (movit::MixEffect *)fade_chain.chain->add_effect( new MixEffect, fade_chain.input[0], fade_chain.input[1]);