1. 29 Nov, 2016 1 commit
    • Angie Chiang's avatar
      Add av1_convolve_init() · e067de00
      Angie Chiang authored
      Generate simd filter structure in av1_convolve_init()
      This will provide flexibility of changing filter coefficients.
      
      Change-Id: If79f84c56483aa08c894d6b12e2b6ce10147f0ce
      e067de00
  2. 08 Nov, 2016 2 commits
  3. 07 Nov, 2016 2 commits
    • Yaowu Xu's avatar
      Resolve merge issues with --enable-pvq · d6ea71cf
      Yaowu Xu authored
      This commit resolves some compiling issues due to merge.
      
      Change-Id: I0eef8aa36c404e185e0b0004948a49307c360d3e
      d6ea71cf
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 77bba8d3
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      77bba8d3
  4. 04 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 09705fe7
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      09705fe7
  5. 25 Oct, 2016 1 commit
    • Angie Chiang's avatar
      adapt_scan experiment · ed8cd9a9
      Angie Chiang authored
      Performance improvement
              BDRate
      lowres  0.921%
      midres  0.730%
      hdres   1.019%
      
      Change-Id: I26208d6c0531937bff44de505b4ea355c7852802
      ed8cd9a9
  6. 24 Oct, 2016 2 commits
    • Jingning Han's avatar
      Refactor av1_predict_intra_block tx_size interface · c4c99da9
      Jingning Han authored
      Simplify the input arguments. Make direct use of the block size
      in the unit of pixels.
      
      Change-Id: Ifec9d90b4b4fa9605f93b4f93b8242f76f898b5f
      c4c99da9
    • David Barker's avatar
      Fix a bug when combining new-quant + supertx · d7d78c83
      David Barker authored
      Previously, we assumed that av1_init_plane_quantizers is always called with
      segment_id == xd->mi[0]->mbmi.segment_id (and use the latter to derive the value
      of 'qindex' to use in the quantizer). But this is no longer true when supertx
      is enabled. This patch instead remembers the value of 'qindex' derived from
      the latest call to av1_init_plane_quantizers and uses that directly.
      
      Change-Id: Ifa1c5bf74cad29942ff79b88ca92c231bc07f336
      d7d78c83
  7. 21 Oct, 2016 1 commit
    • Angie Chiang's avatar
      Pass AV1_COMMON into get_scan · ff6d8905
      Angie Chiang authored
      This CL will facilitate adapt_scan experiment.
      In adapt_scan experiment, dynamic scan order will be stored in
      AV1_COMMON
      
      Change-Id: I4763ea931b5e1af54d4f173971befeb01a4db335
      ff6d8905
  8. 20 Oct, 2016 1 commit
    • Zoe Liu's avatar
      Sync with aom branch for ext-refs · 6cfaff95
      Zoe Liu authored
      Plus a small code clean up. The experiment of EXT_REFS, compared against
      the baseline, using Overall PSNR, now obtains a gain on lowres as:
      Avg: -5.818; BDRate: -5.653
      
      Compared against the previous EXT_REFS results on lowres, a tiny gain is
      obtained as:
      Avg: -0.047, BDRate: -0.063
      
      (1) 780952 Add encoder first pass support to bi-prediction in EXT_REFS
      (2) f91498 Add pred prob handling for new references in EXT_REFS
      (3) e91472 Add decoder support for bi-direct prediction in EXT_REFS
      (4) 0dbac9 Add encoder support to new references in EXT_REFS
      (5) ad70cc Remove hard-coded number for EXT_REFS
      (6) 9c1e2f Add the use of new reference frames at encoder in EXT_REFS
      (7) 6d4fde Add the experiment flag of EXT_REFS
      
      Change-Id: I26f7ca45b9ede7579fdb9d0d6a1a91f4334599bd
      6cfaff95
  9. 19 Oct, 2016 1 commit
  10. 14 Oct, 2016 1 commit
  11. 13 Oct, 2016 1 commit
    • Zoe Liu's avatar
      Clean code a bit and fix a couple of small bugs in ext-refs · f0e4669e
      Zoe Liu authored
      Currently the patch does not have any impact on the RD performance. The
      fix could however potentially help on the next step of work, especially
      when the extra altref frames allow non-zero temporal filtering strength
      and their corresponding OVERLAY frames, i.e. the INTNL_OVERLAY frames
      are being added.
      
      Change-Id: I2e07fb3d0aa547a0b5dd05bb4ba865cd46309076
      f0e4669e
  12. 02 Oct, 2016 1 commit
    • Debargha Mukherjee's avatar
      Further changes to new-quant tables · 3c42c096
      Debargha Mukherjee authored
      Refactor to streamline the number of profiles needed, in
      preparation for the next steps.
      
      NO change in performance.
      
      Change-Id: I753b89299897857f3c250c316b4cdc4fedcb90e8
      3c42c096
  13. 21 Sep, 2016 2 commits
    • Angie Chiang's avatar
      Turn on adaptive scan order · 380fecd6
      Angie Chiang authored
      Change-Id: I43b3ce9bdee07107cbb5bc4b1ab216b3f0c5295d
      380fecd6
    • Angie Chiang's avatar
      Pass AV1_COMMON into block encoding functions · 1e150c77
      Angie Chiang authored
      Those functions include optimize_b, av1_encode_block_intra,
      av1_xform_quant and av1_xform_quant_fp
      
      This CL doesn't change any coding behavior. It is to facilitate the
      following implementation of adaptive scan order experiment.
      
      Change-Id: I0836e558b94e196a02c830a856be305afe20472b
      1e150c77
  14. 02 Sep, 2016 1 commit
  15. 01 Sep, 2016 2 commits
  16. 24 Aug, 2016 1 commit
  17. 23 Aug, 2016 2 commits
    • Yue Chen's avatar
      Make rectangular txfm in EXT_TX work with VAR_TX · e57b1a5e
      Yue Chen authored
      Adapt rectangular txfm experiment to syntax/tokenization/loopfilter
      framework of VAR_TX
      
      Change-Id: Idcb005ecf5b3712de3e1cccb0d811ca16d87af24
      e57b1a5e
    • Wei-ting Lin's avatar
      Allow LF_UPDATE type of frames to use BWDREF · 4e8acca9
      Wei-ting Lin authored
      Originally, only bi-pred type of frames can use BWDREF. When
      extra alt-refs are inserted in a gf group, the closest alt-ref
      serves as ALTREF for the frames within the corresponding
      subgroup. Therefore, the original alt-ref can be used as BWDREF
      for the LF_UPDATE type of frames.
      
      This patch further swaps the virtual indices of BWDREF and ALTREF
      for those frames whose BWDREF is farther than ALTREF. As a result,
      the BWDREF is always the closet backward reference frame, and the
      ALTREF is the farther one.
      
      It improves the average RD performance by
      
      0.132% in lowres, and
      0.030% in midres.
      
      The overall gains for the ext-refs compared to the baseline are
      
      5.486% in lowres, and
      4.666% in midres.
      
      Change-Id: I22e4e5f378f19c4c89196a0a5e9214adb46c3428
      4e8acca9
  18. 22 Aug, 2016 1 commit
  19. 19 Aug, 2016 1 commit
    • Wei-ting Lin's avatar
      Insert extra ARFs' in a gf group · 41d5d52d
      Wei-ting Lin authored
      Insert multiple arfs in a gf group to emulate multi-layer backward
      reference frames structure. At maximum, two extra ARF's are inserted
      in a gf group.
      
      It improves the RD performance by 0.317% in Avg in lowres dataset.
      
      Change-Id: I62c32e1b0f25b978484dd113b319bebcd959bf60
      41d5d52d
  20. 16 Aug, 2016 1 commit
    • Wei-ting Lin's avatar
      Change the B-frame coding structure. · b20d0777
      Wei-ting Lin authored
      Originally we can have a BRF right before an overlay frame (in
      display order), which might be unnecessary since we already has a
      quality backward reference frame (ARF).
      This patch avoids such a coding structure and improves the RD
      performance by 0.086% in Avg in the lowres dataset, and 0.153 in
      Avg in the midres dataset.
      
      In the lowres dataset, significant gains are obtained for the
      following sequences:
      
      mobisode2_240p: 0.563%
      keiba_240p: 0.440%
      bus_cif: 0.336%
      soccer_cif: 0.333%
      
      And the performance drops only in the following four video sequences:
      
      motherdaughter_cif: 0.028%
      bqsquare_240p: 0.017%
      basketballpass_240p: 0.015%
      bowing_cif: 0.006%
      
      Change-Id: Ic94f648ba8e52eb0014933d484fb247610a9ae05
      b20d0777
  21. 12 Aug, 2016 1 commit
  22. 29 Jul, 2016 1 commit
  23. 19 Jul, 2016 1 commit
    • Wei-ting Lin's avatar
      Allow OVERLAY frames to use the show_exsiting_frame flag · ccc9e7cf
      Wei-ting Lin authored
      ARF with zero strength temporal filter can be reused by setting the
      show_existing_frame = 1, and in this case, there is no need to
      refresh the reference frame buffer. However, we used the flag
      "refresh_golden_frame" as the identifier for the starting point of a gf
      group.
      
      A new flags "is_arf_filter_off" is used to record if the filter with
      strengrh zero is used.
      
      Change-Id: I25971a760f6e1638d5147fe30488c48125512b1a
      ccc9e7cf
  24. 17 Jun, 2016 1 commit
    • Zoe Liu's avatar
      Merge bi-predictive frames to EXT_REFS · 5805a14c
      Zoe Liu authored
      This patch removed the experiment of BIDIR_PRED and merged the feature
      into the experiment of EXT_REFS:
      
      (1) Each frame now has up to 6 reference frames, namely
          LAST_FRAME, LAST2_FRAME, LAST3_FRAME, GOLDEN_FRAME, (forward) and
          BWDREF_FRAME, ALTREF_FRAME (backward);
          LAST4_FRAME has been removed;
      (2) First pass still keeps the 8 updates:
          KF_UPDATE, LF_UPDATE, GF_UPDATE, ARF_UPDATE, OVERLAY_UPDATE, and
          BRF_UPDATE, LAST_BIPRED_UPDATE, BI_PRED_UPDATE;
      (3) show_existing_frame==1 is supported in the experiment of EXT_REFS;
      (4) New encoding modes are added for both single-ref and compound cases,
          through the use of the 2 extra forward references (LAST2 & LAST3)
          and the 1 extra backward reference (BWDREF).
      
      RD performance wise, using Overall PSNR: Avg/BDRate
              Bipred only      Prev EXT_REFS    Current EXT_REFS with bipred
      lowres: -3.474/-3.324    -1.748/-1.586    -4.613/-4.387
      derflr: -2.097/-1.353    -1.439/-1.215    -3.120/-2.252
      midres: -2.129/-1.901    -1.345/-1.185    -2.898/-2.636
      
      If in vp10/encoder/firstpass.h, change BFG_INTERVAL from 2 to 3, i.e. to
      use 2 bi-predictive frames than 1, a further improvement may be
      obtained:
                       Current EXT_REFS with bipred
              1 bi-predictive frame    2 bi-predictive frames
      lowres: -4.613/-4.387            -4.675/-4.465
      derflr: -3.120/-2.252            -3.333/-2.516
      midres: -2.898/-2.636            -3.406/-3.095
      
      Change-Id: Ib06fe9ea0a5cfd7418a1d79b978ee9d80bf191cb
      5805a14c
  25. 14 Jun, 2016 1 commit
    • Geza Lore's avatar
      Rework supertx segment handling and adaptive quantization. · 7dd90c9d
      Geza Lore authored
      Segment level quantizer settings for supertx coded blocks are now
      selected based on the minimum of all segment IDs within a supertx
      coded block.
      
      This also fixes the 3 adaptive quantization modes with supertx.
      
      Change-Id: Ib5db099539d4f82f240e1d745d6e5264f8b34cde
      7dd90c9d
  26. 08 Jun, 2016 1 commit
    • Jingning Han's avatar
      Take out skip_recode speed feature · 025fa11c
      Jingning Han authored
      The assumption doesn't hold true in the current codebase. Remove
      this speed feature to simplify the codebase.
      
      Change-Id: I9b69f484c9b7cd612b825047cc5b2fce63ee0af7
      025fa11c
  27. 28 May, 2016 1 commit
    • Zoe Liu's avatar
      Make the bi-predictive frame group interval adjustable · e89ca180
      Zoe Liu authored
      This is for the bidir-pred experiment. Previously the length of the
      bi-predictive frame group interval is fixed at 2, i.e. one
      bi-predictive frame may be inserted every other frame. This patch
      makes the length adjustable, i.e. any positive number may be
      specified, but the use of the backward ref will be turned off if the
      bi-predictive frame group interval is larger than the golden frame
      group.
      
      Further, an additional rate factor level has been added:
      INTER_LOW
      , which applies to LAST_BIPRED_UPDATE frames that are not used as
      references.
      
      Change-Id: I5514d34a64dd486bbb5756c2d0612946f598a789
      e89ca180
  28. 24 May, 2016 1 commit
    • Zoe Liu's avatar
      Added an experiment "bidir_pred" for backward prediction · cf5083d4
      Zoe Liu authored
      Major parts have been implemented as follows:
      (1) Added BRF_UPDATE, LASTNRF_UPDATE, and NRF_UPDATE in firstpass.c;
      (2) Added the handling for the scenario of
      "cpi->common.show_existing_frame == 1" at the encoder;
      (3) Added a new reference frame of BWDREF_FRAME;
      (4) Have bwd-ref work with upsampled references.
      
      Note that when the experiment of "ext_refs" turned on, this experiment
      will be turned off automatically currently.
      
      RD performance in Overall PSNR has been improved, compared against the
      VP10 baseline:
      
      lowres: Avg -3.312; BDRate -3.154
      derflr: Avg -1.927; BDRate -1.176
      midres: Avg -2.149; BDRate -2.001
      hdres : Avg -0.567; BDRate -0.588
      
      Change-Id: I4c06ff51cc20194bffbd4d2346e57ba3dcf6b62c
      cf5083d4
  29. 11 May, 2016 1 commit
    • paulwilkins's avatar
      Fixed 8K two pass encoder crash. · 65732c36
      paulwilkins authored
      Bug found by Yunqing relating to the correction for size at 8K and
      above in get_twopass_worst_quality().
      
      The basis for the correction was changed to the linear size relative to
      1080P as a baseline and the adjustment has been clamped to prevent
      problems at extreme images sizes.
      
      For 1080P the results on our test sets were neutral but the low res and
      mid res sets saw a small gain (0.1%-0.2% average).
      
      I would also expect some gains on 4k and larger content where the
      previous correction was overly aggressive.
      
      Change-Id: I30b026b5f4535e9601e3178d738066459d19c8fb
      65732c36
  30. 07 May, 2016 1 commit
    • Zoe Liu's avatar
      Make LAST_FRAME always point to the newly coded frame in ext-refs · a912c6ec
      Zoe Liu authored
      This patch changes the encoder only for the ext-refs experiment. For
      each newly coded frame to refresh the LAST_FRAME, the decoder is
      notified that the LAST4_FRAME is to be refreshed, and read out the
      updated reference frame buffer vitural indexes for the next coded
      frame in a way that:
      LAST4_FRAME => LAST_FRAME,
      LAST_FRAME  => LAST2_FRAME,
      LAST2_FRAME => LAST3_FRAME, and
      LAST3_FRAME => LAST4_FRAME.
      
      Compared against the original ext-refs experiment in TOT, a small gain
      is achieved in overall PSNR:
      lowres Avg: -0.154
      lowres BDRate: -0.044
      
      Change-Id: I648810c146a3cd915b408274a9373b7d38324864
      a912c6ec
  31. 19 Apr, 2016 1 commit
  32. 08 Apr, 2016 1 commit
  33. 22 Mar, 2016 2 commits
    • Yaowu Xu's avatar
      vp10/ -> av1/ · cfea7dd7
      Yaowu Xu authored
      Change-Id: Ia055d03656ad1580447eced8687949583fdf4089
      cfea7dd7
    • Yaowu Xu's avatar
      Rename vpx to aom · bf4202ed
      Yaowu Xu authored
      Change-Id: Ibc7933fba85feeb30ef9b14b302d932aff19f54e
      bf4202ed