daala.git
6 months agodump_video: Empty video files will not be dumped. master
Danesh Daroui [Fri, 16 Jun 2017 02:46:50 +0000 (19:46 -0700)]
dump_video: Empty video files will not be dumped.

Empty input video files will not be processed in 'dump_video' and
an error message will be shown instead.

6 months agodaala_decode_img_out: NULL pointer check
Danesh Daroui [Fri, 16 Jun 2017 02:44:27 +0000 (19:44 -0700)]
daala_decode_img_out: NULL pointer check

Added extra check in the function 'daala_decode_img_out'
to make sure that the passed pointers are not NULL.

6 months agoAdd EXTRA_OPTIONS to rd_collect_aom
Luc Trudeau [Thu, 8 Jun 2017 01:34:15 +0000 (21:34 -0400)]
Add EXTRA_OPTIONS to rd_collect_aom

6 months agoError handling for missing CIEDE dependencies
Luc Trudeau [Tue, 6 Jun 2017 14:57:11 +0000 (10:57 -0400)]
Error handling for missing CIEDE dependencies

rd_collect will ignore CIEDE2000 when the python packages are missing.
An error message is shown to the user indicating which dependencies are
required.

6 months agoAdd quotes $@ in rd_collect.sh script.
Nathan E. Egge [Fri, 2 Jun 2017 16:01:33 +0000 (12:01 -0400)]
Add quotes $@ in rd_collect.sh script.

6 months agoSupport av1-rt in rd_collect.sh using AWCY params.
Nathan E. Egge [Fri, 2 Jun 2017 14:45:49 +0000 (10:45 -0400)]
Support av1-rt in rd_collect.sh using AWCY params.

6 months agoRemove support for vp10 from rd_collect.sh scripts.
Nathan E. Egge [Fri, 2 Jun 2017 13:29:25 +0000 (09:29 -0400)]
Remove support for vp10 from rd_collect.sh scripts.

The vp10 codec was an experimental codec that eventually became av1.

6 months agoAdd option to output results in AWCY format.
Luc Trudeau [Tue, 6 Jun 2017 14:51:48 +0000 (10:51 -0400)]
Add option to output results in AWCY format.

6 months agoAdd support for CIEDE2000 in rd tools
Luc Trudeau [Mon, 5 Jun 2017 20:28:04 +0000 (16:28 -0400)]
Add support for CIEDE2000 in rd tools

rd_collect now calls dump_ciede2000.py to output CIEDE2000 metrics.
bd_rate.sh, rd_average.sh and rd_plot.sh also support CIEDE2000

6 months agoUse the same rd_collect parameters as AWCY for AV1.
Nathan E. Egge [Fri, 24 Feb 2017 15:34:22 +0000 (10:34 -0500)]
Use the same rd_collect parameters as AWCY for AV1.

7 months agoUpdate the coding tools draft.
Timothy B. Terriberry [Fri, 14 Apr 2017 23:57:04 +0000 (16:57 -0700)]
Update the coding tools draft.

Describes an way to use a smaller multiply in the dyadic partition
 function, and removes the description of the non-dyadic partition
 functions, since we don't currently plan to use those, long-term.

8 months agoci: only do make check for travis builds
Tristan Matthews [Fri, 24 Mar 2017 16:46:56 +0000 (12:46 -0400)]
ci: only do make check for travis builds

Rationale: make distcheck does a plain old ./configure, which forces a
dependency on libsd2-dev and libogg.

8 months agoci: only depend on check for travis builds
Tristan Matthews [Thu, 23 Mar 2017 21:23:59 +0000 (17:23 -0400)]
ci: only depend on check for travis builds

8 months agoci: add initial travis configuration file
Tristan Matthews [Thu, 23 Mar 2017 19:31:48 +0000 (15:31 -0400)]
ci: add initial travis configuration file

8 months agoencode: minor refactoring
Tristan Matthews [Thu, 23 Mar 2017 13:11:49 +0000 (09:11 -0400)]
encode: minor refactoring

9 months agoMerging robust and nodesync
Luc Trudeau [Tue, 7 Mar 2017 02:56:53 +0000 (21:56 -0500)]
Merging robust and nodesync

The variables robust and nodesync appear to represent the same concept.
In order to simplify, they are merged into nodesync. This change does
not alter the bitstream.

9 months agoUse same rd_collect data poits as AWCY for AV1.
Nathan E. Egge [Tue, 29 Nov 2016 15:00:15 +0000 (10:00 -0500)]
Use same rd_collect data poits as AWCY for AV1.

10 months agoGetting rid of the DCT in od_compute_dist_8x8()
Jean-Marc Valin [Wed, 18 Jan 2017 06:58:33 +0000 (01:58 -0500)]
Getting rid of the DCT in od_compute_dist_8x8()

Replacing the DCT and frequency weighting by a filter

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
-0.0995 | -0.9381 | -0.9595 |  -1.1745 | 0.5285 |  0.1386 |    -0.1813

11 months agoSimplified clipping skip to 1
ltrudeau [Wed, 11 Jan 2017 01:47:58 +0000 (20:47 -0500)]
Simplified clipping skip to 1

Remove double negation and added a comment explaining that this is used
for visualization.

11 months agoAdds comment to explain nb_coeff in CfL
ltrudeau [Tue, 20 Dec 2016 21:22:10 +0000 (16:22 -0500)]
Adds comment to explain nb_coeff in CfL

Added a comment because nb_coeff is not the number of coefficients in
the current band, but the number of coefficients in the current band
plus the number of coefficients in subsequent bands until the end of the
block.

11 months agopvq: skip gshift calculation in float pvq case
Tristan Matthews [Fri, 16 Dec 2016 21:21:15 +0000 (16:21 -0500)]
pvq: skip gshift calculation in float pvq case

12 months agoEliminate a sqrt in od_compute_dist_8x8().
Timothy B. Terriberry [Thu, 8 Dec 2016 19:13:39 +0000 (11:13 -0800)]
Eliminate a sqrt in od_compute_dist_8x8().

No reason to use two when one will do.

master-2016-12-09-7098e5 -> derf-compute_dist-fewer_sqrts4

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000

12 months agopvq_encoder: tune delta_rate for k=1
David Michael Barr [Tue, 22 Nov 2016 12:49:54 +0000 (21:49 +0900)]
pvq_encoder: tune delta_rate for k=1

Fit to collected rate data from subset3, for k = 1.

daala-master-2016-11-16T13-02-41-114Z -> daala-delta-rate-k1-subset1

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
-0.1471 | -0.8594 | -0.7224 |  -0.0740 | 0.0032 |  0.0734 |    -0.3382

master-2017-11-13-4403315 -> daala-delta-rate-k1-o1f

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.1484 | -0.6323 | -0.6271 |  -0.1811 | -0.0215 | -0.0829 |    -0.3850

Signed-off-by: David Michael Barr <b@rr-dav.id.au>
12 months agoFully order the pvq search candidates
David Michael Barr [Tue, 6 Sep 2016 02:41:07 +0000 (11:41 +0900)]
Fully order the pvq search candidates

For portable and stable sorting, break ties.
Large differences in output were observed between
AWCY and an OS X machine because of the platform
qsort implementation.

Signed-off-by: David Michael Barr <b@rr-dav.id.au>
12 months agoWrong offset for the red difference plane in CIEDE
ltrudeau [Thu, 24 Nov 2016 18:24:26 +0000 (13:24 -0500)]
Wrong offset for the red difference plane in CIEDE

Replaces A // 4 with Adiv2, because A // 4 != (H // 2) * (W // 2)

12 months agoencoder_example: fail earlier on invalid picture size
Tristan Matthews [Thu, 17 Nov 2016 05:23:14 +0000 (00:23 -0500)]
encoder_example: fail earlier on invalid picture size

12 months agoAdd tools/y4m2yuv.c.
Thomas Daede [Fri, 18 Nov 2016 00:48:01 +0000 (16:48 -0800)]
Add tools/y4m2yuv.c.

12 months agotools: Add 444, 444p10 support to dump_ciede2000.py
David Michael Barr [Wed, 16 Nov 2016 10:57:13 +0000 (19:57 +0900)]
tools: Add 444, 444p10 support to dump_ciede2000.py

Support comparing different formats, just because.

Signed-off-by: David Michael Barr <b@rr-dav.id.au>
12 months agopvq: fix artificial chroma boost with --enable-float-pvq
Tristan Matthews [Wed, 16 Nov 2016 14:32:13 +0000 (09:32 -0500)]
pvq: fix artificial chroma boost with --enable-float-pvq

Fixes regression on --enable-float-pvq from commit
c774e25ecd051357e95f850520c61ba82dca3180.

Caught by David Michael Barr.

objective-fast1 (with/without --enable-float-pvq):
daala-fix-float-pvq-rounding2016-11-16T143315122Z -> master-2017-11-13-4403315

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0693 | -0.0757 |  0.1661 |  -0.0222 | -0.0493 | -0.0262 |    -0.0173

subset1 (with/without --enable-float-pvq):
daala-fix-pvq-float-rounding2016-11-16T163903172Z -> daala-master-2016-11-16T13-02-41-114Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.1306 | -0.0399 |  0.0673 |  -0.1358 | -0.0611 | -0.0999 |    -0.0946

13 months agopvq: cosmetics: drop OD_ROUND32 where it is a noop
Tristan Matthews [Tue, 15 Nov 2016 12:44:37 +0000 (07:44 -0500)]
pvq: cosmetics: drop OD_ROUND32 where it is a noop

No change in metrics

13 months agopvq: in float pvq case, mag must default to 1.0
Tristan Matthews [Mon, 14 Nov 2016 22:56:42 +0000 (17:56 -0500)]
pvq: in float pvq case, mag must default to 1.0

Regression from c774e25ecd051357e95f850520c61ba82dca3180

Change with --enable-float-pvq:

        PSNR  PSNR-HVS  SSIM  FASTSSIM  CIEDE 2000
Average 0.36 -9.80     -3.93 -7.68      3.36

        PSNR Cb  PSNR Cr  APSNR Y  APSNR Cb  APSNR Cr  MS SSIM
Average 14.92    14.09    0.60     15.17     14.38    -8.12

13 months agoConvert daala rd_collect script to use dump_video.
Nathan E. Egge [Sun, 13 Nov 2016 21:50:35 +0000 (16:50 -0500)]
Convert daala rd_collect script to use dump_video.

13 months agoDon't mutate stride when downsampling in msssim.
Thomas Daede [Tue, 8 Nov 2016 23:37:44 +0000 (15:37 -0800)]
Don't mutate stride when downsampling in msssim.

Fixes a metric calculation error introduced in:
1c65b80948cbcd6fe73b1ed5d8903f6852b2f998

13 months agopvq: fix typo
Tristan Matthews [Wed, 9 Nov 2016 14:55:56 +0000 (09:55 -0500)]
pvq: fix typo

13 months agoUpdating codingtools draft to -01.
Nathan E. Egge [Mon, 31 Oct 2016 23:20:39 +0000 (19:20 -0400)]
Updating codingtools draft to -01.

13 months agoDefine UINT64_C when needed.
Timothy B. Terriberry [Fri, 28 Oct 2016 20:34:01 +0000 (13:34 -0700)]
Define UINT64_C when needed.

rate.c now uses this, but it is normally defined by stdint.h, which
 is not always available.
Fixes a compilation problem on MSVC 2008 or earlier.

14 months agoUse OD_ILOG_NZ() in OD_DIVU_SMALL().
Nathan E. Egge [Sat, 8 Oct 2016 15:19:27 +0000 (11:19 -0400)]
Use OD_ILOG_NZ() in OD_DIVU_SMALL().

Use OD_ILOG_NZ() instead of OD_ILOG() in OD_DIVU_SMALL since _d > 0.

14 months agoMake ciede2000.py work with both Python 2 and 3.
Thomas Daede [Tue, 11 Oct 2016 23:57:11 +0000 (16:57 -0700)]
Make ciede2000.py work with both Python 2 and 3.

14 months agopvq: convert od_init_qm to int
Tristan Matthews [Sat, 8 Oct 2016 17:26:13 +0000 (13:26 -0400)]
pvq: convert od_init_qm to int

objective1-fast (gains are largely on wikipedia_420):
PSNR YCbCr:     -0.11%     -0.24%      0.08%
   PSNRHVS:     -0.09%
      SSIM:     -0.08%
    MSSSIM:     -0.06%
 CIEDE2000:     -0.15%

subset1:
PSNR YCbCr:      0.02%      0.05%      0.05%
   PSNRHVS:      0.00%
      SSIM:     -0.00%
    MSSSIM:     -0.01%
 CIEDE2000:      0.01%

14 months agotools: Add 420p10 support to dump_ciede2000.py
David Michael Barr [Wed, 5 Oct 2016 12:50:15 +0000 (21:50 +0900)]
tools: Add 420p10 support to dump_ciede2000.py

Support comparing different depths, just because.

Signed-off-by: David Michael Barr <b@rr-dav.id.au>
14 months agodump_video: fix yuv420p10 output
Tristan Matthews [Tue, 20 Sep 2016 13:21:26 +0000 (09:21 -0400)]
dump_video: fix yuv420p10 output

14 months agodump_video: fix yuv444p10 output
Tristan Matthews [Tue, 20 Sep 2016 12:40:37 +0000 (08:40 -0400)]
dump_video: fix yuv444p10 output

14 months agoEnable --fpr by default on high bit depth input.
Danesh Daroui [Fri, 16 Sep 2016 14:00:15 +0000 (16:00 +0200)]
Enable --fpr by default on high bit depth input.

When running encoder_example on input videos with bit depth > 8, always
 use full precision references (--fpr) even if not specified on the
 command line.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
15 months agoRemove redundant test in od_ec_decode_bool_q15().
Nathan E. Egge [Fri, 9 Sep 2016 18:21:56 +0000 (14:21 -0400)]
Remove redundant test in od_ec_decode_bool_q15().

Using a test that decodes 100M random binary symbols, making this change
 produced a speed up of 8.81% with gcc-4.9.3 and 3.71% with clang-3.7.1,
 both compiled with -O2.

15 months agopvq: use small LUT for integer sqrt((n+3)/2) sqrt((n+2)/2)
Tristan Matthews [Fri, 26 Aug 2016 04:00:40 +0000 (00:00 -0400)]
pvq: use small LUT for integer sqrt((n+3)/2) sqrt((n+2)/2)

objective1-fast:
PSNR YCbCr:     -0.11%      0.06%     -0.04%
   PSNRHVS:     -0.04%
      SSIM:     -0.05%
    MSSSIM:     -0.07%
 CIEDE2000:      0.03%

subset1:
PSNR YCbCr:     -0.11%      0.06%     -0.04%
   PSNRHVS:     -0.04%
      SSIM:     -0.05%
    MSSSIM:     -0.07%
 CIEDE2000:      0.03%

15 months agopvq: use od_beta_rcp in od_gain_compand
Tristan Matthews [Thu, 25 Aug 2016 22:20:54 +0000 (18:20 -0400)]
pvq: use od_beta_rcp in od_gain_compand

No change in metrics.

15 months agopvq: use od_rcp_beta in od_compute_k
Tristan Matthews [Wed, 24 Aug 2016 18:33:35 +0000 (14:33 -0400)]
pvq: use od_rcp_beta in od_compute_k

regression on wikiepdia_420.y4m is back:

objective1-fast:
PSNR YCbCr:      0.10%      0.13%      0.08%
   PSNRHVS:      0.05%
      SSIM:      0.07%
    MSSSIM:      0.07%
 CIEDE2000:      0.04%

subset1:
PSNR YCbCr:     -0.00%     -0.00%      0.02%
   PSNRHVS:      0.01%
      SSIM:     -0.01%
    MSSSIM:     -0.01%
 CIEDE2000:     -0.00%

15 months agopvq: use od_rcp_beta in od_compute_max_theta
Tristan Matthews [Sat, 20 Aug 2016 00:05:06 +0000 (17:05 -0700)]
pvq: use od_rcp_beta in od_compute_max_theta

No change in metrics.

15 months agoDon't bother with the RDO search if we can't beat the skip distortion
Jean-Marc Valin [Fri, 17 Jun 2016 00:45:02 +0000 (20:45 -0400)]
Don't bother with the RDO search if we can't beat the skip distortion

No change in metrics

15 months agoskipping the search when there's no new pulses to add
Jean-Marc Valin [Fri, 17 Jun 2016 00:02:55 +0000 (20:02 -0400)]
skipping the search when there's no new pulses to add

No change in metrics

15 months agoSorting theta search so that we can use "induction search" all the time
Jean-Marc Valin [Wed, 15 Jun 2016 10:56:33 +0000 (06:56 -0400)]
Sorting theta search so that we can use "induction search" all the time

15 months agoPVQ search induction: refine the lower-K search rather than search from scratch
Jean-Marc Valin [Thu, 16 Jun 2016 10:56:11 +0000 (06:56 -0400)]
PVQ search induction: refine the lower-K search rather than search from scratch

Default (speed=0):
PSNR YCbCr:     -0.05%     -0.01%     -0.02%
   PSNRHVS:     -0.02%
      SSIM:     -0.03%
    MSSSIM:     -0.03%
 CIEDE2000:     -0.01%

speed=1:
PSNR YCbCr:     -0.06%     -0.06%     -0.23%
   PSNRHVS:     -0.08%
      SSIM:     -0.06%
    MSSSIM:     -0.07%
 CIEDE2000:     -0.07%

15 months agoImproving rate approximation
Jean-Marc Valin [Wed, 15 Jun 2016 12:54:02 +0000 (08:54 -0400)]
Improving rate approximation

No change in metrics by default, but when enabled (compared to previous
approximation):
PSNR YCbCr:     -0.16%      0.39%      0.12%
   PSNRHVS:     -0.13%
      SSIM:     -0.18%
    MSSSIM:     -0.16%
 CIEDE2000:     -0.01%

15 months agoFirst PVQ optimization: using the od_pvq_rate() approximation on RDO pass
Jean-Marc Valin [Tue, 14 Jun 2016 20:41:36 +0000 (16:41 -0400)]
First PVQ optimization: using the od_pvq_rate() approximation on RDO pass

No change in metrics by default, but when enabled:
PSNR YCbCr:      0.44%     -0.05%      0.17%
   PSNRHVS:      0.53%
      SSIM:      0.47%
    MSSSIM:      0.45%
 CIEDE2000:      0.34%

15 months agopvq: use int beta in od_pow
Tristan Matthews [Fri, 19 Aug 2016 17:30:53 +0000 (10:30 -0700)]
pvq: use int beta in od_pow

Note that the gains on objective1-fast are on wikipedia_420.y4m, which
regressed on 8b42d91e983cb3742bb7e4794f374385adfc3820.

objective1-fast:
PSNR YCbCr:     -0.22%     -0.18%     -0.63%
   PSNRHVS:     -0.20%
      SSIM:     -0.22%
    MSSSIM:     -0.22%
 CIEDE2000:     -0.20%

subset1:
PSNR YCbCr:      0.00%      0.01%     -0.00%
   PSNRHVS:     -0.00%
      SSIM:      0.01%
    MSSSIM:      0.01%
 CIEDE2000:      0.00%

15 months agopvq: keep beta int until used in computation
Tristan Matthews [Fri, 19 Aug 2016 16:24:37 +0000 (09:24 -0700)]
pvq: keep beta int until used in computation

No change in metrics.

15 months agoAdd set parameter to submit_awcy.py.
Thomas Daede [Fri, 19 Aug 2016 19:34:49 +0000 (12:34 -0700)]
Add set parameter to submit_awcy.py.

15 months agopvq: fix documentation
Tristan Matthews [Fri, 19 Aug 2016 16:44:14 +0000 (09:44 -0700)]
pvq: fix documentation

15 months agopvq: convert beta tables to int
Tristan Matthews [Thu, 18 Aug 2016 23:38:01 +0000 (16:38 -0700)]
pvq: convert beta tables to int

No change in metrics.

15 months agodecode: avoid redundant QM initialization
Tristan Matthews [Thu, 18 Aug 2016 18:20:10 +0000 (11:20 -0700)]
decode: avoid redundant QM initialization

15 months agopvq: use od_log2 int approximation
Tristan Matthews [Wed, 17 Aug 2016 01:42:54 +0000 (18:42 -0700)]
pvq: use od_log2 int approximation

objective1-fast:
PSNR YCbCr:      0.11%      0.05%      0.10%
   PSNRHVS:      0.08%
      SSIM:      0.08%
    MSSSIM:      0.08%
 CIEDE2000:      0.01%

 subset1:
PSNR YCbCr:     -0.00%      0.05%      0.03%
   PSNRHVS:      0.01%
      SSIM:     -0.00%
    MSSSIM:     -0.00%
 CIEDE2000:      0.00%

15 months agoClean up EC tell() and tell_frac() functions.
Nathan E. Egge [Thu, 18 Aug 2016 06:19:22 +0000 (02:19 -0400)]
Clean up EC tell() and tell_frac() functions.

Add a const qualifier to the od_ec_enc and od_ec_dec parameters of
 the od_ec_enc_tell(), od_ec_enc_tell_frac(), od_ec_dec_tell(), and
 od_ec_dec_tell_frac() functions.
Add an OD_WARN_UNUSED_RESULT to od_ec_enc_tell_frac().

15 months agopvq: use approximation for od_rcp
Tristan Matthews [Wed, 17 Aug 2016 02:23:49 +0000 (19:23 -0700)]
pvq: use approximation for od_rcp

subset1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR  0.001686 -0.000285 -0.000765
 PSNRHVS  0.003194  0.000187 -0.048637
    SSIM -0.001414  0.001709 -0.002833
FASTSSIM -0.003150  0.002658 -0.031362

objective1-fast:
PSNR YCbCr: -0.07%      0.08%     -0.09%
   PSNRHVS: -0.12%
      SSIM: -0.12%
    MSSSIM: -0.11%
 CIEDE2000:  0.01%

16 months agorate: fix -Wshift-negative-value
Tristan Matthews [Tue, 16 Aug 2016 07:14:11 +0000 (00:14 -0700)]
rate: fix -Wshift-negative-value

Namely,
src/rate.c:1103:19: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
      log_scale = OD_Q57(-64);
                  ^~~~~~~~~~~
src/rate.c:34:33: note: expanded from macro 'OD_Q57'

16 months agoto_monochrome: add --plane option to preserve other plane
Guillaume Martres [Tue, 16 Aug 2016 07:18:39 +0000 (00:18 -0700)]
to_monochrome: add --plane option to preserve other plane

16 months agopvq: fix build for OD_FLOAT_PVQ
Tristan Matthews [Thu, 11 Aug 2016 21:52:32 +0000 (17:52 -0400)]
pvq: fix build for OD_FLOAT_PVQ

Regression from a9d834a103bb1903faf098d2078988d6693f58aa

16 months agopvq: fixed-point od_apply_householder
Tristan Matthews [Wed, 3 Aug 2016 15:12:20 +0000 (11:12 -0400)]
pvq: fixed-point od_apply_householder

objective-fast1:
PSNR YCbCr:      0.01%     -0.02%      0.22%
   PSNRHVS:      0.07%
      SSIM:      0.06%
    MSSSIM:      0.03%
 CIEDE2000:      0.00%

subset1:
        LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.005594  0.002910  0.010791
 PSNRHVS -0.002126  0.004317  0.052591
    SSIM -0.009023  0.002315  0.006972
FASTSSIM -0.008637 -0.022084 -0.015729

16 months agopvq: convert compute_theta to fixed
Tristan Matthews [Thu, 11 Aug 2016 15:16:22 +0000 (11:16 -0400)]
pvq: convert compute_theta to fixed

No metrics change.

16 months agoReduce RAM usage of dcttest by converting basis storage from doubles to bytes.
Thomas Daede [Fri, 20 May 2016 01:54:37 +0000 (18:54 -0700)]
Reduce RAM usage of dcttest by converting basis storage from doubles to bytes.

dynamic_range() stores the basis functions by passing impulses to the
transforms, but the range checks later only care about the polarity of
the response.

Instead of storing the basis as doubles in basis2, store just -1, 0, or 1 in
basis_pol. This reduces RAM usage from 626MB to 168MB, while yielding identical
output.

16 months agopvq: convert double constant to int
Tristan Matthews [Tue, 2 Aug 2016 01:41:43 +0000 (21:41 -0400)]
pvq: convert double constant to int

ntt-short1:
PSNR YCbCr:     -0.03%     -0.29%     -0.38%
   PSNRHVS:      0.01%
      SSIM:     -0.03%
    MSSSIM:      0.00%
 CIEDE2000:     -0.13%

subset1:
         LOW (%)  MEDIUM (%) HIGH (%)
    PSNR 0.000001 0.000002 0.000012
 PSNRHVS 0.000001 0.000005 0.000026
    SSIM 0.000000 0.000000 0.000000
FASTSSIM 0.000001 0.000001 0.000003

16 months agoodintrin: reuse shift macros
Tristan Matthews [Wed, 3 Aug 2016 19:50:52 +0000 (15:50 -0400)]
odintrin: reuse shift macros

No change in metrics.

16 months agopvq: convert od_log2 to int16_t input
Tristan Matthews [Mon, 1 Aug 2016 18:49:48 +0000 (14:49 -0400)]
pvq: convert od_log2 to int16_t input

No change in metrics.

16 months agopvq: use integer approximation for exp2
Tristan Matthews [Fri, 29 Jul 2016 15:24:44 +0000 (12:24 -0300)]
pvq: use integer approximation for exp2

ntt-short1:
PSNR YCbCr:      0.06%      0.28%      0.23%
   PSNRHVS:      0.05%
      SSIM:      0.04%
    MSSSIM:     -0.00%
 CIEDE2000:     -0.01%

subset1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR 0.016847 -0.010997  0.010651
 PSNRHVS 0.010134 -0.007417 -0.019350
    SSIM 0.014395 -0.016214 -0.010879
FASTSSIM 0.045682 -0.004407 -0.045149

16 months agoRevert "clang-ioc.sh: fix deprecation warning"
Tristan Matthews [Thu, 28 Jul 2016 22:11:49 +0000 (19:11 -0300)]
Revert "clang-ioc.sh: fix deprecation warning"

This reverts commit 0a6abffd2f4d827f7e44e3f6cad6faa7e75de8cf. We need to
upgrade clang on Jenkins first.

16 months agoAdd support for reading 444p10 y4m files.
Nathan E. Egge [Wed, 13 Jul 2016 14:23:02 +0000 (10:23 -0400)]
Add support for reading 444p10 y4m files.

16 months agoclang-ioc.sh: fix deprecation warning
Tristan Matthews [Thu, 28 Jul 2016 19:37:17 +0000 (16:37 -0300)]
clang-ioc.sh: fix deprecation warning

Namely, "clang: warning: argument '-fno-sanitize-recover' is deprecated, use '-fno-sanitize-recover=undefined,integer' instead"

16 months agopvq: change shift to multiply for clarity
Tristan Matthews [Wed, 27 Jul 2016 13:44:09 +0000 (10:44 -0300)]
pvq: change shift to multiply for clarity

No change in metrics.

16 months agopvq: convert compute_max_theta to fixed (aside from beta)
Tristan Matthews [Tue, 26 Jul 2016 23:04:51 +0000 (20:04 -0300)]
pvq: convert compute_max_theta to fixed (aside from beta)

ntt-short1:
PSNR YCbCr:      0.05%      0.61%      0.34%
   PSNRHVS:      0.06%
      SSIM:      0.01%
    MSSSIM:      0.02%
 CIEDE2000:      0.14%

subset1:
           LOW (%)  MEDIUM (%) HIGH (%)
    PSNR  0.002409  0.001289  0.014176
 PSNRHVS  0.002905 -0.000071  0.003998
    SSIM -0.000910  0.000938  0.001277
FASTSSIM -0.004575 -0.008021 -0.001923

16 months agoFix compilation of dump_fastssim.
Thomas Daede [Tue, 26 Jul 2016 18:41:22 +0000 (11:41 -0700)]
Fix compilation of dump_fastssim.

16 months agoAdd high bit depth support to dump_msssim.
Thomas Daede [Tue, 12 Jul 2016 00:53:06 +0000 (17:53 -0700)]
Add high bit depth support to dump_msssim.

16 months agoAdd high bit depth support to dump_fastssim.
Thomas Daede [Tue, 12 Jul 2016 00:34:35 +0000 (17:34 -0700)]
Add high bit depth support to dump_fastssim.

16 months agoAdd high bit depth support to dump_psnrhvs.
Thomas Daede [Tue, 12 Jul 2016 00:07:31 +0000 (17:07 -0700)]
Add high bit depth support to dump_psnrhvs.

16 months agoAdd high bit depth support to dump_ssim.
Thomas Daede [Mon, 11 Jul 2016 23:39:20 +0000 (16:39 -0700)]
Add high bit depth support to dump_ssim.

16 months agoAdd high bit depth support to dump_psnr.
Thomas Daede [Mon, 11 Jul 2016 22:07:34 +0000 (15:07 -0700)]
Add high bit depth support to dump_psnr.

16 months agoRemove tabs.
Nathan E. Egge [Mon, 25 Jul 2016 05:48:44 +0000 (01:48 -0400)]
Remove tabs.

16 months agoFix broken y4m reader when bit depth > 8.
Nathan E. Egge [Mon, 25 Jul 2016 05:41:09 +0000 (01:41 -0400)]
Fix broken y4m reader when bit depth > 8.

The y4m_input_fetch_frame() function was broken on y4m files with high
 bit depth (depth > 8) where either the frame width or frame height were
 not multiples of 16.

16 months agopvq: use od_sqrt in od_pvq_compute_gain
Tristan Matthews [Wed, 20 Jul 2016 20:02:57 +0000 (16:02 -0400)]
pvq: use od_sqrt in od_pvq_compute_gain

ntt-short-1:
PSNR YCbCr:     -0.02%     -0.01%      0.03%
   PSNRHVS:     -0.03%
      SSIM:     -0.01%
    MSSSIM:     -0.02%
 CIEDE2000:     -0.05%

subset1:
PSNR YCbCr:      0.00%      nan%       nan%
   PSNRHVS:      0.00%
      SSIM:      0.00%
    MSSSIM:      0.00%
 CIEDE2000:      0.00%

16 months agopvq: convert !noref branch of od_compute_k to integer
Tristan Matthews [Wed, 20 Jul 2016 19:41:39 +0000 (15:41 -0400)]
pvq: convert !noref branch of od_compute_k to integer

ntt-short1:
PSNR YCbCr:      0.00%     -0.00%     -0.00%
   PSNRHVS:      0.00%
      SSIM:      0.00%
    MSSSIM:      0.00%
 CIEDE2000:     -0.00%

subset1:
         LOW (%)  MEDIUM (%) HIGH (%)
    PSNR 0.000000 0.000000 0.000000
 PSNRHVS 0.000000 0.000000 0.000000
    SSIM 0.000000 0.000000 0.000000
FASTSSIM 0.000000 0.000000 0.000000

16 months agopvq: convert 1st part of compute_k to integer (aside from beta)
Tristan Matthews [Wed, 20 Jul 2016 15:47:23 +0000 (11:47 -0400)]
pvq: convert 1st part of compute_k to integer (aside from beta)

ntt-short1:
 PSNR YCbCr:     -0.00%      0.06%     -0.06%
    PSNRHVS:      0.00%
       SSIM:      0.00%
     MSSSIM:      0.00%
  CIEDE2000:      0.00%

subset1:
         LOW (%)  MEDIUM (%) HIGH (%)
    PSNR 0.000000 0.000000 0.000000
 PSNRHVS 0.000000 0.000000 0.000000
    SSIM 0.000000 0.000000 0.000000
FASTSSIM 0.000000 0.000000 0.000000

16 months agopvq_decoder: fix overflow for float-pvq
Tristan Matthews [Wed, 20 Jul 2016 18:37:07 +0000 (14:37 -0400)]
pvq_decoder: fix overflow for float-pvq

16 months agopvq: fix return type for od_sqrt
Tristan Matthews [Wed, 20 Jul 2016 15:36:19 +0000 (11:36 -0400)]
pvq: fix return type for od_sqrt

od_sqrt_norm already returns int16_t

16 months agopvq: avoid double division in od_gain_compand
Tristan Matthews [Wed, 13 Jul 2016 21:51:03 +0000 (17:51 -0400)]
pvq: avoid double division in od_gain_compand

No change in metrics.

17 months agoRemove compiler warnings with --enable-float-pvq.
Nathan E. Egge [Wed, 13 Jul 2016 18:49:51 +0000 (14:49 -0400)]
Remove compiler warnings with --enable-float-pvq.

17 months agoyuvjpeg: fix NULL dereference on invalid format string
Tristan Matthews [Thu, 14 Jul 2016 22:08:39 +0000 (18:08 -0400)]
yuvjpeg: fix NULL dereference on invalid format string

17 months agopvq: apply qm when computing CfL flip
Tristan Matthews [Tue, 12 Jul 2016 15:07:22 +0000 (11:07 -0400)]
pvq: apply qm when computing CfL flip

ntt-short1:
PSNR YCbCr:     -0.01%     -0.55%      0.05%
   PSNRHVS:     -0.00%
      SSIM:      0.01%
    MSSSIM:      0.01%
 CIEDE2000:     -0.05%

subset1:
          LOW (%)  MEDIUM (%) HIGH (%)
    PSNR -0.001694 0.002679 -0.001058
 PSNRHVS  0.000207 0.000255 -0.002706
    SSIM -0.004254 0.001494 -0.005428
FASTSSIM -0.006330 0.000939 -0.010382

17 months agoencoder_example: exit if encoder wasn't allocated
Tristan Matthews [Wed, 13 Jul 2016 15:30:29 +0000 (11:30 -0400)]
encoder_example: exit if encoder wasn't allocated

Also avoids leaking ogg_stream.

17 months agoencoder_example: move file and buffer cleanup out of main
Tristan Matthews [Wed, 13 Jul 2016 16:07:24 +0000 (12:07 -0400)]
encoder_example: move file and buffer cleanup out of main

17 months agoFix segfault in od_state_clear() on OD_EFAULT.
Nathan E. Egge [Tue, 12 Jul 2016 16:16:21 +0000 (12:16 -0400)]
Fix segfault in od_state_clear() on OD_EFAULT.

Only subtract block size padding from bsize when array has been allocated.

17 months agoencoder_example: fix help string
Tristan Matthews [Mon, 11 Jul 2016 17:01:16 +0000 (13:01 -0400)]
encoder_example: fix help string

17 months agoAdd ci script to fetch all test videos.
Thomas Daede [Fri, 24 Jun 2016 23:25:57 +0000 (16:25 -0700)]
Add ci script to fetch all test videos.