diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-04-20 22:56:42 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-04-20 22:56:42 +0000 |
commit | 36870a2a527dc2a60873b29a0e4ef74b2fab1cf2 (patch) | |
tree | 62d247f44f735e33261adb578b69129cf5c15be8 | |
parent | cf9aff424f70ebd3396c722335d7151136d33e1b (diff) | |
download | mpv-36870a2a527dc2a60873b29a0e4ef74b2fab1cf2.tar.bz2 mpv-36870a2a527dc2a60873b29a0e4ef74b2fab1cf2.tar.xz |
Add perspective projection.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23032 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libass/ass_render.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 279a40c40a..0884f58ce4 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1589,6 +1589,18 @@ static inline void transform_vector_3d(FT_Vector* v, double *m) { a[2] = 0.; a[3] = 1.; transform_point_3d(a, m, b); + /* Apply perspective projection with the following matrix: + 2500 0 0 0 + 0 2500 0 0 + 0 0 0 0 + 0 0 8 2500 + where 2500 is camera distance, 8 - z-axis scale. + Camera is always located in (org_x, org_y, -2500). This means + that different subtitle events can be displayed at the same time + using different cameras. */ + b[0] *= 2500; + b[1] *= 2500; + b[3] = 8 * b[2] + 2500; if (b[3] < 0.001 && b[3] > -0.001) b[3] = b[3] < 0. ? -0.001 : 0.001; v->x = double_to_d6(b[0] / b[3]); |