OK, here some image samples after shuffle and compress and then de-compress De-shuffle again.
Compressed @ CRF 21.5, Slow.
Looks a whole lot better than XOR-ing
4x4 shuffle block sizes
[EDIT: Seems to have been de-saturated a bit]
Next two did AddBorders instead of crop, thats the grey border.
8x8
16x16
Shuffled @ 24x24 (I used Addborders instead of crop, I did not try compress).
Time for bed.
EDIT: Note original 22MB size was YouTube compressed, so would likely need to be compressed somewhat bigger anyways.
EDIT: Basic Addborders Shuffler
Code:
# Stack Overhead Subtitle Text, with optional FrameNumber shown.
Function TSub(clip c,string Tit,Bool "ShowFrameNo",Int "Col"){
c.BlankClip(height=20,Color=Default(Col,0))
(Default(ShowFrameNo,False))?ScriptClip("""Subtitle(String(current_frame,"%.f] """+Tit+""""))"""):Trim(0,-1).Subtitle(Tit)
Return StackVertical(c).AudioDubEx(c)
}
/*
ShuffleV(clip c, Int "Seed"=0 , Int "blkH"=8 , Bool "Interlaced"=False , Bool "Inverse"=False ) # Vertical Shuffle
ShuffleH(clip c, Int "Seed"=0 , Int "blkW"=8 , Bool "Inverse"=False ) # Horizontal Shuffle
*/
LoadPlugin(".\Shuffle.dll")
#LoadPlugin(".\Shuffle_x64.dll")
SECRET_KEY_H = 123456789
SECRET_KEY_W = 987654321
BlkH=8 # Blks for Vertial Shuffle
BlkW=8 # Blks for Horizontal Shuffle
INTERLACED=False # Doubles minimum required ShuffleV BlkH, eg YV12 interlaced requires multiple of 4 when INTERLACED=True, else 2
AviSource("D:\Parade.avi")
#Crop(0,0,Width/8*8,Height/8*8) # Can Crop or AddBorders to achieve required Width/Height BlkW/H
H=Height % BLKH
W=Width % BLKW
(W!=0 || H!=0) ? AddBorders(0,0,BlkW-W,BlkH-H,$808080) : NOP
ConvertToYV12
#ConvertToYV16
#ConvertToYV24
#ConvertToYV411
#ConvertToY8
ORG=Last
ShuffleV(seed=SECRET_KEY_H,blkH=BLKH,Interlaced=INTERLACED) # Shuffle Vertical blocks
#Return Last
ShuffleH(seed=SECRET_KEY_W,blkW=BLKW) # Shuffle Horizontal blocks
Return Last.TSub("Shuffled 24x24",true)
SHUFFLED=Last
ShuffleV(seed=SECRET_KEY_H,blkH=BLKH,Interlaced=INTERLACED,Inverse=True) # Inverse: De-Shuffle V/H, Order does not matter
ShuffleH(seed=SECRET_KEY_W,blkW=BLKW,Inverse=True)
#Return Last
#SHUFFLED=SHUFFLED.TSub("Shuffled"+String(BlkH," BlkH=%.0f")+String(BlkW," BlkW=%.0f"),true)
#Last=Last.TSub("De-Shuffled")
StackHorizontal(SHUFFLED,Last)
#ConvertToRGB32
Basic Addborders De-Shuffler
Code:
# Stack Overhead Subtitle Text, with optional FrameNumber shown.
Function TSub(clip c,string Tit,Bool "ShowFrameNo",Int "Col"){
c.BlankClip(height=20,Color=Default(Col,0))
(Default(ShowFrameNo,False))?ScriptClip("""Subtitle(String(current_frame,"%.f] """+Tit+""""))"""):Trim(0,-1).Subtitle(Tit)
Return StackVertical(c).AudioDubEx(c)
}
/*
ShuffleV(clip c, Int "Seed"=0 , Int "blkH"=8 , Bool "Interlaced"=False , Bool "Inverse"=False ) # Vertical Shuffle
ShuffleH(clip c, Int "Seed"=0 , Int "blkW"=8 , Bool "Inverse"=False ) # Horizontal Shuffle
*/
LoadPlugin(".\Shuffle.dll")
#LoadPlugin(".\Shuffle_x64.dll")
SECRET_KEY_H = 123456789
SECRET_KEY_W = 987654321
BlkH=8 # Blks for Vertial Shuffle
BlkW=8 # Blks for Horizontal Shuffle
INTERLACED=False # Doubles minimum required ShuffleV BlkH, eg YV12 interlaced requires multiple of 4 when INTERLACED=True, else 2
AviSource("D:\Parade.avi")
H=Height % BLKH
W=Width % BLKW
(W!=0 || H!=0) ? AddBorders(0,0,BlkW-W,BlkH-H,$808080) : NOP
ORIG=Last
#Return Last
AviSource(".\8x8.avi")
#Return Last
ConvertToYV12
ORG=Last
ShuffleH(seed=SECRET_KEY_W,blkW=BLKW,Inverse=True)
ShuffleV(seed=SECRET_KEY_H,blkH=BLKH,Interlaced=INTERLACED,Inverse=True) # Inverse: De-Shuffle V/H, Order does not matter
#Return Last
ORIG=ORIG.TSub("Original mp4 size=22MB",true)
Last=Last.TSub("UnShuffled 8x8 mp4 size=153MB")
StackHorizontal(ORIG,Last)
#ConvertToRGB32
Really time for bed.