Skip to content
Snippets Groups Projects
  1. Oct 23, 2018
  2. Oct 22, 2018
  3. Sep 24, 2018
  4. Sep 16, 2018
  5. Sep 12, 2018
    • Frank Bossen's avatar
      Add test for NEARMV mode (#523) · 28a38a5a
      Frank Bossen authored
      * Correctly handle NEAR mode when less than 2 entried in MV stack
      
      If there are fewer than 2 entries in the motion vector stack, then
      the NEAR motion vector is considered to be the same vector as the
      global motion vector (currently 0,0), as per 7.10.2.12
      "Extra search process" in the spec.
      
      * Add support for 2nd and 3rd NEAR motion vector
      
      * Adaptively select best MV mode
      28a38a5a
  6. Sep 06, 2018
  7. Sep 05, 2018
    • David Michael Barr's avatar
      Clean up CfL implementation · d1ebacea
      David Michael Barr authored
      * CPU feature check for SSSE3.
      * Measure rdo_cfl_alpha() speed.
      * Remove redundant loop for 2x speed-up of rdo_cfl_alpha().
      * Allow rdo_cfl_alpha() to return None.
      * Tidy up formatting.
      d1ebacea
  8. Aug 31, 2018
  9. Aug 28, 2018
  10. Aug 23, 2018
    • David Michael Barr's avatar
      Implement Chroma-from-Luma (#492) · 1e639ba3
      David Michael Barr authored
      * Add the chroma-from-luma predictor and a test
      * Add benchmarks for CfL predictor
      * Implement CfL signalling
      * Plumb from predict_intra to pred_cfl
      * Add struct for CfL parameters
      * Compute subsampled luma AC and plumb it with CfL alpha
      * Plumb CfL parameters up to RDO
      * Add CfL to RDO loop, no parameter search
      1e639ba3
    • Frank Bossen's avatar
      Add basic support for nonzero motion vectors (#485) · 83fcc030
      Frank Bossen authored
      * Add motion vector paramater to inter prediction function
      
      Motion vector is read from added data field in Block structure
      
      * Add reference frame and motion vector fields/parameters
      
      Reference frame and motion vector are added fields to the
      RDOOutput structure and added parameters to the block
      encoding function
      
      * Fix inter prediction function for nonzero MVs
      
      * Add call to encode new motion vector
      
      * Import default cdfs for MV coding from libaom
      
      * Fix handling of MV precision in MV coding function
      
      * Add coding of DRL mode
      
      * Add motion vector stack
      
      * Add new MV counter to correctly determine context
      
      * Use motion vectors in MV stack for prediction
      
      * Sort MV stack according to weights
      
      Also update weights after near search
      
      * Fix log2() function
      
      * Compute correct context for DRL flag
      
      * Store MVs with 1/8 pel precision and fix MV generation
      
      * Add some basic motion estimation
      
      Motion estimation is full search (+/-16 pel range in 2-pel increments) and
      is done independently for each block
      
      * Fix chroma motion compensation for small blocks
      
      Chroma motion compensation sometimes happens on 2x2 basis
      83fcc030
  11. Aug 20, 2018
  12. Aug 16, 2018
    • Frank Bossen's avatar
      Enable mixing intra and inter blocks in inter frames (#469) · bf537275
      Frank Bossen authored and Thomas Daede's avatar Thomas Daede committed
      * WIP motion vector reference search
      
      * More searches
      
      * Have a version that compiles
      
      * Actually call MV prediction function
      
      Fix a few bugs along the way
      
      * Add computation of context for inter mode
      
      * Have find_mvrefs return a mode_context value and use it
      
      * Test but never select intra mode in inter frame
      
      * Fixes to context derivation for inter mode
      
      Some success with mixing intra and inter in a same frame but
      still buggy
      
      * Fixes to find MV references functions
      
      Can encode/decode 20 frames at speed 4, but not at slower speed
      settings
      
      * Fix MV scan
      
      Now intra/inter mixing works for all speed settings
      
      * Fix issues that arose from rebase
      
      * Remove lines that should not have been added
      
      * Remove superfluous empty lines
      
      * Supress compiler warnings
      
      * A few cosmetic improvements
      bf537275
  13. Aug 13, 2018
    • Raphaël Zumer's avatar
      Revert "Revert "Enable and test high bit depth input (#437)" (#442)" (#447) · f63f5e99
      Raphaël Zumer authored and Thomas Daede's avatar Thomas Daede committed
      * Attempt to process 10-bit Y4M input
      
      Currently compiles, encodes and decodes with desynchronization
      
      * Use high bit depth quantization tables
      
      * Move context::clamp() to util.rs
      
      * Fix partition context initialization for high bit depth
      
      * Enable and test 10-bit input
      
      * Add 10- and 12-bit test clips to build.sh
      
      Commented out by default, to enable as needed for local testing.
      
      * Use the same bit depth as y4m_dec for y4m_enc
      
      * Fix benchmark module compilation
      
      * Fix high bit depth test encoding in 8-bit
      
      * Fix header syntax for 12-bit 4:2:0 input
      
      * Enable and test 12-bit input
      
      * Reflect 12-bit support in README.md
      
      * Keep the default C420jpeg color space in y4m_encoder
      
      * Do not allow reconstruction output at high bit depths
      
      * Fix reconstruction output at high bit depths
      
      * Clean up reconstruction copy to frame buffers
      f63f5e99
  14. Aug 10, 2018
  15. Aug 09, 2018
    • Raphaël Zumer's avatar
      Enable and test high bit depth input (#437) · 8c545350
      Raphaël Zumer authored and Thomas Daede's avatar Thomas Daede committed
      * Attempt to process 10-bit Y4M input
      
      Currently compiles, encodes and decodes with desynchronization
      
      * Use high bit depth quantization tables
      
      * Move context::clamp() to util.rs
      
      * Fix partition context initialization for high bit depth
      
      * Enable and test 10-bit input
      
      * Add 10- and 12-bit test clips to build.sh
      
      Commented out by default, to enable as needed for local testing.
      
      * Use the same bit depth as y4m_dec for y4m_enc
      
      * Fix benchmark module compilation
      
      * Fix high bit depth test encoding in 8-bit
      
      * Fix header syntax for 12-bit 4:2:0 input
      
      * Enable and test 12-bit input
      
      * Reflect 12-bit support in README.md
      8c545350
  16. Aug 02, 2018
    • Frank Bossen's avatar
      Use zero MV for all blocks in inter frames (#416) · 553a7343
      Frank Bossen authored
      * Create proper structure for reference frame buffer
      
      Also move reference frame buffer into frame invariants to
      avoid having to pass an additional parameter to each function
      requiring access to reference frame buffer.
      
      * Add basic inter prediction function
      
      Basic inter prediction function copies collocated samples
      from first frame in reference frame set.
      
      * Add mapping from reference frame index to slot in buffer
      
      Add array that maps a reference frame index such as LAST_FRAME
      into a slot of the reference frame buffer
      
      * Use GLOBALMV instead of ZEROMV
      
      For consistency with text specification
      
      * Add support for writing reference frames in inter mode
      
      * Add write_inter_mode() for NEWMV and GLOBALMV inter pred modes
      
      Also,
      - Rename ZEROMV prediction mode to GLOBALMV
      - RDO search include GLOBALMV mode if inter frame
      - Import CDFs required to encode NEWMV or GLOBALMV modes
      - Add write_tx_tree() for tx block coding for a inter mode. This
      function is also for var-tx, but currently only one tx block for a inter
      mode partition since tx_mode in frame header is set as LARGEST_TX atm.
      
      * Fix ref_frame storage and counting
      
      * Add basic inter prediction function
      
      Basic inter prediction function copies collocated samples
      from first frame in reference frame set.
      
      * Add mapping from reference frame index to slot in buffer
      
      Add array that maps a reference frame index such as LAST_FRAME
      into a slot of the reference frame buffer
      
      * Use GLOBALMV instead of ZEROMV
      
      For consistency with text specification
      
      * Fix entropy coding issues for inter modes
      
      * Fix issue with transform type and small blocks
      553a7343
    • Thomas Daede's avatar
      Revert "Use zero MV for all blocks in inter frames (#408)" · f14f5e92
      Thomas Daede authored and Yushin Cho's avatar Yushin Cho committed
      This reverts commit a78777c6.
      f14f5e92
    • Frank Bossen's avatar
      Use zero MV for all blocks in inter frames (#408) · a78777c6
      Frank Bossen authored and Thomas Daede's avatar Thomas Daede committed
      * Create proper structure for reference frame buffer
      
      Also move reference frame buffer into frame invariants to
      avoid having to pass an additional parameter to each function
      requiring access to reference frame buffer.
      
      * Add basic inter prediction function
      
      Basic inter prediction function copies collocated samples
      from first frame in reference frame set.
      
      * Add mapping from reference frame index to slot in buffer
      
      Add array that maps a reference frame index such as LAST_FRAME
      into a slot of the reference frame buffer
      
      * Use GLOBALMV instead of ZEROMV
      
      For consistency with text specification
      
      * Add support for writing reference frames in inter mode
      
      * Add write_inter_mode() for NEWMV and GLOBALMV inter pred modes
      
      Also,
      - Rename ZEROMV prediction mode to GLOBALMV
      - RDO search include GLOBALMV mode if inter frame
      - Import CDFs required to encode NEWMV or GLOBALMV modes
      - Add write_tx_tree() for tx block coding for a inter mode. This
      function is also for var-tx, but currently only one tx block for a inter
      mode partition since tx_mode in frame header is set as LARGEST_TX atm.
      
      * Fix ref_frame storage and counting
      
      * Add basic inter prediction function
      
      Basic inter prediction function copies collocated samples
      from first frame in reference frame set.
      
      * Add mapping from reference frame index to slot in buffer
      
      Add array that maps a reference frame index such as LAST_FRAME
      into a slot of the reference frame buffer
      
      * Use GLOBALMV instead of ZEROMV
      
      For consistency with text specification
      
      * Fix entropy coding issues for inter modes
      a78777c6
    • Raphaël Zumer's avatar
      Add optional comparative benchmarks · 6db4fd68
      Raphaël Zumer authored and Thomas Daede's avatar Thomas Daede committed
      Run with --features=comparative_bench
      Applies to intra prediction tests and disables native function inlining
      Also refactor benchmarks and reduce code duplication
      6db4fd68
  17. Jul 31, 2018
  18. Jul 16, 2018
  19. Jul 13, 2018
  20. Jun 30, 2018
  21. Jun 21, 2018
    • Raphaël Zumer's avatar
      Add Paeth to the list of supported prediction modes (#274) · 5eadb0b1
      Raphaël Zumer authored
      nopaeth@2018-06-21T09:29:47.514Z -> paeth@2018-06-21T09:28:52.893Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0962 | -0.4074 | -0.3002 |   0.0372 | -0.1525 | -0.0627 |    -0.0307
      5eadb0b1
    • Raphaël Zumer's avatar
      Clean up and refactor RDO-related areas (#273) · b41d919f
      Raphaël Zumer authored
      * Clean the build on submodule updates
      
      * Clean up and refactor RDO functions and data
      
      Move RDO decision functions to rdo.rs, extract rd_cost computation function, move some data to appropriate locations.
      
      * Remove redundant variable in partitioning decision
      
      * Simplify top-down partitioning decision
      b41d919f
  22. Jun 20, 2018
  23. Jun 16, 2018
    • Raphaël Zumer's avatar
      Support encoding of Paeth prediction mode · 1394095d
      Raphaël Zumer authored and Thomas Daede's avatar Thomas Daede committed
      This also extracts the unsafe top-left pixel access from the native predictor function.
      
      smooth@2018-06-15T19:42:21.397Z -> paeth@2018-06-16T00:12:39.612Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -2.2074 | -4.3757 | -5.0621 |  -0.9361 | -0.3539 | -0.1071 |    -2.5839
      1394095d
  24. Jun 15, 2018
  25. Jun 12, 2018
  26. Jun 07, 2018
  27. Jun 05, 2018
  28. Jun 04, 2018
    • Raphaël Zumer's avatar
      Add RDO decision for partition splitting (#207) · 78972596
      Raphaël Zumer authored and Thomas Daede's avatar Thomas Daede committed
      * Add RDO decision for partitioning
      
      master (-s=2) -> current (-s=2)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -7.4095 |     N/A |     N/A |  -6.8990 | -9.0320 | -8.7738 |   -17.4584
      
      master (-s=3) -> current (-s=2)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -5.1051 |  9.5605 |     N/A |  -5.1176 | -5.3494 | -5.1293 |     1.4963
      
      master (-s=3) -> current (-s=0)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -7.7416 |     N/A |     N/A |  -7.1631 | -7.8223 | -7.2918 |     3.6073
      
      * Increase RD cost comparison precision
      
      master (-s=3) -> current (-s=0)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -7.5800 |     N/A |     N/A |  -7.0594 | -7.8593 | -7.3970 |     4.0382
      
      * Avoid creating a new struct for child modes in partition decisions
      
      * Add comments in encode_partition()
      78972596
  29. Jun 01, 2018
  30. Apr 26, 2018
Loading