summaryrefslogtreecommitdiff
path: root/vpx
AgeCommit message (Collapse)Author
2018-05-24vp9-svc: Add max_consec_drop to SVC frame drop.Marco Paniconi
For any spatial, limits the amount of consecutive frame drop. Change-Id: I692d90363f329f571f2b59e12cc680ad2e76065d
2018-05-22vp9-svc: Add full superframe drop mode.Marco Paniconi
This will check for dropping full superframe if any spatial layer is overshooting. Change-Id: Ic656807028ebef5552301b6d10399fbe3a6c890c
2018-04-24vp9-svc: Add GET control to get SVC pattern info.Marco Paniconi
Copy ref frame index in SVC struct after set in encoder. Rename ext_{lst,gld,alt}_fb_idx to {lst,gld,alt}_fb_idx. Bump up ABI version. BUG=webm:1527 Change-Id: I06209040cb83d374030f40b79f0b36b0efe9f97d
2018-04-09vpx_image: remove unused image formatsJames Zern
libvpx only emits: VPX_IMG_FMT_{I420,I422,I440,I444,I42016,I42216,I44016,I44416} and additionally supports YV12 as input. interleaved yuv, rgb and alpha formats are unused. Change-Id: Ie2ab1099e950c6e696f475d46882f5c47a174042
2018-04-09vp9-svc: Make constrained_layer_drop default for svc.Marco Paniconi
Switch the order of constrained and layer drop mode, and keep constrained_layer_drop as the default. Update the svc datarate tests. Change-Id: I764270f7b4964b87b0cd3da6c2f96a628f212a30
2018-03-29VP9 SVC: Add enum type for framedrop_mode.Jerome Jiang
Change-Id: I3d4697b00729553e0860762b9264e29b8a89b9d4
2018-03-27vp9-svc: Add logic to enable for constrained framedrop.Marco Paniconi
Add the logic for the constrained framdrop mode for SVC. Add test case in datarate unittests. Also lower target bitrates in the tests to better test frame dropper. Change-Id: I8ee1b8cb56d835c233ad1fbe0fc1456cb2e7291f
2018-03-26vp9-svc: Allow for setting frame drop thresholds per layer.Marco Paniconi
Add encoder control to set the frame drop thresholds per spatial layer, and add a frame drop mode: 0 = per-layer drop, and 1 = constrained drop mode (a drop on a given layer forces drops to all upper layers). Default is mode 0 (per-layer dropping). Implementation for mode 1 will come in subsequent change. If the control is not used, then the spatial layer frame drop thresholds (water mark) are all equal and set to the value given by the encoder config (oxcf->drop_frames_water_mark). Bump up the ABI version. Change-Id: Id038d4181b86fa98b3d44d026f96d5f344d81629
2018-03-20VP9 SVC: Add control to disable inter layer prediction.Jerome Jiang
Add VP9E_SET_SVC_INTER_LAYER_PRED to disable inter layer (spatial) prediction. 0: prediction on 1: prediction off for all frames 2: prediction off for non key frames Bump up ABI version. Change-Id: I5ab2a96b47e6bef202290fe726bed5f99bd4951f
2018-03-20vp9-svc: Improve frame dropper for spatial layers.Marco Paniconi
SVC frame dropper: modify the logic to allow for individual spatial layers to drop. This removes the constraint that all upper spatial layers must drop when a given spatial layer drops. Add a flag to the pkt to indicate whether a spatial layer is encoded or dropped. This is needed for applications that enable this feature (frame dropping for SVC). For a current spatial layer, if its previous spatial layer is dropped, then disable certain features for that layer: inter-layer prediction, base_mv, partition_reuse, copy partition. Also add the constraint to never drop a spatial layer if its base layer is a key frame. Updates to sample encoder (vp9_spatial_svc_encoder) and the SVC datarate unittests to properly handle frame dropping. Bump up ABI version. Change-Id: I7d14ccf67b8d014a7abfce5ba3989fc623e94067
2018-03-15vp9-svc: Frame dropper for SVC.Marco Paniconi
If a given spatial layer decides to drop, due to the buffer/overshoot conditions for that layer, then drop that current spatial layer and all spatial layers above. In the current implementation the svc frame counter (and hence the pattern for the non-flexible SVC case) are updated on frame drops. Also add last spatial layer encoded to the pkt. This is useful for RTC applications that enable frame dropping for SVC. Update to the SVC datarate tests: enabled frame dropper on all SVC datarate tests, and made a fix to properly set the temporal_layer_id, which works now even on frame drops. Change-Id: If828c193f3cb6b1839803fd52fe9fbbda5b5a039
2018-03-14remove spatial svc experimentJohann
Change-Id: Ifda11caaf992d10f2d93d6cd1d07b79b6047be05
2018-03-13spatial svc: remove vpx_svc_get_messageJohann
Print error messages as they are encountered. This was the default behavior. Removes a static analysis warning regarding the use of strncat: Null pointer argument in call to string length function As this is the only use of strncat in the library, remove it and the associated public function. Change-Id: Id55305c5a4d65f11da88c3a2203ff824200f526f
2018-02-09Reland "Add ROI support for VP9."Jerome Jiang
Extended ROI struct suitable for VP9. ROI input from user is passed into internal struct and applied on every frame (except key frame). Enabled usage of all 4 VP9 segment features (delta_qp, delta_lf, skip, ref_frame) via the ROI map input. Made changes to nonrd_pickmode for the ref_frame feature. Only works for realtime speed >= 5. AQ_MODE needs to be turned off for ROI to take effect. Change example in the sample encoder: vpx_temporal_svc_encoder.c to be suitable for VP9. Add datarate test. Bump up ABI version. BUG=webm:1470 Change-Id: I663b8c89862328646f4cc6119752b66efc5dc9ac
2018-01-29Fix doc comment mismatch in vpx_frame_buffer.hBrion Vibber
When compiling an app using libvpx in Xcode 9.2, a warning is thrown in vpx_frame_buffer.h: "Parameter 'new_size' not found in the function declaration" Switching it to 'min_size' to match the comment text and the callback type definition prototype resolves it. Change-Id: I7a3e4a857c2007c2d0d390e22054d7bc85068aa1
2018-01-24Merge "vpx_codec_enc_init_multi: fix segfault w/vp9"James Zern
2018-01-24Merge "Fix frame sizes in pkt to support spatial layers."Jerome Jiang
2018-01-23vpx_codec_enc_init_multi: fix segfault w/vp9James Zern
vp9 does not support multi-res encoding, the request should not crash. + encode_api_test: unconditionally expose multi-res test vpx_codec_enc_init_multi should fail independent of CONFIG_MULTI_RES_ENCODING if not for the same reason. Change-Id: I44fc58ef70ee4e0e482cb6a5736885f4cb2a8517
2018-01-23Merge "Fix crash invalid params for vp8 multres. Add test."Jerome Jiang
2018-01-22Fix frame sizes in pkt to support spatial layers.Jerome Jiang
Add test for svc frame sizes in pkt. BUG=webm:1485 Change-Id: I983dc229e526d72d22360d7f3016d8358d6beae7
2018-01-22Fix crash invalid params for vp8 multres. Add test.Jerome Jiang
Fix is from the patch in the issue. Release memories allocated before early exit. BUG=webm:1482 Change-Id: I64952af99c58241496e03fa55da09fd129a07c77
2018-01-16vp8dx.h: Add macro for skipping loop filterVignesh Venkatasubramanian
Without this applications cannot use the vpx_codec_control macro for VP9_SET_SKIP_LOOP_FILTER. The tests only cover the underscored version vpx_codec_control_(). Change-Id: I3e6c1888307b76636fdc1a8deae70b5c14238163
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-12-11vp9 svc: Allow denoising next to highest resolution.Jerome Jiang
Denoise 2 spatial layes at most. Add noise sensitivity level 2 for vp9 such that applications can control whether to denoise the second highest spatial layer. Add tests to cover this case. Change-Id: Ic327d14b29adeba3f0dae547629f43b98d22997f
2017-12-06Add frame width & height to frame pkt. Add test.Jerome Jiang
Used to return correct frame width and height when dynamic resizing happens. BUG=webm:1474 Change-Id: Ia2043f7e1635b3821848a67b9b134f47f14b0f3a
2017-11-30decouple spatial-svc from encoder abiJames Zern
this is only meant for testing. along with --enable-experimental --enable-spatial-svc require VPX_TEST_SPATIAL_SVC to be defined rather than bumping the encoder ABI. Change-Id: I7f34d9f60300fa31ccf22e1a4aa619392c391b2e
2017-11-17vp9 svc: fix a few compile warnings.Jerome Jiang
Change-Id: I4cb878600038066513ab73f3658990d1245ff2fb
2017-11-13Merge "vp9 svc: Change conditions on VPX_ENCODER_ABI_VERSION."Jerome Jiang
2017-11-13vp9 svc: Change conditions on VPX_ENCODER_ABI_VERSION.Jerome Jiang
VPX_ENCODER_ABI_VERSION was bumped up in 93e83f. Change-Id: Id5707f9f9db56fa96549bc8f54e1cfa04e7fa4cd
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-10-10Fix alignment in vpx_image without external allocation.Jerome Jiang
This restores behaviors prior to <40c8fde Fix image width alignment. Enable ImageSizeSetting test.>. BUG=b/64710201 Change-Id: I559557afe80d5ff5ea6ac24021561715068e7786
2017-10-05vpx_codec.h: namespace local definesJames Zern
add VPX_ to UNUSED/*DEPRECATED to avoid conflicts with other headers. Change-Id: Ie16bdac3575bc1af57a05d37e65b994370585377
2017-09-28Fix image width alignment. Enable ImageSizeSetting test.Jerome Jiang
BUG=b/64710201 Change-Id: I5465f6c6481d3c9a5e00fcab024cf4ae562b6b01
2017-07-06vp8cx,cosmetics: correct VP9_SET_TILE_COLUMNS docsJames Zern
this has been set to max since: f5c36a5ce VP9: turn on tile-columns and frame-parallel-mode by default ~v1.4.0 Change-Id: Ic796fc05abe73a58700ec50e3f8e72d3462898ec
2017-07-06vp8cx,cosmetics: correct VP9_SET_FRAME_PARALLEL_DECODING docsJames Zern
this has been on by default since: f5c36a5ce VP9: turn on tile-columns and frame-parallel-mode by default ~v1.4.0 Change-Id: I52017ab0157feaf429dce3d9e1af8a53bb5c1b65
2017-05-10vp9: SVC: Fix setting in sample encoder.Marco
For 1 spatial layer case, scaling_num/den was not set properly. Change-Id: I139bf70c6dffde89eed24e435bcb5d98d2029bcd
2017-04-24Make the row based multi-threaded encoder deterministicYunqing Wang
This patch followed allow_exhaustive_searches feature modification and continued to modify the encoder to achieve the determinism in the row based multi-threaded encoding. While row-mt = 1 and using multiple threads, the adaptive feature in encoder was disabled, which gave BDRate gain(at speed 1, -0.6% ~ -0.7%; at speed 2, -0.46% ~ -0.59%), but some encoder speed losses(7% ~ 10% at speed 1 and 3% ~ 6% at speed 2). These speed losses were acceptable considering the speed gains obtained from row-mt. Change-Id: I60d87a25346ebc487a864b57d559f560b7e398bb
2017-04-06VP9 motion vector unit testYunqing Wang
To prevent the motion vector out of range bug, added a motion vector unit test in VP9. In the 4k video encoding, always forced to use extreme motion vectors and also encouraged to use INTER modes. In the decoding, checked if the motion vector was valid, and also checked the encoder/decoder mismatch. The tests showed that this unit test could reveal the issue we saw before. Change-Id: I0a880bd847dad8a13f7fd2012faf6868b02fa3b4
2017-03-16vpx_codec.h: include vpx/*.h -> ./*.hMarco
This matches the other includes and also fixes a compile issue in chromium. Change-Id: I45e00a1454f7ed948aa3b96b04cc5946b1d02985
2017-03-07Merge "tiny_ssim.c : adds y4m support to tiny_ssim."James Bankoski
2017-03-07tiny_ssim.c : adds y4m support to tiny_ssim.Jim Bankoski
Change-Id: I7a13b7e3a1e11ddbe4be3009edf03528e1bc7647
2017-02-28VPX_CODEC_CAP_HIGHBITDEPTH for decoder interfaceChris Cunningham
Moves the def from vpx_encoder.h -> vpx_codec.h. The defined value is changed as part of this move. Adds the value to decoder capabilities when CONFIG_VP9_HIGHBITDEPTH. Change-Id: I7d61fc821cda29f1e32bb9b2b9ffd3d83966e419
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-02-13The bitstream bit match test in multi-threaded encoderYunqing Wang
While the new-mt mode is enabled(namely, allowing to use row-based multi-threading in encoder), several speed features that adaptively adjust encoding parameters during encoding would cause mismatch between single-thread encoded bitstream and multi-thread encoded bitstream. This patch provides a set_control API to disable these features, so that the bit match bitstream is obtained in the unit test. Change-Id: Ie9868bafdfe196296d1dd29e0dca517f6a9a4d60
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
2017-01-12Add decoder getters for the last quantizer.Peter Boström
To be used for frame stats output of vpxdec. Change-Id: I0739a01bd3635c4b3fedd58f3e27363ce8fb1b1e
2016-11-28svc_test: fix two warningsJim Bankoski
Use of possibly uninitialized variable and missing test initializer. Change-Id: I2192c81c39ef4239cc11a309850c0ee8781ef17e
2016-11-03vp9-svc: Add decoder control to decode up to x spatial layers.Marco
Change-Id: I85536473b8722424785c84c5b5520960b4e5744a
2016-10-31vp9-svc: Add checks to layer bitrates in vp9_spatial_svc_encoder.Marco
Add some checks to the layer bitrates passed in through the command line. Change-Id: I16f270035a6034d63313fe3019aa90dca9a3eefb