1. 21 Dec, 2011 1 commit
    • John Koleszar's avatar
      Remove opaque pointer VP8_PTR · b0056c3b
      John Koleszar authored
      Use an opaque struct rather than typecasting through VP8_PTR, an int*.
      
      Change-Id: I5ed4d9238ba2e8d51bfa07a8da87a2eb4c8fa43a
      b0056c3b
  2. 19 Dec, 2011 1 commit
    • John Koleszar's avatar
      remove armv6 files from armv5 build · 056bcc87
      John Koleszar authored
      Make bilinearfilter_arm.c compiled only when HAVE_ARMV6, as its definitions
      are v6 only. This is normally not a problem for static builds as the file
      is elided at link time, but this was not being done properly for the
      --enable-shared --enable-pic build.
      
      Change-Id: Ic800a7cde751f74f22555c5b247f99f9df5e550d
      056bcc87
  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 2 commits
    • Scott LaVarnway's avatar
      Moved dequant idct into common · a53d5a4c
      Scott LaVarnway authored
      These functions are now used by the encoder.
      This is WIP with the goal of creating a common idct/add for
      the encoder and decoder.  A boost of 1.8% was seen for
      the HD rt test clip used.
      
      [Tero] Added needed changes to ARM side.
      
      Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
      a53d5a4c
    • Yunqing Wang's avatar
      Only call vp8_find_near_mvs() once for each macroblock · e06c242b
      Yunqing Wang authored
      While doing motion search on a macroblock, we usually call
      vp8_find_near_mvs once per reference frame. Actually, for
      different reference frames, the only difference in calculating
      these near_mvs is they may have different sign_bias, which
      causes a sign change in resulting near_mvs. In this change, we
      only do find_near_mvs for the first reference frame. For other
      reference frames, only need to adjust the near_mvs according to
      that reference frame's sign_bias value.
      
      Change-Id: I661394b49c6ad79fed7d0f2eb2be239b9c56f149
      e06c242b
  5. 14 Dec, 2011 3 commits
  6. 13 Dec, 2011 2 commits
  7. 10 Dec, 2011 1 commit
  8. 08 Dec, 2011 1 commit
  9. 07 Dec, 2011 1 commit
    • Attila Nagy's avatar
      Reduce mem copies in encoder loopfilter level picking · e570b040
      Attila Nagy authored
      Do the test filtering in the existing backup frame buffer instead of
      the original. Copy the original data into extra buffer before doing
      the  filtering. This way there is no need to restore the original
      unfiltered  frame at the end of level picking process.
      
      This came up in some discussions with Johann. Thanks!
      
      Change-Id: I495f4301d983854673276c34ec0ddf9a9d622122
      e570b040
  10. 05 Dec, 2011 1 commit
    • 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...
      aa7335e6
  11. 28 Nov, 2011 2 commits
  12. 25 Nov, 2011 1 commit
    • Scott LaVarnway's avatar
      Modified the inverse walsh to output directly · 4a91541c
      Scott LaVarnway authored
      to the dqcoeff or qcoeff buffer.  The encoder would
      populate the dc coeffs of the y blocks as a separate
      stage (recon_dcblock) and the decoder would use a special
      version of the idct.  This change eliminates the extra copy
      and reduces the code footprint.
      
      [Tero] Added needed changes to armv6 and NEON assembly.
      
      Change-Id: I83202ffdbaf83f6e5dd69f4ba2519fcf0b13b3ba
      4a91541c
  13. 23 Nov, 2011 1 commit
    • Attila Nagy's avatar
      Fix encoder partitioned output on ARM · 97259b46
      Attila Nagy authored
      API was not returning correct partition sizes on arm targets.
      The armv5 token packing functions were not storing the information to the
      partition size table.
      As a fix, have one boolcoder instance allocated for each partition so
      that partition sizes are internally available after all partitions
      were encoded. This will also allow more flexibility in producing
      several partitions in parallel.
      
      Use buffer validation (overflow check) in all ARM bitpacking
      functions.
      
      Change-Id: I31c8a11d8a7613676f0ff50928cb2a2ab14fd169
      97259b46
  14. 21 Nov, 2011 1 commit
  15. 19 Nov, 2011 1 commit
    • Johann's avatar
      Move shared data to shared location · f2cd4ded
      Johann authored
      Storing vp8_bilinear_filters_mmx in an mmx file and using it in an sse2
      file is bad
      
      Moving towards allowing --disable-mmx
      
      Change-Id: I20493b35bdedcdcfc0915e6f05fdbe6c81a4a742
      f2cd4ded
  16. 18 Nov, 2011 2 commits
    • John Koleszar's avatar
      Speed selection support for disabled reference frames · e55974bf
      John Koleszar authored
      There was an implicit reference frame test order (typically LAST,
      GOLD, ARF) in the mode selection logic, but this doesn't provide the
      expected results when some reference frames are disabled. For
      instance, in real-time mode, the speed selection logic often disables
      the ARF modes. So if the user disables the LAST and GOLD frames, the
      encoder was always choosing INTRA, when in reality searching the ARF
      in this case has the same speed penalty as searching LAST would have
      had.
      
      Instead, introduce the notion of a reference frame search order. This
      patch preserves the former priorities, so if a frame is disabled, the
      other frames bump up a slot to take its place. This patch lays the
      groundwork for doing something smarter in the frame test order, for
      example considering temporal distance or looking at the frames used by
      nearby blocks.
      
      Change-Id: I1199149f8662a408537c653d2c021c7f1d29a700
      e55974bf
    • Attila Nagy's avatar
      Validate encoder buffer writes for single token partition · c84d42f8
      Attila Nagy authored
      Extend buffer write validation (overflow check) to single token
      partition packing, both mb and row based functions.
      
      Change-Id: I36e19b7d37fc43712d05c70e3ad223d3eb5b973d
      c84d42f8
  17. 15 Nov, 2011 1 commit
    • Scott LaVarnway's avatar
      Added predictor stride argument(s) to subtract functions · edd98b73
      Scott LaVarnway authored
      Patch set 2: 64 bit build fix
      Patch set 3: 64 bit crash fix
      
      [Tero]
      Patch set 4: Updated ARMv6 and NEON assembly.
                   Added also minor NEON optimizations to subtract
                   functions.
      
      Patch set 5: x86 stride bug fix
      
      Change-Id: I1fcca93e90c89b89ddc204e1c18f208682675c15
      edd98b73
  18. 11 Nov, 2011 1 commit
    • John Koleszar's avatar
      avoid resetting framerate during vpx_codec_enc_config_set() · bdd35c13
      John Koleszar authored
      The calculated frame_rate is a state variable in the codec, and
      shouldn't be maintained in the configuration struct. Move it to the
      main part of cpi so that it isn't clobbered when the configuration
      struct is updated. The initial framerate estimate is moved from the
      vp8_cx_iface.c wrapper into the body of init_config() in onyx_if.c, so
      that it is only called once and not reset on every call to
      vp8_change_config().
      
      Change-Id: I8d9a3d1283330d1ee297d07e9d78d1f2875f2465
      bdd35c13
  19. 09 Nov, 2011 3 commits
    • Scott LaVarnway's avatar
      Relocated idct/add calls for encoder · 861ed6a5
      Scott LaVarnway authored
      Call the idct/add after the tokenize.  This is WIP with
      the goal of creating a common idct/add for the encoder and
      decoder. This move is necessary because the decoder's version
      of the idct clobbers qcoeff, which is used by the tokenize.
      
      Change-Id: I6b08d8e8397cd873647fa4fb9469884e3c876756
      861ed6a5
    • Tero Rintaluoma's avatar
      ARMv6 optimized Intra4x4 prediction · 5a2fd63a
      Tero Rintaluoma authored
      Added ARM optimized intra 4x4 prediction
       - 2x faster on Profiler compared to C-code compiled with -O3
       - Function interface changed a little to improve BLOCKD structure
         access
      
      Change-Id: I9bc2b723155943fe0cf03dd9ca5f1760f7a81f54
      5a2fd63a
    • James Zern's avatar
      threading: avoid defining _WIN32_WINNT · 9d605061
      James Zern authored
      The referenced function (SignalObjectAndWait) isn't used. Reduces the
      warnings with mingw32-w64 which defines this.
      
      Change-Id: I4ce592879ec9372bf196dac640204c4d370bd210
      9d605061
  20. 08 Nov, 2011 5 commits
    • John Koleszar's avatar
      Remove unused file recon.c · f89e109f
      John Koleszar authored
      File not referenced from anywhere and no longer compiles.
      
      Change-Id: I38b11bd60db615c2c2c9d7ad35caba3a1adf1750
      f89e109f
    • Yunqing Wang's avatar
      Fix checks in MB quantizer initialization · 4c14efd2
      Yunqing Wang authored
      vp8cx_mb_init_quantizer() needs to be called at least once to get
      all values calculated. This change added one check to decide if
      we could skip initialization or not.
      
      Change-Id: I3f65eb548be57580a61444328336bc18c25c085b
      4c14efd2
    • Adrian Grange's avatar
      Third set of checks of buffer level against maximum buffer size · b615a6d4
      Adrian Grange authored
      Additional check of buffer level to ensure it doesn't exceed the
      maximum buffer size.
      
      Change-Id: I1ba4f8b09bbec89646885040ff47470196af521e
      b615a6d4
    • Adrian Grange's avatar
      Additional clipping of buffer level to maximum buffer size · fa25a31e
      Adrian Grange authored
      Added additional check of buffer level against maximum
      buffer size.
      
      Change-Id: Iaf1fbaf008601161e402b43ce82c3dbc129bf740
      fa25a31e
    • Adrian Grange's avatar
      Added check to make sure maximum buffer size not exceeded · 9dc95b0a
      Adrian Grange authored
      Added code to clip the buffer level to the maximum buffer
      size. Without this the buffer level would increase
      unchecked.
      
      This bug was found when encoding an essentially static
      scene at 2Mb/s. The encoder is unable to generate frames
      consistent with the high data-rate because Q bottoms out
      at Qmin.
      
      As frames generated are consistently undersized the buffer
      level increases and does not get checked against the
      maximum size specified by the user (or default).
      
      Change-Id: Id8a3c6323d3246da50f7cb53ddbf78b5528032c6
      9dc95b0a
  21. 05 Nov, 2011 2 commits
    • James Zern's avatar
      fix file permissions · f89ea343
      James Zern authored
      all of googletest import (0ab00a22) was marked executable
      
      Change-Id: Id7b7ee03efc21ab998bb03349bd91644e8af25da
      f89ea343
    • Fritz Koenig's avatar
      Compiler warning fix for const array. · f0c01413
      Fritz Koenig authored
      Fix compiler warning for passing a non const array
      to a function expecting a const array by using an
      intermediary pointer and casting.
      
      Change-Id: I9bdd358ebdc926223993fb8fb2098ffedd2f3fc7
      f0c01413
  22. 04 Nov, 2011 1 commit
  23. 03 Nov, 2011 1 commit
    • Tero Rintaluoma's avatar
      Change use of eob in the encoder · e4f2ec7a
      Tero Rintaluoma authored
      Changed 'int eob' to 'char *eob' in BLOCKD so that both encoder and
      decoder will use eobs[25] array from MACROBLOCKD structure. In future,
      this will enable use of the decoder side IDCT in the encoder.
      
      Change-Id: I6e1c011628cb8864fd4a0b80f0279ce16a5ca978
      e4f2ec7a
  24. 01 Nov, 2011 1 commit
    • Stefan Holmer's avatar
      Changing decoder input partition API to input fragments. · 14272052
      Stefan Holmer authored
      Adding support for several partitions within one input fragment.
      This is necessary to fully support all possible packetization
      combinations in the VP8 RTP profile. Several partitions can
      be transmitted in the same packet, and they can only be split
      by reading the partition lengths from the bitstream.
      
      Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
      14272052