1. 23 Jan, 2015 1 commit
  2. 16 Dec, 2014 1 commit
    • Jingning Han's avatar
      Remove reset mode_info array per frame · ccdc448b
      Jingning Han authored
      The mode_info array was unnecessarily reset to zero every frame
      when error resilient mode turned on, given that the mode info
      values per block will be assigned during mode search stage.
      
      This commit removes this reset operation. It reduces the runtime
      cost on memset operation to 1/3. The overall speed -6 runtime is
      reduced by 2%.
      
      Change-Id: I32ecb73338d8995cc0c5147de09357364f13d45b
      ccdc448b
  3. 11 Dec, 2014 1 commit
  4. 06 Nov, 2014 1 commit
    • hkuang's avatar
      Totally remove prev_mi in VP9 decoder. · 4cc7c5a1
      hkuang authored
      This will save the memory and improve the decode speed due to
      removing unnecessary memset of big prev_mi array for
      all the key frames.
      
      Decoding a all key frames 1080p video shows speed improve around 2%.
      
      Change-Id: I6284a445c1291056e3c15135c3c20d502f791c10
      4cc7c5a1
  5. 22 Oct, 2014 2 commits
    • Yunqing Wang's avatar
      vp9_ethread: allocate frame contexts outside VP9_COMMON struct · 7c7e4d4e
      Yunqing Wang authored
      This patch allocated frame contexts outside VP9_COMMON. This allows
      multiple threads to share the same copy of frame contexts, and
      reduces the overhead. It also guarantees the correct update of
      these contexts during bitstream packing. This patch doesn't change
      encoding result.
      
      Change-Id: Ic181a2460b891d1d587278a6d02d8057b9dbd353
      7c7e4d4e
    • Hangyu Kuang's avatar
      Implement frame parallel decode for VP9. · 9ce3a7d7
      Hangyu Kuang authored
      Using 4 threads, frame parallel decode is ~3x faster than single thread
      decode and around 30% faster than tile parallel decode for frame parallel
      encoded video on both Android and desktop with 4 threads. Decode speed is
      scalable to threads too which means decode could be even faster with more threads.
      
      Change-Id: Ia0a549aaa3e83b5a17b31d8299aa496ea4f21e3e
      9ce3a7d7
  6. 28 Jul, 2014 1 commit
    • hkuang's avatar
      Add segmentation map array for current and last frame segmentation. · 7eca0867
      hkuang authored
      The original implementation only allocates one segmentation map and this
      works fine for serial decode. But for frame parallel decode,  each thread
      need to have its own segmentation map and the last frame segmentation map
      should be provided from last frame decoding thread.
      
      After finishing decoding a frame, thread need to serve the old segmentation
      map that associate with the previous decoded frame. The thread also need to
      use another segmentation map for decoding the current frame.
      
      Change-Id: I442ddff36b5de9cb8a7eb59e225744c78f4492d8
      7eca0867
  7. 02 Apr, 2014 1 commit
  8. 28 Feb, 2014 1 commit
  9. 13 Feb, 2014 1 commit
    • Yaowu Xu's avatar
      Removed the reset of mode_info from previous frame · 896d79a5
      Yaowu Xu authored
      Prior to this commit, both encoder and decoder reset mode/mv info from
      previous frame in error resilient mode to ensure bitstreams are able to
      decode when there is loss of frame in decoder side. However, this is
      not necessary. This commit changed to remove the reset, so encoder can
      continue to use mode/mv/partition information from previously encoded
      frame without affecting decodeablilty under loss of frame.
      
      Change-Id: I0279f862900dc647fb471ae3389770bb1b9f454f
      896d79a5
  10. 10 Feb, 2014 1 commit
  11. 29 Jan, 2014 1 commit
  12. 24 Jan, 2014 1 commit
    • Dmitry Kovalev's avatar
      Renaming INTERPOLATION_TYPE to INTERP_FILTER. · 4264c938
      Dmitry Kovalev authored
      Corresponding renames:
        subpel_kernel              => interp_kernel
        vp9_get_filter_kernel()    => vp9_get_interp_kernel()
        pred_filter_type           => pred_interp_filter
        adaptive_pred_filter_type  => adaptive_pred_interp_filter
        mcomp_filter_type          => interp_filter
        read_interp_filter_type()  => read_interp_filter()
        write_interp_filter_type() => write_interp_filter()
        fix_mcomp_filter_type()    => fix_interp_filter()
      
      Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
      4264c938
  13. 06 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Renaming constants. · 0d4b8d7e
      Dmitry Kovalev authored
      NUM_YV12_BUFFERS        => FRAME_BUFFERS
      ALLOWED_REFS_PER_FRAME  => REFS_PER_FRAME
      NUM_REF_FRAMES_LOG2     => REF_FRAMES_LOG2
      NUM_REF_FRAMES          => REF_FRAMES
      NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
      NUM_FRAME_CONTEXTS      => FRAME_CONTEXTS
      
      Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
      0d4b8d7e
  14. 05 Dec, 2013 1 commit
  15. 26 Nov, 2013 1 commit
  16. 21 Nov, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing redundant call of vp9_init_mbmode_probs(). · c90b6bb1
      Dmitry Kovalev authored
      This function is called from vp9_setup_past_independence() which is called
      before the modified piece of code. Moving reset of inter_mode_probs  into
      vp9_init_mbmode_probs() for consistency.
      
      Change-Id: Ib188e8798e1fbe15407fd501406761b746fdda95
      c90b6bb1
  17. 05 Nov, 2013 2 commits
    • Dmitry Kovalev's avatar
      Localizing NEARESTMV special cases in the code. · 81518961
      Dmitry Kovalev authored
      Removing special case handling from vp9_tree_probs_from_distribution(),
      tree_merge_probs(), and vp9_tokens_from_tree_offset() functions. Replacing
      inter_mode_offset() function with macro INTER_OFFSET which is used now for
      vp9_inter_mode_tree definition.
      
      Change-Id: Iff75a1499d460beb949ece543389c8754deaf178
      81518961
    • Dmitry Kovalev's avatar
      Unified approach for backward probability update. · c622e1d1
      Dmitry Kovalev authored
      Replacing update_mode_probs() and adapt_probs() with tree_merge_probs().
      
      Change-Id: I50b2c968d67c9265f5216c700cbeba25fb014654
      c622e1d1
  18. 04 Nov, 2013 1 commit
    • Dmitry Kovalev's avatar
      Splitting partition_probs array into two arrays. · dde8069e
      Dmitry Kovalev authored
      We only update partition_probs for inter frames but they are constant
      for key frames. It is not necessary to have constants inside frame
      context and copy them every time. This change reduces FRAME_CONTEXT size
      by at least 48 bytes.
      
      
      Change-Id: If70a53be51043f37fe7d113853217937710932a7
      dde8069e
  19. 01 Nov, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing 'new' probability calculation from convert_distribution(). · df19c6b6
      Dmitry Kovalev authored
      We don't have to calculate 'new' probability in convert_distribution()
      because it is enough to calculate only 'new' counters which could be used
      to calculate probability if necessary. That's why removing a lot of unused
      temporary probability arrays and reducing number of get_binary_prob()
      calls.
      
      Change-Id: I4e14eb7203d1ace61bbddefd6b9b6326be83ba63
      df19c6b6
  20. 30 Oct, 2013 1 commit
  21. 22 Oct, 2013 1 commit
  22. 19 Oct, 2013 1 commit
    • Dmitry Kovalev's avatar
      Removing NUM_ prefix from constant names. · 6d2a0da7
      Dmitry Kovalev authored
      Renames for consistency with other constants:
        NUM_FRAME_TYPES -> FRAME_TYPES
        NUM_PARTITION_CONTEXTS -> PARTITION_CONTEXTS
      
      Change-Id: I3db30acb2868eb0a424237c831087b2e264ec47f
      6d2a0da7
  23. 11 Oct, 2013 1 commit
    • Dmitry Kovalev's avatar
      Adding TREE_SIZE macro + cleanup. · 860e4676
      Dmitry Kovalev authored
      Using TREE_SIZE for the following trees:
        vp9_intra_mode_tree
        vp9_inter_mode_tree
        vp9_partition_tree
        vp9_switchable_interp_tree
        vp9_mv_joint_tree
        vp9_mv_class_tree
        vp9_mv_class0_tree
        vp9_mv_fp_tree
      
      Change-Id: I0212bb4c1ee6648249f68517e28a67a56591ee1b
      860e4676
  24. 30 Sep, 2013 1 commit
    • Dmitry Kovalev's avatar
      Adding const to function arguments. · c64e2383
      Dmitry Kovalev authored
      Function list:
        tx_counts_to_branch_counts_32x32
        tx_counts_to_branch_counts_8x8
        tx_counts_to_branch_counts_8x8
        update_ct
        update_ct2
        update_mode_probs
      
      Change-Id: I120d8945a34378cf285d6bd415e23de1d522cf2f
      c64e2383
  25. 11 Sep, 2013 1 commit
    • Scott LaVarnway's avatar
      New mode_info_context storage -- undo revert · ac6093d1
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of pointers to MODE_INFO structs.  The
      MODE_INFO structs are now stored as a stream (decoder only),
      eliminating unnecessary copies and is a little more cache
      friendly.
      
      Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
      ac6093d1
  26. 09 Sep, 2013 1 commit
  27. 06 Sep, 2013 1 commit
    • Scott LaVarnway's avatar
      New mode_info_context storage · dae17734
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of a pointer to a MODE_INFO struct and
      a "in the image" flag.  The MODE_INFO structs are now stored
      as a stream, eliminating unnecessary copies and is a little
      more cache friendly.
      
      For the test clips used, the decoder performance improved
      by ~4.3% (1080p) and ~9.7% (720p).
      
      Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p)
      and 5.9% (720p).
      
      Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
      dae17734
  28. 24 Aug, 2013 2 commits
  29. 15 Aug, 2013 2 commits
  30. 09 Aug, 2013 2 commits
    • Dmitry Kovalev's avatar
      Moving loopfilter struct to VP9_COMMON. · 816d6c98
      Dmitry Kovalev authored
      Loop filter configuration doesn't belong to macroblock, so moving it from
      MACROBLOCKD to VP9_COMMON. Also moving the declaration of loopfilter struct
      from vp9_blockd.h to vp9_loopfilter.h.
      
      Change-Id: I4b3e34be9623b47cda35f9b1f9951f8c5b1d5d28
      816d6c98
    • Dmitry Kovalev's avatar
      General code cleanup. · 6a8ec3ea
      Dmitry Kovalev authored
      Removing redundant parenthesis and curly braces. Combining declarations
      with initializations. Adding useful intermediate variables instead of
      recalculating expressions every time.
      
      Change-Id: I00106f404afd60bfc189905b0fded881684f941a
      6a8ec3ea
  31. 05 Aug, 2013 1 commit
    • Dmitry Kovalev's avatar
      Changing the order switchable filter enum constants. · 3f611555
      Dmitry Kovalev authored
      This changeset allows to remove vp9_switchable_interp and
      vp9_switchable_interp_map arrays and make code much clear. Actually we
      still have to use these mapping but only inside read_interp_filter_type and
      write_interp_filter_type functions.
      
      Change-Id: I4026c6f8c4acefba6c81421b7bacbaa52cc45f50
      3f611555
  32. 01 Aug, 2013 1 commit
  33. 31 Jul, 2013 1 commit
  34. 29 Jul, 2013 1 commit
  35. 25 Jul, 2013 1 commit