1. 24 Jul, 2012 1 commit
  2. 14 Jul, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: add parameter validity checking · 7f009975
      Yunqing Wang authored
      Added validity checking in multi-res encoder. Disable spatial
      resampling and frame dropping before we have those supports.
      Also, deallocate the memory for all resolution levels once error
      occurs.
      
      Change-Id: Ia5d65a645381cad1a49940ab3a19bb5696c39c09
      7f009975
  3. 13 Jul, 2012 1 commit
  4. 29 Jun, 2012 1 commit
    • John Koleszar's avatar
      Build unit test driver from the default target · acd147c5
      John Koleszar authored
      We need an easy way to build the unit test driver without running the
      tests. This enables passing options like --gtest_filter to the
      executable, which can't be done very cleanly when running under
      `make test`.
      
      Fixed a number of compiler errors/warnings when building the tests
      in various configurations by Jenkins.
      
      Change-Id: I9198122600bcf02520688e5f052ab379f963b77b
      acd147c5
  5. 23 Jun, 2012 1 commit
  6. 15 Jun, 2012 1 commit
    • John Koleszar's avatar
      Remove threading dependencies with --disable-multithread · 8df79e9d
      John Koleszar authored
      Avoid a pthreads dependency via pthread_once() when compiled with
      --disable-multithread.
      
      In addition, this synchronization is disabled for Win32 as well, even
      though we can be sure that the required primatives exist, so that the
      requirements on the application when built with --disable-multithread
      are consistent across platforms.
      
      Users using libvpx built with --disable-multithread in a multithreaded
      context should provide their own synchronization. Updated the
      documentation to vpx_codec_enc_init_ver() and vpx_codec_dec_init_ver()
      to note this requirement. Moved the RTCD initialization call to match
      this description, as previously it didn't happen until the first
      frame.
      
      Change-Id: Id576f6bce2758362188278d3085051c218a56d4a
      8df79e9d
  7. 16 May, 2012 1 commit
    • Yunqing Wang's avatar
      multi-res: force Key frame sychronization · 65dd157c
      Yunqing Wang authored
      In multi-resolution encoding, frame_type decision for each frame
      is made by the lowest-resolution encoder. For all other higher-
      resolution encoders, kf_mode is always set to VPX_KF_DISABLED,
      and they are forced to use the same frame_type picked by the
      lowest-resolution encoder.
      
      Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
      65dd157c
  8. 04 May, 2012 1 commit
    • John Koleszar's avatar
      remove deprecated pre-v0.9.0 API · 2bf8fb58
      John Koleszar authored
      Remove a bunch of compatibility code dating back to before the initial
      libvpx release.
      
      Change-Id: Ie50b81e7d665955bec3d692cd6521c9583e85ca3
      2bf8fb58
  9. 03 May, 2012 1 commit
    • John Koleszar's avatar
      multi-res: restore v1.0.0 API · 25a36d6b
      John Koleszar authored
      Move the notion of 0 bitrate implying skip deeper into the codec,
      rather than doing it at the multi-encoder API level. This preserves
      v1.0.0 ABI compatibility, rather than forcing a bump to v2.0.0 over a
      minor change. Also, this allows the case where the application can
      selectively enable and disable the larger resolution(s) without having
      to reinitialize the codec instace (for instance, if no target is
      receiving the full resolution stream).
      
      It's not clear how deep to push this check. It may be valuable to
      allow the framerate adaptation code to run, for example. Currently put
      the check as early as possible for simplicity, should reevaluate this
      as this feature gains real use.
      
      Change-Id: I371709b8c6b52185a1c71a166a131ecc244582f0
      25a36d6b
  10. 02 May, 2012 4 commits
    • John Koleszar's avatar
      Add VPX_TS_ prefix to MAX_LAYERS, MAX_PERIODICITY · d46ddd08
      John Koleszar authored
      Preserved the prior names for compatibility, will remove in the future.
      
      Change-Id: I8773f959ebce72f60168a2972f7a8ffe6642b9b2
      d46ddd08
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 22ae1403
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      22ae1403
    • Timothy B. Terriberry's avatar
      Fix trailing commas in enums. · 28f54515
      Timothy B. Terriberry authored
      These are warnings in most builds, but show up as compile errors on
       some platforms when these headers are included from C++ code.
      
      Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
      28f54515
    • Attila Nagy's avatar
      Fix compiler warnings · 14c9fce8
      Attila Nagy authored
      Fix code for following warnings:
      -Wimplicit-function-declaration
      -Wuninitialized
      -Wunused-but-set-variable
      -Wunused-variable
      
      Change-Id: I2be434f22fdecb903198e8b0711255b4c1a2947a
      14c9fce8
  11. 20 Apr, 2012 1 commit
    • John Koleszar's avatar
      multi-res: restore v1.0.0 API · d72c536e
      John Koleszar authored
      Move the notion of 0 bitrate implying skip deeper into the codec,
      rather than doing it at the multi-encoder API level. This preserves
      v1.0.0 ABI compatibility, rather than forcing a bump to v2.0.0 over a
      minor change. Also, this allows the case where the application can
      selectively enable and disable the larger resolution(s) without having
      to reinitialize the codec instace (for instance, if no target is
      receiving the full resolution stream).
      
      It's not clear how deep to push this check. It may be valuable to
      allow the framerate adaptation code to run, for example. Currently put
      the check as early as possible for simplicity, should reevaluate this
      as this feature gains real use.
      
      Change-Id: I371709b8c6b52185a1c71a166a131ecc244582f0
      d72c536e
  12. 02 Apr, 2012 1 commit
    • Johann's avatar
      Allow disabling disabled codecs · c459d37c
      Johann authored
      When using 'make dist' after --disable-vp8[encoder|decoder] it would
      fail to recognize the option. This would only occur when also specifying
      --enable-install-docs and --enable-install-srcs but not
      --enable-codec-srcs
      
      Including vpx/ fixes builds with --enable-codec-srcs
      
      vpx_timer.h is also required for vpxenc.c
      
      Change-Id: Ie3e28b2f7ec7ee6d5961d3843f9eab869f79c35b
      c459d37c
  13. 15 Mar, 2012 1 commit
    • James Zern's avatar
      doxy: fix conditional usage, ref warnings · 6b7cf307
      James Zern authored
      doxygen < 1.7.? seems to have been more tolerant of single line
      \if/\endif
      
      This change fixes warnings such as:
      mainpage.dox:13: warning: unable to resolve reference to `vp8_encoder-'
      for \ref command
      vpx_decoder.h:193: warning: explicit link request to 'n' could not be
      resolved
      
      Change-Id: If3d04af5ede1b0d1e2c63021d0e4ac8f98db20b2
      6b7cf307
  14. 03 Feb, 2012 1 commit
    • Yunqing Wang's avatar
      Allow to skip highest-resolution encoding in multi-resolution encoder · fa1a9290
      Yunqing Wang authored
      Sometimes, a user doesn't have enough bandwidth to send high-resolution
      (i.e. HD) video even though the camera catches HD video. This change
      allowed users to skip highest-resolution encoding by setting that level's
      target bit rate to 0.
      
      To test it, modify the following line in vp8_multi_resolution_encoder.c.
          unsigned int  target_bitrate[NUM_ENCODERS]={1400, 500, 100};
      To skip the highest-resolution level, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 500, 100};
      To skip the first and second highest resolution levels, change it to
          unsigned int  target_bitrate[NUM_ENCODERS]={0, 0, 100};
      
      This change also fixed a small problem in mapping, which slightly helped
      quality and performance.
      
      Change-Id: I977bae9a9fbfba85c8be4bd5af01539f2b84bc81
      fa1a9290
  15. 10 Jan, 2012 1 commit
  16. 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
  17. 13 Dec, 2011 1 commit
    • Yunqing Wang's avatar
      Align image buffer in multiple-resolution encoder · 153eec46
      Yunqing Wang authored
      Aligned the image buffer and stride to 32 bytes. This enables
      calling of optimized scaler function in libyuv, and improves
      the performance.
      
      Tested libyuv scaler(x86 optimization) on Linux and Windows,
      including: Linux 32/64bit, visual studio 32/64bit, Cygwin, and
      MinGW32.
      
      Also, fixed a wrong pointer in vpx_codec_encode().
      
      Change-Id: Ibe97d7a0a745f82c43852fa4ed719be5a4db6abc
      153eec46
  18. 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
  19. 06 Dec, 2011 1 commit
    • Yunqing Wang's avatar
      Allow aligning the raw image buffer · be5bbc96
      Yunqing Wang authored
      Added code to allocate aligned image buffer in vpx_img_alloc(). The
      alignment of the buffer and stride is determined by the parameter
      align.
      
      Change-Id: Idc866978484be3558551c56df39130ab7f74ddd4
      be5bbc96
  20. 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 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
  21. 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
  22. 11 Oct, 2011 2 commits
    • John Koleszar's avatar
      Bump ABI version number for temporal scalability · 6505adf2
      John Koleszar authored
      Commit 217591fd modified the encoder ABI without incrementing the version number.
      
      Change-Id: I74de01597dadcdcd96f6b817e4ec69d9ab535e4c
      6505adf2
    • Adrian Grange's avatar
      Added rate-targeted temporal scalability · 217591fd
      Adrian Grange authored
      Added the ability to create rate-targeted, temporally
      scalable, VP8 compatible bitstreams.
      
      The application vp8_scalable_patterns.c demonstrates how
      to use this capability. Users can create output bitstreams
      containing upto 5 temporally separable streams encoded
      as a single VP8 bitstream.
      (previously abandoned as:
      I92d1483e887adb274d07ce9e567e4d0314881b0a)
      
      Change-Id: I156250a3fe930be57c069d508c41b6a7a4ea8d6a
      217591fd
  23. 28 Jul, 2011 1 commit
    • John Koleszar's avatar
      Convert rc_max_intra_bitrate_pct to control · 1654ae9a
      John Koleszar authored
      Since this is the only ABI incompatible change since the last release,
      convert it to use the control interface instead. The member of the
      configuration struct is replaced with the VP8E_SET_MAX_INTRA_BITRATE_PCT
      control.
      
      More significant API changes were expected to be forthcoming when this
      control was first introduced, and while they continue to be expected,
      it's not worth breaking compatibility for only this change.
      
      Change-Id: I799d8dbe24c8bc9c241e0b7743b2b64f81327d59
      1654ae9a
  24. 19 Jul, 2011 1 commit
    • John Koleszar's avatar
      Revert "Disable __longjmp_chk protection" · d98a5ed4
      John Koleszar authored
      This reverts commit b73a3693.
      
      This version of the check doesn't work with generic-gnu, and figuring
      out the correct symbol version at configure time is probably more work
      than this is worth. May revisit in the future.
      
      Change-Id: I6c75e88bd3bd82a4b21e09a25780fe53aacb7d70
      d98a5ed4
  25. 13 Jul, 2011 1 commit
    • John Koleszar's avatar
      Disable __longjmp_chk protection · b73a3693
      John Koleszar authored
      glibc implements some checking on longjmp() calls by replacing it with
      an internal function __longjmp_chk(), when FORTIFY_SOURCE is defined.
      This can be problematic when compiling the library under one version of
      glibc and running it under another. Work around this issue for the one
      symbol affected for now, before taking out the undef hammer.
      
      Fixes http://code.google.com/p/webm/issues/detail?id=166
      
      Change-Id: Ifc5e25cdec17915e394711f2185b3e9214572d10
      b73a3693
  26. 28 Jun, 2011 4 commits
    • Johann's avatar
      use relative include path · 4e4f8352
      Johann authored
      Files are already in vpx/
      
      Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
      4e4f8352
    • 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
  27. 19 May, 2011 1 commit
    • Stefan Holmer's avatar
      Adding error-concealment to the decoder. · d04f8523
      Stefan Holmer authored
      The error-concealer is plugged in after any motion vectors have been
      decoded. It tries to estimate any missing motion vectors from the
      motion vectors of the previous frame. Intra blocks with missing
      residual are replaced with inter blocks with estimated motion vectors.
      
      This feature was developed in a separate sandbox
      (sandbox/holmer/error-concealment).
      
      Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
      d04f8523
  28. 06 May, 2011 1 commit
    • John Koleszar's avatar
      Use stdint.h for VS2010 · 4ead98fa
      John Koleszar authored
      VS2010 has included stdint.h, but not inttypes.h. Prefer the compiler's
      version of these types. Fixes issue 327.
      
      Change-Id: Ica71600e06b8e94e3bbb4f12988b4a9817d5e5e4
      4ead98fa
  29. 28 Apr, 2011 1 commit
    • James Berry's avatar
      bug fix 32 bit matches 64 bit · 5db296dd
      James Berry authored
      included vpx_config.h in vpx_encoder.c
      to properly define FLOATING_POINT_INIT()
      
      Change-Id: Ie518bf5c087622658e37fca90aa4ddfe79d053f6
      5db296dd
  30. 25 Apr, 2011 1 commit
  31. 13 Apr, 2011 1 commit
    • John Koleszar's avatar
      Change rc undershoot/overshoot semantics · c99f9d7a
      John Koleszar authored
      This patch changes the rc_undershoot_pct and rc_overshoot_pct controls
      to set the "aggressiveness" of rate adaptation, by limiting the
      amount of difference between the target buffer level and the actual
      buffer level which is applied to the target frame rate for this frame.
      
      This patch was initially provided by arosenberg at logitech.com as
      an attachment to issue #270. It was modified to separate these controls
      from the other unrelated modifications in that patch, as well as to
      use the pre-existing variables rather than introducing new ones.
      
      Change-Id: Id542e3f5667dd92d857d5eabf29878f2fd730a62
      c99f9d7a
  32. 11 Apr, 2011 1 commit
  33. 21 Mar, 2011 1 commit