Commit Graph

287 Commits

Author SHA1 Message Date
Marco Paniconi
973726c38b vp9-rtc: Add postencode_drop control to sample encoder
Change-Id: I1c989f26b0a7b9239adf37df8d96776f33b89a8b
2021-03-12 09:54:59 -08:00
Jerome Jiang
f7c386bab0 Use -std=gnu++11 instead of -std=c++11
Cygwin and msys2 have stricter compliance requirement over standard c
headers.

Bug: webm:1708
Change-Id: I676b1227b9dd304149e50016468df0f057c6a78f
2021-03-04 11:16:06 -08:00
Jerome Jiang
02392eeccc Remove two pass related code from svc sample encoder.
SVC sample encoder is only supposed to be used for realtime SVC.

Bug: webm:1705
Change-Id: I5c0c3491732db3e148073aaf7f90ee8d662b57b5
2021-02-18 09:28:45 -08:00
Marco Paniconi
6c5377fd35 Fix to vpx_temporal_svc_encoder
Avoid division by zero.

Change-Id: Icf3f40aa32fe30f42c46417a1437ebe235e3ac96
2021-02-03 10:07:27 -08:00
Jerome Jiang
7e8ea22e40 Add codec control to disable loopfilter for vp9
Change-Id: I6d693e84570c353d20ec314acea43363956c0590
2020-10-02 12:09:01 -07:00
Marco Paniconi
d1a78971eb vp9-rtc: Add control to disable maxq on overshoot
Add encoder control to disable feature to increase Q
on overshoot detection, for CBR. Default (no usage
of the control) means the feature is internally enabled.

Add the control to the sample encoders, but keep it
disabled as default (set to 0, so feature is on).

Change-Id: Ia2237bc4aaea9770e5080dab20bfff9e3fd09199
2020-08-25 13:06:41 -07:00
Marco Paniconi
529c29bb0f rtc-vp9: Fix to rcstats in vp9_spatial_svc_encoder
Fixes the rcstats for case when #spatial_layers = 1.

Change-Id: Ie28d99852033307bc4c69c7e738e1d4cab4e8cf5
2020-08-17 21:52:12 -07:00
James Zern
5fd3c083a9 Merge changes Ib55d46e9,I4a4feeab
* changes:
  decode_api_test: add negative test for vpx_codec_error_detail
  examples: use die() on dec/enc_init() failure
2020-05-11 17:25:36 +00:00
James Zern
cbc276a3d4 examples: use die() on dec/enc_init() failure
rather than die_codec(). calling any api functions with an uninitialized
codec context is undefined. this avoids a crash in a call to
vpx_codec_error_detail().

BUG=webm:1688

Change-Id: I4a4feeabc1cafa44c8d2f24587fad79e313dba6d
2020-05-07 17:15:42 -07:00
James Zern
8c1c7471f8 vpx_dec_fuzzer: add coverage for VP9D_SET_LOOP_FILTER_OPT
BUG=chromium:1076203

Change-Id: Ib3339a9fd7d940b69a5ef89b3fbf7f4fdeaac006
2020-05-06 13:45:30 -07:00
Jerome Jiang
c7aa088ca4 example: Enable row-mt on low res and speed 7 8.
Verified row-mt works for low res and speed 7 8.

Change-Id: I1e7f260fe5cda40a2da80ca47692a5864712ec30
2019-11-06 15:36:15 -08:00
Harish Mahendrakar
75b0abefd8 vpx_dec_fuzzer: Remove fmemopen dependency
fmemopen is not preferred during fuzzing.
Removed all file operations.

Removed need for allocating a different input buffer.
data buffer is appropriately incremented and passed directly to decoder
This will also test input being sent in an unaligned buffer to the library.

Removed read_frame function and did the required parsing inline.

Change-Id: I32829b0149dba9339f2e8bb4c0249a4987a630c7
2019-06-14 11:08:36 -07:00
Harish Mahendrakar
3ff6417a6e vpx_dec_fuzzer: Add -fsanitize=fuzzer-no-link
Updated build instructions for vpx_dec_fuzzer to include
-fsanitize=fuzzer-no-link while configuring library

Change-Id: Id158256aa1cfe3d847720e8558cb5998ad4fd777
2019-06-12 15:18:50 -07:00
Jerome Jiang
1b9c527c62 Revert "Disable mismatch check on vp9 svc examples."
This reverts commit a1857812ea.

Change-Id: Ib33f49af7631c9a6917539a58c447624df325f7f
2019-04-10 10:48:03 -07:00
James Zern
e1a7f8456b svc_encodeframe: check strdup return
BUG=webm:1616

Change-Id: Ic9de589154485ad2de30b0b044991e1f9b852d74
2019-04-05 15:03:35 -07:00
Jerome Jiang
a1857812ea Disable mismatch check on vp9 svc examples.
Change-Id: I49902a750758ba0ffe733be9b1efd0cdea44f936
2019-03-27 17:02:44 -07:00
Jerome Jiang
4bfa583c6e fix redundant cast in examples.
Change-Id: I84280de82053f9056bda9d813baa6165ca9bcd1e
2019-03-21 19:04:38 -07:00
Jerome Jiang
effbd82f6a Merge "Enclose macro arguments in parentheses" 2019-03-14 23:08:43 +00:00
Jerome Jiang
1ece42aaf7 Enclose macro arguments in parentheses
BUG=webm:1606

Change-Id: I661485b860243c95b6450035dbac77b0dd4d9ff4
2019-03-14 14:57:33 -07:00
Jerome Jiang
c72dc3963e Merge "vp9: map speed > 9 to speed 9." 2019-03-11 22:45:47 +00:00
Jerome Jiang
ae8763f153 Merge "vp9 svc: add simulcast mode when inter-layer pred is off." 2019-03-08 03:41:44 +00:00
Jerome Jiang
3529526e11 vp9 svc: add simulcast mode when inter-layer pred is off.
Force all upper spatial layers to be key frame if the base layer is key.
Mode only works for inter-layer pred=off and non-flexible mode.

Add flag to write out bitstream for each spatial layer in example
encoder.

Change-Id: I5db4543cf8697544ae49464f2157e692640d5256
2019-03-07 15:20:13 -08:00
Marco Paniconi
f93d5dd0e6 vp9-svc: Fix to sample encoder for 1 layer
Fix to vp9_spatial_svc_encoder to run case of
1 spatial, 1 temporal layer.

Change-Id: I93675c3c4bd2c55cb1c971679588525a8e5b889d
2019-03-07 12:31:59 -08:00
Jerome Jiang
0b3d922688 vp9: map speed > 9 to speed 9.
Report warning in example encoder.

Change-Id: Iec4cdffce9faa65241756fbdac498214c8b93cc1
2019-03-05 15:22:16 -08:00
Jerome Jiang
269b36ef43 vp9 svc example: use CONFIG_VP9_DECODER guarding decoding.
Change-Id: I91f2955f2936303c3e09e9b2dc60e32305ebae17
2019-03-05 11:11:16 -08:00
Jerome Jiang
c10833faa6 Test decode and find mismatch in vp9 svc example encoder.
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-02-11 20:18:07 -08:00
Jerome Jiang
37e1295c61 refactor vp9 svc example encoder.
Put rc stats related code into a separate function.

Change-Id: I11808bb947079b5fd9e53dfa5894bf227ed0c4c6
2019-02-11 09:37:37 -08:00
Jerome Jiang
2221ec88d5 vp9 svc example encoder accept -o (--output) for output.
Make it same as vpxenc so easier to run on borg.

Change-Id: Ie19db6e828ced773cba9aef715c8fbd0f4715b27
2019-02-08 15:47:17 -08:00
Jerome Jiang
af9aa25eb3 Merge "vp9: Write height and width to ivf header in SVC example encoder." 2019-02-07 19:31:50 +00:00
Jerome Jiang
b1ef3919b9 vp9: Write height and width to ivf header in SVC example encoder.
Write height and width of top layer to ivf header in SVC.

vpxdec Can't decode it correctly when output is y4m.

Change-Id: I9b2f1d54696611a30e252bdfd182897d191d92b5
2019-02-07 10:38:14 -08:00
Jerome Jiang
ce4336c2ab Merge "No vpx_img_alloc for y4m input in example encoders." 2019-02-06 00:57:28 +00:00
Jerome Jiang
a4525dccec No vpx_img_alloc for y4m input in example encoders.
Y4M reader has its own allocation.

Change-Id: Ie02440a183126072ea773860f4e9dc9b412772f5
2019-02-05 14:12:54 -08:00
Harish Mahendrakar
42f8012025 vpx_dec_fuzzer: Remove dependency on tools_common.c
Instead of calling get_vpx_decoder_by_name(), derive
decoder interface directly.

This will avoid dependecy on tools_common and hence any potential
updates needed to build fuzzer, when tools_common uses functions
defined in a different file

With this dependency removed, fuzzer no longer needs to enable examples
when building vpx_dec_fuzzer binaries

Change-Id: I05753edf041b4bc742a6dc06e809a8a2929d379f
2019-02-01 14:06:08 -08:00
Jerome Jiang
7199f78783 add y4m support to vp9 example encoders.
vp9_spatial_svc_encoder and vpx_temporal_svc_encoder.

Change-Id: I8dfa1dfad83c83a26ddac4e7c57b5f1ff161e588
2019-01-30 12:47:10 -08:00
Johann
17c6f62628 svc examples: resolve missing declarations
BUG=webm:1584

Change-Id: Icb7ba5bb5a6d460c4d0419b76ee54af461ca4a52
2018-12-21 00:03:15 +00:00
Harish Mahendrakar
07de398172 vpx_dec_fuzzer: Unify single and multi-thread tests
As thread count is now randomized, serial and threaded modes can be
combined to a single binary.
With this change, threads takes values between 1 to 64 and tests both
single thread and multi-thread variants of the decoders

Change-Id: I6dd2a3aa03bff9c0e2c126843b543d46892be696
2018-11-14 21:06:14 +00:00
Harish Mahendrakar
6cb8d8a2b1 Added libFuzzer plugin to test decoders
vpx_dec_fuzzer.cc can be built with clang++ to generate fuzzer binary
Build instructions are part of the file

Change-Id: I19ba0bd49b236e27b27e81a83f6de59f15bdc994
2018-11-14 11:05:04 -08:00
James Zern
2a5805e2cb cosmetics: normalize include guards
use the recommended format [1] of:
<PROJECT>_<PATH>_<FILE>_H_

[1] https://google.github.io/styleguide/cppguide.html#The__define_Guard
"All header files should have #define guards to prevent multiple
inclusion. The format of the symbol name should be
<PROJECT>_<PATH>_<FILE>_H_."

Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2018-09-15 12:25:43 -07:00
Marco Paniconi
04b3d49bac vp9-svc: Allow for setting framerate per spatial layer.
Add duration to set_svc_ref_frame_config.

BUG=b/113346831

Change-Id: I63613aed6b1183f98d04831600a6bdd645c740df
2018-09-05 08:55:57 -07:00
Marco Paniconi
e5d2860216 vp9: Fix rate control stats for bypass mode in sample encoder
Allow rate control stats to work for bypass mode
in vp9_spatial_svc_encoder.c

Change-Id: I66764a006a73b1fd13c07b4fc4e0c88b2bb2a035
2018-08-30 13:01:34 -07:00
Marco Paniconi
b2f9b627e3 vp9-svc: Change default pattern for bypass mode
For sample encoder: keep default pattern for bypass
mode to example#0.

Change-Id: Icddc4600d750a23a44b26517a327b546fd8eb412
2018-08-27 12:08:29 -07:00
Jerome Jiang
d85c8515e3 Merge "SVC: extend api to specify temporal id for each spatial layers." 2018-08-27 17:54:52 +00:00
Jerome Jiang
ed8f189ccc Refactor: move svc example files to from vpx/ to examples/
svc_encodeframe.c and svc_context.h are only used by the example
encoder.

Change-Id: Idb41a5a9d6a229a0bc7d2bc8dbe6575a74efc54c
2018-08-16 14:44:12 -07:00
Jerome Jiang
a5c17a689f SVC: extend api to specify temporal id for each spatial layers.
BUG=b/112294545

Change-Id: I5be230c8969d69af3ad87068fdf3834ef1af11d9
2018-08-16 10:28:34 -07:00
Jerome Jiang
a66da31380 vp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG api
Add update_buffer_slot to SVC API to allow for refreshing
any of the 8 reference buffers. Remove frame_flags from
the struct.

Remove svc tests from vp8 build.

BUG=b/112292577
Change-Id: I0551c349d2b311227245a8ed1639cdbbaf5bc5db
2018-08-09 13:56:46 -07:00
Sergey Silkin
c94dacc231 vp9-svc: add more command line options to test app.
This adds the following command line options to
vp9_spatial_svc_encoder test app:
--drop-frame=<arg>        Temporal resampling threshold (buf %)
--tune-content=<arg>      Tune content type default, screen, film
--inter-layer-pred=<arg>  0 - 3: On, Off, Key-frames, Constrained

Change-Id: I653d1924fb6e525edb2d1e84739be0b88e773e1c
2018-07-04 08:03:54 +00:00
Sergey Silkin
c5b8a93ce0 vp9-svc: fix strings concatenation in test app.
Change-Id: I292a1a5c19fd4f23b332e346d0ccac1a9c8455fc
2018-06-29 09:41:20 +02:00
Marco Paniconi
e1921294f9 vp9-svc: Add frame dropper control to sample encoder.
Disabled as default as enc_cfg.rc_dropframe_thresh is
set to 0 as default.

Change-Id: Ia888aa16b1a86a716ec33ea041e8b16b19bf93be
2018-05-29 19:31:23 -07:00
Marco Paniconi
ce11afb0e0 vp9: Changes for scene detection overshoot and SVC.
Refactor the scene detection for 1 pass cbr to allow the
scene detection to be checked once per superframe (on the base layer),
using the full resolution sources.

If scene change is detected: check for re-encoding due to
large overshoot for all spatial layers withing the superframe.

Add speed feature to control the re-encode step.
Keep the re-encode step on for now.

Small change in nonrd_pickmode to remove the possible skip of golden
reference for SVC, when the high_source_sad is set for the superframe.

Change only affects SVC encoding with screen-content mode enabled.

Change-Id: If4cfb52cb0dd0f0fce1c4214fa8b413f8f803d56
2018-04-18 12:39:56 -07:00
Jerome Jiang
be4561248d Fix settings for num of tiles in samples & tests.
The control is set by log2 of number of threads (such that the number of
tiles is the same of number of threads).

Thus it should be log2(num_threads) instead of (num_threads >> 1).

Change-Id: I2ccec5557e660048dad3e561534e1c74fc8eec1f
2018-04-06 12:52:53 -07:00