1. 05 Jan, 2012 1 commit
    • Deb Mukherjee's avatar
      Multiframe quality enhancement postprocessing · 87aa846b
      Deb Mukherjee authored
      Adds a multiframe postprocessing module to enhance the quality of
      certain frames that are coded at lower quality than preceding frames.
      The module can be invoked from the commandline by use of the --mfqe
      option, and will be most beneficial for enhancing the quality of
      frames decoded using scalable patterns.
      
      Uses the vp8_variance_var16x16 and vp8_variance_sad16x16 function
      pointers to compute SAD and Variance of blocks.
      
      Change-Id: Id73d2a6e3572d07f9f8e36bbce00a4fc5ffd8961
      87aa846b
  2. 19 Dec, 2011 4 commits
  3. 16 Dec, 2011 4 commits
    • Yunqing Wang's avatar
      Merge mr_pick_inter_mode and pick_inter_mode · c647ec44
      Yunqing Wang authored
      Merged multi-resolution motion estimation with regular motion
      estimation function in order to remove duplicated part. This
      caused slight changes in multi-resulotion encoder quality &
      performance.
      
      Change-Id: Ib4ecc7acfebfe5eea959b5b91febae6db7b95fd1
      c647ec44
    • James Berry's avatar
      fix: make sure ss_err is large enough · 24196dd9
      James Berry authored
      increase size of ss_err by one to make
      sure there is room for 64 elements.
      
      Change-Id: I355cb8c499aa7da3b9675f2326a8d25a74bb88d2
      24196dd9
    • John Koleszar's avatar
      Avoid heap allocation of firstpass stats · 26c6a44c
      John Koleszar authored
      The total_stats, this_frame_stats, and total_left_stats structures
      were previously create by a heap allocation, despite being of fixed
      size. These structures were allocated and deallocated during
      {de,}allocate_compressor_data, which is reinvoked whenever the frame
      size changes. Unfortunately, this clobbers the total_stats and
      total_left_stats data.
      
      Historically, these were variable size at one time, due to the first
      pass motion map, which necessitated their being created by a unique
      heap allocation. However, this bug with the total_stats being
      clobbered has probably been present since that initial implementation.
      
      These structures are instead moved to be stored within the struct
      twopass_rc directly, rather than being heap allocated separately.
      
      Change-Id: I7f9e519e25c58b92969071f0e99fa80307e0682b
      26c6a44c
    • Scott LaVarnway's avatar
      Fixed mb_skip_coeff bug · 0ccefd2c
      Scott LaVarnway authored
      When mb_skip_coeff is set, the idct is not necessary.  Prior
      to this patch, the code would call idcts based on leftover
      eob information.  This patch will now skip the idct for
      SPLIT_MV and clear out the eobs for B_PRED, forcing the idct
      to be skipped.
      
      Change-Id: If5b0d2ed3ebd07789d30ec5160df927485fcaa17
      0ccefd2c
  4. 15 Dec, 2011 5 commits
  5. 14 Dec, 2011 8 commits
  6. 13 Dec, 2011 7 commits
  7. 12 Dec, 2011 2 commits
  8. 10 Dec, 2011 1 commit
  9. 09 Dec, 2011 1 commit
    • John Koleszar's avatar
      vpx_integer.h: fix incorrect type emulation · a4e410a3
      John Koleszar authored
      The previous definition of uintptr_t was incorrect on x64 with MSVC.
      Also, the ARMV6 version of int_fast16_t was defined as unsigned for
      some reason. Since the fast types are currently unused, just remove
      them.
      
      Change-Id: Idd73f77a989c77feedcb4a6802ae6bd37324ed40
      a4e410a3
  10. 08 Dec, 2011 1 commit
  11. 07 Dec, 2011 2 commits
  12. 06 Dec, 2011 2 commits
  13. 05 Dec, 2011 2 commits
    • Yunqing Wang's avatar
      Multiple-resolution encoder · aa7335e6
      Yunqing Wang authored
      The example encoder down-samples the input video frames a number of
      times with a down-sampling factor, and then encodes and outputs
      bitstreams with different resolutions.
      
      Support arbitrary down-sampling factor, and down-sampling factor
      can be different for each encoding level.
      
      For example, the encoder can be tested as follows.
      1. Configure with multi-resolution encoding enabled:
      ../libvpx/configure --target=x86-linux-gcc --disable-codecs
      --enable-vp8 --enable-runtime_cpu_detect --enable-debug
      --disable-install-docs --enable-error-concealment
      --enable-multi-res-encoding
      2. Run make
      3. Encode:
      If input video is 1280x720, run:
      ./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1
      (output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180).
      The last parameter is set to 1/0 to show/not show PSNR.)
      4. Decode:
      ./simple_decoder 1.ivf 1.yuv
      ./simple_decoder 2.ivf 2.yuv
      ./simple_decoder 3.ivf 3.yuv
      5. View video:
      mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30
      mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30
      mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30
      
      The encoding parameters can be modified in vp8_multi_resolution_encoder.c,
      for example, target bitrate, frame rate...
      
      Modified API. John helped a lot with that. Thanks!
      
      Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
      aa7335e6
    • John Koleszar's avatar