summaryrefslogtreecommitdiff
path: root/vpxenc.c
AgeCommit message (Collapse)Author
2020-06-02Add NV12 supportJerome Jiang
Change-Id: Ia2a8221a156e0882079c5a252f59bc84d8f516b1
2019-04-29vp8cx.h,vpxenc: add note about alt ref rangesJames Zern
BUG=webm:1597 Change-Id: I56345ec621a06dfe1eae7f205874f34bfb40e6e5
2019-04-23Revert "Add VPX_TUNE_SSIM and VPX_TUNE_PSNR enums"Sai Deng
This reverts commit 1d8d8f562bf382e47071bb38d13b7ded366820af. Reason for revert: change the api names will break existing code. Original change's description: > Add VPX_TUNE_SSIM and VPX_TUNE_PSNR enums > > Change-Id: I3df5af2c60b774e6d395062077542c52db868236 TBR=jingning@google.com,builds@webmproject.org,sdeng@google.com Change-Id: Ic94c19739f595f4544e8b68892ab9d9c1bbccd79 No-Presubmit: true No-Tree-Checks: true No-Try: true
2019-04-23Add VPX_TUNE_SSIM and VPX_TUNE_PSNR enumssdeng
Change-Id: I3df5af2c60b774e6d395062077542c52db868236
2019-03-29update .clang-format for version clang-7.0.1 update.Hien Ho
added files that are affected by clang-format version 7. BUG=b/120815481 Change-Id: I40662ce962e4f4b1fcdf183b700f85cc5c0f9f82
2019-03-05vp9: map speed > 9 to speed 9.Jerome Jiang
Report warning in example encoder. Change-Id: Iec4cdffce9faa65241756fbdac498214c8b93cc1
2019-02-11Test decode and find mismatch in vp9 svc example encoder.Jerome Jiang
Also write it to opsnr.stt when internal stats is enabled. Removed some redundant code in vpxenc.c and vp9cx_set_ref.c Change-Id: I3700137fff0be92a23e4ab75713db72da1dc4076
2019-01-30add y4m support to vp9 example encoders.Jerome Jiang
vp9_spatial_svc_encoder and vpx_temporal_svc_encoder. Change-Id: I8dfa1dfad83c83a26ddac4e7c57b5f1ff161e588
2018-12-21vpx{dec,enc}: resolve missing declarationsJohann
BUG=webm:1584 Change-Id: I81e53e579e6fd22b7b21f432256abbe91bf77b15
2018-12-19vpxenc : fix misleading documentation about sharpness.Jim Bankoski
Change-Id: I792c178736a9fc02a84aa83f351e12b7227259b0
2018-08-14Add vpxenc control to turn on/off tpl modelJingning Han
The default is set to turn on the temporal dependency model at speed 0. Use --enable-tpl to control turning it on/off when calling vpxenc. Change-Id: I61614cd8100ae57dc01fd46b2a69c5b67287f18a
2018-08-04vpxenc: replace uint16 with uint16_tMirko Bonadei
libyuv r1714 disables non-POSIX types by default: 55f5d91f Disable old int types by default. Change-Id: Ia7086516b0d53d0ff3974e545d41f8b502aaec0d
2018-07-24Improve help message for arnr-typeYaowu Xu
BUG=webm:1346 Change-Id: Ia6c1cee3704a6b44515d883b4d0632ac567bc9a2
2018-01-12clang-format v5.0.0 vpxenc.cJohann
Treat the formatted string as one distinct parameter to fprintf Change-Id: I62cfd5657c4cefc6b3fa45247ba9f33515a292b1
2018-01-11adopt some clang 5.0.0 formattingJohann
At least the changes that don't conflict with 4.0.1 Change-Id: I9b6a7c14dadc0738cd0f628a10ece90fc7ee89fd
2017-11-28vpx{enc,dec}: add --helpJames Zern
only output short usage to stderr on error, with --help use stdout Change-Id: I7089f3bca829817e14b14c766f4f3eaee6f54e5c
2017-11-13New content type to improve grain retention.paulwilkins
For new VP9 only content type adjust the rate distortion and ARF filter based on the relative spatial variance of the source and reconstruction. In regards to the RD loop the method favors modes where the reconstruction variance is similar to the source variance. However it is currently only applied to regions where the source variance is quite low. For very low variance blocks it applies a further bias against intra coding and large prediction block sizes (the later in particular limit the usefulness of the loop filter). The final part of this change is to lower the strength of the ARF filter for blocks where the source has very low spatial variance, to encourage some low amplitude texture or noise to pass through the filter. This change improves the retention of film grain and fine noise / texture in spatially flat regions, but as expected causes a significant drop in PSNR on many clips. This is to be expected because similar but misaligned noise or texture will give a lower PSNR than a flat noise free reconstruction. However, it is worth noting that most clips show a strong gain in FAST SSIM. The features are enabled on the vpxenc command line by setting --tune-content=film. VPX_ENCODER_ABI_VERSION bumped for this change and cvbr. Change-Id: I26a4e4edfa3dc5cacead82fa701fe7a9118ccd0a
2017-11-08CVBR command line option.paulwilkins
Added command line control of Corpus VBR. The new corpus vbr mode is a variant of standard VBR (end-usage=0) where the complexity distribution mid point is passed in rather than calculated for a specific clip or chunk. The new variant is enabled by setting a new command line parameter --corpus-complexity to a zero value. Omitting this parameter or setting it to 0 will cause the codec to use standard vbr mode. The correct value for a given corpus needs to be derived experimentally using a training set such that the average rate for the corpus is close to the target value. For example our using our low res test set with upper and lower vbr limits of 50%-150% and a corpus complexity value of 650 gives a similar average data rate across the set to using standard vbr. However, with the corpus mode easier clips will be allocated fewer bits and harder clips more bits rather than having the same rate target for all. Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
2017-09-14VP9 level targeting: add a new AUTO modeHui Su
In the new AUTO mode, restrict the minimum alt-ref interval and max column tiles adaptively based on picture size, while not applying any rate control constraints. This mode aims to produce encodings that fit into levels corresponding to the source picture size, with minimum compression quality lost. However, the bitstream is not guaranteed to be level compatible, e.g., the average bitrate may exceed level limit. BUG=b/64451920 Change-Id: I02080b169cbbef4ab2e08c0df4697ce894aad83c
2017-09-01apply clang-formatclang-format
Change-Id: If4c3e8a396d0fcb304f407b44e28cac3219f038c
2017-02-27vp9: Rename new_mt to row_mtVignesh Venkatasubramanian
new_mt is a very generic name that will get obsolete soon enough. Since this is exposed as a codec control, renaming it to row_mt to signify row level paralellism. Also renaming the ETHREAD_BIT_MATCH codec control to ROW_MT_BIT_EXACT. Change-Id: Ic7872d78bb3b12fb4cf92ba028ec8e08eb3a9558
2017-01-24Multi-threading of first pass stats collectionRanjit Kumar Tulabandu
(yunqingwang) 1. Rebased the patch. Incorporated recent first pass changes. 2. Turned on the first pass unit test. Change-Id: Ia2f7ba8152d0b6dd6bf8efb9dfaf505ba7d8edee
2016-12-22Fix compile warnings for target=armv7-android-gccJerome Jiang
Fix compile warnings about implicit type conversion for target=armv7-android-gcc in vpxenc.c. BUG=webm:1348 Change-Id: I9fbabd843512f2a1a09f4bb934cd091e834eed9c
2016-10-19vp8: Add control for gf boost for 1 pass cbr.Marco
Control already exists for vp9, adding it to vp8. Usage is only when error_resilient is off. Added a datarate unittest for non-zero boost. Change-Id: I4296055ebe2f4f048e8210f344531f6486ac9e35
2016-09-15apply clang-formatclang-format
Change-Id: I501597b7c1e0f0c7ae2aea3ee8073f0a641b3487
2016-09-13webmenc: remove unused 'fps' parameterJohann
Cleans -Wextra/-Wunused-parameter warning: warning: unused parameter ‘fps’ Change-Id: Ia5f9338f11ae8d0708a87c6d4e7d7e924fc3b19b
2016-08-24Add --alt-ref-aq=<int> optionYury Gitman
In the future this option will activate adaptive quantization special for altref frames. Encoder will create the adaptive quantization map on the basis of lookahead buffers similarity which is the estimate of the future motion compensation performance. Change-Id: Ia0088b3babb0f9a4899c79d8d819947ba5a03df2
2016-07-19top-level: apply clang-formatclang-format
Change-Id: Ibd5395bf8956a80f7c0df4d539c7a42c927a1fc7
2016-07-18vp9: Allow usage of lookahead for real-time, 1 pass vbr.Marco
Allow usage of lookahead for VBR in real-time mode, for 1 pass vbr. Current usage is for fast checking of future scene cuts/changes, and adjusting rate control (gf interval and active_worst/target size). Added unittests (datarate) for 1 pass vbr mode, with non-zero lag. Added an experimental option to limit QP based on lookahead. Overall positive gain in metrics on ytlive set: avgPNSR/SSIM up on average ~1-3%; several clips up by 5, 7%. Change-Id: I960d57dfc89de121c4824b9a9bf88d2814e74b56
2016-06-17remove vp10James Zern
development has moved to the nextgenv2 branch and a snapshot from here was used to seed aomedia BUG=b/29457125 Change-Id: Iedaca11ec7870fb3a4e50b2c9ea0c2b056a0d3c0
2016-05-10Add VP9 encoder API for level specification.hui su
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
2016-04-25TODO cleanup: s/EbmlGlobal/WebmOutputContext/Vignesh Venkatasubramanian
This brings the struct's name in line with WebmInputContext. Change-Id: I1a1c7ae60b006ae5de8253177d6d996f5867866d
2016-03-22Prevent encoder crash caused by row tile dependenciesYunqing Wang
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
2016-02-25vp9: set kf_max_dist to a reasonable default (128)James Zern
the same as vp8, with the same reasoning from: 2a0d7b1 Reduce the default kf_max_dist to 128. see also: https://trac.ffmpeg.org/ticket/4904 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815673 + restore vpxenc behavior of taking the library default rather than forcing 5s This change also exposes an issue with one-pass svc in cbr mode, keep the old default in datarate_test.cc for now. Change-Id: Id6d1244f42490b06fefc1a7b4e12a423a1f83e88
2016-02-11vpxenc: quiet unused param warningJames Zern
Change-Id: Ib6ed1b8c03f6c269f8d667b21b895b35363cee9e
2016-02-02Add high bit depth args to arg listhui su
So that their usage info. will show up with --help. Change-Id: I8542240dcc98e8be29ac63d081f5abb932627cbf
2016-01-18Use input framerate as timebase if none was explicitly specified.Ronald S. Bultje
After patch: $ vpxenc tennis_sif.y4m --end-usage=q -q 20 -o x.ivf --ivf --codec=vp9 --limit=30 $ ffmpeg -i x.ivf -i tennis_sif.y4m -lavfi psnr -f null - [..] [Parsed_psnr_0 @ 0x7f8913c21e40] PSNR y:43.270594 u:46.300362 v:47.011172 average:44.097994 min:43.460704 max:52.509271 Before patch: $ vpxenc tennis_sif.y4m --end-usage=q -q 20 -o x.ivf --ivf --codec=vp9 --limit=30 $ ffmpeg -i x.ivf -i tennis_sif.y4m -lavfi psnr -f null - [..] [Parsed_psnr_0 @ 0x7fbdaac22780] PSNR y:27.427366 u:41.505376 v:36.853477 average:28.990890 min:22.219454 max:52.509271 $ ffmpeg -i x.ivf -f rawvideo x.yuv $ ffmpeg -f rawvideo -vcodec rawvideo -video_size 352x240 -framerate 29.97 -i x.yuv -i tennis_sif.y4m -lavfi psnr -f null - [..] [Parsed_psnr_0 @ 0x7fadf9e013a0] PSNR y:43.270594 u:46.300362 v:47.011172 average:44.097994 min:43.460704 max:52.509271 Change-Id: Ifac2d6c2ff8379b2d318fe5cfe4be0bf1bc9f27f
2016-01-13Adding an aq mode for 360 videosDebargha Mukherjee
Different quality levels are used for different regions in the frame depending on how far they are vertically from the center. Specifically, three segments are used based on the mi_row index with respect number to the number of mi_rows in the frame. Change-Id: Ifc8b777bc58ea8521dffc4640360c67d99f8d381
2015-12-16vpxenc: don't warn about libwebm availability if writing IVF.Ronald S. Bultje
Change-Id: I1a9635a9948458e6c83f5b58764b7e720d98e2ea
2015-10-29Specify feasible parameter values for lossless modehui su
Change-Id: I53d9719dcb81fa83fe3c920a552db5a0f1cacefa
2015-09-29vpxenc: Allow non i420 input for VP10.Tom Finegan
BUG=https://code.google.com/p/webm/issues/detail?id=1066 Change-Id: I3bd26a516ef3d2742c523af570f639f9312df6df
2015-08-21vpxenc: fix DECODER ifdefJames Zern
CONFIG_VP10_ENCODER -> CONFIG_VP10_DECODER Change-Id: I6f1a798835acc4ef66bd2c5d6ffb02247c74b1d6
2015-08-17create vp10_arg_ctrl_maphui su
Change-Id: Ibe49acb022f1d557ffccb91e7bd2558870ff1a0b
2015-08-17remove unused high-bit-depth args from arg listhui su
Change-Id: I8373a0e980aaaa0d0cab8b2e69d1a897ff5aec2d
2015-08-14Remove vp10's build dependency on vp9Yaowu Xu
CONFIG_VP9_HIGHBITDEPTH is currently used by both vp9 and vp10, but in many place outside vp9/vp10, the macro was used in conjunction of CONFIG_VP9. This created a dependency on vp9 for vp10 to build. This commit removes the dependency by use CONFIG_VP9_HIGHBITDEPTH only in these places. Change-Id: I8cc007fc9cf132394c6498ce6759e606b64a6ad0
2015-08-12Add vpxenc help infoYaowu Xu
1. information on --test-decode 2. vp10 specific parameters, currently shared with vp9 Change-Id: Ida4b691052441e68b9352746988027e5a2a26f48
2015-08-12Fix high bit depth in vp10 codebaseJingning Han
Change-Id: Iacbfac29898ac7954eb6375e83873dbb7390fd47
2015-08-11Fork VP9 and VP10 codebaseJingning Han
This commit folks the VP9 and VP10 codebase and makes libvpx support VP8, VP9, and VP10. Change-Id: I81782e0b809acb3c9844bee8c8ec8f4d5e8fa356
2015-07-06Expose params min-gf-interval/max-gf-intervalDebargha Mukherjee
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
2015-06-05vpxenc: relocate vp8/vp9 only optionsJames Zern
move them under their respective config check to avoid some unused variable warnings when disabled Change-Id: Ic5e5280cf1bc1f56e8349676f0bedae4acef34ea