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.
Jingning Han [Mon, 24 Aug 2015 19:33:52 +0000 (12:33 -0700)]
VP9 decoder performance test suite - buffer process
This commit hacks the vp9 encoder to produce bit-streams that
exercise maximum reference frame buffers at decoder, as part of
the VP9 decoder performance test suite. It fullfills all the 8
reference frame buffers first and then temporarily suspends the
buffer update. It selects the frames from this static buffer pool
as reference frames for the next a few coding frames. When all
the frames in the reference frame buffer are covered, the codec
resumes the buffer update process. Such pattern repeats every
64 frames.
It verifies the decoder capability to handle up to 8 reference
frames in buffer.
Jingning Han [Mon, 29 Jun 2015 17:53:02 +0000 (10:53 -0700)]
Set up decoder end coding statistics tracker
This commit allows the decoder to track the percentage of intra
coding mode and sub pixel filter usage, when it is configured. This
provides a measurable approach to generate the VP9 decoder
performance test suite.
Jingning Han [Mon, 29 Jun 2015 17:53:02 +0000 (10:53 -0700)]
Set up decoder end coding statistics tracker
This commit allows the decoder to track the percentage of intra
coding mode and sub pixel filter usage, when it is configured. This
provides a measurable approach to generate the VP9 decoder
performance test suite.
Tom Finegan [Wed, 24 Jun 2015 01:30:52 +0000 (18:30 -0700)]
vpxenc.sh: Add basic vp9 multithread encode test.
- Change default real time speed to -6.
- Add vpxenc_vp9_webm_rt_multithread, which encodes
niklas_1280_720_30.y4m with 2 to 4 threads using 2 to 4
tile columns.
Marco [Mon, 22 Jun 2015 22:20:28 +0000 (15:20 -0700)]
Fixes for key frame coding at speed 5.
Keep the same transform cutoff and partition selection
for speed 5 as in speeds >=6 (non-rd speed settings).
Existing setting for key frame at speed 5 allowed transform size
up to 32x32 on key frames, and did not allow for 4x4 block partition size.
This created more visual artifacts on first few frames.
avgPSNR/overallPSNR/SSIM gains of 0.2/0.7/0.8 for rtc_derf(low-res) set,
and 0/0.7/1.1 gains for rtc set.
Brion Vibber [Sat, 20 Jun 2015 19:08:35 +0000 (12:08 -0700)]
Fix building with iOS 9 beta SDK
configure.sh was setting some Mac OS X options for iOS targets, which
confuses the iOS 9 beta SDK in Xcode 7 when linking libraries.
Additionally, old armv6 media extensions were being enabled on iOS
when they're not needed (we always have Neon since iOS 6). These
broke on iOS 9 SDK which no longer assembles those instructions.
Marco [Fri, 19 Jun 2015 23:40:01 +0000 (16:40 -0700)]
Reduce max_partition_size for low resolutions at speed 5.
For speed 5 real-time mode, the selection of the partition size for
superblocks on the segment (aq-mode=3) uses the non-rd recursive
pick partition search, and can sometimes select 64x64.
For low resolutions, visually better to limit this to 32x32.
Alex Converse [Thu, 18 Jun 2015 23:05:56 +0000 (16:05 -0700)]
Limit cyclic refresh revisitng blocks at the same quantizer.
For screen content don't refresh a block at a quantizer higher than
it was last coded at. PReviosuly at realtime speeds the encoder had a
tendency to recode a block from GOLDEN with a higher Q than it was last
coded at.
Marco [Mon, 8 Jun 2015 17:03:51 +0000 (10:03 -0700)]
Add dynamic resize logic for 1 pass CBR.
Decision to scale down/up is based on buffer state and average QP
over previous time window. Limit the total amount of down-scaling
to be at most one scale down for now.
Reset certain quantities after resize (buffer level, cyclic refresh,
rate correction factor).
Feature is enable via the setting rc_resize_allowed = 1.
Jingning Han [Tue, 16 Jun 2015 19:00:50 +0000 (12:00 -0700)]
Fix integer overflow issue in rtc coding flow intra mode search
The overflow issue affects a variable that is only used in inter
mode. This commit fixes the ioc warning triggered in the intra
mode. It does not affect the compression performance.
Marco [Thu, 11 Jun 2015 01:26:04 +0000 (18:26 -0700)]
Remove duplicate calls for set_frame_size in 1 pass mode.
set_frame_size() is being called twice, once before entering
encode_encode_frame_to_data_rate(), and once again in that function.
No need to call it twice for one-pass mode.
Yunqing Wang [Sat, 13 Jun 2015 00:10:30 +0000 (17:10 -0700)]
vp9_ethread: create enough threads while using SVC
This patch modified the thread creating code. When use_svc is true,
the number of threads created is decided by the highest resolution.
This resolved WebM issue 1018.