1. 24 Jul, 2017 3 commits
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: adapt binary MV values. · 599395ee
      Thomas Davies authored
      Change-Id: I00f98e0e03a44aa894566b7a47bb0f32b56da766
      599395ee
    • Luc Trudeau's avatar
      [CFL] Fix rare overflow in distortion computation · 4c5df105
      Luc Trudeau authored
      Worst case SSE for a 12-bit 64x64 block requires 48 bits
      (2*(12+log(64)+log(64))). As such, the dist variable must
      be int64.
      
      Results on Subset1 (compared to 19b5c8fa with CfL enabled)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0030 |  0.0001 |  0.0100 |   0.0026 | 0.0024 | -0.0008 |     0.0028
      
      Change-Id: I1364c089c223b96daed942175a915fed0f6f1023
      4c5df105
    • Todd Nguyen's avatar
      Add temporal filtering/interpolation to bgsprite · 8493f916
      Todd Nguyen authored
      - Modified temporal filter to take extra buffer parameter
      - Added bilinear interpolation, can be turned on by setting
      BGSPRITE_INTERPOLATION define to 1.
      - Added mean filter to bgsprite for blending modes
      - Bilinear interpolation is turned OFF by default
      - Mean filtering turned ON by default (was previously median filtering)
      - Allow for multiple references for alt_ref in encodeframe
      
      Change-Id: Icfe9054049339d353b4befff11e96c12ca73ed4e
      8493f916
  2. 23 Jul, 2017 1 commit
  3. 21 Jul, 2017 12 commits
  4. 20 Jul, 2017 15 commits
    • Zoe Liu's avatar
      Add decoder support to ALTREF2 · 043c227b
      Zoe Liu authored
      Change-Id: I11abc5448622265183abd0a58268c190b5891576
      043c227b
    • Jingning Han's avatar
      Clear unused parameters in decode_partition · ea10ad45
      Jingning Han authored
      Change-Id: Idbe1f71c49d0240e10d82081feeec9029898eecd
      ea10ad45
    • Yi Luo's avatar
      Refactor av1_update_boundary_info function · f190a165
      Yi Luo authored
      - Split av1_update_boundary_info() into two functions to avoid
        unnecessarily checking which goes through each mi block.
      - av1_setup_frame_boundary_info() sets up frame level boundary,
        i.e. non-tile case, which is called in frame level only.
      - av1_setup_across_tile_boundary_info sets up tiles boundary,
        which is called per tile, in multiple tile case.
      - Decoder running time reduction: 8.72% (1080p, 25 frames, 4Mbps).
      
      Change-Id: I2fc42d4281c77bce4a7dab5d208347308cfbe579
      f190a165
    • Zoe Liu's avatar
      Add support to the experiment of altref2 · 97ad058e
      Zoe Liu authored
      This CL adds an extra alt-ref reference frame, namely ALTREF2_FRAME,
      and designs the contexts for ALTREF2_FRAME.
      
      Change-Id: I12fe8629b868aebf6c2b54260fca5abc38f90ae6
      97ad058e
    • hui su's avatar
      Palette: remove palette_first_color_idx[] in PALETTE_MODE_INFO · 40b9e7fe
      hui su authored
      Handle the first color index in the tokenization process, along with the
      other color indeices.
      
      This patch also includes some minor refactoring changes.
      
      Test results verify that there is no implact on compression efficiency.
      
      Change-Id: I7de51c18a52f337320331b5e8d63dfea3cf510f0
      40b9e7fe
    • Urvang Joshi's avatar
      rect-intra-pred: Fix for large rectangular blocks. · 9772044f
      Urvang Joshi authored
      Large rectangular blocks (BLOCK_64x32 and BLOCK_32x64 in baseline) don't
      have corresponding transform sizes.
      So, for such blocks, we revert to performing 2 predictions of square
      transform sub-blocks (TX_32x32 in baseline).
      
      Change-Id: I77e79223fbff514b5706b103de3f02401dba7ffe
      9772044f
    • Jingning Han's avatar
      Fix intra boundary condition in ext-partition · 6a3d689b
      Jingning Han authored
      Make the intra prediction boundary condition account for the
      64x64 processing unit constraint. This avoids a rare enc/dec
      mismatch issue in 128x128 intra coded block.
      
      Change-Id: Idb05cae8b17ae94c7a4e49e5d58b5865e5fc2f7d
      6a3d689b
    • Cheng Chen's avatar
      Directional deblocking filter · 9050c9da
      Cheng Chen authored
      New deblocking filter that smooths block boundaries in an estimated
      direction of object orientation.
      
      1. Select the proper direction for deblocking filtering.
      Compute abs gradient line by line for the block.
      Select the direction with least sum of abs gradient.
      
      2. Apply deblocking filtering for a block along this direction.
      Apply directional filtering for Y, U, V planes.
      
      Coding gain on Google test set:
      
      %	  	avg_psnr   ovr_psnr  ssim
      lowres  	-0.129 	  -0.136    -0.277
      midres  	-0.103    -0.127    -0.188
      hdres	  	-0.159    -0.158    -0.173
      screen_content  -0.408    -0.397    -0.695
      
      Change-Id: Ie8646dcc163ace5d8faf5e502b38342d885efc30
      9050c9da
    • Ryan Lei's avatar
      refactor the code to use common av1_get_uv_tx_size function. · 2a4b7810
      Ryan Lei authored
      Change-Id: I9a0470cb47f953cfdb026fb699cdcc000a8deca9
      2a4b7810
    • Sarah Parker's avatar
      Add new MRC_DCT tx type · 53f93dbd
      Sarah Parker authored
      This adds the new transform to the list of possible transforms.
      The impact on performance is in the noise range because the transform
      implementation currently performs DCT as a placeholder. This transform
      will initially only have an implementation for TX_32X32 and it is
      skipped in the tx search for smaller transform sizes.
      
      Change-Id: Iab2faddc525b478ca06972a753428a4f4ef53ac6
      53f93dbd
    • Yunqing Wang's avatar
      Make ext_tile compatible with reference_buffer · c2502b55
      Yunqing Wang authored
      In ext_tile experiment, when cm->large_scale_tile is 1, prev_frame_id can be
      the same as current_frame_id, which is prohibited in reference_buffer
      experiment and causes "CORRUPT_FRAME" error to be reported.
      
      In this patch, enable/disable reference_buffer according to large_scale_tile
      value, and thus make these 2 experiments compatible.
      
      Change-Id: If64943acb91e7a7b859db4e2ac62581e9b53ef85
      c2502b55
    • Jingning Han's avatar
      Make intra coding processed in 64x64 unit · 5b70174f
      Jingning Han authored
      Process the intra block coding in maximum of 64x64 block unit.
      This allows to simpilify the hardware design for 128x128 level
      block coding.
      
      Change-Id: I6ef1dd8549bdb53b2d2394c6aa7d61cea93686bf
      5b70174f
    • Jingning Han's avatar
      Make maximum transform coding unit 64x64 for inter blocks · c2b797fa
      Jingning Han authored
      This commit makes the maximum transform coefficient coding unit
      64x64 for inter coded blocks. It allows the hardware design to
      reuse the existing 64x64 coding pipeline for 128x128 level blocks.
      
      Change-Id: Ibadd59cf7e652984456cac621ec2294d48cf4507
      c2b797fa
    • Yushin Cho's avatar
      New experiment DIST_8x8 · b7b60c57
      Yushin Cho authored
      A framework for computing a distortion at 8x8 luma block level
      during RDO-based mode decision search. New 8x8 distortion metric can
      be plugged in by way of this tool.
      
      Existing daala_dist now uses this experiment as well.
      Other possible applications that can make use of this experiment would be
      a distortion meric, which should apply at 8x8 pixels such as PSNR-HVS, SSIM, or etc.
      
      A rd_cost for final coding mode decision for a super block is
      computed for a partition size 8x8 or larger. For a block larger than 8x8,
      a distortion of each 8x8 block is independently computed then summed up.
      
      The rd_cost for 8x8 block with new 8x8 distortion metric is computed
      only when the mode decision of its sub8x8 blocks are completed.
      However, MSE distortion metric is used with sub8x8 mode decision. Thus,
      early termination is also determined with the MSE based rd_cost.
      Because the best rd_cost (i.e. the reference rd_cost) during sub8x8 prediction
      or sub8x8 tx is based on new 8x8 distortion while each sub8x8 uses MSE,
      the existing early termination cannot be used (And this can be the one of possible reason
      for the BD-Rate change with this revision).
      
      For a sub8x8 prediction, prediction mode for each sub8x8 block of a 8x8 block is
      decided with existing MSE and then av1_dist_8x8() is applied to the 8x8 pixels.
      (There is also av1_dist_8x8_diff, which can input diff signal directly)
      
      For a sub8x8 tx in a block larger than 8x8, instead of computing MSE distortion for
      each sub8x8 tx block, we wait until all sub8x8 tx blocks are encoded before av1_dist_8x8()
      is applied to 8x8 pixels.
      
      Sub8x8 prediction and transformas were most of tricky parts in this change.
      Two kind of distortions, for a) predicted pixels and b) decoded pixels
      (i.e. predicted + possible reconstructed residue), are always computed during RDO.
      In order to access those two signals a) and b) for a 8x8 block after
      its sub8x8 mode decision is finished, a) and b) need be properly stored for later retrieval.
      
      The CB4X4 makes the task of accessing a) and b) signals for sub8x8 block further difficult,
      since the intermediate data (i.e. a and/or b) for sub8x8 block
      are not easily accessible outside of current partition unless reconstruced
      with decided coding modes.
      
      Change-Id: If60301a890c0674a3de1d8206965bbd6a6495bb7
      b7b60c57
    • Zoe Liu's avatar
      Add a new experiment "altref2" · 68ad7a6e
      Zoe Liu authored
      This experiment is to add ALTREF2_FRAME to allow 2 altref backward
      predictions. Each video frame will then have up to 7 reference frames
      to choose from:
      
      (1) 4 forward predictive references, namely
      LAST_FRAME, LAST2_FRAME, LAST3_FRAME, and GOLDEN_FRAME; and
      (2) 3 backward predictive references, namely
      BWDREF_FRAME, ALTREF2_FRAME, and ALTREF_FRAME.
      
      The tool of "altref2" is built on top of the "ext_refs" experiment.
      
      Change-Id: Idbb0bb53b43c5c2c7baf4959331fc5a31c77a118
      68ad7a6e
  5. 19 Jul, 2017 3 commits
    • Tom Finegan's avatar
      Silence obj file has no symbols warning. · 11934b08
      Tom Finegan authored
      convolve_avx2.c only has symbols when CONFIG_CONVOLVE_ROUND is
      enabled. Move it to the correct location in av1/av1.cmake.
      
      Change-Id: I521f88262f10500ce7d9f81371be31af0a588a95
      11934b08
    • Tom Finegan's avatar
      Sync CMake build with configure build. · c42a835a
      Tom Finegan authored
      Add CONFIG_INTER_STATS_ONLY, currently defaults to 0.
      
      Change-Id: I495ceaa698e34a5ab5b5456355013fca684d4834
      c42a835a
    • Jingning Han's avatar
      Rework txk_type indexing system for chroma component · 19b5c8fa
      Jingning Han authored
      Use the row and column indexes to fetch txk_type, which allows the
      chroma components to derive the tx type from the corresponding luma
      components. It improves the coding performance of txk-sel by 0.18%.
      
      Change-Id: I3f4bca5839e13ae95e51053e76cd86fe58202ac9
      19b5c8fa
  6. 18 Jul, 2017 6 commits
    • Cheng Chen's avatar
      Clean CLPF local function · a5378e73
      Cheng Chen authored
      Rename local functions and make them static.
      Remove unnecessary header file and corresponding includes.
      
      Change-Id: I4b09e3949e7207754753997ff359992bd348d488
      a5378e73
    • Alex Converse's avatar
      Don't clobber |allow_screen_content_tools|. · 74ad0917
      Alex Converse authored
      Screen content tools can be forced on or inferred by color counting.
      This prevents the inferred status of the tools from getting clobbered
      when controls are evaluated.
      
      BUG=aomedia:656
      
      This also fixes the build with --disable-palette --enable-intrabc
      
      Change-Id: If815a1eff2f9419117477f14cda143dd669c87c6
      74ad0917
    • Alex Converse's avatar
      Revert "aomenc: remove config control of "allow_screen_content_tools"" · 2f7d37bf
      Alex Converse authored
      This reverts commit 1b5328e0.
      
      This commit has some pretty negative consequences with block copy. I
      need to be able to force block copy on for arbitrary sequences while it
      is still in development, and I need to be able to keep the palette
      enable status between block copy and non-block copy runs.
      
      Change If815a1eff2f9419117477f14cda143dd669c87c6 will prevent
      allow_screen_content_tools from getting clobbered and still allow us to
      force it on.
      BUG=aomedia:656
      
      Change-Id: I7a2f4207b5d2da35aec7870250e8b330c58a0e13
      2f7d37bf
    • Ryan Lei's avatar
      enable parallel_deblocking experiment by default · 2c6ca5fe
      Ryan Lei authored
      this change enables parallel_deblocking by default after it has been
      officially adopted. the parallel_deblocking_15taps experiment is merged
      into the parallel_deblocking experiment so it is removed to clean up
      the code. internal compile flags are added to disable 15 tap for both
      luma and chroma plane for future experiment purpose. the internal
      compile flags are disabled by default.
      
      Change-Id: I1668fd2cb7676d756c52263d6993241618d33ee6
      2c6ca5fe
    • Sebastien Alaiwan's avatar
      Avoid explicit memory management · 4fe940ad
      Sebastien Alaiwan authored
      Change-Id: I181b473a6ae4b40d47682afbe136aa4aa4716ad2
      4fe940ad
    • Sebastien Alaiwan's avatar
      Remove dead VP8 test file · 4f345189
      Sebastien Alaiwan authored
      Change-Id: I2a4041a440d0e9bbaf4bc85176501e171a5736f8
      4f345189