From: Ronag Date: Fri, 19 Aug 2011 19:18:49 +0000 (+0000) Subject: 2.0 image_mixer: Removed "gain" in favor of "brightness". X-Git-Tag: 2.0.1~102 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5ba0a0e8202add441bc7b7c16450faf0f7deea08;p=casparcg 2.0 image_mixer: Removed "gain" in favor of "brightness". git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1238 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/mixer/image/image_kernel.cpp b/core/mixer/image/image_kernel.cpp index 4db822a48..dae98a0e0 100644 --- a/core/mixer/image/image_kernel.cpp +++ b/core/mixer/image/image_kernel.cpp @@ -191,9 +191,7 @@ struct image_kernel::implementation : boost::noncopyable // Setup drawing area ogl.viewport(0, 0, background->width(), background->height()); - - GL(glColor4d(item.transform.get_gain(), item.transform.get_gain(), item.transform.get_gain(), item.transform.get_opacity())); - + auto m_p = item.transform.get_clip_translation(); auto m_s = item.transform.get_clip_scale(); diff --git a/core/mixer/image/image_mixer.cpp b/core/mixer/image/image_mixer.cpp index ee84d8806..61920dbd5 100644 --- a/core/mixer/image/image_mixer.cpp +++ b/core/mixer/image/image_mixer.cpp @@ -218,50 +218,50 @@ public: } } - // TODO: Optimize - bool has_overlapping_items(const layer& layer, image_transform::blend_mode::type blend_mode) - { - if(layer.size() < 2) - return false; - - implementation::layer fill; - - std::copy_if(layer.begin(), layer.end(), std::back_inserter(fill), [&](const render_item& item) - { - return !item.transform.get_is_key(); - }); - - if(blend_mode == image_transform::blend_mode::normal) // Only overlap if opacity - { - return std::any_of(fill.begin(), fill.end(), [&](const render_item& item) - { - return item.transform.get_opacity() < 1.0 - 0.001; - }); - } - - // Simple solution, just check if we have differnt video streams / tags. - return std::any_of(fill.begin(), fill.end(), [&](const render_item& item) - { - return item.tag != fill.front().tag; - }); - } - - render_item create_render_item(const safe_ptr& buffer, image_transform::blend_mode::type blend_mode) - { - CASPAR_ASSERT(buffer->stride() == 4 && "Only used for bgra textures"); - - pixel_format_desc desc; - desc.pix_fmt = pixel_format::bgra; - desc.planes.push_back(pixel_format_desc::plane(channel_.get_format_desc().width, channel_.get_format_desc().height, 4)); - - std::vector> textures; - textures.push_back(buffer); - - image_transform transform; - transform.set_blend_mode(blend_mode); - - return render_item(desc, std::move(textures), transform, video_mode::progressive, nullptr); - } + //// TODO: Optimize + //bool has_overlapping_items(const layer& layer, image_transform::blend_mode::type blend_mode) + //{ + // if(layer.size() < 2) + // return false; + // + // implementation::layer fill; + + // std::copy_if(layer.begin(), layer.end(), std::back_inserter(fill), [&](const render_item& item) + // { + // return !item.transform.get_is_key(); + // }); + // + // if(blend_mode == image_transform::blend_mode::normal) // Only overlap if opacity + // { + // return std::any_of(fill.begin(), fill.end(), [&](const render_item& item) + // { + // return item.transform.get_opacity() < 1.0 - 0.001; + // }); + // } + + // // Simple solution, just check if we have differnt video streams / tags. + // return std::any_of(fill.begin(), fill.end(), [&](const render_item& item) + // { + // return item.tag != fill.front().tag; + // }); + //} + // + //render_item create_render_item(const safe_ptr& buffer, image_transform::blend_mode::type blend_mode) + //{ + // CASPAR_ASSERT(buffer->stride() == 4 && "Only used for bgra textures"); + + // pixel_format_desc desc; + // desc.pix_fmt = pixel_format::bgra; + // desc.planes.push_back(pixel_format_desc::plane(channel_.get_format_desc().width, channel_.get_format_desc().height, 4)); + + // std::vector> textures; + // textures.push_back(buffer); + // + // image_transform transform; + // transform.set_blend_mode(blend_mode); + + // return render_item(desc, std::move(textures), transform, video_mode::progressive, nullptr); + //} safe_ptr create_device_buffer(size_t stride) { diff --git a/core/producer/frame/image_transform.cpp b/core/producer/frame/image_transform.cpp index 6c3d6eb90..7ca46e75c 100644 --- a/core/producer/frame/image_transform.cpp +++ b/core/producer/frame/image_transform.cpp @@ -30,7 +30,6 @@ namespace caspar { namespace core { image_transform::image_transform() : opacity_(1.0) - , gain_(1.0) , brightness_(1.0) , contrast_(1.0) , saturation_(1.0) @@ -53,16 +52,6 @@ double image_transform::get_opacity() const return opacity_; } -void image_transform::set_gain(double value) -{ - gain_ = std::max(0.0, value); -} - -double image_transform::get_gain() const -{ - return gain_; -} - void image_transform::set_brightness(double value) { brightness_ = std::max(0.0, value); @@ -162,7 +151,6 @@ image_transform& image_transform::operator*=(const image_transform &other) { opacity_ *= other.opacity_; blend_mode_ = std::max(blend_mode_, other.blend_mode_); - gain_ *= other.gain_; brightness_ *= other.brightness_; contrast_ *= other.contrast_; saturation_ *= other.saturation_; @@ -205,7 +193,6 @@ image_transform tween(double time, const image_transform& source, const image_tr image_transform result; result.set_blend_mode (std::max(source.get_blend_mode(), dest.get_blend_mode())); result.set_is_key (source.get_is_key() | dest.get_is_key()); - result.set_gain (do_tween(time, source.get_gain(), dest.get_gain(), duration, tweener)); result.set_brightness (do_tween(time, source.get_brightness(), dest.get_brightness(), duration, tweener)); result.set_contrast (do_tween(time, source.get_contrast(), dest.get_contrast(), duration, tweener)); result.set_saturation (do_tween(time, source.get_saturation(), dest.get_saturation(), duration, tweener)); diff --git a/core/producer/frame/image_transform.h b/core/producer/frame/image_transform.h index df24a689d..97b34d37d 100644 --- a/core/producer/frame/image_transform.h +++ b/core/producer/frame/image_transform.h @@ -92,10 +92,7 @@ public: void set_opacity(double value); double get_opacity() const; - - void set_gain(double value); - double get_gain() const; - + void set_brightness(double value); double get_brightness() const; diff --git a/protocol/amcp/AMCPCommandsImpl.cpp b/protocol/amcp/AMCPCommandsImpl.cpp index ccf4fa0f1..51a7aadee 100644 --- a/protocol/amcp/AMCPCommandsImpl.cpp +++ b/protocol/amcp/AMCPCommandsImpl.cpp @@ -251,21 +251,6 @@ bool MixerCommand::DoExecute() int layer = GetLayerIndex(); GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); } - else if(_parameters[1] == L"GAIN") - { - int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0; - std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear"; - double value = boost::lexical_cast(_parameters.at(2)); - - auto transform = [=](image_transform transform) -> image_transform - { - transform.set_gain(value); - return transform; - }; - - int layer = GetLayerIndex(); - GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); - } else if(_parameters[1] == L"FILL_RECT") { int duration = _parameters.size() > 6 ? lexical_cast_or_default(_parameters[6], 0) : 0;