From Avisynth wiki
Jump to: navigation, search
Author StainlessS
Version v1.05
Category Effects
License GPLv2
Discussion Doom9 Forum



Shuffle spacial columns or rows (1D), or blocks(2D) of frames, or temporal shuffle (frame order), all shuffles Inversable, ie undoable.
Potential usage in clip obfuscation using 'secret keys', or slideshow random ordering of frames.


*** vcredist_x86.exe is required for ShufflessS-x86
*** vcredist_x64.exe is required for ShufflessS-x64

Syntax and Parameters

Shuffle1D_X = Horizontal 1D Shuffle | Shuffle1D_Y = Vertical 1D Shuffle | Shuffle2D = 2D Shuffle | ShuffleT = Shuffle Temporal, ie frame order.

Shuffle1D_X(clip c, Int "Seed"=0, Int "blkW"=8, Bool "Once"=False, Bool "Inverse"=False )
Shuffle1D_Y(clip c, Int "Seed"=0, Int "blkH"=8, Bool "Interlaced"=False, Bool "Once"=False, Bool "Inverse"=False )
Shuffle2D  (clip c, Int "Seed"=0, Int "blkW"=8, Int "blkH"=blkW, Bool "Interlaced"=False, Bool "Once"=False, Bool "Inverse"=False )
ShuffleT   (clip c, Int "Seed"=0, Bool "Inverse"=False ) 

    c,          Clip to Shuffle
    Seed,       -1=Random seed (Non inverse-able), 0 (default) same shuffle every time, 
                else any other int = UserSeed or 'SECRET_KEY'.
    BlkW,       Default 8, width of blocks or columns to shuffle.
                (Must be compatible with X Crop args, eg 2 or multiple thereof for YV12, 
                also must divide exactly into Width of clip, use crop or Addborders where necessary).
    BlkH,       Shuffle1D_Y Default=8. Shuffle2D Default=BlkW, NOTE, Changed from original default 8.
                Height of blocks or rows to shuffle.
                (Must be compatible with Y Crop args, eg 2 or multiple thereof for YV12, also must 
                divide exactly into Height of clip, use crop or Addborders where necessary).
    Interlaced, If True, then doubles minimum requirement of BlkH (Shuffle1D_Y and Shuffle2D ONLY).
                    eg YV12, where Interlaced=False blkH would require multiple of 2, and where 
                    Interlaced, Would would require multiple of 4, so as not to destroy interlacing.
    Once,       Default False. If true, then uses the same shuffle pattern for every frame, else 
                shuffled differently for every frame.
                    Perhaps better compression if not using ShuffleT.
    Inverse,    Reverses previously done shuffling, Must Use Same Key as was used for the Shuffling 
                stage (and maybe ideally all in reverse shuffle order).

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.
Shuffle2D is much better than 2x1D shuffles ie Shuffle1D_X + Shuffle1D_Y (or vice versa).
Shuffle2D together with either of the 1D shuffles is a bit pointless.
If using ShuffleT (frame order shuffle) suggest before or after ALL other shuffles, and in reverse order when Inverse = true.
If Inverse, then must uses same Seed, BlkW, BlkH, Interlaced and Once args to recover obfuscated source.
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.
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).

(Q) What use is seed=0      ? (A) Exact same sequence every time.
(Q) What use is Random seed ? (A) maybe for ShuffleT() of pics for slideshow.

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.


v1.02, 21 June 2020,	Added ShuffleT.
v1.03, 16 Aug  2020,	Fixed a couple of problems. All Colorspaces Supported.
v1.04, 19 Aug 2020,	All class variables now constant, MT compatible. Pretty much total re-write.
v1.05, 25 Aug 2020,     Renamed dll's from style "Shuffle_x86.dll" to style "ShufflessS_x86.dll", 
                        conflict with Stickboy Shuffle.dll.

Archived Downloads

Version Download Mirror
v1.05 ShufflessS_25&

Back to External Filters

Personal tools