<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://avisynth.nl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=ShufflessS</id>
		<title>ShufflessS - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=ShufflessS"/>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=ShufflessS&amp;action=history"/>
		<updated>2026-06-25T08:07:00Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.24</generator>

	<entry>
		<id>http://avisynth.nl/index.php?title=ShufflessS&amp;diff=12099&amp;oldid=prev</id>
		<title>Reel.Deal: ShufflessS v1.05 documentation</title>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=ShufflessS&amp;diff=12099&amp;oldid=prev"/>
				<updated>2020-09-07T14:28:32Z</updated>
		
		<summary type="html">&lt;p&gt;ShufflessS v1.05 documentation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{FilterCat5|External_filters|Plugins|Plugins_x64|Effects|Deep_color_tools}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|1={{Author/StainlessS}}&lt;br /&gt;
|2=v1.05&lt;br /&gt;
|3=[https://web.archive.org/web/20200906225511if_/https://files.videohelp.com/u/223002/ShufflessS_25_26_x86_x64_dll_v1.05_20200825.zip ShufflessS_25_26_x86_x64_dll_v1.05_20200825.zip]&lt;br /&gt;
|4=Effects&lt;br /&gt;
|5=[http://www.gnu.org/licenses/gpl-2.0.txt GPLv2]&lt;br /&gt;
|6=[https://forum.doom9.org/showthread.php?t=176193 Doom9 Forum]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Shuffle spacial columns or rows (1D), or blocks(2D) of frames, or temporal shuffle (frame order), all shuffles Inversable, ie undoable.&amp;lt;br&amp;gt;&lt;br /&gt;
Potential usage in clip obfuscation using 'secret keys', or slideshow random ordering of frames.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
*Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]&lt;br /&gt;
**AviSynth+: all [[planar]] formats (8/10/12/14/16/32-bit, Y/YUV/RGB with or without alpha) are supported, also [[RGB48]] and [[RGB64]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26368 Microsoft Visual C++ 2008 Redistributable Package (x86 / x64)]&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;***&amp;lt;/span&amp;gt; &amp;lt;tt&amp;gt;vcredist_x86.exe&amp;lt;/tt&amp;gt; is required for &amp;lt;tt&amp;gt;ShufflessS-x86&amp;lt;/tt&amp;gt;&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;***&amp;lt;/span&amp;gt; &amp;lt;tt&amp;gt;vcredist_x64.exe&amp;lt;/tt&amp;gt; is required for &amp;lt;tt&amp;gt;ShufflessS-x64&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
&amp;lt;code&amp;gt;Shuffle1D_X&amp;lt;/code&amp;gt; = Horizontal 1D Shuffle | &amp;lt;code&amp;gt;Shuffle1D_Y&amp;lt;/code&amp;gt; = Vertical 1D Shuffle | &amp;lt;code&amp;gt;Shuffle2D&amp;lt;/code&amp;gt; = 2D Shuffle | &amp;lt;code&amp;gt;ShuffleT&amp;lt;/code&amp;gt; = Shuffle Temporal, ie frame order.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Shuffle1D_X(clip c, Int &amp;quot;Seed&amp;quot;=0, Int &amp;quot;blkW&amp;quot;=8, Bool &amp;quot;Once&amp;quot;=False, Bool &amp;quot;Inverse&amp;quot;=False )&lt;br /&gt;
Shuffle1D_Y(clip c, Int &amp;quot;Seed&amp;quot;=0, Int &amp;quot;blkH&amp;quot;=8, Bool &amp;quot;Interlaced&amp;quot;=False, Bool &amp;quot;Once&amp;quot;=False, Bool &amp;quot;Inverse&amp;quot;=False )&lt;br /&gt;
Shuffle2D  (clip c, Int &amp;quot;Seed&amp;quot;=0, Int &amp;quot;blkW&amp;quot;=8, Int &amp;quot;blkH&amp;quot;=blkW, Bool &amp;quot;Interlaced&amp;quot;=False, Bool &amp;quot;Once&amp;quot;=False, Bool &amp;quot;Inverse&amp;quot;=False )&lt;br /&gt;
ShuffleT   (clip c, Int &amp;quot;Seed&amp;quot;=0, Bool &amp;quot;Inverse&amp;quot;=False ) &lt;br /&gt;
&lt;br /&gt;
    c,          Clip to Shuffle&lt;br /&gt;
    Seed,       -1=Random seed (Non inverse-able), 0 (default) same shuffle every time, &lt;br /&gt;
                else any other int = UserSeed or 'SECRET_KEY'.&lt;br /&gt;
    BlkW,       Default 8, width of blocks or columns to shuffle.&lt;br /&gt;
                (Must be compatible with X Crop args, eg 2 or multiple thereof for YV12, &lt;br /&gt;
                also must divide exactly into Width of clip, use crop or Addborders where necessary).&lt;br /&gt;
    BlkH,       Shuffle1D_Y Default=8. Shuffle2D Default=BlkW, NOTE, Changed from original default 8.&lt;br /&gt;
                Height of blocks or rows to shuffle.&lt;br /&gt;
                (Must be compatible with Y Crop args, eg 2 or multiple thereof for YV12, also must &lt;br /&gt;
                divide exactly into Height of clip, use crop or Addborders where necessary).&lt;br /&gt;
    Interlaced, If True, then doubles minimum requirement of BlkH (Shuffle1D_Y and Shuffle2D ONLY).&lt;br /&gt;
                    eg YV12, where Interlaced=False blkH would require multiple of 2, and where &lt;br /&gt;
                    Interlaced, Would would require multiple of 4, so as not to destroy interlacing.&lt;br /&gt;
    Once,       Default False. If true, then uses the same shuffle pattern for every frame, else &lt;br /&gt;
                shuffled differently for every frame.&lt;br /&gt;
                    Perhaps better compression if not using ShuffleT.&lt;br /&gt;
    Inverse,    Reverses previously done shuffling, Must Use Same Key as was used for the Shuffling &lt;br /&gt;
                stage (and maybe ideally all in reverse shuffle order).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where ONLY 2 x 1D shuffles (ie both X and Y shuffling), then the order for de-shuffling does not matter, can use Inverse X and then Inverse Y or vice versa.&amp;lt;br&amp;gt;&lt;br /&gt;
Shuffle2D is much better than 2x1D shuffles ie Shuffle1D_X + Shuffle1D_Y (or vice versa).&amp;lt;br&amp;gt;&lt;br /&gt;
Shuffle2D together with either of the 1D shuffles is a bit pointless.&amp;lt;br&amp;gt;&lt;br /&gt;
If using ShuffleT (frame order shuffle) suggest before or after ALL other shuffles, and in reverse order when &amp;lt;code&amp;gt;Inverse = true&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
If Inverse, then must uses same Seed, BlkW, BlkH, Interlaced and Once args to recover obfuscated source.&amp;lt;br&amp;gt;&lt;br /&gt;
Seed, can be different for all Shuffle instances, if any of them use random seed (-1), you will not be able to inverse the result.&amp;lt;br&amp;gt;&lt;br /&gt;
For ShuffleT(), source clip should be frame accurate and ideally not from eg DIVX/XDIV (they can often have a key frame only every 8 seconds or so, so would be VERY slow).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Q) What use is seed=0      ? (A) Exact same sequence every time.&lt;br /&gt;
(Q) What use is Random seed ? (A) maybe for ShuffleT() of pics for slideshow.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shuffled and compressed clip will likely be quite a bit larger than the source clips especially for small block sizes and temporal (frame order) shuffles.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
v1.02, 21 June 2020,	Added ShuffleT.&lt;br /&gt;
v1.03, 16 Aug  2020,	Fixed a couple of problems. All Colorspaces Supported.&lt;br /&gt;
v1.04, 19 Aug 2020,	All class variables now constant, MT compatible. Pretty much total re-write.&lt;br /&gt;
v1.05, 25 Aug 2020,     Renamed dll's from style &amp;quot;Shuffle_x86.dll&amp;quot; to style &amp;quot;ShufflessS_x86.dll&amp;quot;, &lt;br /&gt;
                        conflict with Stickboy Shuffle.dll.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Archived Downloads ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;; width=&amp;quot;500px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!!width=&amp;quot;100px&amp;quot;| Version&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Download&lt;br /&gt;
!!width=&amp;quot;200px&amp;quot;| Mirror&lt;br /&gt;
|-&lt;br /&gt;
!v1.05&lt;br /&gt;
|[https://web.archive.org/web/20200906225511if_/https://files.videohelp.com/u/223002/ShufflessS_25_26_x86_x64_dll_v1.05_20200825.zip ShufflessS_25_26_x86_x64_dll_v1.05_20200825.zip]&lt;br /&gt;
|[http://www.mediafire.com/file/sl0qlr6ge81rgfg/ShufflessS_25%252626_x86_x64_dll_v1.05_20200825.zip/file ShufflessS_25&amp;amp;26_x86_x64_dll_v1.05_20200825.zip]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
'''Back to [[External_filters#Effects|External Filters]] &amp;amp;larr;'''&lt;/div&gt;</summary>
		<author><name>Reel.Deal</name></author>	</entry>

	</feed>