1. 16 Mar, 2017 5 commits
    • Angie Chiang's avatar
      Draft of av1_update_txb_context · 0397eda0
      Angie Chiang authored
      This draft version only pass compiling check, it's not working yet.
      
      The following goal is to use new coding system when doing bitstream
      packing but keep old coding system in RD loop.
      
      Change-Id: I224a1581d1cc5c67d73e71558fb77d9faf9c2470
      0397eda0
    • Rostislav Pehlivanov's avatar
      Implement twopass support for the xiphrc system · 74021a5a
      Rostislav Pehlivanov authored
      This commit implements support for twopass encoding using the xiphrc
      experimental rate control system. Most of the code and logic comes
      from the theora project encoder.
      
      Currently support is limited to the bitrate targeting mode of the
      rate control system and while it does visibly improve quality and does
      bring rate closer to the target than the one pass mode there's still
      tuning and bug fixing to be done.
      
      Change-Id: Iae0d65bbce5ddfbb95b436e2238a43d6100a23b3
      74021a5a
    • Angie Chiang's avatar
      Add frame level buffer to store txfm coeffs · f0fbf9d9
      Angie Chiang authored
      Doing tokenize in the last step of RD loop and then doing packing
      tokens in bitstream packing phase is hard for debugging.
      
      Therefore, we create a frame-level buffer to store the txfm coeffs
      from the reconstruction in RD loop and then in bitstream packing
      phase, we can code the txfm coeffs directly.
      
      Change-Id: I999470eef6e038317a91585df2bdfc20aca3573e
      f0fbf9d9
    • Alex Converse's avatar
      Account for elided extrabits during rate cost calculation. · da3d94fe
      Alex Converse authored
      Fixes some rd-debug mismatches coding cat6 tokens with tx size < 32x32.
      For these tokens the high extrabits are elided during tokenization and
      detokenization, but the rd cost was computed with the old tables from
      VP9 where these high extrabits are always coded.
      
      Change-Id: I4a9a6ea822ff821e1932c351d43a57bdb4d6d466
      da3d94fe
    • Alex Converse's avatar
      highbitdepth: deduplicate extrabits · e063e2dd
      Alex Converse authored
      Change-Id: Ib1777433c10e3b64f939c533c12a89dfc839bc6a
      e063e2dd
  2. 15 Mar, 2017 8 commits
    • Yue Chen's avatar
      Fix recon mismatches in GLOBAL_MOTION+MOTION_VAR · 74a77546
      Yue Chen authored
      The offset of neighbors is communicated to av1_make_inter_predictors
      so as to use the correct mi in gm warping
      
      Change-Id: I471bbdf2112ed678969492b11730f15d9527eb7e
      74a77546
    • Alex Converse's avatar
      ext_partition_types: Make update tree shape match · 4e18d403
      Alex Converse authored
      Update the first PARTITION_PLOFFSET (4) contexts with the four classic
      partitions. The extended partitions are only codable above 8x8, but
      there are PARTITION_PLOFFSET (4) contexts for dropping below 8x8.
      
      Change-Id: Ib3291dded6dc24103222e8f470504c20e29adb88
      4e18d403
    • Thomas Davies's avatar
      NEW_TOKENSET: Make zero block value uncodeable for AC coeffs. · 1c05c635
      Thomas Davies authored
      Change-Id: Icd7528d1ec8e117205e5e35ad9a11cfa83b08253
      1c05c635
    • Thomas Davies's avatar
      Remove decoder coefficient counts for NEW_TOKENSET + EC_ADAPT. · a134e2dc
      Thomas Davies authored
      These are no longer used in probability updates.
      
      Change-Id: Idf5037f769d43972434b5ecbff3550b3f97be21a
      a134e2dc
    • Sarah Parker's avatar
      Fix broken assert when rect-tx is enabled on its own · 076437f4
      Sarah Parker authored
      The function is_rect_tx previously was only defined when
      both ext-tx and rect-tx are enabled together. This function
      needs to be defined when rect-tx is enabled alone to fix
      failing asserts.
      
      Change-Id: Ic8153a55b768cb49caac07d6aeaee109d63410a9
      076437f4
    • Thomas Davies's avatar
      NEW_TOKENSET: do not code impossible values. · 04bdd523
      Thomas Davies authored
      In the last position, No-EOB values and zero are all not
      possible.
      
      AWCY, objective-1-fast: -0.08% all metrics
      AWCY, screen content:
      
      PSNR YCbCr:    -0.42%    -0.42%    -0.43%
      PSNRHVS:       -0.40%
      SSIM:          -0.41%
      MSSSIM:        -0.41%
      CIEDE2000:     -0.42%
      
      Change-Id: Iad012abfd2a48a2c9ff27512f92b27235a5a8a4a
      04bdd523
    • Thomas Davies's avatar
      NEW_TOKENSET: improve RDO. · 10525758
      Thomas Davies authored
      Modify av1_coef_cost to reflect that EOB values are sent
      with each non-zero coefficient, and modify chroma weight
      to preserve original chroma balance.
      
      AWCY, objective-1-fast, new_token+ec_adapt vs ec_multisymbol:
      
      PSNR YCbCr:     -0.43%      -0.52%      -0.58%
      PSNRHVS:        -0.81%
      SSIM:           -0.73%
      MSSSIM:         -0.93%
      CIEDE2000:      -0.36%
      
      This change:
      
      PSNR YCbCr:     -0.15%      0.83%      0.77%
      PSNRHVS:        -0.24%
      SSIM:           -0.23%
      MSSSIM:         -0.24%
      CIEDE2000:       0.24%
      
      Change-Id: I7f2dd9f3cd24bb64eb4131cba94dda466b9691b0
      10525758
    • Thomas Davies's avatar
      EC_ADAPT: Perform backwards updates directly on CDFs. · 028b57f5
      Thomas Davies authored
      The initial CDF for each frame is stored in
      the frame context. CDFs for actual coding are
      stored in the tile structures, and these are
      what get adapted. The initial CDF is replaced
      by an average CDF derived from these tile CDFs.
      This is carried forward to future frames when
      backward adaptation is on.
      
      CDFs are no longer set from the 8 bit probabilities
      in backwards adaptation.
      
      For now, 8 bit probabilities are maintained for
      use in the encoder and for symbols which do not
      have a CDF.
      
      Change-Id: I106b30510bfad1fa57d077f7702acc1864378a09
      028b57f5
  3. 14 Mar, 2017 3 commits
  4. 13 Mar, 2017 5 commits
  5. 11 Mar, 2017 4 commits
    • Yaowu Xu's avatar
      change to 32bit read from 64bit read · 57b700a1
      Yaowu Xu authored
      This is to avoid out-of-range memory access.
      
      BUG=aomedia:391
      
      Change-Id: I211ba1992d4f51fcf06cf2961d8cb2606b836207
      57b700a1
    • James Zern's avatar
      av1_rc_update_rate_correction_factors: avoid log(0) · d2c42f03
      James Zern authored
      avoids a floating point error being generated. this doesn't change
      behavior, the -HUGE_VAL return was being ignored due to the min()
      
      BUG=aomedia:388
      
      Change-Id: I698aab248c777b02b60081bb7619e0aa6f3a0ba2
      d2c42f03
    • Fergus Simpson's avatar
      handle_inter_mode: rename opt_args to args · 9f7ca0b7
      Fergus Simpson authored
      The addition of a 2D array to the HandleInterModeArgs struct means there
      is now a non-optional member in the opt_args struct passed to
      handle_inter_mode and its child functions. Since opt_args no longer
      consists solely of optional members I've renamed it args.
      
      Change-Id: I7f3b22188777d8fdac2c244746638c34b5d8636c
      9f7ca0b7
    • Urvang Joshi's avatar
      Correction for ALT_INTRA + EXT_TX combo. · 3a9a5278
      Urvang Joshi authored
      Add extra entries to the 'default_intra_ext_tx_prob' table when
      ALT_INTRA is on.
      
      Change-Id: I1b3d28fa06852b4b7c68b061c44318ec83be77b6
      3a9a5278
  6. 10 Mar, 2017 9 commits
    • Fergus Simpson's avatar
      rdopt: move/remove 2d arrays in pick_inter_mode_sb · 3424c2de
      Fergus Simpson authored
      Two 2D arrays were passed to HandleInterMode and not used elsewhere.
      
      One has been added to the HandleInterModeArgs struct to
      simplify handle_inter_mode's signature and the the calling function.
      
      The other has been unread since commit
      beacb3ff. That patch removed the
      "skip_txfm optimization" but left the single_skippable array in place,
      even though it was no longer read. Since the array's only usage has been
      removed, this patch removes the variable outright.
      
      Change-Id: I6e680a9ddc6f67961153819a62009751252757a8
      3424c2de
    • David Barker's avatar
      Vectorize new highpass filter for loop-restoration · eed824ef
      David Barker authored
      Change-Id: Ibe5d4933f599456cb496f636de244694bc786a4c
      eed824ef
    • Thomas Davies's avatar
      Add a symbol decode call count to accounting. · f7f87ff2
      Thomas Davies authored
      This keeps track of how many calls have been made
      to read symbols or bits. A given syntax element
      may make multiple calls to symbol decoding functions,
      and these variables keep track of the entropy
      decoding engine throughput.
      
      Change-Id: Iab3a720cbfe68f8d5ca3e4c415f7baa683b24268
      f7f87ff2
    • Debargha Mukherjee's avatar
      Replace one self guided filter with highpass · b7bb0976
      Debargha Mukherjee authored
      Adds an option controlled by a macro to replace one of
      the guided filters in the self-guided tool with a simple
      bandpass filtered version generated with a 3x3 kernel.
      By default the macro USE_HIGHPASS_IN_SGRPROJ is 0 (turned
      off), that defaults us to the dual self-guided filter.
      When the macro is turned on, the larger radius guided
      filter is replaced by a simpler filter that is much faster.
      
      Results (if USE_HIGHPASS_IN_SGRPROJ is on vs. off):
      lowres: performance drop by +0.14% (BDRATE)
      midres: performance drop by +0.27% (BDRATE)
      
      Further experiments on this variation of guided filters is
      pending.
      
      Change-Id: I7bbcfcad7ee266cd49a8dc6d96795a454feb1a94
      b7bb0976
    • Yaowu Xu's avatar
      Align a buffer for simd operation · bcf25cda
      Yaowu Xu authored
      BUG=aomedia:387
      
      Change-Id: I11fdc9dbc4b0f4484e82ab1662ac329b8b7f2d6c
      bcf25cda
    • Ryan Lei's avatar
      add 15 tap filter in the parallel_deblocking experiment · 41fc0c66
      Ryan Lei authored
      this change added back the original 15 tap filter from VP9 back into
      the parallel_deblocking experiment. when transform size of both blocks
      along the edge is greater than 16x16, 15 tap filter is used.
      
      Change-Id: Ieae0393b66b1168572292bcebabd2707058b7f1d
      41fc0c66
    • Sebastien Alaiwan's avatar
      Use correct format specifier for 64-bit integers. · 5443ff3a
      Sebastien Alaiwan authored
      Change-Id: I366160220b5f7fe4ea6adb4719c4efeef6a7d6f7
      5443ff3a
    • Sebastien Alaiwan's avatar
      Rename a macro · d16a8365
      Sebastien Alaiwan authored
      Change-Id: I4d6db116692b9a236ae8555e4d4e5d0c403f6c13
      d16a8365
    • Luc Trudeau's avatar
      Uniform way of accessing mbmi in write_tokens_b · 3e32f1ab
      Luc Trudeau authored
      Cosmetic change that moves the declaration of mbmi at the beginning of
      the function. This simplifies access and removes the need for
      (void)mbmi.
      
      Change-Id: Id0f7e1113696200ae6fb98bcc639d1cbdba05a9e
      3e32f1ab
  7. 09 Mar, 2017 6 commits
    • David Barker's avatar
      Add SSE4.1 highbitdepth self-guided filter · 4d2af5db
      David Barker authored
      Performance is very similar to the lowbd path (only 4-5% slower)
      
      Change-Id: Ifdb272c3f6c0e6f41e7046cc49497c72b5a796d9
      4d2af5db
    • Thomas Davies's avatar
      Fix bug with tx_size_coding for EC_ADAPT. · 15580c52
      Thomas Davies authored
      With EC_ADAPT, contexts should be tile-dependent.
      
      Change-Id: I2b714a930ea4661115b1e419d0cb5eefc0ae5362
      15580c52
    • Debargha Mukherjee's avatar
      Clean up unused code in loop-restoration · 4bfd72ee
      Debargha Mukherjee authored
      Removes domain transform recursive filters and non-approximate
      guided filter code.
      
      Change-Id: Ib7ae7a6b6526a0908b3dc1787ab3561442da4e2d
      4bfd72ee
    • Debargha Mukherjee's avatar
      Add restoration tilesize to frame header · 1008c1e7
      Debargha Mukherjee authored
      The restoration tilesize can be now chosen as either 256, 128
      or 64 at the frame header.
      
      Change-Id: I852fc42afedc053484d657bdca522de73aaacd67
      1008c1e7
    • Fergus Simpson's avatar
      rdopt: refactor interpolation_filter_search() · de18e2b5
      Fergus Simpson authored
      The interpolation filter search used to be performed in a code block in
      handle_inter_mode(). This change breaks that code out into its own
      function to reduce the length of handle_inter_mode and ecapsulate its
      functionality, making both functions more readable.
      
      Attention has been paid to make as many arguments constants as can be.
      
      Change-Id: I3fd484137fc0d16a47dba0b18ce0e2b349d24446
      de18e2b5
    • Jingning Han's avatar
      Clean up intra mode writing · f04254ff
      Jingning Han authored
      Refactor the intra mode writing to simplify the interactions
      between cb4x4, ec_adapt, and ec_multisymbol.
      
      Change-Id: I2fd106cd03e4f6d416865893b15292aa42b01281
      f04254ff