1""" 2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9""" 10#!/usr/bin/env python 11import sys,string,os,re,math,numpy 12scale = 2**16 13def dist(p1,p2): 14 x1,y1 = p1 15 x2,y2 = p2 16 if x1==x2 and y1==y2 : 17 return 1.0 18 return 1/ math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 19 20def gettaps(p): 21 def l(b): 22 return int(math.floor(b)) 23 def h(b): 24 return int(math.ceil(b)) 25 def t(b,p,s): 26 return int((scale*dist(b,p)+s/2)/s) 27 r,c = p 28 ul=[l(r),l(c)] 29 ur=[l(r),h(c)] 30 ll=[h(r),l(c)] 31 lr=[h(r),h(c)] 32 sum = dist(ul,p)+dist(ur,p)+dist(ll,p)+dist(lr,p) 33 t4 = scale - t(ul,p,sum) - t(ur,p,sum) - t(ll,p,sum); 34 return [[ul,t(ul,p,sum)],[ur,t(ur,p,sum)], 35 [ll,t(ll,p,sum)],[lr,t4]] 36 37def print_mb_taps(angle,blocksize): 38 theta = angle / 57.2957795; 39 affine = [[math.cos(theta),-math.sin(theta)], 40 [math.sin(theta),math.cos(theta)]] 41 radius = (float(blocksize)-1)/2 42 print " // angle of",angle,"degrees" 43 for y in range(blocksize) : 44 for x in range(blocksize) : 45 r,c = numpy.dot(affine,[y-radius, x-radius]) 46 tps = gettaps([r+radius,c+radius]) 47 for t in tps : 48 p,t = t 49 tr,tc = p 50 print " %2d, %2d, %5d, " % (tr,tc,t,), 51 print " // %2d,%2d " % (y,x) 52 53i=float(sys.argv[1]) 54while i <= float(sys.argv[2]) : 55 print_mb_taps(i,float(sys.argv[4])) 56 i=i+float(sys.argv[3]) 57""" 58 59taps = [] 60pt=dict() 61ptr=dict() 62for y in range(16) : 63 for x in range(16) : 64 r,c = numpy.dot(affine,[y-7.5, x-7.5]) 65 tps = gettaps([r+7.5,c+7.5]) 66 j=0 67 for tp in tps : 68 p,i = tp 69 r,c = p 70 pt[y,x,j]= [p,i] 71 try: 72 ptr[r,j,c].append([y,x]) 73 except: 74 ptr[r,j,c]=[[y,x]] 75 j = j+1 76 77for key in sorted(pt.keys()) : 78 print key,pt[key] 79 80lr = -99 81lj = -99 82lc = 0 83 84shuf="" 85mask="" 86for r,j,c in sorted(ptr.keys()) : 87 for y,x in ptr[r,j,c] : 88 if lr != r or lj != j : 89 print "shuf_"+str(lr)+"_"+str(lj)+"_"+shuf.ljust(16,"0"), lc 90 shuf="" 91 lc = 0 92 for i in range(lc,c-1) : 93 shuf = shuf +"0" 94 shuf = shuf + hex(x)[2] 95 lc =c 96 break 97 lr = r 98 lj = j 99# print r,j,c,ptr[r,j,c] 100# print 101 102for r,j,c in sorted(ptr.keys()) : 103 for y,x in ptr[r,j,c] : 104 print r,j,c,y,x 105 break 106""" 107