Index: source/libvpx/vp9/common/vp9_tapify.py
|
===================================================================
|
--- source/libvpx/vp9/common/vp9_tapify.py (revision 0)
|
+++ source/libvpx/vp9/common/vp9_tapify.py (revision 0)
|
@@ -0,0 +1,106 @@
|
+"""
|
+ * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
|
+ *
|
+ * Use of this source code is governed by a BSD-style license
|
+ * that can be found in the LICENSE file in the root of the source
|
+ * tree. An additional intellectual property rights grant can be found
|
+ * in the file PATENTS. All contributing project authors may
|
+ * be found in the AUTHORS file in the root of the source tree.
|
+"""
|
+#!/usr/bin/env python
|
+import sys,string,os,re,math,numpy
|
+scale = 2**16
|
+def dist(p1,p2):
|
+ x1,y1 = p1
|
+ x2,y2 = p2
|
+ if x1==x2 and y1==y2 :
|
+ return 1.0
|
+ return 1/ math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
|
+
|
+def gettaps(p):
|
+ def l(b):
|
+ return int(math.floor(b))
|
+ def h(b):
|
+ return int(math.ceil(b))
|
+ def t(b,p,s):
|
+ return int((scale*dist(b,p)+s/2)/s)
|
+ r,c = p
|
+ ul=[l(r),l(c)]
|
+ ur=[l(r),h(c)]
|
+ ll=[h(r),l(c)]
|
+ lr=[h(r),h(c)]
|
+ sum = dist(ul,p)+dist(ur,p)+dist(ll,p)+dist(lr,p)
|
+ t4 = scale - t(ul,p,sum) - t(ur,p,sum) - t(ll,p,sum);
|
+ return [[ul,t(ul,p,sum)],[ur,t(ur,p,sum)],
|
+ [ll,t(ll,p,sum)],[lr,t4]]
|
+
|
+def print_mb_taps(angle,blocksize):
|
+ theta = angle / 57.2957795;
|
+ affine = [[math.cos(theta),-math.sin(theta)],
|
+ [math.sin(theta),math.cos(theta)]]
|
+ radius = (float(blocksize)-1)/2
|
+ print " // angle of",angle,"degrees"
|
+ for y in range(blocksize) :
|
+ for x in range(blocksize) :
|
+ r,c = numpy.dot(affine,[y-radius, x-radius])
|
+ tps = gettaps([r+radius,c+radius])
|
+ for t in tps :
|
+ p,t = t
|
+ tr,tc = p
|
+ print " %2d, %2d, %5d, " % (tr,tc,t,),
|
+ print " // %2d,%2d " % (y,x)
|
+
|
+i=float(sys.argv[1])
|
+while i <= float(sys.argv[2]) :
|
+ print_mb_taps(i,float(sys.argv[4]))
|
+ i=i+float(sys.argv[3])
|
+"""
|
+
|
+taps = []
|
+pt=dict()
|
+ptr=dict()
|
+for y in range(16) :
|
+ for x in range(16) :
|
+ r,c = numpy.dot(affine,[y-7.5, x-7.5])
|
+ tps = gettaps([r+7.5,c+7.5])
|
+ j=0
|
+ for tp in tps :
|
+ p,i = tp
|
+ r,c = p
|
+ pt[y,x,j]= [p,i]
|
+ try:
|
+ ptr[r,j,c].append([y,x])
|
+ except:
|
+ ptr[r,j,c]=[[y,x]]
|
+ j = j+1
|
+
|
+for key in sorted(pt.keys()) :
|
+ print key,pt[key]
|
+
|
+lr = -99
|
+lj = -99
|
+lc = 0
|
+
|
+shuf=""
|
+mask=""
|
+for r,j,c in sorted(ptr.keys()) :
|
+ for y,x in ptr[r,j,c] :
|
+ if lr != r or lj != j :
|
+ print "shuf_"+str(lr)+"_"+str(lj)+"_"+shuf.ljust(16,"0"), lc
|
+ shuf=""
|
+ lc = 0
|
+ for i in range(lc,c-1) :
|
+ shuf = shuf +"0"
|
+ shuf = shuf + hex(x)[2]
|
+ lc =c
|
+ break
|
+ lr = r
|
+ lj = j
|
+# print r,j,c,ptr[r,j,c]
|
+# print
|
+
|
+for r,j,c in sorted(ptr.keys()) :
|
+ for y,x in ptr[r,j,c] :
|
+ print r,j,c,y,x
|
+ break
|
+"""
|
|
Property changes on: source/libvpx/vp9/common/vp9_tapify.py
|
___________________________________________________________________
|
Added: svn:eol-style
|
+ LF
|
|
|