Update libvpx to v1.11.0
Categories
(Core :: WebRTC, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox101 | --- | fixed |
People
(Reporter: johann.koenig, Assigned: johann.koenig)
References
Details
Attachments
(3 files)
Steps to reproduce:
libvpx was last updated to v1.8.2 in bug #1525393
There have since been a few new releases:
2021-09-27 v1.11.0 "Smew Duck"
This maintenance release adds support for VBR mode in VP9 rate control
interface, new codec controls to get quantization parameters and loop filter
levels, and includes several improvements to NEON and numerous bug fixes.
-
Upgrading:
New codec control is added to get quantization parameters and loop filter
levels.VBR mode is supported in VP9 rate control library.
-
Enhancement:
Numerous improvements for Neon optimizations.
Code clean-up and refactoring.
Calculation of rd multiplier is changed with BDRATE gains. -
Bug fixes:
Fix to overflow on duration.
Fix to several instances of -Wunused-but-set-variable.
Fix to avoid chroma resampling for 420mpeg2 input.
Fix to overflow in calc_iframe_target_size.
Fix to disallow skipping transform and quantization.
Fix some -Wsign-compare warnings in simple_encode.
Fix input file path in simple_encode_test.
Fix valid range for under/over_shoot pct.
2021-03-09 v1.10.0 "Ruddy Duck"
This maintenance release adds support for darwin20 and new codec controls, as
well as numerous bug fixes.
-
Upgrading:
New codec control is added to disable loopfilter for VP9.New encoder control is added to disable feature to increase Q on overshoot
detection for CBR.Configure support for darwin20 is added.
New codec control is added for VP9 rate control. The control ID of this
interface is VP9E_SET_EXTERNAL_RATE_CONTROL. To make VP9 use a customized
external rate control model, users will have to implement each callback
function in vpx_rc_funcs_t and register them using libvpx API
vpx_codec_control_() with the control ID. -
Enhancement:
Use -std=gnu++11 instead of -std=c++11 for c++ files. -
Bug fixes:
Override assembler with --as option of configure for MSVS.
Fix several compilation issues with gcc 4.8.5.
Fix to resetting rate control for temporal layers.
Fix to the rate control stats of SVC example encoder when number of spatial
layers is 1.
Fix to reusing motion vectors from the base spatial layer in SVC.
2 pass related flags removed from SVC example encoder.
2020-07-29 v1.9.0 "Quacking Duck"
This release adds support for NV12, a separate library for rate control, as
well as incremental improvements.
-
Upgrading:
NV12 support is added to this release.
A new interface is added for VP9 rate control. The new library libvp9rc.a
must be linked by applications.
Googletest is updated to v1.10.0.
simple_encode.cc is compiled into a new library libsimple_encode.a with
CONFIG_RATE_CTRL. -
Enhancement:
Various changes to improve VP9 SVC, rate control, quality and speed to real
time encoding. -
Bug fixes:
Fix key frame update refresh simulcast flexible svc.
Fix to disable_16x16part speed feature for real time encoding.
Fix some signed integer overflows for VP9 rate control.
Fix initialization of delta_q_uv.
Fix condition in regulate_q for cyclic refresh.
Various fixes to dynamic resizing for VP9 SVC.
Actual results:
$ cd media/libvpx
$ ./update.py --commit v1.11.0
https://chromium.googlesource.com/webm/libvpx/+archive/v1.11.0.tar.gz
patching file libvpx/vp8/encoder/block.h
patching file libvpx/vp8/vp8_cx_iface.c
Hunk #1 succeeded at 921 (offset 66 lines).
patching file libvpx/vp9/vp9_cx_iface.c
Hunk #1 succeeded at 1353 with fuzz 1 (offset 224 lines).
patching file libvpx/vpx_dsp/vpx_dsp.mk
patching file libvpx/vpx_ports/vpx_ports.mk
Hunk #1 succeeded at 23 (offset 2 lines).
$ ./generate_sources_mozbuild.shCreate temporary directory.
Generate config files.
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 0
#define HAVE_UNISTD_H 0
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 0
#define HAVE_UNISTD_H 1
Remove temporary directory.
Create temporary directory.
Generate config/linux/x64/_rtcd.h files.
Generate config/linux/ia32/_rtcd.h files.
Generate config/mac/x64/_rtcd.h files.
Generate config/mac/ia32/_rtcd.h files.
Generate config/win/x64/_rtcd.h files.
Generate config/win/ia32/_rtcd.h files.
Generate config/linux/arm/_rtcd.h files.
Generate config/linux/arm64/_rtcd.h files.
Generate config/win/aarch64/_rtcd.h files.
Generate config/generic/_rtcd.h files.
Prepare Makefile.
Generate X86_64 source list.
Generate IA32 source list.
Generate ARM source list.
Generate ARM64 source list.
Generate generic source list.
Remove temporary directory.
Expected results:
0:20.92 Your build was successful!
Assignee | ||
Comment 1•3 years ago
|
||
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
Adjust for minor offsets since v1.8.2
Depends on D140925
Updated•3 years ago
|
Assignee | ||
Comment 3•3 years ago
|
||
I'm not sure how to remove the "Changes Planned" tags from the patches. They are complete as far as I can tell.
Comment 4•3 years ago
|
||
Just want to mention that we usually use ffvpx or HW platform decoder (Windows, MacOS) for decoding vp8 and vp9. libvpx is only a back up option for us, and almost no chance to use it AFAIK. (maybe for WebRTC encoding, but I am not sure)
Comment 5•3 years ago
|
||
(In reply to johann.koenig from comment #3)
I'm not sure how to remove the "Changes Planned" tags from the patches. They are complete as far as I can tell.
I think you can change this through the Add Action
menu in Phabricator. If you submitted this through MozPhab, there's also a --no-wip
flag I believe.
Assignee | ||
Comment 6•3 years ago
|
||
I believe WebRTC uses it for both encoding and decoding.
Thanks for pointing out the --no-wip flag. I could not find any "Add Action" menu on the site.
Comment 7•3 years ago
|
||
I check our codebase again. For encoding, we use platform encoder on Windows, MacOS and Android [1]. So it seems to me that only on Linux we would use libvpx. For decoding, we would also try to get the platform decoder first [2]. However, currently decoding for vpx is controlled by this pref [3] which is only enabled on Nightly. So on Beta and Release, we do use libvpx for vpx decoding for WebRTC.
[1]
Creating platform encoder in WebRTC
https://searchfox.org/mozilla-central/rev/b0779bcc485dc1c04334dfb9ea024cbfff7b961a/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp#163
Platform encoder
https://searchfox.org/mozilla-central/source/dom/media/platforms/wmf/WMFEncoderModule.cpp#18
https://searchfox.org/mozilla-central/source/dom/media/platforms/apple/AppleEncoderModule.cpp#18
https://searchfox.org/mozilla-central/source/dom/media/platforms/android/AndroidEncoderModule.cpp#29
[3]
https://searchfox.org/mozilla-central/source/modules/libpref/init/StaticPrefList.yaml#9381-9390
Updated•3 years ago
|
I believe our MediaRecorder also uses a TrackEncoder the uses libvpx. That's a platform agnostic use case we should also keep an eye on for bustages as part of updates. Holding NI while I clear my plate to get time to look at this in more detail.
Is it correct to interpret the patches as?
- Pull new version of libvpx ontop of old version with not further changes.
- Make further changes in the form of updating Mozilla specific patches.
Assignee | ||
Comment 9•3 years ago
|
||
Step 1 included running the script to update the configuration files as well. There were no manual changes to files under media/livpx/livpx
I did specify python3 at the top of update.py because it defaulted to python2 on my system.
Assignee | ||
Comment 10•3 years ago
|
||
This was changed in
https://hg.mozilla.org/mozilla-central/rev/3153ea8804088b11769353a828b1aeb276bdd69b
libvpx became more restrictive about these values here:
https://chromium-review.googlesource.com/c/webm/libvpx/+/2844345/2/vp8/vp8_cx_iface.c
Reset these to the original values which are the same ones used in WebRTC
Comment 11•3 years ago
|
||
Comment 12•3 years ago
|
||
bugherder |
Try run prior to landing: https://treeherder.mozilla.org/jobs?repo=try&revision=1ad7c4d1876f62c3561e663a196f1235fa1c60d8
(the patches there are a little haxxed to get the to apply locally, but are the same code as the ones in phabricator.)
Comment 14•3 years ago
|
||
Comment 15•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/0f7ab2324c82
https://hg.mozilla.org/mozilla-central/rev/615f35e1f3f4
Description
•