1. 12 May, 2016 1 commit
  2. 10 May, 2016 1 commit
    • hui su's avatar
      Add VP9 encoder API for level specification. · be3f0698
      hui su authored
      Add control API VP9E_SET_TARGET_LEVEL that allows the encoder to
      control the output bitstream level and/or keep level related
      statistics.
      
      Usage:
                     255         do not care about level (default)
                     0           keep level related stats only
                     10          target for level 1
                     11          target for level 1.1
                     .
                     .
                     .
                     62          target for level 6.2
      
      Usage for vpxenc:
      
      --target-level=0/255/10/11...
      
      Change-Id: I31d1aeca19358b893e7577b4e63748c8e614034a
      be3f0698
  3. 23 Mar, 2016 1 commit
  4. 22 Mar, 2016 1 commit
    • Yunqing Wang's avatar
      Prevent encoder crash caused by row tile dependencies · dc5f7712
      Yunqing Wang authored
      In multi-thread case, the encoder may crash if using encoder option
      tile-rows > 0. To prevent that, force tile-rows=0 in this situation.
      This is a workaround for WebM issue 1095:
      https://bugs.chromium.org/p/webm/issues/detail?id=1095
      
      The further fix can be done by adding synchronizations after a tile
      row is encoded. But this will hurt multi-threaded encoder performance.
      So, it is recommended to use tile-rows=0 while encoding with threads
      > 1.
      
      Change-Id: I656cbcc200f8d0410d09530e7981ad8f32fe7bc9
      dc5f7712
  5. 13 Mar, 2016 1 commit
    • Johnny Klonaris's avatar
      Allows sub-second frame rates in vp9 · 76108b42
      Johnny Klonaris authored
      This is the identical change submitted for vp8 here:
      https://chromium-review.googlesource.com/#/c/274107/
      
      Tested this change on Mac OSX (10.10) and Linux
      (Linux Mint 17 / Ubuntu 14.04) and in both cases:
      
      - downloaded and compiled latest source for libvpx and ffmpeg
      - confirmed ffmpeg would build sub-second frame rate webm files
        via the previous patch
      - confirmed ffmpeg would *not* build fps < 1 for vp9
      - made this change, recompiled libvpn and ffmpeg
      - confirmed ffmpeg would now create the same webm with
        fps < 1
      - confirmed the resulting file would play and was vp9 (e.g.
        would not play in Firefox (Linux version complained it was
        VP9 but mostly could play it) or older vlc, etc., but does
        play just fine in Google Chrome and a newer version of vlc.
      
      Sorry I didn't catch this last time - but this seems a solid
      change and it's handy to be able to create frame rates
      less than one second.
      
      -jk
      
      Change-Id: I38fa32148de8c4c359f228cf08b9a4b83b5a52fb
      76108b42
  6. 25 Feb, 2016 1 commit
  7. 17 Feb, 2016 2 commits
    • James Zern's avatar
      vp9,encoder: relocate setjmp · 73f45fcf
      James Zern authored
      move to encoder_encode() as vp9_get_compressed_data() allocates data and
      would require some modification to make its error return meaningful.
      
      Change-Id: I8ddc390a1441afd0ff937842fa4ad1053c956133
      73f45fcf
    • James Zern's avatar
      vp9_cx_iface,encode: remove redundant cpi check · 0b9925cc
      James Zern authored
      this is allocated in init(), a NULL pointer on encode() should be
      treated as a failure.
      
      Change-Id: I3f55ea4a98be616bb5ab74d95ce4a3d6262e734a
      0b9925cc
  8. 23 Nov, 2015 1 commit
  9. 17 Oct, 2015 1 commit
  10. 16 Oct, 2015 1 commit
  11. 12 Oct, 2015 1 commit
  12. 06 Oct, 2015 1 commit
    • Marco's avatar
      Add first_spatial_layer_to_encode to SVC. · 7266bedc
      Marco authored
      Use the existing VP9_SET_SVC control to set the
      first spatial layer to encode.
      
      Since we loop over all spatial layers inside the encoder, the
      setting of spatial_layer_id via VP9_SET_SVC has no relevance.
      Use it instead to set the first_spatial_layer_to_encode,
      which allows an application to skip encoding lower layer(s).
      
      Change only affects the 1 pass CBR SVC.
      
      Change-Id: I5d63ab713c3e250fdf42c637f38d5ec8f60cd1fb
      7266bedc
  13. 26 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      vp9/10: improve support for render_width/height. · 812945a8
      Ronald S. Bultje authored
      In the decoder, map this to the output variable vpx_image_t.r_w/h.
      This is intended as an improved version of VP9D_GET_DISPLAY_SIZE,
      which doesn't work with parallel frame decoding. In the encoder,
      map this to a codec control func (VP9E_SET_RENDER_SIZE) that takes
      a w/h pair argument in a int[2] (identical to VP9D_GET_DISPLAY_SIZE).
      
      Also add render_size to the encoder_param_get_to_decoder unit test.
      
      See issue 1030.
      
      Change-Id: I12124c13602d832bf4c44090db08c1009c94c7e8
      812945a8
  14. 17 Sep, 2015 1 commit
    • Marco's avatar
      Add SVC codec control to set frame flags and buffer indices. · 730cdefd
      Marco authored
      Add SVC codec control to set the frame flags and buffer indices
      for each spatial layer of the current (super)frame to be encoded.
      This allows the application to set (and change on the fly) the
      reference frame configuration for spatial layers.
      
      Added an example layer pattern (spatial and temporal layers)
      in vp9_spatial_svc_encoder for the bypass_mode using new control.
      
      Change-Id: I05f941897cae13fb9275b939d11f93941cb73bee
      730cdefd
  15. 16 Sep, 2015 1 commit
    • Ronald S. Bultje's avatar
      Add support for color-range. · eeb5ef0a
      Ronald S. Bultje authored
      In decoder, export (eventually) into vpx_image_t.range field. In
      encoder, use oxcf->color_range to set it (same way as for
      color_space).
      
      See issue 1059.
      
      Change-Id: Ieabbb2a785fa58cc4044bd54eee66f328f3906ce
      eeb5ef0a
  16. 14 Jul, 2015 1 commit
    • Debargha Mukherjee's avatar
      Fixes part of merge regression from adding arf parameters. · 3c524488
      Debargha Mukherjee authored
      From Change  Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
      There is still an issue relating to one animated test clip with repeat
      patterns where this change effectively increase the default  maximum
      arf interval by +1. This can be examined seperately.
      
      Change-Id: Idd01d5480fc45202d8a059a0c3afc0997cc5bdd1
      3c524488
  17. 06 Jul, 2015 1 commit
    • Debargha Mukherjee's avatar
      Expose params min-gf-interval/max-gf-interval · 98526433
      Debargha Mukherjee authored
      Adds two new vp9 parameters --min-gf-interval and --max-gf-interval
      to enable testing based on frequency of alt-ref frames.
      
      Also adds a unit-test to test enforcement of min-gf-interval.
      
      For both these parameters the default value is 0, which indicates
      they are picked by the encoder, based on resolution and framerate
      considerations. If they are greater than zero, the specified
      parameter is honored.
      
      (Additional note by paulwilkins)
      Note that there is a slight oddity in that key frames are also GFs and
      considered part of  GF only group. However they are treated as not
      being part of an arf group because for arf groups the previous GF is
      assumed to be the terminal or overlay frame for the previous group.
      
      (end note)
      
      Change-Id: Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
      98526433
  18. 04 Jun, 2015 1 commit
    • Marco's avatar
      Remove ABI check for 1 pass CBR SVC. · a8c5ab2c
      Marco authored
      Remove the ABI check for the controls needed for SVC 1 pass CBR mode.
      Bump up the ABI version.
      
      Change-Id: I35b79ee010e14af83c6d1e801d574deaaa2fc7eb
      a8c5ab2c
  19. 02 Jun, 2015 1 commit
    • Marco's avatar
      Vidyo patch: Rate control for SVC, 1 pass CBR mode. · c139b81a
      Marco authored
      -Make Rate control work for SVC 1 pass CBR mode.
      -Added temporal layering mode.
      -Fixed bug in non-rd variance partition.
      -Modified/updated the sample encoders (vp9_spatial_svc_encoder, vpx_temporal_svc_encoder).
      -Added datarate unittest(s) for 1 pass CBR SVC.
      
      Change-Id: Ie94b1b68a56ea1267b5087c625e5df04def2ee48
      c139b81a
  20. 24 Mar, 2015 1 commit
  21. 20 Mar, 2015 1 commit
  22. 19 Mar, 2015 1 commit
    • James Zern's avatar
      put spatial svc behind an ABI check · 18613408
      James Zern authored
      this removes the CONFIG_* checks from public headers, but means
      '--enable-experimental --enable-spatial-svc' builds will fail without a
      local change to the ABI in vpx_encoder.h. this should be all right for
      testing this experiment.
      
      Change-Id: Ief55e7b9d1e8332cfce990275e04c29b30af0c4a
      18613408
  23. 16 Mar, 2015 1 commit
  24. 13 Mar, 2015 2 commits
    • Yaowu Xu's avatar
      Provide information on codec controls · 268f1066
      Yaowu Xu authored
      The commit updates the comments in vp8cx.h to make it clear which
      codec support each of codec control functions.
      
      Change-Id: Ibf876e289d4325bbb61ce19311da60d384624c2f
      268f1066
    • Yaowu Xu's avatar
      Rename a vp9 only control with vp9e prefix · 41652906
      Yaowu Xu authored
      Also updated comments and doc to make it clear that the control is
      supported in VP9 only.
      
      Change-Id: I6f120b65135fc1185695e9e3dc29fbe0d430824b
      41652906
  25. 05 Mar, 2015 1 commit
  26. 04 Mar, 2015 1 commit
  27. 03 Mar, 2015 1 commit
  28. 26 Feb, 2015 1 commit
  29. 23 Feb, 2015 1 commit
    • paulwilkins's avatar
      Account for rate error in GF group Q calculation. · 8d7f53f0
      paulwilkins authored
      When GF group adaptive maxQ is enabled this patch accounts
      somewhat for accumulated error in the rate control.
      
      This improves accuracy quite a bit on many clips especially
      when there is  overshoot.
      
      Examples when the overshoot and undershoot command line
      parameters are set to 100:
      
      Hall @ 1200 overshoot is reduced from 67-24%.
      Akiyo @ 400 undershoot is reduced from 28%-15%.
      
      Setting a lower value for undershoot or overshoot still
      reduces the error further.
      
      Impact on metrics is mixed with some gains in average psnr
      but generally a little lower (e.g. 0.5%) on overall and ssim.
      
      The GF group adaptation is still off by default in this patch.
      Compared to with the head, enabling this mode now gives
      big average psnr gains on the YT sets (e.g. YT_HD >11.2%),
      a drop in overall PSNR (YT-HD 3.9%) and a smaller drop or
      neutral for SSIM.
      
      Change-Id: If4b32cd0740d3fb941317b374f9c2951954eee90
      8d7f53f0
  30. 03 Feb, 2015 1 commit
  31. 31 Jan, 2015 1 commit
    • hkuang's avatar
      Try again to merge branch 'frame-parallel' into master branch. · be6aeada
      hkuang authored
      In frame parallel decode, libvpx decoder decodes several frames on all
      cpus in parallel fashion. If not being flushed, it will only return frame
      when all the cpus are busy. If getting flushed, it will return all the
      frames in the decoder. Compare with current serial decode mode in which
      libvpx decoder is idle between decode calls, libvpx decoder is busy
      between decode calls.
      
      Current frame parallel decode will only speed up the decoding for frame
      parallel encoded videos. For non frame parallel encoded videos, frame
      parallel decode is slower than serial decode due to lack of loopfilter
      worker thread.
      
      There are still some known issues that need to be addressed. For example:
      decode frame parallel videos with segmentation enabled is not right sometimes.
      
      * frame-parallel:
        Add error handling for frame parallel decode and unit test for that.
        Fix a bug in frame parallel decode and add a unit test for that.
        Add two test vectors to test frame parallel decode.
        Add key frame seeking to webmdec and webm_video_source.
        Implement frame parallel decode for VP9.
        Increase the thread test range to cover 5, 6, 7, 8 threads.
        Fix a bug in adding frame parallel unit test.
        Add VP9 frame-parallel unit test.
        Manually pick "Make the api behavior conform to api spec." from master branch.
        Move vp9_dec_build_inter_predictors_* to decoder folder.
        Add segmentation map array for current and last frame segmentation.
        Include the right header for VP9 worker thread.
        Move vp9_thread.* to common.
        ctrl_get_reference does not need user_priv.
        Seperate the frame buffers from VP9 encoder/decoder structure.
        Revert "Revert "Revert "Revert 3 patches from Hangyu to get Chrome to build:"""
       Conflicts:
             test/codec_factory.h
             test/decode_test_driver.cc
             test/decode_test_driver.h
             test/invalid_file_test.cc
             test/test-data.sha1
             test/test.mk
             test/test_vectors.cc
             vp8/vp8_dx_iface.c
             vp9/common/vp9_alloccommon.c
             vp9/common/vp9_entropymode.c
             vp9/common/vp9_loopfilter_thread.c
             vp9/common/vp9_loopfilter_thread.h
             vp9/common/vp9_mvref_common.c
             vp9/common/vp9_onyxc_int.h
             vp9/common/vp9_reconinter.c
             vp9/decoder/vp9_decodeframe.c
             vp9/decoder/vp9_decodeframe.h
             vp9/decoder/vp9_decodemv.c
             vp9/decoder/vp9_decoder.c
             vp9/decoder/vp9_decoder.h
             vp9/encoder/vp9_encoder.c
             vp9/encoder/vp9_pickmode.c
             vp9/encoder/vp9_rdopt.c
             vp9/vp9_cx_iface.c
             vp9/vp9_dx_iface.c
      
      This reverts commit a18da976.
      
      Change-Id: I361442ffec1586d036ea2e0ee97ce4f077585f02
      be6aeada
  32. 29 Jan, 2015 1 commit
  33. 23 Jan, 2015 1 commit
  34. 21 Jan, 2015 1 commit
  35. 14 Jan, 2015 1 commit
    • Yaowu Xu's avatar
      Add encoder control for setting color space · e94b415c
      Yaowu Xu authored
      This commit adds encoder side control for vp9 to set color space info
      in the output compressed bitstream.
      
      It also amends the "vp9_encoder_params_get_to_decoder" test to verify
      the correct color space information is passed from the encoder end to
      decoder end.
      
      Change-Id: Ibf5fba2edcb2a8dc37557f6fae5c7816efa52650
      e94b415c
  36. 09 Jan, 2015 2 commits
    • Yaowu Xu's avatar
      Added plumbing for setting color space · ce52b0f8
      Yaowu Xu authored
      Change-Id: If64052cc6e404abc8a64a889f42930d14fad21d3
      ce52b0f8
    • Yaowu Xu's avatar
      Fix comments and color format · ecbca31a
      Yaowu Xu authored
      Replaced "color space" with "color format" in comments where color
      sampling format is concerned, so to differentiate from the concept
      defined in COLOR_SPACE.
      
      Change-Id: I8c935034c166b24307a99352dab1686531276bb8
      ecbca31a
  37. 18 Dec, 2014 1 commit