<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>MaskedMerge &mdash; VapourSynth R64 documentation</title>
      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
      <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
  <!--[if lt IE 9]>
    <script src="../../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script src="../../_static/jquery.js"></script>
        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/doctools.js"></script>
        <script src="../../_static/sphinx_highlight.js"></script>
    <script src="../../_static/js/theme.js"></script>
    <link rel="index" title="Index" href="../../genindex.html" />
    <link rel="search" title="Search" href="../../search.html" />
    <link rel="next" title="Median" href="median.html" />
    <link rel="prev" title="MakeFullDiff" href="makefulldiff.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../../index.html" class="icon icon-home">
            VapourSynth
          </a>
              <div class="version">
                R64
              </div>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../introduction.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gettingstarted.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pythonreference.html">Python Reference</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../functions.html">Function Reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../functions.html#general-functions">General Functions</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../functions.html#video-functions">Video Functions</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="addborders.html">AddBorders</a></li>
<li class="toctree-l3"><a class="reference internal" href="assumefps.html">AssumeFPS</a></li>
<li class="toctree-l3"><a class="reference internal" href="averageframes.html">AverageFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="binarize_binarizemask.html">Binarize/BinarizeMask</a></li>
<li class="toctree-l3"><a class="reference internal" href="blankclip.html">BlankClip</a></li>
<li class="toctree-l3"><a class="reference internal" href="boxblur.html">BoxBlur</a></li>
<li class="toctree-l3"><a class="reference internal" href="cliptoprop.html">ClipToProp</a></li>
<li class="toctree-l3"><a class="reference internal" href="convolution.html">Convolution</a></li>
<li class="toctree-l3"><a class="reference internal" href="copyframeprops.html">CopyFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="crop_cropabs.html">Crop/CropAbs</a></li>
<li class="toctree-l3"><a class="reference internal" href="deflate_inflate.html">Deflate/Inflate</a></li>
<li class="toctree-l3"><a class="reference internal" href="deleteframes.html">DeleteFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="doubleweave.html">DoubleWeave</a></li>
<li class="toctree-l3"><a class="reference internal" href="duplicateframes.html">DuplicateFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="expr.html">Expr</a></li>
<li class="toctree-l3"><a class="reference internal" href="flipvertical_fliphorizontal.html">FlipVertical/FlipHorizontal</a></li>
<li class="toctree-l3"><a class="reference internal" href="frameeval.html">FrameEval</a></li>
<li class="toctree-l3"><a class="reference internal" href="freezeframes.html">FreezeFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="interleave.html">Interleave</a></li>
<li class="toctree-l3"><a class="reference internal" href="invert_invertmask.html">Invert/InvertMask</a></li>
<li class="toctree-l3"><a class="reference internal" href="levels.html">Levels</a></li>
<li class="toctree-l3"><a class="reference internal" href="limiter.html">Limiter</a></li>
<li class="toctree-l3"><a class="reference internal" href="loop.html">Loop</a></li>
<li class="toctree-l3"><a class="reference internal" href="lut.html">Lut</a></li>
<li class="toctree-l3"><a class="reference internal" href="lut2.html">Lut2</a></li>
<li class="toctree-l3"><a class="reference internal" href="makediff.html">MakeDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="makefulldiff.html">MakeFullDiff</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">MaskedMerge</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#std.MaskedMerge"><code class="docutils literal notranslate"><span class="pre">MaskedMerge()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="median.html">Median</a></li>
<li class="toctree-l3"><a class="reference internal" href="merge.html">Merge</a></li>
<li class="toctree-l3"><a class="reference internal" href="mergediff.html">MergeDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="mergefulldiff.html">MergeFullDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="minimum_maximum.html">Minimum/Maximum</a></li>
<li class="toctree-l3"><a class="reference internal" href="modifyframe.html">ModifyFrame</a></li>
<li class="toctree-l3"><a class="reference internal" href="pemverifier.html">PEMVerifier</a></li>
<li class="toctree-l3"><a class="reference internal" href="planestats.html">PlaneStats</a></li>
<li class="toctree-l3"><a class="reference internal" href="premultiply.html">PreMultiply</a></li>
<li class="toctree-l3"><a class="reference internal" href="prewitt_sobel.html">Prewitt/Sobel</a></li>
<li class="toctree-l3"><a class="reference internal" href="proptoclip.html">PropToClip</a></li>
<li class="toctree-l3"><a class="reference internal" href="removeframeprops.html">RemoveFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="resize.html">Resize</a></li>
<li class="toctree-l3"><a class="reference internal" href="reverse.html">Reverse</a></li>
<li class="toctree-l3"><a class="reference internal" href="selectevery.html">SelectEvery</a></li>
<li class="toctree-l3"><a class="reference internal" href="separatefields.html">SeparateFields</a></li>
<li class="toctree-l3"><a class="reference internal" href="setfieldbased.html">SetFieldBased</a></li>
<li class="toctree-l3"><a class="reference internal" href="setframeprop.html">SetFrameProp</a></li>
<li class="toctree-l3"><a class="reference internal" href="setframeprops.html">SetFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="setvideocache.html">SetVideoCache</a></li>
<li class="toctree-l3"><a class="reference internal" href="shuffleplanes.html">ShufflePlanes</a></li>
<li class="toctree-l3"><a class="reference internal" href="splice.html">Splice</a></li>
<li class="toctree-l3"><a class="reference internal" href="splitplanes.html">SplitPlanes</a></li>
<li class="toctree-l3"><a class="reference internal" href="stackvertical_stackhorizontal.html">StackVertical/StackHorizontal</a></li>
<li class="toctree-l3"><a class="reference internal" href="transpose.html">Transpose</a></li>
<li class="toctree-l3"><a class="reference internal" href="trim.html">Trim</a></li>
<li class="toctree-l3"><a class="reference internal" href="turn180.html">Turn180</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../functions.html#text">Text</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../functions.html#audio-functions">Audio Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../output.html">Output</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../applications.html">Applications and Libraries</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apireference.html">VapourSynth C API Reference</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../index.html">VapourSynth</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="../../functions.html">Function Reference</a></li>
      <li class="breadcrumb-item active">MaskedMerge</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../../_sources/functions/video/maskedmerge.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <section id="maskedmerge">
<h1>MaskedMerge<a class="headerlink" href="#maskedmerge" title="Permalink to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="std.MaskedMerge">
<span class="sig-prename descclassname"><span class="pre">std.</span></span><span class="sig-name descname"><span class="pre">MaskedMerge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vnode</span> <span class="pre">clipa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vnode</span> <span class="pre">clipb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vnode</span> <span class="pre">mask</span></span></em><span class="optional">[</span>, <em class="sig-param"><span class="n"><span class="pre">int[]</span> <span class="pre">planes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bint</span> <span class="pre">first_plane=0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bint</span> <span class="pre">premultiplied=0</span></span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#std.MaskedMerge" title="Permalink to this definition"></a></dt>
<dd><p>MaskedMerge merges <em>clipa</em> with <em>clipb</em> using the per pixel weights in the <em>mask</em>,
where 0 means that <em>clipa</em> is returned unchanged.
The <em>mask</em> clip is assumed to  be full range for all planes and in the
0-1 interval for float formats regardless of the colorspace.
If <em>mask</em> is a grayscale clip or if <em>first_plane</em> is true, the mask’s first
plane will be used as the mask for merging all planes. The mask will be
bilinearly resized if necessary.</p>
<p>If <em>premultiplied</em> is set the blending is performed as if <em>clipb</em> has been pre-multiplied
with alpha. In pre-multiplied mode it is an error to try to merge two frames with
mismatched full and limited range since it will most likely cause horrible unintended
color shifts. In the other mode it’s just a very, very bad idea.</p>
<p>By default all planes will be
processed, but it is also possible to specify a list of the <em>planes</em> to merge
in the output. The unprocessed planes will be copied from the first clip.</p>
<p><em>clipa</em> and <em>clipb</em> must have the same dimensions and format, and the <em>mask</em> must be the
same format as the clips or the grayscale equivalent.</p>
<p>How to apply a mask to the first plane:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MaskedMerge</span><span class="p">(</span><span class="n">clipa</span><span class="o">=</span><span class="n">A</span><span class="p">,</span> <span class="n">clipb</span><span class="o">=</span><span class="n">B</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">Mask</span><span class="p">,</span> <span class="n">planes</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>
</div>
<p>How to apply the first plane of a mask to the second and third plane:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MaskedMerge</span><span class="p">(</span><span class="n">clipa</span><span class="o">=</span><span class="n">A</span><span class="p">,</span> <span class="n">clipb</span><span class="o">=</span><span class="n">B</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">Mask</span><span class="p">,</span> <span class="n">planes</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="n">first_plane</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
<p>The frame properties are copied from <em>clipa</em>.</p>
</dd></dl>

</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="makefulldiff.html" class="btn btn-neutral float-left" title="MakeFullDiff" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="median.html" class="btn btn-neutral float-right" title="Median" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2012-2023, Fredrik Mellbin.</p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>