1. 30 Jun, 2011 1 commit
    • Yunqing Wang's avatar
      Bug fix in motion vector limit calculation · b7480454
      Yunqing Wang authored
      Motion vector limits are calculated using right shifts, which
      could give wrong results for negative numbers. James Berry's
      test on one clip showed encoder produced some artifacts. This
      change fixed that.
      
      Change-Id: I035fc02280b10455b7f6eb388f7c2e33b796b018
      b7480454
  2. 29 Jun, 2011 6 commits
    • John Koleszar's avatar
      034cea5e
    • Johann's avatar
      guard against space/time distortion · bb0ca87a
      Johann authored
      and divide by 0 errors
      
      Change-Id: I8af5ca3d0913cb6f278fff754f8772bcb62e674a
      bb0ca87a
    • Paul Wilkins's avatar
      Merge "Change to arf boost calculation." · eacaabc5
      Paul Wilkins authored
      eacaabc5
    • Paul Wilkins's avatar
      Change to arf boost calculation. · 11694aab
      Paul Wilkins authored
      In this commit I have added an experimental function
      that tests prediction quality either side of a central position
      to calculate a suggested boost number for an ARF frame.
      
      The function is passed an offset from the current position and
      a number of frames to search forwards and backwards.
      It returns a forward, backward and compound boost number.
      
      The new code can be deactivated using #define NEW_BOOST 0
      
      In its current default state the code searches forwards and backwards
      from the proposed  position of the next alt ref.
      
      The the old code used a boost number calculated by scanning forward
      from the previous GF up to the proposed alt ref frame position.
      
      I have also added some code to try and prevent placement of a gf/arf
      where there is a brief flash.
      
      Change-Id: I98af789a5181148659f10dd5dd2ff2d4250cd51c
      11694aab
    • John Koleszar's avatar
      vpxenc: prevent wraparound in the --rate-hist ringbuffer · 05239f0c
      John Koleszar authored
      For clips that are near 60fps and have a lot of alt refs, it's possible
      that the ring buffer holding the previous frames sizes/pts could wrap
      around, leading to a division by zero.
      
      In addition to checking for this condition in the ring buffer loop,
      the buffer size is made dependent on the actual frame rate in use,
      rather than defaulting to 60, which should improve accuracy at frame
      rates >= ~60.
      
      Change-Id: If5a04d6e847316dc5f7504f25c01164cf9332be8
      05239f0c
    • John Koleszar's avatar
  3. 28 Jun, 2011 13 commits
    • Johann's avatar
      Merge "Avoid text relocations in ARM vp8 decoder" · dc004e8c
      Johann authored
      dc004e8c
    • Johann's avatar
      02c30cde
    • Johann's avatar
      Merge "respect alignment in arm asm files" · 2d29457c
      Johann authored
      2d29457c
    • John Koleszar's avatar
      Use MAX_ENTROPY_TOKENS and ENTROPY_NODES more consistently · b32da7c3
      John Koleszar authored
      There were many instances in the code of vp8_coef_tokens and
      vp8_coef_tokens-1, which was a preprocessor macro despite the naming
      convention. Replace these with MAX_ENTROPY_TOKENS and ENTROPY_NODES,
      respectively.
      
      Change-Id: I72c4f6c7634c94e1fa066cd511471e5592c748da
      b32da7c3
    • John Koleszar's avatar
      Merge "Simplify decode_macroblock." · 9bcf07ae
      John Koleszar authored
      9bcf07ae
    • John Koleszar's avatar
      Merge "use relative include path" · 14566125
      John Koleszar authored
      14566125
    • James Zern's avatar
      vpxenc: free resources · db6ee543
      James Zern authored
      Free buffers allocated for y4m input and webm cue list.
      
      Change-Id: I02051baae3b45f692cf5c7f520ea9a2d80c7b470
      db6ee543
    • Johann's avatar
      use relative include path · 4e4f8352
      Johann authored
      Files are already in vpx/
      
      Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
      4e4f8352
    • Gaute Strokkenes's avatar
      Simplify decode_macroblock. · 81c05464
      Gaute Strokkenes authored
      Change-Id: Ieb2f3827ae7896ae594203b702b3e8fa8fb63d37
      81c05464
    • Stefan Holmer's avatar
      New ways of passing encoded data between encoder and decoder. · 7296b3f9
      Stefan Holmer authored
      With this commit frames can be received partition-by-partition
      from the encoder and passed partition-by-partition to the
      decoder.
      
      At the encoder-side this makes it easier to split encoded
      frames at partition boundaries, useful when packetizing
      frames. When VPX_CODEC_USE_OUTPUT_PARTITION is enabled,
      several VPX_CODEC_CX_FRAME_PKT packets will be returned
      from vpx_codec_get_cx_data(), containing one partition
      each. The partition_id (starting at 0) specifies the decoding
      order of the partitions. All partitions but the last has
      the VPX_FRAME_IS_FRAGMENT flag set.
      
      At the decoder this opens up the possibility of decoding partition
      N even though partition N-1 was lost (given that independent
      partitioning has been enabled in the encoder) if more info
      about the missing parts of the stream is available through
      external signaling.
      
      Each partition is passed to the decoder through the
      vpx_codec_decode() function, with the data pointer pointing
      to the start of the partition, and with data_sz equal to the
      size of the partition. Missing partitions can be signaled to
      the decoder by setting data != NULL and data_sz = 0. When
      all partitions have been given to the decoder "end of data"
      should be signaled by calling vpx_codec_decode() with
      data = NULL and data_sz = 0.
      
      The first partition is the first partition according to the
      VP8 bitstream + the uncompressed data chunk + DCT address
      offsets if multiple residual partitions are used.
      
      Change-Id: I5bc0682b9e4112e0db77904755c694c3c7ac6e74
      7296b3f9
    • Stefan Holmer's avatar
      Proposing an extension to the encoder and decoder interfaces. · b433e12a
      Stefan Holmer authored
      Adding capabilities with which the encoder can output frames
      partition by partition, and the decoder can get input data
      partition by partition.
      
      Change-Id: Ieae0801480b8de8cd43c3c57dd3bab2e4c346fe0
      b433e12a
    • Stefan Holmer's avatar
      Adding support for independent partitions · 4cb0ebe5
      Stefan Holmer authored
      Adding support in the encoder for generating
      independent residual partitions by forcing
      equal probabilities over the prev coef entropy
      contexts.
      
      Change-Id: I402f5c353255f3ca20eae2620af739f6a498cd21
      4cb0ebe5
    • Mike Hommey's avatar
      Avoid text relocations in ARM vp8 decoder · e3f850ee
      Mike Hommey authored
      The current code stores pointers to coefficient tables and loads them to
      access the tables contents. As these pointers are stored in the code
      sections, it means we end up with text relocations. eu-findtextrel will
      thus complain about code not compiled with -fpic/-fPIC.
      
      Since the pointers are stored in the code sections, we can actually cheat
      and let the assembler generate relative addressing when accessing the
      coefficient tables, and just load their location with adr.
      
      Change-Id: Ib74ae2d3f2bab80b29991355f2dbe6955f38f6ae
      e3f850ee
  4. 27 Jun, 2011 4 commits
  5. 24 Jun, 2011 1 commit
  6. 23 Jun, 2011 5 commits
  7. 22 Jun, 2011 2 commits
  8. 21 Jun, 2011 4 commits
  9. 20 Jun, 2011 2 commits
    • Yaowu Xu's avatar
      adjusting the calculation of errorperbit · 10ed60dc
      Yaowu Xu authored
      RDMULT/RDDIV defines a bit worth of distortion in term of sum squared
      difference. This has also been used as errorperbit in subpixel motion
      search, where the distortions computed as variance of the difference.
      The variance of differences is different from sum squared differences
      by amount of DC squared. Typically, for inter predicted MBs, this
      difference averages around 10% between the two distortion, so this patch
      introduces a 110% constant in deriving errorperbit from RDMULT/RDDIV.
      
      Test on CIF set shows small but positive gain on overall PSNR (.03%)
      and SSIM (.07%), overall impact on average PSNR is 0.
      
      Change-Id: I95425f922d037b4d96083064a10c7cdd4948ee62
      10ed60dc
    • Scott LaVarnway's avatar
      Improved vp8dx_decode_bool · 67a1f98c
      Scott LaVarnway authored
      Relocated the vp8dx_bool_decoder_fill() call, allowing
      the compiler to produce better assembly code.  Tests
      showed a 1 - 2 % performance boost (x86 using gcc)
      for the 720p clip used.
      
      Change-Id: Ic5a4eefed8777e6eefa007d4f12dfc7e64482732
      67a1f98c
  10. 17 Jun, 2011 2 commits
    • Taekhyun Kim's avatar
      utilize preload in ARMv6 MC/LPF/Copy routines · 458fb8f4
      Taekhyun Kim authored
      About 9~10% decoding perf improvement on non-Neon ARM cpus
      
      Change-Id: I7dc2a026764e84e9c2faf282b4ae113090326837
      458fb8f4
    • Yunqing Wang's avatar
      Remove unnecessary bounds checking in motion search · 2cd1c285
      Yunqing Wang authored
      The starting points are always within the limits, and bounds
      checking on these points is not needed. For speed < 5, the
      encoded result changes a little because different treatment
      is taken while starting point equals the bounds.
      
      Change-Id: I09a402d310f51e305a3519f1601b1d17b05c6152
      2cd1c285