1. 26 Jul, 2017 1 commit
    • Monty Montgomery's avatar
      Add CONFIG_DAALA_DCT8 experiment. · cf18fe4e
      Monty Montgomery authored
      This experiment replaces the 8-point Type-II DCT and 8-point Type-IV DST
       scaling vp9 transforms with the 8-point orthonormal Daala transforms.
      These have reduced complexity and are perfect reconstruction at the cost
       of a slightly worse coding performance.
      This is because the Daala transforms expect the input to be shifted by 4
       bits but the output scale of the vp9 transforms is only 3 bits.
      
      subset-1:
      
      monty-square-baseline-subset1 ->
        monty-square-dct8-subset1@2017-07-17T21:37:44.281Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0019 | -0.0011 | -0.0585 |  -0.0111 | 0.0305 |  0.0317 |     0.0187
      
      objective-1-fast:
      
      monty-square-baseline-o1f ->
        monty-square-dct8-o1f@2017-07-17T21:37:15.735Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0285 |  0.0129 | -0.5080 |   0.0529 | 0.0345 |  0.0441 |     0.0054
      
      Change-Id: I2b775495398fb717204a295397c3c5e3ca938183
      cf18fe4e
  2. 25 Jul, 2017 2 commits
    • Yushin Cho's avatar
      Fix that matching { and } can be searched in inter mode decision · 67dda51a
      Yushin Cho authored
      Because #if ... #else ... put the '{' on the same line, dangling { or } occurs,
      which causes automatic syntax analyzer, such as 'Ctrl-Shifht-P' in Eclipse
      or '%' of vi, fail to find matching { and }.
      
      For some developers, this can make quick reading and/or understaning blocks of code
      almost impossible.
      
      Three function or blocks are repaird.
      1. av1_rd_pick_inter_mode_sb() {...}
      
      2. for (midx = 0; midx < MAX_MODES; ++midx) {...}
         in av1_rd_pick_inter_mode_sb()
      
      3. handle_inter_mode() {...}
      
      Change-Id: Ib5ac63b8c7f9870a491fac337ae3f58c57ce5e46
      67dda51a
    • Jingning Han's avatar
      Account for the 64x64 proc block constrain in obmc masking · 440d4254
      Jingning Han authored
      Make the codec account for the 64x64 processing unit constraint
      when producing the mask for overlapped filter.
      
      Change-Id: I3e596492ae522abe678369b0c9710441549e817e
      440d4254
  3. 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
  4. 23 Jul, 2017 1 commit
  5. 21 Jul, 2017 2 commits
  6. 20 Jul, 2017 8 commits
    • 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
    • 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
  7. 19 Jul, 2017 1 commit
    • 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
  8. 18 Jul, 2017 4 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
    • Angie Chiang's avatar
      Add flag inter_stats_only · 08a22a63
      Angie Chiang authored
      This flag will allow us to skip key frame's stats
      Therefore, we can test inter frame performance when frame number
      is small. The inter frame's stats won't get underwhelmed because
      of key frame's stats
      
      Change-Id: I9eaa8e5775fb2e740406cfa4b4f64f96f180d9db
      08a22a63
  9. 17 Jul, 2017 4 commits
    • Todd Nguyen's avatar
      Make bgsprite match temporal filtering. · 2fc23095
      Todd Nguyen authored
      Changes:
      - Centering sprite on ARF index
      - Only uses ARNR frames
      - Case for CONFIG_EXT_REFS
      
      Change-Id: Ib9ccc3f53b01e06845f283c30a5cf66d7252b4cb
      2fc23095
    • Lester Lu's avatar
      Unify FWD_TXFM_PARAM and INV_TXFM_PARAM · 27319b6e
      Lester Lu authored
      Change two similar structs, FWD_TXFM_PARAM and INV_TXFM_PARAM,
      into a common struct: TxfmParam. Its definition is moved to
      aom_dsp/txfm_common.h to simplify dependency.
      
      This change is made so that, in later changes of the LGT
      experiment, functions requiring FWD_TXFM_PARAM and
      INV_TXFM_PARAM, such as get_fwd_lgt4 and get_inv_lgt4, can
      also be unified.
      
      Change-Id: I756b0176a02314005060adbf8e62386f10eeb344
      27319b6e
    • Angie Chiang's avatar
      lv_map clean-up: merge get_nz_map_ctx/2 · d27f5e27
      Angie Chiang authored
      Change-Id: Ied1a493723cac2ec4674bac642525a937826733f
      d27f5e27
    • hui su's avatar
      refactor get_tx_size() and get_uv_tx_size() · 0c6244b6
      hui su authored
      Change-Id: I802c9e41ebfed090b5ad8300917aad5e16ad026a
      0c6244b6
  10. 14 Jul, 2017 7 commits
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: read/write ncobmc mode · ca710d68
      Wei-Ting Lin authored
      An ncobmc mode is selected for each squared block
      (if motion_mode == ncobmc_adapt_weight) as opposed
      to four in training
      
      Change-Id: I81e5dfca3a6fec5a95c96b17f294530880cf8f88
      ca710d68
    • Sarah Parker's avatar
      Avoid sending gm params if source and ref are different sizes · 6c998d75
      Sarah Parker authored
      Change-Id: I4b4272c99ba6ff4d983dcb694b3ea4d5de1b4e14
      6c998d75
    • Yunqing Wang's avatar
      Sample selection in warped motion · 1bc82866
      Yunqing Wang authored
      Added a sample selection process in warped motion.
      1. Gather more samples including multiple rows on the top, multiple
      columns on the left, and the upper-right block.
      2. Sort samples by the MV difference between the neighbour's MV and
      the current block's MV. Trim the samples with considerably large MV
      difference.
      
      Borg test result:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.241   -0.243  -0.376
      lowres:      -0.104   -0.110  -0.179
      
      The changes are wrapped in WARPED_MOTION_SORT_SAMPLES macro.
      
      Change-Id: I2730bb31a0a3ad28215ccd16fd6da0ea8b2ed404
      1bc82866
    • hui su's avatar
      refactor get_tx_type() · 45b6475e
      hui su authored
      Change-Id: I2888bd8905253e02e3ac74597275cf56e5142d29
      45b6475e
    • hui su's avatar
      aomenc: remove config control of "allow_screen_content_tools" · 1b5328e0
      hui su authored
      Always let the encoder decide if "allow_screen_content_tools" should be set.
      
      -The screen content detector(is_screen_content()) works fairly well.
      
      -Keeping the config control may lead to mismatches. For example, user
      may encode the 1st frame with the flag on, then turn the flag off for
      the 2nd frame via config control. On the decoder side, the flag is on
      for both frames, because the flag is only transmitted in the header of
      all-intra frame, i.e. the 1st frame in this example.
      
      BUT=aomedia:656
      
      Change-Id: I0652fe2b9f8df19bfbf7ed7d3513205c80ea9c61
      1b5328e0
    • David Michael Barr's avatar
      [CFL] Move alpha picking code to rdopt.c · 2510f64e
      David Michael Barr authored
      This simplifies the path from rd_pick_intra_sbuv_mode()
      
      Results on Subset1 (compared to  dff41923
      
       with CfL enabled)
      
        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
      
      Change-Id: I0bade9d347c626a78ba7077b960afdb318ecca69
      Signed-off-by: default avatarDavid Michael Barr <b@rr-dav.id.au>
      2510f64e
    • Yunqing Wang's avatar
      Make EXT_TILE compatible with TILE_GROUPS · eeb08a9b
      Yunqing Wang authored
      Added a 1-bit flag 'large_scale_tile'. If it is 0 that is the default value,
      use normal tile coding in TILE_GROUPS. If it is 1, use large-scale tile
      coding in EXT_TILE.
      
      At large_scale_tile=1 case, if single-tile-decoding is required, then the
      loopfilter is disabled.
      
      Related API and unit tests were modified.
      
      Change-Id: I3ba12dc3d80ccf1ab21543ab3b16c02282c34e3b
      eeb08a9b
  11. 13 Jul, 2017 7 commits
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: avoid transmitting unnecessary bits · 77c41183
      Wei-Ting Lin authored
      Transmit ncobmc modes only when the motion mode,
      ncobmc_adapt_weight, is selected.
      
      Change-Id: I19d6dd83278457b1867f8e2e5cd94d25f535fcaf
      77c41183
    • Urvang Joshi's avatar
      Refactor av1_build_inter_predictors_sb(). · 686d4fd2
      Urvang Joshi authored
      Before this, this function was copied-and-edited from
      av1_build_inter_predictors_sby() and av1_build_inter_predictors_sbuv().
      Also, some places used sb() one directly (like rdopt.c), while others used
      sby() and sbuv() separately (like encodeframe.c --> encode_superblock()).
      
      This was prone to errors, if someone mistakenly modified only one/two of
      the 3 functions.
      
      Now, we just reuse sby() and sbuv() functions in sb().
      
      Verified that there's no change in output.
      
      Change-Id: If81d78e767cc3fa09f06094d4db36ff1eaea3e4f
      686d4fd2
    • hui su's avatar
      Handle hbd in is_screen_content() · 105b72c1
      hui su authored
      BUG=aomedia:654
      
      Change-Id: Ic77a456246f87acb59ae95ddd4c421e741a99789
      105b72c1
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: add CDF for segment_id prediction. · 00021354
      Thomas Davies authored
      With aq-mode=1 (which forces segmentation), AWCY
      gives -0.12% (objective-1-fast, cpu-used=4,
      NEW_MULTISYMBOL on for reference and tested).
      
      No change to baseline metrics, with or without
      NEW_MULTISYMBOL.
      
      Change-Id: I841a9e8978598402dacfbca9265269163f7440c0
      00021354
    • Jingning Han's avatar
      Refactor get_tx_type indexing · 7eab9ff1
      Jingning Han authored
      Use row and column indexes to fetch the txk_type value.
      
      Change-Id: I881d500c030e322d8aca9dccb6ff2870c9e1e392
      7eab9ff1
    • Debargha Mukherjee's avatar
      Remove some commented out code · 1c318d52
      Debargha Mukherjee authored
      Change-Id: Id89b613a227867782f9feba16d87eca4b5a86369
      1c318d52
    • Thomas Davies's avatar
      COMPOUND_SINGLEREF: replace deprecated tree coding. · b8b14a9b
      Thomas Davies authored
      Use multi-symbol CDF coding instead.
      
      Change-Id: I8a69364c8672474021d2ea5933e344d493186967
      b8b14a9b