1. 11 Sep, 2014 1 commit
  2. 28 Aug, 2014 1 commit
    • Dmitry Kovalev's avatar
      Removing alg_priv from vpx_codec_priv struct. · 73edeb03
      Dmitry Kovalev authored
      In order to understand memory layout consider the declaration of the
      following structs. The first one is a part of our API:
      
      struct vpx_codec_ctx {
        // ...
        struct vpx_codec_priv *priv;
      };
      
      The second one is defined in vpx_codec_internal.h:
      
      struct vpx_codec_priv {
        // ...
      };
      
      The following struct is defined 4 times for encoder/decoder VP8/VP9:
      
      struct vpx_codec_alg_priv {
        struct vpx_codec_priv base;
        // ... 
      };
      
      Private data allocation for the given ctx:
      
      struct vpx_codec_ctx *ctx = <get>
      struct vpx_codec_alg_priv *alg_priv = <allocate>
      ctx->priv = (struct vpx_codec_priv *)alg_priv;
      
      The cast works because vpx_codec_alg_priv has a
      vpx_codec_priv instance as a first member 'base'.
      
      Change-Id: I10d1afc8c9a7dfda50baade8c7b0296678bdb0d0
      73edeb03
  3. 25 Aug, 2014 1 commit
  4. 20 Aug, 2014 1 commit
  5. 12 Aug, 2014 1 commit
  6. 31 Jul, 2014 1 commit
  7. 10 Mar, 2014 1 commit
  8. 13 Feb, 2014 1 commit
  9. 06 Feb, 2014 1 commit
  10. 18 Dec, 2013 1 commit
  11. 17 Sep, 2013 1 commit
    • Adrian Grange's avatar
      Modified resize unit test to output test vector · 88c8ff25
      Adrian Grange authored
      Modified the resize unit test so that it optionally
      writes the encoded bitstream to file. The macro
      WRITE_COMPRESSED_STREAM should be set to 1 to enable
      output of the test bitstream; it is set to 0 by default.
      
      Change-Id: I7d436b1942f935da97db6d84574a98d379f57fb1
      88c8ff25
  12. 06 Nov, 2012 1 commit
  13. 17 Jul, 2012 1 commit
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  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. 28 Jun, 2011 1 commit
  22. 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
  23. 17 Feb, 2011 1 commit
    • James Zern's avatar
      documentation: minor cosmetics · f42d52e6
      James Zern authored
      - correct spelling
      - remove explicit file name w/\file (unnecessary when contained in the
        same file and prone to desync)
      
      Change-Id: I68a3960ac5ab84d0f2e5c9b2e29799f26dfccf23
      f42d52e6
  24. 28 Oct, 2010 2 commits
    • Timothy B. Terriberry's avatar
      Eliminate more warnings. · 97b766a4
      Timothy B. Terriberry authored
      This eliminates a large set of warnings exposed by the Mozilla build
       system (Use of C++ comments in ISO C90 source, commas at the end of
       enum lists, a couple incomplete initializers, and signed/unsigned
       comparisons).
      It also eliminates many (but not all) of the warnings expose by newer
       GCC versions and _FORTIFY_SOURCE (e.g., calling fread and fwrite
       without checking the return values).
      There are a few spurious warnings left on my system:
      
      ../vp8/encoder/encodemb.c:274:9: warning: 'sz' may be used
       uninitialized in this function
      gcc seems to be unable to figure out that the value shortcut doesn't
       change between the two if blocks that test it here.
      
      ../vp8/encoder/onyx_if.c:5314:5: warning: comparison of unsigned
       expression >= 0 is always true
      ../vp8/encoder/onyx_if.c:5319:5: warning: comparison of unsigned
       expression >= 0 is always true
      This is true, so far as it goes, but it's comparing against an enum,
       and the C standard does not mandate that enums be unsigned, so the
       checks can't be removed.
      
      Change-Id: Iead6cd561a2afaa3d801fd63f1d8d58953da7426
      97b766a4
    • Timothy B. Terriberry's avatar
      Eliminate more warnings. · c4d7e5e6
      Timothy B. Terriberry authored
      This eliminates a large set of warnings exposed by the Mozilla build
       system (Use of C++ comments in ISO C90 source, commas at the end of
       enum lists, a couple incomplete initializers, and signed/unsigned
       comparisons).
      It also eliminates many (but not all) of the warnings expose by newer
       GCC versions and _FORTIFY_SOURCE (e.g., calling fread and fwrite
       without checking the return values).
      There are a few spurious warnings left on my system:
      
      ../vp8/encoder/encodemb.c:274:9: warning: 'sz' may be used
       uninitialized in this function
      gcc seems to be unable to figure out that the value shortcut doesn't
       change between the two if blocks that test it here.
      
      ../vp8/encoder/onyx_if.c:5314:5: warning: comparison of unsigned
       expression >= 0 is always true
      ../vp8/encoder/onyx_if.c:5319:5: warning: comparison of unsigned
       expression >= 0 is always true
      This is true, so far as it goes, but it's comparing against an enum, and the C
       standard does not mandate that enums be unsigned, so the checks can't be
       removed.
      
      Change-Id: Iaf689ae3e3d0ddc5ade00faa474debe73b8d3395
      c4d7e5e6
  25. 09 Sep, 2010 1 commit
  26. 18 Jun, 2010 1 commit
    • John Koleszar's avatar
      cosmetics: trim trailing whitespace · 94c52e4d
      John Koleszar authored
      When the license headers were updated, they accidentally contained
      trailing whitespace, so unfortunately we have to touch all the files
      again.
      
      Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
      94c52e4d
  27. 14 Jun, 2010 1 commit
  28. 04 Jun, 2010 1 commit
  29. 25 May, 2010 1 commit
    • John Koleszar's avatar
      install includes in DIST_DIR/include/vpx, move vpx_codec/ to vpx/ · b7492341
      John Koleszar authored
      This renames the vpx_codec/ directory to vpx/, to allow applications
      to more consistently reference these includes with the vpx/ prefix.
      This allows the includes to be installed in /usr/local/include/vpx
      rather than polluting the system includes directory with an
      excessive number of includes.
      
      Change-Id: I7b0652a20543d93f38f421c60b0bbccde4d61b4f
      b7492341
  30. 18 May, 2010 1 commit