1. 11 Aug, 2016 1 commit
    • Angie Chiang's avatar
      Bitstream debug tool · 4de81ee1
      Angie Chiang authored
      This is a debug tool used to detect bitstream error. On encoder side, it pushes
      each bit and probability into a queue before the bit is written into the
      Arithmetic coder. On decoder side, whenever a bit is read out from the
      Arithmetic coder, it pops up the reference bit and probability from the queue as
      well. If the two results do not match, this debug tool will report an error.
      This tool can be used to pin down the bitstream error precisely. By combining
      gdb's backtrace method, we can detect which module causes the bitstream error.
      
      Change-Id: I133a4371fafdd48c488f2ca47f9e395676c401f2
      4de81ee1
  2. 04 Aug, 2016 1 commit
    • Zoe Liu's avatar
      Code refactoring on Macros related to ref frame numbers · 1af28f02
      Zoe Liu authored
      We have renamed following Macros to avoid name confusion:
      
      REFS_PER_FRAME --> INTER_REFS_PER_FRAME
      (= ALTREF_FRAME - LAST_FRAME + 1)
      MAX_REF_FRAMES --> TOTAL_REFS_PER_FRAME
      (= ALTREF_FRAME - INTRA_FRAME + 1)
      
      INTER_REFS_PER_FRAME specifies the maximum number of reference frames
      that each Inter frame may use.
      TOTAL_REFS_PER_FRAME is equal to INTER_REFS_PER_FRAME + 1, which
      counts the INTRA_FRAME.
      
      Further, at the encoder side, since REF_FRAMES specifies the maximum
      number of the reference frames that the encoder may store, REF_FRAMES
      is usually larger than INTER_REFS_PER_FRAME. For example, in the
      ext-refs experiment, REF_FRAMES == 8, which allows the encoder to
      store maximum 8 reference frames in the buffer, but
      INTER_REFS_PER_FRAME equals to 6, which allows each Inter frame may
      use up to 6 frames out of the 8 buffered frames as its references.
      Hence, in order to explore the possibility to store more reference
      frames in future patches, we modified a couple of array sizes to
      accomodate the case that the number of buffered reference frames is
      not always equal to the number of the references that are being used
      by each Inter frame.
      
      Change-Id: I19e42ef608946cc76ebfd3e965a05f4b9b93a0b3
      1af28f02
  3. 03 Aug, 2016 2 commits
    • Yaowu Xu's avatar
      more cleanup of vp8 and vp9 · a3cff082
      Yaowu Xu authored
      Change-Id: Ic90ebe6136f4b75645ba699d49c0bcb3764ddccf
      a3cff082
    • Sarah Parker's avatar
      Adjust gm parameter computation to avoid mismatch · aa810c00
      Sarah Parker authored
      The gm parameters need to have WARPED_PRECISION_BITS precision
      until they are written to the bitstream because functions in
      reconinter use these parameters before they are written to
      the bitstream. Previously, the parameters weren't being converted
      to WARPED_PRECISION_BITS until they were read from the bitstream
      which causes an encode/decode mismatch.
      
      Change-Id: I31e76e9d6f7d24df21af287a72f8c01f1997304d
      aa810c00
  4. 29 Jul, 2016 1 commit
  5. 21 Jul, 2016 2 commits
    • Sarah Parker's avatar
      Add affine model to global motion · e9bd26b8
      Sarah Parker authored
      Change-Id: I9cd355a3ea344ef66a61028efa25d94f54e7e2bd
      e9bd26b8
    • Debargha Mukherjee's avatar
      Rectangular transforms 4x8 & 8x4 · e5848dea
      Debargha Mukherjee authored
      Added a new expt rect-tx to be used in conjunction with ext-tx.
      [rect-tx is a temporary config flag and will eventually be
      merged into ext-tx once it works correctly with all other
      experiments].
      
      Added 4x8 and 8x4 tranforms for use initially with rectangular
      sub8x8 y blocks as part of this experiment.
      
      There is about a -0.2% BDRATE improvement on lowres, others pending.
      
      When var-tx is on rectangular transforms are currently not used.
      That will be enabled in a subsequent patch.
      
      Change-Id: Iaf3f88ede2740ffe6a0ffb1ef5fc01a16cd0283a
      e5848dea
  6. 19 Jul, 2016 2 commits
    • Sarah Parker's avatar
      Add global motion parameters to compressed header · 5fa46c0b
      Sarah Parker authored
      Currently nothing is implemented to compute GM parameters, this
      just adds the capability to send them in the bitstream if they
      were computed. Still need to implement the reconstruction
      based on the parameters in reconinter.
      
      Change-Id: I72aea3c6a9de9f5a40f96da76c82b54a52781fe2
      5fa46c0b
    • 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
  7. 11 Jul, 2016 1 commit
  8. 08 Jul, 2016 1 commit
  9. 01 Jul, 2016 1 commit
    • Wei-ting Lin's avatar
      Remove reference frame buffer update for show_exsiting_frame · f9e38a7b
      Wei-ting Lin authored
      Originally we need to send the refresh flag and the virtual indices
      mapping for the reference frame buffer update for show_existing_frame to
      have the BWDREF_FRAME replace the LAST_FRAME.
      
      To remove sending this information, we update the the virtual indices
      of the reference frame buffer after the last_bipred_frame is encoded,
      and therefore the decoder will receive the updated reference mapping
      at the next non-show-existing frame.
      
      As a result, we can save 4 bytes per show-existing frame, and get 0.12,
      0.2, and 0.07 BDRATE improvement in lowres, derf, and midref test set
      respectively.
      
      Change-Id: I63d41ee6ea99884798f0778b789d2701e2f2d3e0
      f9e38a7b
  10. 23 Jun, 2016 1 commit
  11. 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
  12. 16 Jun, 2016 2 commits
  13. 10 Jun, 2016 1 commit
  14. 31 May, 2016 1 commit
  15. 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
  16. 26 May, 2016 1 commit
  17. 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
  18. 20 May, 2016 1 commit
  19. 18 May, 2016 1 commit
    • Jingning Han's avatar
      Account sub8x8 block reference filter type for prob context · 9161464f
      Jingning Han authored
      If a reference block is coded with sub8x8 block size, and if it
      has sub-pixel level motion vectors, its prediction filter type
      should be used as context information.
      
      The coding performance gains of dual filter type coding scheme are
      lowres  0.57%
      hdres   0.88%
      
      Change-Id: I68b98f2518d02f11c29d0256aeb45b2580fe5cac
      9161464f
  20. 16 May, 2016 1 commit
  21. 10 May, 2016 2 commits
  22. 09 May, 2016 2 commits
    • Yunqing Wang's avatar
      Refine VP10 REFRESH_FRAME_CONTEXT_MODE · 484ba024
      Yunqing Wang authored
      In VP10, REFRESH_FRAME_CONTEXT_OFF mode is only set when the error
      resillient mode is on. Instead of being used to decide how to update
      the frame contexts, it is used to decide if or not to reset the
      frame contexts.
      
      To verify, ran borg test on lowres set. The result is neutral.
      Overall PSNR: -0.006%; SSIM: -0.006%.
      
      Change-Id: Ic48265cf7488e80c6f5aab3eef7ba1c273506419
      484ba024
    • Alex Converse's avatar
      Remove the ANS rename on pack_mb_tokens(). · 4d22cc15
      Alex Converse authored
      This fixes the ans+var_tx combination.
      
      Change-Id: I4c34edb1deac4475c97ce1907c1d6bdf23ce3fc0
      4d22cc15
  23. 07 May, 2016 3 commits
    • Yaowu Xu's avatar
      Make type conversions explicit · 98c59c98
      Yaowu Xu authored
      This eliminates MSVC compiler warnings.
      
      Change-Id: Id6ace2586ed7c6248366905b133448fe8ecbd53d
      98c59c98
    • 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
    • Jingning Han's avatar
      Dual prediction filter type for motion compensated reference · bd333263
      Jingning Han authored
      Make the bit-stream level support per direction filter type coding
      for motion compensated reference.
      
      Change-Id: I61a2360b301075f6734cfd9711b7ae68f214174d
      bd333263
  24. 06 May, 2016 1 commit
    • Alex Converse's avatar
      Rename pick_filter_intra. · 130cccba
      Alex Converse authored
      The word 'pick' is usually used in functions that make decisions where
      the bitstream allows multiple legal choices, and not to limit the
      bitstream format itself.
      
      Change-Id: Ia60709c29e004475e1aa8861aefded27ebaf4712
      130cccba
  25. 05 May, 2016 2 commits
    • Jingning Han's avatar
      Clean up ext-interp experiment · 8b084b68
      Jingning Han authored
      Remove the unused sub-experiments within the ext-interp experiment.
      
      Change-Id: I716e3392412d02c56f9395a86c9cab02f580fa59
      8b084b68
    • Geza Lore's avatar
      Fix mismatch with ext-interp. · 1502d9e4
      Geza Lore authored
      The encoder signals the interp filter type in the frame header if all
      blocks use the same filter (see bitstream.c:fix_interp_filter). This
      decision is made based on the counts, but with ext-interp, the counts
      are actually only incremented for blocks that fail vp10_is_interp_needed
      (see for example encodeframe.c:update_state), otherwise a default value
      is used (EIGHTTAP_REGULAR). The decoder however first checks if the
      interp filter is signaled at the frame level, and uses that filter type
      for all blocks, even if the default value should have been used.
      
      This patch makes the decoder first check with vp10_is_interp_needed
      to see if the default value should be used and then checks the frame
      level signaling, which reconciles the difference between encoder and
      decoder.
      
      Change-Id: I87857ade42dea06b0d5ec2a029e9219268334dbb
      1502d9e4
  26. 03 May, 2016 1 commit
  27. 29 Apr, 2016 1 commit
  28. 28 Apr, 2016 2 commits
    • Debargha Mukherjee's avatar
      Brings back near-near compound mode into ext-inter · 7ff79434
      Debargha Mukherjee authored
      lowres: improves by 0.1%
      
      Change-Id: I245019916bf47c6e24bc8c3953b86715ab0193c9
      7ff79434
    • Geza Lore's avatar
      Fix some mismatches when using ext-interp. · bf93b385
      Geza Lore authored
      With ext interp, write_switchable_interp_filter calls
      vp10_is_interp_needed, which needs access to the reference frame
      buffers to check if they are scaled, the ref frame buffer pointer
      at this point used to be uninitialized in the encoder resulting in
      bitstream syntax mismatch when the encoder/decoder did not read/write
      the interp filter element consistently.
      
      Change-Id: Ie0be2a19cbfcb5639a751aa857458e91c23b8fe3
      bf93b385
  29. 27 Apr, 2016 1 commit
  30. 19 Apr, 2016 1 commit