church_archive_script/Programs/doc/functions/video/shuffleplanes.html

227 lines
16 KiB
HTML
Raw Normal View History

2023-11-29 16:12:35 +00:00
<!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>ShufflePlanes &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="Splice" href="splice.html" />
<link rel="prev" title="SetVideoCache" href="setvideocache.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"><a class="reference internal" href="maskedmerge.html">MaskedMerge</a></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 current"><a class="current reference internal" href="#">ShufflePlanes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#std.ShufflePlanes"><code class="docutils literal notranslate"><span class="pre">ShufflePlanes()</span></code></a></li>
</ul>
</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">ShufflePlanes</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/functions/video/shuffleplanes.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="shuffleplanes">
<h1>ShufflePlanes<a class="headerlink" href="#shuffleplanes" title="Permalink to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="std.ShufflePlanes">
<span class="sig-prename descclassname"><span class="pre">std.</span></span><span class="sig-name descname"><span class="pre">ShufflePlanes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vnode[]</span> <span class="pre">clips</span></span></em>, <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">int</span> <span class="pre">colorfamily</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#std.ShufflePlanes" title="Permalink to this definition"></a></dt>
<dd><p>ShufflePlanes can extract and combine planes from different clips in the most
general way possible.
This is both good and bad, as there are almost no error checks.</p>
<p>Most of the returned clips properties are implicitly determined from the
first clip given to <em>clips</em>.</p>
<p>The <em>clips</em> parameter takes between one and three clips for color families
with three planes. In this case clips=[A] is equivalent to clips=[A, A, A]
and clips=[A, B] is equivalent to clips=[A, B, B]. For the GRAY color
family, which has one plane, it takes exactly one clip.</p>
<p>The argument <em>planes</em> controls which of the input clips planes to use.
Zero indexed. The first number refers to the first input clip, the second
number to the second clip, the third number to the third clip.</p>
<p>The only thing that needs to be specified is <em>colorfamily</em>, which controls which
color family (YUV, RGB, GRAY) the output clip will be.
Properties such as subsampling are determined from the relative size of the
given planes to combine.</p>
<p>ShufflePlanes accepts clips with variable format and dimensions only when
extracting a single plane.</p>
<p>Below are some examples of useful operations.</p>
<p>Extract plane with index X. X=0 will mean luma in a YUV clip and R in an RGB
clip. Likewise 1 will return the U and G channels, respectively:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ShufflePlanes</span><span class="p">(</span><span class="n">clips</span><span class="o">=</span><span class="n">clip</span><span class="p">,</span> <span class="n">planes</span><span class="o">=</span><span class="n">X</span><span class="p">,</span> <span class="n">colorfamily</span><span class="o">=</span><span class="n">vs</span><span class="o">.</span><span class="n">GRAY</span><span class="p">)</span>
</pre></div>
</div>
<p>Swap U and V in a YUV clip:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ShufflePlanes</span><span class="p">(</span><span class="n">clips</span><span class="o">=</span><span class="n">clip</span><span class="p">,</span> <span class="n">planes</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">colorfamily</span><span class="o">=</span><span class="n">vs</span><span class="o">.</span><span class="n">YUV</span><span class="p">)</span>
</pre></div>
</div>
<p>Merge 3 grayscale clips into a YUV clip:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ShufflePlanes</span><span class="p">(</span><span class="n">clips</span><span class="o">=</span><span class="p">[</span><span class="n">Yclip</span><span class="p">,</span> <span class="n">Uclip</span><span class="p">,</span> <span class="n">Vclip</span><span class="p">],</span> <span class="n">planes</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">colorfamily</span><span class="o">=</span><span class="n">vs</span><span class="o">.</span><span class="n">YUV</span><span class="p">)</span>
</pre></div>
</div>
<p>Cast a YUV clip to RGB:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ShufflePlanes</span><span class="p">(</span><span class="n">clips</span><span class="o">=</span><span class="p">[</span><span class="n">YUVclip</span><span class="p">],</span> <span class="n">planes</span><span class="o">=</span><span class="p">[</span><span class="mi">0</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">colorfamily</span><span class="o">=</span><span class="n">vs</span><span class="o">.</span><span class="n">RGB</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="setvideocache.html" class="btn btn-neutral float-left" title="SetVideoCache" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="splice.html" class="btn btn-neutral float-right" title="Splice" 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>