Yunqing Wang [Tue, 2 Dec 2014 23:47:41 +0000 (15:47 -0800)]
vp9_ethread: the tile-based multi-threaded encoder
Currently, VP9 supports column-tile encoding, which allows a frame
to be encoded in multiple column tiles independently. The number of
column tiles are set by encoder option "--tile-columns". This
provides a way to encode a frame in parallel.
Based on previous set of patches, this patch implemented the tile-
based multi-threaded encoder. Each thread processes one or more
tiles.
Usage:
For HD clips:
--tile-columns=2 --threads=1/2/3/4
While using 4 threads, tests showed that the encoder achieved
2.3X - 2.5X speedup at good-quality speed 3, and 2X speedup at
realtime speed 5.
Change-Id: Ied987f8f2618b1283a8643ad255e88341733c9d4
Jingning Han [Tue, 2 Dec 2014 18:50:39 +0000 (10:50 -0800)]
Enforce error resilient mode on in temporal svc real-time mode
This commit makes the codec automatically turn on error resilient
mode when using real-time mode for temporal scalable coding. It
fixes an enc/dec mismatch issue and re-enables the corresponding
unit test.
Change-Id: Ie1f7134e9a78ddd43e9b1555b3ee991c8a3afd0d
Marco Paniconi [Tue, 2 Dec 2014 17:14:48 +0000 (09:14 -0800)]
Merge "Cyclic refresh: factor segment delta-q into rate control."
Jingning Han [Tue, 2 Dec 2014 01:35:11 +0000 (17:35 -0800)]
Merge "Turn off temporal svc unit test in RTC setting"
Marco Paniconi [Thu, 3 Apr 2014 01:37:04 +0000 (18:37 -0700)]
Cyclic refresh: factor segment delta-q into rate control.
Incorporate segment delta-q into estimated bits.
This generally improves the rate control under cyclic refresh (aq=3) mode.
Change-Id: I1dc60fb230e7d08357fae18909d8ed27bf58e037
Jingning Han [Mon, 1 Dec 2014 01:40:58 +0000 (17:40 -0800)]
Turn off temporal svc unit test in RTC setting
A hidden enc/dec mismatch bug was accidentally triggered by
https://gerrit.chromium.org/gerrit/#/c/72247/
Adaptively adjust mode test kick-off thresholds in RTC coding
This commit temporarily turns off the broken unit tests to avoid
blocking other CLs while fixing.
Change-Id: I0a0f195030321190ce10879cd833187680576367
Jingning Han [Mon, 1 Dec 2014 22:02:10 +0000 (14:02 -0800)]
Merge "Remove repeated search_type_check_frequency assign"
Yunqing Wang [Mon, 1 Dec 2014 20:49:03 +0000 (12:49 -0800)]
Merge "vp9_ethread: calculate and save the tok starting address for tiles"
Johann [Mon, 1 Dec 2014 19:06:49 +0000 (11:06 -0800)]
Remove default cortex-a8 tuning.
Probably not even the dominant platform the library is being built for.
Add --cpu= option description to help. The option already exists.
Don't allow passing just --cpu as a no-op.
BUG=826
Change-Id: Iaa3f4f693ec78b18927b159b480daafeba0549c0
Marco [Wed, 26 Nov 2014 19:11:34 +0000 (11:11 -0800)]
temporal_svc encoder: Change default setting for layering_mode = 0.
Change-Id: I5f723ada144d0bd82ee700ef28a4916fd64ba5e4
Yaowu Xu [Wed, 26 Nov 2014 15:56:43 +0000 (07:56 -0800)]
Merge "Separate rate_correction_factor for boosted GFs"
Jingning Han [Wed, 26 Nov 2014 02:34:42 +0000 (18:34 -0800)]
Remove repeated search_type_check_frequency assign
This parameter is initialized as 50. No need to re-assign the
same value in speed -6.
Change-Id: I8735a5593412df2fdcee53ae45c8ebd1c3d792e7
Yunqing Wang [Wed, 26 Nov 2014 00:53:47 +0000 (16:53 -0800)]
vp9_ethread: calculate and save the tok starting address for tiles
Each tile's tok starting address is calculated before the encoding
process. These addresses are stored so that the same calculation
won't be done again in packing bit stream.
Change-Id: I0a3be0301f002260c19a850303f2f73ebc47aa50
James Zern [Tue, 25 Nov 2014 23:12:41 +0000 (15:12 -0800)]
Merge "tests: enable resize_test for vp8"
Yaowu Xu [Fri, 21 Nov 2014 19:55:27 +0000 (11:55 -0800)]
Separate rate_correction_factor for boosted GFs
When the golden frame is boosted, the rate correction factor is not
correlated well with other inter frames even in CBR mode. This commit
changes to use GF specific rate_correction_factor when gf_cbr_boost
is greater than 20%.
Change-Id: I6312c1564387bcacc11f4c5e8a9cfdc781b5c3ab
Johann [Tue, 25 Nov 2014 20:06:56 +0000 (12:06 -0800)]
Remove unfreed memory in quantize_test.cc
vp8_config doesn't need to be on the stack. Just use a local copy.
Change-Id: Ia241b1d87fd9422556d957f3ea43ad71eb5c414a
Jingning Han [Mon, 24 Nov 2014 23:54:55 +0000 (15:54 -0800)]
Cosmetic change in vp9_pick_inter_mode
Change-Id: Ic072585ebffdb36982ed7b8b9f875ca6c1c656c4
Jingning Han [Mon, 24 Nov 2014 22:40:42 +0000 (14:40 -0800)]
Adaptively adjust mode test kick-off thresholds in RTC coding
This commit allows the encoder to increase the mode test kick-off
thresholds if the previous best mode renders all zero quantized
coefficients, thereby saving motion search runs when possible.
The compression performance of speed -5 and -6 is down by -0.446%
and 0.591%, respectively. The runtime of speed -6 is improved by
10% for many test clips.
vidyo1, 1000 kbps
16578 b/f, 40.316 dB, 7873 ms -> 16575 b/f, 40.262 dB, 7126 ms
nik720p, 1000 kbps
33311 b/f, 38.651 dB, 7263 ms -> 33304 b/f, 38.629 dB, 6865 ms
dark720p, 1000 kbps
33331 b/f, 39.718 dB, 13596 ms -> 33324 b/f, 39.651 dB, 12000 ms
mmoving, 1000 kbps
33263 b/f, 40.983 dB, 7566 ms -> 33259 b/f, 40.978 dB, 7531 ms
Change-Id: I7591617ff113e91125ec32c9b853e257fbc41d90
Jingning Han [Tue, 25 Nov 2014 17:33:57 +0000 (09:33 -0800)]
Merge "Rework forward txfm/quantization skip system in RTC coding mode"
Jingning Han [Tue, 25 Nov 2014 06:13:44 +0000 (22:13 -0800)]
Merge "Remove redundant intra mode penalty from vp9_pick_inter_mode"
Yunqing Wang [Fri, 21 Nov 2014 19:11:06 +0000 (11:11 -0800)]
vp9_ethread: modify VP9_COMP structure
This patch modified struct VP9_COMP. Created a struct ThreadData
to include data that need to be copied for each thread. In
multiple thread case, one thread processes one tile. all threads
share one copy of VP9_COMP,
(refer to VP9_COMP *cpi in the code)
but each thread has its own copy of ThreadData,
(refer to ThreadData *td in the code).
Therefore, within the scope of encode_tiles(), both cpi and td
need to be passed as function parameters.
In single thread case, the FRAME_COUNTS pointer in ThreadData
points to "counts" in VP9_COMMON.
Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
Alex Converse [Tue, 25 Nov 2014 00:36:53 +0000 (16:36 -0800)]
Merge "Fix a tautological assert."
Alex Converse [Mon, 24 Nov 2014 23:00:20 +0000 (15:00 -0800)]
Fix a tautological assert.
Change-Id: I90ad08823e1d038384536fa9f458caadc2c87f38
Jingning Han [Mon, 24 Nov 2014 17:31:10 +0000 (09:31 -0800)]
Remove redundant intra mode penalty from vp9_pick_inter_mode
The intra mode penalty is covered by intra_cost_penalty. This
commit removes the other intra cost threshold, provided that the
constant 50 is negligible in normal rate-distortion cost.
Change-Id: I9b8b7483c43b9a41741622e7057def1f7d51bb72
Jingning Han [Mon, 24 Nov 2014 21:21:56 +0000 (13:21 -0800)]
Merge "Key frame non-RD mode decision process"
Debargha Mukherjee [Mon, 24 Nov 2014 20:47:03 +0000 (12:47 -0800)]
Merge "Refactored idct routines and headers"
James Zern [Mon, 24 Nov 2014 20:26:15 +0000 (12:26 -0800)]
Merge "sad_test: initialize bit_depth_ in all cases"
Peter de Rivaz [Fri, 24 Oct 2014 07:37:39 +0000 (08:37 +0100)]
Refactored idct routines and headers
This change is made in preparation for a
subsequent patch which adds acceleration
for the highbitdepth transform functions.
The highbitdepth transform functions attempt
to use 16/32bit sse instructions where possible,
but fallback to using the C implementations if
potential overflow is detected. For this reason
the dct routines are made global so they can be
called from the acceleration functions in the
subsequent patch.
Change-Id: Ia921f191bf6936ccba4f13e8461624b120c1f665
(cherry picked from commit
454342d4e77dbb67f4a3c10f97a57a6fcb46d9a0)
Jingning Han [Thu, 20 Nov 2014 19:28:00 +0000 (11:28 -0800)]
Key frame non-RD mode decision process
This commit makes a non-RD coding mode decision process for key
frame coding. It can be optionally turned on in speed -6 and above.
Change-Id: I0847258b392877a0210b4768bef88ebc9ad009b5
Marco [Mon, 24 Nov 2014 15:46:36 +0000 (07:46 -0800)]
Merge "Only allow for cyclic refresh (aq=3 mode) for base layer."
Johann [Sat, 22 Nov 2014 21:14:56 +0000 (13:14 -0800)]
Merge "Indent build/make/configure.sh"
James Zern [Sat, 22 Nov 2014 20:12:59 +0000 (12:12 -0800)]
sad_test: initialize bit_depth_ in all cases
previously 'bit_depth_', which is later used to calculate 'mask_', would
be left uninitialized in non-high-bitdepth builds
Change-Id: Ia72035f4645baf3bb0f191504f491b934cdf1e0e
Paul Wilkins [Sat, 22 Nov 2014 01:39:43 +0000 (17:39 -0800)]
Merge "Fix some minor nits."
Johann [Fri, 21 Nov 2014 02:20:06 +0000 (18:20 -0800)]
Indent build/make/configure.sh
Whitespace changes only.
Change-Id: I92eef49db1798bc69ec003fca69995fea560d6fa
Debargha Mukherjee [Sat, 22 Nov 2014 00:08:47 +0000 (16:08 -0800)]
Merge "Added highbitdepth sse2 acceleration for quantize"
Paul Wilkins [Fri, 21 Nov 2014 23:38:32 +0000 (15:38 -0800)]
Merge changes Ie077edd0,Id31a74fc
* changes:
Remove rate component adjustment for AQ1
Switch AQ1 segment basis from q ratio to rate ratio.
Paul Wilkins [Fri, 21 Nov 2014 23:26:18 +0000 (15:26 -0800)]
Merge "Add adaptive midpoint for AQ1."
Paul Wilkins [Fri, 21 Nov 2014 23:25:43 +0000 (15:25 -0800)]
Merge "Add variance restriction to AQ2."
Marco [Wed, 19 Nov 2014 23:31:29 +0000 (15:31 -0800)]
Only allow for cyclic refresh (aq=3 mode) for base layer.
Condition existed for temporal case, added it for spatial as well.
Issue: https://code.google.com/p/webm/issues/detail?id=878.
Change-Id: I38339207f9a94924f5568a081eabe64f867a686d
Paul Wilkins [Fri, 21 Nov 2014 20:27:52 +0000 (12:27 -0800)]
Fix some minor nits.
Change-Id: Ib8810d431fa20a2c78e0caaa28eb2c99903e60fb
Paul Wilkins [Fri, 21 Nov 2014 20:58:03 +0000 (12:58 -0800)]
Merge "Further AQ1 clean up."
Jingning Han [Fri, 21 Nov 2014 20:18:53 +0000 (12:18 -0800)]
Rework forward txfm/quantization skip system in RTC coding mode
This commit allows more aggressive decision to skip forward
transform and quantization for luma component in RTC coding mode.
The chroma components remains going through the normal coding
routine, since they are not included in the non-RD mode search
process.
It reduces the runtime cost by 2% - 10%. In speed -6,
vidyo1 1000 kbps
16576 b/f, 40.281 dB, 8402 ms -> 16576 b/f, 40.323 dB, 7764 ms
nik720p 1000 kbps
33337 b/f, 38.622 dB, 7473 ms -> 33299 b/f, 38.660 dB, 7314 ms
dark720p 1000 kbps
33330 b/f, 39.785 dB, 13505 ms -> 33325 b/f, 39.714 dB, 13105 ms
The compression performance of speed -6 is improved by 0.44% in
PSNR and 1.31% in SSIM.
Change-Id: Iae9e3738de6255babea734e5897f29118bebc6d7
Paul Wilkins [Fri, 21 Nov 2014 20:10:03 +0000 (12:10 -0800)]
Merge "Initial AQ1 restructuring."
James Zern [Fri, 21 Nov 2014 19:35:59 +0000 (11:35 -0800)]
Merge "vp9_thread_test: fix 'had_error' assignment"
Alex Converse [Fri, 21 Nov 2014 17:38:39 +0000 (09:38 -0800)]
Merge "Allow DC/H/V/TM on screen content."
Alex Converse [Fri, 21 Nov 2014 17:38:02 +0000 (09:38 -0800)]
Merge "Drop special inter mode selection for screen content."
Johann [Fri, 21 Nov 2014 16:55:22 +0000 (08:55 -0800)]
Merge "Remove armv5te target"
Paul Wilkins [Fri, 21 Nov 2014 02:32:44 +0000 (18:32 -0800)]
Remove rate component adjustment for AQ1
In AQ1 a rate adjustment was applied for blocks coded with a
deltaq. This tends to skew the partition selection and cause
rate overshoot.
For example, consider a 64x64 super block where some but not all
sub blocks are in a low q segment and some are in a high q segment.
The choice of Q when considering large partition and transform sizes
is defined by the lowest sub block segment id (currently this implies the
lowest Q). If some parts of the larger partition are very hard this will
cause a high rate component.
The correct behavior here is for the rd code to discard the large partition
choice and break down to sub blocks where some have low and some
have high Q. However the rate correction factor above mask the high
cost of coding at a larger partition size.
Change-Id: Ie077edd0b1b43c094898f481df772ea280b35960
Paul Wilkins [Fri, 21 Nov 2014 01:28:21 +0000 (17:28 -0800)]
Switch AQ1 segment basis from q ratio to rate ratio.
In defining the Q deltas for segments in AQ1 use a rate
ratio rather than a q ratio.
Change-Id: Id31a74fcf2b7e55437e42a51c21b3cbcb57028d4
Paul Wilkins [Thu, 20 Nov 2014 23:03:01 +0000 (15:03 -0800)]
Add adaptive midpoint for AQ1.
Make the midpoint variance used in AQ mode 1 segmentation
depend on the overall complexity of the frame in two pass.
Change-Id: I452814ec57f7a32352e41bb250e78066abe952dd
Johann [Thu, 20 Nov 2014 21:24:55 +0000 (13:24 -0800)]
Correctly initialize "ones" value in neon quantize
By using 0xff for a short it was not setting the high bits. When
comparing the output with vtst to find non-zero elements it was skipping
vaules which had no low bits set such as -512 / 0xFE00.
Using -8191 as the first element of coeff will generate this condition.
BUG=883
Change-Id: Ia1e10fb809d1e7866f28c56769fe703e6231a657
Alex Converse [Fri, 24 Oct 2014 22:57:48 +0000 (15:57 -0700)]
Allow DC/H/V/TM on screen content.
6.3% better compression
less than 1% compression time increase
Change-Id: Ie83c059436e54c09de9e7c87e06e0a6d40dc38fe
Alex Converse [Tue, 18 Nov 2014 21:31:49 +0000 (13:31 -0800)]
Drop special inter mode selection for screen content.
Better mode selection was implemented for all content.
Change-Id: I479778ed21d3968892f4dce396c83733583f4f23
Johann [Fri, 21 Nov 2014 01:08:11 +0000 (17:08 -0800)]
Remove armv5te target
All the assembly code has been removed, the tests no longer check for
the target, and android and chrome do not use the targets.
Change-Id: I193993f7b2b0bd6478453402f573ce3606e04e8d
Yunqing Wang [Fri, 21 Nov 2014 00:51:31 +0000 (16:51 -0800)]
Merge "vp9_ethread: move filter_cache out of RD_OPT struct"
Paul Wilkins [Fri, 7 Nov 2014 16:32:50 +0000 (16:32 +0000)]
Add variance restriction to AQ2.
Add an additional restriction to bit/complexity based
segmentation based on spatial variance.
Only lower Q when both the number of bits spent
in the initial encoding pass and the spatial complexity are
below a threshold. This will prevent the low Q segments
being used just because there is a surfeit of bits.
Small metrics gains especially opsnr.
derf ~0.2% std-hd ~0.3%
Change-Id: I6a8496d466d673f9b0e2b2ca6304ea7b6d8e1cce
Paul Wilkins [Thu, 13 Nov 2014 20:35:07 +0000 (12:35 -0800)]
Further AQ1 clean up.
Further patch to restructure AQ mode 1.
Change-Id: I566452a033d047a49a40441a7be24690ea69412d
Paul Wilkins [Wed, 12 Nov 2014 20:36:16 +0000 (12:36 -0800)]
Initial AQ1 restructuring.
This is the first of a series of patches to restructure and
improve AQ mode 1 (variance based AQ).
Change-Id: Idcf693131a3ea2459dcfd957a54a65b971fa4a2a
Paul Wilkins [Thu, 20 Nov 2014 23:45:41 +0000 (15:45 -0800)]
Merge "Fix bug in calculating number of mbs with scaling."
James Zern [Thu, 20 Nov 2014 22:34:40 +0000 (14:34 -0800)]
tests: enable resize_test for vp8
this was incorrectly set in test.mk by
93ffd37 Enable and fix resize_test for VP9
the test is now available when using --disable-vp9
Change-Id: I6acf44b0de647b34812ef5e18fd96447cdf9b25d
James Zern [Thu, 20 Nov 2014 22:18:37 +0000 (14:18 -0800)]
Merge "sad_test: fix vp8-only build"
James Zern [Thu, 20 Nov 2014 22:16:28 +0000 (14:16 -0800)]
vp9_thread_test: fix 'had_error' assignment
worker hooks return false on error, fix the assignment in Execute() used
in the TestSerialInterface test
Change-Id: I93c2e45f270330ae6d35a3a303411c4ee0f31337
Yunqing Wang [Thu, 20 Nov 2014 22:00:37 +0000 (14:00 -0800)]
Merge "vp9_ethread: move max/min partition size to mb struct"
Yunqing Wang [Thu, 20 Nov 2014 20:42:36 +0000 (12:42 -0800)]
vp9_ethread: move filter_cache out of RD_OPT struct
Similar to mask_filter, the filter_cache in RD_OPT struct can be
moved out, and declared as a local variable since it is only
used in pick_inter_mode functions.
Change-Id: I412b99cca82bade07ac912064ec03dd1de6b2c17
Yunqing Wang [Thu, 20 Nov 2014 21:02:55 +0000 (13:02 -0800)]
Merge "vp9_ethread: change mask_filter to a local variable"
Yunqing Wang [Thu, 20 Nov 2014 20:27:34 +0000 (12:27 -0800)]
Merge "Revert "vp9_ethread: include a pointer to mb in VP9_COMP""
Paul Wilkins [Thu, 20 Nov 2014 20:22:53 +0000 (12:22 -0800)]
Fix bug in calculating number of mbs with scaling.
Correct calculation of number of mbs in two pass code when
frame resizing is enabled. Always use initial number of mbs if
scaling is enabled, as this is what was used in the first pass.
Change-Id: I49a4280ab5a8b1000efcc157a449a081cbb6d410
Yunqing Wang [Thu, 20 Nov 2014 17:41:49 +0000 (09:41 -0800)]
vp9_ethread: change mask_filter to a local variable
The mask_filter in RD_OPT struct is used to record rd result in
filter decision. It is only used in pick_inter_mode functions,
and is removed from the struct and declared as a local variable.
Change-Id: I3c95c8632ba7241591ce00ef2ef5677b5e297d7b
Yunqing Wang [Thu, 20 Nov 2014 17:24:50 +0000 (09:24 -0800)]
vp9_ethread: move max/min partition size to mb struct
The max_partition_size and max_partition_size are set at the
beginning while setting speed features, and then adjusted at
SB level. Moving them to mb struct ensures there is a local
copy for each thread.
Change-Id: I7dd08dc918d9f772fcd718bbd6533e0787720ad4
Jingning Han [Thu, 20 Nov 2014 17:06:39 +0000 (09:06 -0800)]
Merge "Enable ssse3 version of vp9_fdct8x8_quant"
Yunqing Wang [Thu, 20 Nov 2014 03:04:07 +0000 (19:04 -0800)]
Revert "vp9_ethread: include a pointer to mb in VP9_COMP"
This reverts commit
6906d218ddd1af97228a797f4558e402231d94f1.
Another way will be used to handle mb struct.
Change-Id: Ic1111a46b2b1ee00f8f9e3fcd4cf3eb6030b2dc4
Peter de Rivaz [Thu, 16 Oct 2014 12:38:46 +0000 (13:38 +0100)]
Added highbitdepth sse2 acceleration for quantize
Also includes block error.
(This patch is mostly cherry picked from
commit
db7192e0b014a331a1dcb102c8a1148e9f0e1081)
Change-Id: Idef18f90b111a0d0c9546543d3347e551908fd78
Deb Mukherjee [Thu, 20 Nov 2014 07:22:18 +0000 (23:22 -0800)]
Merge "Changes SvcContext_t to SvcContext"
Jingning Han [Tue, 18 Nov 2014 20:37:59 +0000 (12:37 -0800)]
Enable ssse3 version of vp9_fdct8x8_quant
It improves the speed performance of vp9_fdct8x8_quant_sse2 by
about 5%.
Change-Id: I74b093ba4d81df64caf71ac7693f3d917f673097
James Zern [Wed, 19 Nov 2014 03:27:06 +0000 (19:27 -0800)]
sad_test: fix vp8-only build
ROUND_POWER_OF_TWO() is defined in vp9 headers currently, avoid it in
non-high-bitdepth code
Change-Id: Ic28b8f95ef7964800475ee8b35be5f9cea9afab6
Yaowu Xu [Wed, 19 Nov 2014 23:32:11 +0000 (15:32 -0800)]
Add a reset to rc tracking for dropped frames
VP9/DatarateTestVP9Large.ChangingDropFrameThresh/[34] fails post the
merge of commit#
ffa06b37. This commit adds reset of rc tracking info
when frame is dropped, and fixes the causes of the bad interaction
between the tests and the previous commit.
Change-Id: I848acfd9fcb336359662274325190f94aac76eae
Jingning Han [Wed, 19 Nov 2014 19:17:44 +0000 (11:17 -0800)]
Merge "Combine fdct8x8 and quantization process"
Jingning Han [Wed, 19 Nov 2014 19:17:36 +0000 (11:17 -0800)]
Merge "Add sse2 version for vp9_quantize_fp"
Jingning Han [Tue, 18 Nov 2014 19:53:14 +0000 (11:53 -0800)]
Combine fdct8x8 and quantization process
This commit reworks the forward transform and quantization process
for 8x8 block coding. It combines the two operations in a single
function to save a store/load stage of the original transform
coefficients. Overall the speed -6 is slightly faster (around 1%
range). The compression performance of speed -6 is improved by
3.4%.
Change-Id: Id6628daef123f3e4649248735ec2ad7423629387
Yaowu Xu [Wed, 19 Nov 2014 00:56:06 +0000 (16:56 -0800)]
Merge "Prevent severe rate control errors in CBR mode"
Deb Mukherjee [Tue, 18 Nov 2014 20:25:31 +0000 (12:25 -0800)]
Changes SvcContext_t to SvcContext
Fixes a borg build.
Change-Id: I8cb510577e8d8bbc7a2e64f9e1bdfe883f49cb61
Marco [Tue, 18 Nov 2014 19:22:18 +0000 (11:22 -0800)]
Merge "Modify active_worst_quality setting for one pass CBR."
Yaowu Xu [Tue, 18 Nov 2014 17:14:02 +0000 (09:14 -0800)]
Merge "change to call vp9_refining_search_sad() directly"
Yaowu Xu [Tue, 18 Nov 2014 16:52:21 +0000 (08:52 -0800)]
Prevent severe rate control errors in CBR mode
In rare cases, the interaction between rate correction factor and Q
choices may cause severe oscillating frame sizes that are way off
target bandwidth. This commit adds tracking of rate control results
for last two frames, and use the information to prevent oscillating
Q choices.
Change-Id: I9a6d125a15652b9bcac0e1fec6d7a1aedc4ed97e
Jingning Han [Tue, 18 Nov 2014 16:58:09 +0000 (08:58 -0800)]
Add sse2 version for vp9_quantize_fp
vp9_quantize_fp is the quantization process used by rtc coding
mode. This commit adds a sse2 implementation of it. The
implementation is modified based on vp9_quantize_b_sse2. No speed
difference from ssse3 version.
Change-Id: I24949c5b27df160b4f35117d28858d269454e64a
Jingning Han [Tue, 18 Nov 2014 01:40:54 +0000 (17:40 -0800)]
Merge "Add empty pointer check to pred buffering in rtc coding mode"
Marco [Tue, 11 Nov 2014 19:01:55 +0000 (11:01 -0800)]
Modify active_worst_quality setting for one pass CBR.
Current setting had active_worst_quality set too high (close to worst_quality)
for first frame(s) following first key frame. This changes that to be somewhat
more aggressive in allowing active_worst_quality to be lower following key frame.
Also remove the 4/5 reduction in active_worst for key frame as
this should be set by the user qp_max setting.
Change-Id: I0530b3ddcc85c00e3eb7568de1b14a31206c4a4c
Yaowu Xu [Mon, 17 Nov 2014 19:25:43 +0000 (11:25 -0800)]
change to call vp9_refining_search_sad() directly
The function pointer in compressor instance does not change, so this
commit changes to call the function directly.
Change-Id: I9c9c460e3475711c384b74c9842f0b4f3d037cc5
Jingning Han [Mon, 17 Nov 2014 19:21:42 +0000 (11:21 -0800)]
Add empty pointer check to pred buffering in rtc coding mode
This commit adds a check condition to the prediction buffering
operation used in the rtc coding mode. This resolves a unit test
warning in example/vpx_tsvc_encoder_vp9_mode_7.
Change-Id: I9fd50d5956948b73b53bd8fc5a16ee66aff61995
Yunqing Wang [Mon, 17 Nov 2014 17:10:28 +0000 (09:10 -0800)]
Merge "Code cleanup: remove unused members in RD_OPT"
Yunqing Wang [Mon, 17 Nov 2014 16:57:38 +0000 (08:57 -0800)]
Merge "vp9_ethread: combine encoder counts in separate struct"
Debargha Mukherjee [Sat, 15 Nov 2014 05:11:27 +0000 (21:11 -0800)]
Merge "Added sse2 acceleration for highbitdepth variance"
James Zern [Sat, 15 Nov 2014 04:26:28 +0000 (20:26 -0800)]
Merge "Visual studio build fix using explicit cast"
Yunqing Wang [Sat, 15 Nov 2014 00:33:25 +0000 (16:33 -0800)]
Code cleanup: remove unused members in RD_OPT
These 2 members in RD_OPT were moved to TileDataEnc struct
already, and therefore were removed here.
Change-Id: I22fee3b67f96e473a58e194a7edc76dbd48bfa04
Yunqing Wang [Sat, 15 Nov 2014 00:04:15 +0000 (16:04 -0800)]
vp9_ethread: combine encoder counts in separate struct
Several frame counters in encoder are updated at SB level. Combine
those counters and put them in a separate struct, which allows us
to allocate one copy for each thread.
Change-Id: I00366296a13c0ada4d8fa12f5e07728388b6cab7
Peter de Rivaz [Thu, 16 Oct 2014 13:00:54 +0000 (14:00 +0100)]
Added sse2 acceleration for highbitdepth variance
Change-Id: I446bdf3a405e4e9d2aa633d6281d66ea0cdfd79f
(cherry picked from commit
d7422b2b1eb9f0011a8c379c2be680d6892b16bc)
(cherry picked from commit
6d741e4d76a7d9ece69ca117d1d9e2f9ee48ef8c)
Deb Mukherjee [Fri, 14 Nov 2014 23:12:01 +0000 (15:12 -0800)]
Visual studio build fix using explicit cast
Change-Id: If74510370723e497f4f33d988b8b398124edf69b
Yunqing Wang [Fri, 14 Nov 2014 23:11:47 +0000 (15:11 -0800)]
Merge "vp9_ethread: include a pointer to mb in VP9_COMP"
Yunqing Wang [Fri, 14 Nov 2014 20:31:06 +0000 (12:31 -0800)]
vp9_ethread: include a pointer to mb in VP9_COMP
Modified VP9_COMP struct to include MACROBLOCK *mb. This change
makes it feasible in multi-thread case to allocate a mb for each
thread.
Change-Id: I624d6d1aa9c132362200753e5d90b581b1738d6e
Marco [Fri, 14 Nov 2014 19:36:05 +0000 (11:36 -0800)]
Merge "Add more rate control stats to vpx_temporal_svc_encoder."