### daala_tx: New flattened 2-point Type-IV DST.

```This 2-point Type-IV DST uses the same computation graph as the
asymmetric 2-point Type-IV DST.
Because this transform is embedded, it may be possible to remove the
initial averaging step by splitting the 2-point Type-IV DST into
separate forward and inverse transforms.
This change also reduces two multiplication constants (forward and
inverse transform) so they are less than 1.

subset-1:

new_dst2a@2017-12-04T01:59:12.884Z -> new_dst2@2017-12-04T01:59:57.412Z

PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0126 |  0.0387 |  0.0441 |   0.0554 | -0.0301 |  0.0034 |    -0.0342

Change-Id: I98568e0c5b97e3a6af27653ddab845ce97d2a53d```
parent 5b69b199
 ... ... @@ -115,15 +115,16 @@ #define OD_FDST_2_FLAT(p0, p1) \ do { \ int t_; \ int u_; \ t_ = (p0 + p1 + 1) >> 1; \ /* 8867/16384 ~= Cos[3*Pi/8]*Sqrt = 0.541196100146197 */ \ p0 = (p0*8867 + 8192) >> 14; \ /* 21407/16384 ~= Sin[3*Pi/8]*Sqrt = 1.3065629648763766 */ \ p1 = (p1*21407 + 8192) >> 14; \ /* 15137/8192 ~= 2*Cos[Pi/8] = 1.8477590650225735 */ \ t_ = (t_*15137 + 4096) >> 13; \ p0 = t_ - p0; \ p1 = t_ - p1; \ /* 21407/16384 ~= Sin[3*Pi/8] + Cos[3*Pi/8] ~= 1.3065629648763766 */ \ u_ = (p0*21407 + 8192) >> 14; \ /* 8867/16384 ~= Sin[3*Pi/8] - Cos[3*Pi/8] ~= 0.541196100146197 */ \ p0 = (p1*8867 + 8192) >> 14; \ /* 3135/4096 ~= 2*Cos[3*Pi/8] ~= 0.7653668647301796 */ \ t_ = (t_*3135 + 2048) >> 12; \ p0 += t_; \ p1 = u_ - t_; \ } \ while (0) ... ...
 ... ... @@ -46,15 +46,16 @@ static INLINE void OD_KERNEL_FUNC(od_idct2)(OD_REG *p0, OD_REG *p1) { static INLINE void OD_KERNEL_FUNC(od_idst2)(OD_REG *p0, OD_REG *p1) { OD_REG t_; OD_REG u_; t_ = OD_AVG(*p0, *p1); /* 8867/16384 ~= Cos[3*Pi/8]*Sqrt = 0.541196100146197 */ *p0 = OD_MUL(*p0, 8867, 14); /* 21407/16384 ~= Sin[3*Pi/8]*Sqrt = 1.3065629648763766 */ *p1 = OD_MUL(*p1, 21407, 14); /* 15137/8192 ~= 2*Cos[Pi/8] = 1.8477590650225735 */ t_ = OD_MUL(t_, 15137, 13); *p0 = OD_SUB(t_, *p0); *p1 = OD_SUB(t_, *p1); /* 21407/16384 ~= Sin[3*Pi/8] + Cos[3*Pi/8] ~= 1.3065629648763766 */ u_ = OD_MUL(*p0, 21407, 14); /* 8867/16384 ~= Sin[3*Pi/8] - Cos[3*Pi/8] ~= 0.541196100146197 */ *p0 = OD_MUL(*p1, 8867, 14); /* 3135/4096 ~= 2*Cos[3*Pi/8] ~= 0.7653668647301796 */ t_ = OD_MUL(t_, 3135, 12); *p0 = OD_ADD(*p0, t_); *p1 = OD_SUB(u_, t_); } static INLINE void OD_KERNEL_FUNC(od_idct2_asym)(OD_REG *p0, OD_REG *p1, ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!