daala.git
2 months agoAdding support for VTM to rd_collect.sh.
Justin Nickelsburg [Tue, 9 Jul 2019 21:38:48 +0000 (17:38 -0400)]
Adding support for VTM to rd_collect.sh.

2 months agoAdd QP parallelization to rd_collect for bpg.
Justin Nickelsburg [Tue, 9 Jul 2019 21:32:36 +0000 (17:32 -0400)]
Add QP parallelization to rd_collect for bpg.

2 months agoAdd QP parallelization to rd_collect for webp.
Justin Nickelsburg [Tue, 9 Jul 2019 21:21:59 +0000 (17:21 -0400)]
Add QP parallelization to rd_collect for webp.

2 months agoAdd QP parallelization to rd_collect for theora.
Justin Nickelsburg [Tue, 9 Jul 2019 20:46:10 +0000 (16:46 -0400)]
Add QP parallelization to rd_collect for theora.

2 months agoAdd QP parallelization to rd_collect for mozjpeg.
Justin Nickelsburg [Tue, 9 Jul 2019 20:34:47 +0000 (16:34 -0400)]
Add QP parallelization to rd_collect for mozjpeg.

2 months agoAdd QP parallelization to rd_collect for libjpeg
Justin Nickelsburg [Tue, 9 Jul 2019 19:15:29 +0000 (15:15 -0400)]
Add QP parallelization to rd_collect for libjpeg

2 months agoAdd QP parallelization to rd_collect for x265.
Justin Nickelsburg [Tue, 9 Jul 2019 19:01:27 +0000 (15:01 -0400)]
Add QP parallelization to rd_collect for x265.

2 months agoAdd QP parallelization to rd_collect for x264.
Justin Nickelsburg [Tue, 9 Jul 2019 18:24:45 +0000 (14:24 -0400)]
Add QP parallelization to rd_collect for x264.

2 months agoAdd QP parallelization to rd_collect for libvpx.
Justin Nickelsburg [Tue, 9 Jul 2019 19:21:53 +0000 (15:21 -0400)]
Add QP parallelization to rd_collect for libvpx.

2 months agoSplit vp8 and vp9 case statement in rd_collect.sh.
Justin Nickelsburg [Tue, 9 Jul 2019 18:10:17 +0000 (14:10 -0400)]
Split vp8 and vp9 case statement in rd_collect.sh.

This is done so we can apply different QPs to each of these encoder
 configurations for use with parallelized sub script.

2 months agoCentralize y4m2yuv in rd_collect.sh
Justin Nickelsburg [Tue, 9 Jul 2019 17:32:55 +0000 (13:32 -0400)]
Centralize y4m2yuv in rd_collect.sh

2 months agoAlways print chroma in y4m files.
Justin Nickelsburg [Tue, 9 Jul 2019 14:32:40 +0000 (10:32 -0400)]
Always print chroma in y4m files.

4 months agoAdd $CODEC when aggregating .out files.
Justin Nickelsburg [Thu, 30 May 2019 22:00:33 +0000 (18:00 -0400)]
Add $CODEC when aggregating .out files.

When collecting .out files after running with various QPS, the gather
 step was incorrectly pulling in runs from other codecs.
This fixes a bug that was introduced in b0c158b7.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoRenamed av1 and av1-rt to libaom and libaom-rt.
Ethan Quill [Thu, 30 May 2019 21:45:31 +0000 (17:45 -0400)]
Renamed av1 and av1-rt to libaom and libaom-rt.

This also renamed rd_collect_aom.sh to rd_collect_libaom.sh.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoRemove --codec from rd_collect_aom.sh.
Ethan Quill [Thu, 30 May 2019 21:34:22 +0000 (17:34 -0400)]
Remove --codec from rd_collect_aom.sh.

The aomenc and aomdec binaries only have one codec implementation: av1.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdd QP parallelization to rd_collect for SVT-AV1.
Justin Nickelsburg [Thu, 30 May 2019 17:46:36 +0000 (13:46 -0400)]
Add QP parallelization to rd_collect for SVT-AV1.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdd QP parallelization to rd_collect for libaom.
Justin Nickelsburg [Thu, 30 May 2019 17:41:13 +0000 (13:41 -0400)]
Add QP parallelization to rd_collect for libaom.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdd QP parallelization to rd_collect for daala.
Justin Nickelsburg [Thu, 30 May 2019 17:24:45 +0000 (13:24 -0400)]
Add QP parallelization to rd_collect for daala.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdd QP parallelization to rd_collect for rav1e.
Justin Nickelsburg [Thu, 30 May 2019 15:29:52 +0000 (11:29 -0400)]
Add QP parallelization to rd_collect for rav1e.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAllow EXTRA_OPTS to override --cpu-used for aom.
Ethan Quill [Wed, 29 May 2019 19:44:28 +0000 (15:44 -0400)]
Allow EXTRA_OPTS to override --cpu-used for aom.

The existing $AOMENC line had --cpu-used=0 in the $QSTR which came after
$EXTRA_OPTS and had the effect of canceling any user specified value.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdding support for SVT-AV1 to daala tools.
Justin Nickelsburg [Thu, 23 May 2019 14:41:26 +0000 (10:41 -0400)]
Adding support for SVT-AV1 to daala tools.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
4 months agoAdding support for rav1e to daala tools.
Justin Nickelsburg [Mon, 20 May 2019 20:33:27 +0000 (16:33 -0400)]
Adding support for rav1e to daala tools.

Signed-off-by: Nathan E. Egge <negge@dgql.org>
21 months agoencode: fix read of uninitialized target_bitrate value
Tristan Matthews [Mon, 6 Nov 2017 04:27:42 +0000 (23:27 -0500)]
encode: fix read of uninitialized target_bitrate value

Regression from commit 5eb3f15cf "Add missing file rate.c"

2 years agodump_video: Empty video files will not be dumped.
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.

2 years 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.

2 years 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

2 years 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.

2 years 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.

2 years 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.

2 years 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.

2 years 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.

2 years 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

2 years 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.

2 years 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.

2 years 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.

2 years 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

2 years 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

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

2 years 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.

2 years 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.

2 years 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

2 years 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.

2 years 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.

2 years 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

2 years 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

2 years 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>
2 years 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>
2 years 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)

2 years 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

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

2 years 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>
2 years 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

2 years 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

2 years 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

2 years 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.

2 years 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

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

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

2 years 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.

3 years 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.

3 years 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.

3 years 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%

3 years 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>
3 years agodump_video: fix yuv420p10 output
Tristan Matthews [Tue, 20 Sep 2016 13:21:26 +0000 (09:21 -0400)]
dump_video: fix yuv420p10 output

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

3 years 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>
3 years 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.

3 years 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%

3 years 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.

3 years 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%

3 years 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.

3 years 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

3 years 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

3 years 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

3 years 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%

3 years 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%

3 years 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%

3 years 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%

3 years 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.

3 years 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.

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

3 years 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.

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

3 years 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%

3 years 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().

3 years 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%

3 years 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'

3 years 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

3 years 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

3 years 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

3 years 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.

3 years 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.

3 years 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

3 years 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.

3 years 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.

3 years 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

3 years 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.

3 years 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.

3 years 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"

3 years 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.