Commit Graph

5240 Commits

Author SHA1 Message Date
Dmitry Kovalev
755433927c Merge "Cleaning up vp9_firstpass.c" 2014-04-08 18:22:34 -07:00
Dmitry Kovalev
c800e3c816 Merge "Adding vp9_ssim.h file." 2014-04-08 18:19:21 -07:00
Frank Galligan
9893fb9859 Merge "Fix decoder resolution change with tiles" 2014-04-08 17:13:33 -07:00
Yunqing Wang
4e66293fcb Use source frame difference to make partition decision
Calculate the difference variance between last source frame and
current source frame. The variance is calculated at 16x16 block
level. The variances are compared to several thresholds to decide
final partition sizes.

An adaptive strategy is implemented to decide using
SOURCE_VAR_BASED_PARTITION or FIXED_PARTITION based on motions
in the video. The switching test is done once every
search_type_check_frequency frames.

The selection of source_var_thresh needs to be investigated
further later.

RTC set Borg test showed 0.424% overall psnr gain, and 0.357%
ssim gain. For clips with large enough static area, the
encoding speedup is around 2% to 15%.

Change-Id: Id7d268f1d8cbca7fb8026aa4a53b3c77459dc156
2014-04-08 17:03:02 -07:00
Jingning Han
06ec873f2c Select prediction filter type in non-RD mode decision
This commit allows the non-RD mode decision flow to  select
prediction filter type in NEWMV mode. It provides 8.14% compression
performance gains in both settings of AQ=0 and 3. The current speed
impact is about 5% to 10% slower.

Change-Id: Id66ecebf77abd8f90fb3f6a066c0e8dfb4bf1c42
2014-04-08 16:47:42 -07:00
Deb Mukherjee
d35df2d8ea High-level hooks for Profile 2 (10/12 bit)
Adds some high-level hooks for profile 2 before further
progress on the implementation.

According to the definitiion in this patch:
1. Profile 2 only supports 10 or 12 bit color but not 8
2. Profile 2 supports all color sampling modes: 444, 422 and 420,
and alpha plane.
3. Profile 3 is currently undefined.

Please consider the definition carefully and suggest modifications
to the definition as needed.

Change-Id: I5b284fc679e54ac5aee171af72fa7994cfd28995
2014-04-08 16:18:34 -07:00
Dmitry Kovalev
129cb23c14 Adding vp9_ssim.h file.
Change-Id: Ib3b3864a6018c62ac1ea18e30795af74464596cd
2014-04-08 16:08:39 -07:00
Dmitry Kovalev
231ef057c4 Cleaning up vp9_firstpass.c
Change-Id: Ie5723690f7c0bfa29a7ccef5da0c6c6326600ee6
2014-04-08 15:21:30 -07:00
Frank Galligan
6ae58931d6 Fix decoder resolution change with tiles
There was a bug with the decoder that if you started the decoder
with more threads than the first frame had tile columns. Afterwards
tried to decode a frame with more tile columns than the first frame,
the decoder would hang. E.g. run vpxdec --threads=4. The first frame
had two tile columns, then the next key frame had 4 tile columns, the
decoder would hang. If you started with 4 tiles and switched to 2
tiles the decoder would be fine. The issue is that the worker the thread
loop is using is stale.

I added a test vector "vp90-2-14-resize-848x480-1280x720.webm" that
exhibited the bug.

Change-Id: I7bdd47241a52ac0fe1c693a609bc779257e94229
2014-04-08 15:16:11 -07:00
Dmitry Kovalev
e8e380f994 Merge "Cleaning up vp9_ratectrl.c file." 2014-04-08 15:06:29 -07:00
Dmitry Kovalev
7e7c95a291 Merge "Cleaning up vp9_diamond_search_sad_c() function." 2014-04-08 13:47:41 -07:00
Dmitry Kovalev
e9fb970af1 Merge "Moving init_rate_control() to vp9_ratectrl.{c, h}." 2014-04-08 12:45:49 -07:00
Dmitry Kovalev
92380695f6 Cleaning up vp9_ratectrl.c file.
Change-Id: If8044d9c71afe02ed1e6c94487344e143bdfcd74
2014-04-08 11:59:41 -07:00
Dmitry Kovalev
56c2f41ccb Renaming VP9D_COMP & VP9Decompressor to VP9Decoder.
Change-Id: Ieb9b455b8aaef9884391021b7f640ef24c554687
2014-04-08 11:41:12 -07:00
Yaowu Xu
e2ab65ab7d Merge "vp9_ratectrl: change ARF overlays rate correction factor" 2014-04-08 07:17:38 -07:00
Yaowu Xu
8f68468917 Merge "Replace imprecise 32 bits calculations by 64 bits calculations" 2014-04-08 07:14:21 -07:00
Yaowu Xu
2914bcfd9b Merge "vp9_firstpass: Get rid of magic number in bits per MB calculation" 2014-04-08 07:13:49 -07:00
Dmitry Kovalev
6769143cef Merge "Moving compute_qdelta functions into vp9_ratectrl.{h, c}." 2014-04-07 22:39:38 -07:00
Marco Paniconi
b03e7757d1 Merge "Add constrained-copy partition to speed features." 2014-04-07 18:31:56 -07:00
Dmitry Kovalev
91dbac178f Moving compute_qdelta functions into vp9_ratectrl.{h, c}.
Change-Id: I512f2a287dd8765879a2d1144e2f028dc65f71ff
2014-04-07 16:57:53 -07:00
Dmitry Kovalev
9243edc737 Cleaning up vp9_diamond_search_sad_c() function.
Change-Id: I0816ec12ec0a6f21d0f25f10c214b5fd327afc6c
2014-04-07 16:28:35 -07:00
Dmitry Kovalev
8eec5cad50 Merge "Fixing memory leak introduced in previous commit." 2014-04-07 16:13:04 -07:00
Dmitry Kovalev
22a3e30790 Converting set_prev_mi() to get_prev_mi().
Change-Id: Iad4002d7aecaae0e25d88e286bacde7e6cd7264f
2014-04-07 16:01:34 -07:00
Dmitry Kovalev
8204140891 Cleaning up encode_frame_internal().
Change-Id: I9c5f7edc2d5d1ec5aee396b87bdfc99ee21c435a
2014-04-07 15:51:48 -07:00
Marco Paniconi
181949948e Add constrained-copy partition to speed features.
Copy up to a certain bsize, otherwise set to a fixed bsize.
This helsp to reduce artifact near moving boundary caused by full partition
copy without checking motion of super-block.
This artifact can occur at speeds 3,4 in real-time mode.
Issue: https://code.google.com/p/webm/issues/detail?id=738.

Change-Id: I05812521fd38816a467f72eb6a951cae4c227931
2014-04-07 14:58:28 -07:00
Dmitry Kovalev
e8c1c95cde Merge "Rewriting calc_plane_error() function." 2014-04-07 14:41:42 -07:00
Dmitry Kovalev
bbffaf627b Merge "General vp9_encodeframe.c cleanup." 2014-04-07 14:35:54 -07:00
Dmitry Kovalev
e7e426b274 Moving init_rate_control() to vp9_ratectrl.{c, h}.
Change-Id: Iab3effc39064f265426c82b455ef38d37dcce5a8
2014-04-07 14:34:46 -07:00
Dmitry Kovalev
579504b2ef Fixing memory leak introduced in previous commit.
Commit introduced the leak: "Removing XMA legacy from VP9 code."
I5e9dfc50b6312848df8c3b8276f6b4d0c7ff9cf9

Change-Id: Ia1f91bb8403bef340de9f089fa78b3fccc3e9917
2014-04-07 14:21:43 -07:00
Dmitry Kovalev
3f48418472 Merge "Cleaning up vp9_speed_features.c." 2014-04-07 14:18:02 -07:00
Dmitry Kovalev
0cb65fe5cc Merge "Removing unused seg0_* vars." 2014-04-07 13:16:06 -07:00
Dmitry Kovalev
acf39c8568 Merge "Moving {restore, save}_coding_context to vp9_onyx_if.c" 2014-04-07 13:15:58 -07:00
Dmitry Kovalev
1e96d3a50e Merge "Cleaning up vp9_{cx, dx}_iface.c files." 2014-04-07 13:06:01 -07:00
Dmitry Kovalev
233b581cef Cleaning up vp9_speed_features.c.
Change-Id: I7b2b690d2d51d55daa642be4131e5febd78cbe0a
2014-04-07 12:54:11 -07:00
Dmitry Kovalev
7169a0b114 Adding temp svc variable.
Change-Id: Ic68caec1bcb8a88f443c3e40ce9770eade5bd320
2014-04-07 11:31:26 -07:00
Dmitry Kovalev
b5e12dda52 Cleaning up vp9_{cx, dx}_iface.c files.
Change-Id: Ib4e31ba74c4b882bd93942ef743f4a189892738d
2014-04-07 10:38:51 -07:00
Dmitry Kovalev
22580c462b Moving {restore, save}_coding_context to vp9_onyx_if.c
These functions do nothing about rate control.

Change-Id: I714e80b1c1f4f9aa157a56df705247fce6db138d
2014-04-07 10:32:15 -07:00
Guillaume Martres
4664b219a2 vp9_ratectrl: change ARF overlays rate correction factor
ARF overlays now use the same rate correction factor as regular inter
frames, further testing would be needed to see if it makes sense to use
a completely separate rate correction factor for ARF overlays.

$ vpxenc --cpu-used=5  --fps=50/1 --target-bitrate=2000
         parkjoy.y4m -o out.webm
=> Before: 3356 kb/s
=> After: 2271 kb/s

Change-Id: I73e4defa615ba7a8a2bdb845864f4b1721cbbffe
2014-04-07 18:22:11 +02:00
Guillaume Martres
0ec5919d42 Replace imprecise 32 bits calculations by 64 bits calculations
Change-Id: If1b0a2d6603ce24f5dd99855e8dfe459e7a2835a
2014-04-07 18:22:08 +02:00
Guillaume Martres
ded9e19144 vp9_firstpass: Get rid of magic number in bits per MB calculation
Change-Id: Ib3886cb7cafc211581f4f9e7f76782d9d1984434
2014-04-07 18:21:40 +02:00
Dmitry Kovalev
f9c7e2c304 Merge "Cleaning up vp9_refining_search_sadx4() function." 2014-04-07 01:49:21 -07:00
Dmitry Kovalev
c6708cd524 Merge "Moving all RATE_CONTROL initialization to init_rate_control()." 2014-04-07 01:46:28 -07:00
Jingning Han
d8f68c2454 Merge "Set up early RD cost check for NEWMV in non-RD mode decision flow" 2014-04-06 11:13:32 -07:00
Jingning Han
516d0b1180 Set up early RD cost check for NEWMV in non-RD mode decision flow
This commit estimates the motion vector rate cost right after full
pixel motion search. It combines this and the mode cost and compares
the corresponding rate-distortion cost. If it is already above the
current best one, skip the rest sub-pixel motion search and modeling
process. For pedestrian_area 1080p at 4000 kpbs, the speed -5 runtime
goes down from 39425 ms -> 38399 ms.

Change-Id: If4cd7119fd6c266798d5cf1d19d19ab425e52a26
2014-04-04 16:08:51 -07:00
Dmitry Kovalev
bda5352bae Merge "Refactoring decode_one() function." 2014-04-04 15:47:34 -07:00
Dmitry Kovalev
a368036731 Moving all RATE_CONTROL initialization to init_rate_control().
Change-Id: I4685706b816dd1c45500e1387c9f63edb2fa1962
2014-04-04 15:46:55 -07:00
hkuang
0678104164 Merge "Code clean up." 2014-04-04 15:32:14 -07:00
Dmitry Kovalev
c48f2bd807 General vp9_encodeframe.c cleanup.
Change-Id: Ie364fe837002de96923da2c1c0ff8bb4b8d469a7
2014-04-04 10:44:58 -07:00
Dmitry Kovalev
439c66b291 Refactoring decode_one() function.
Change-Id: Ic3ee3b1fb04691e8c7d16020b56e034ab8888525
2014-04-04 10:43:52 -07:00
Dmitry Kovalev
107929dc6b Adding FAST_COEFF_UPDATE enum.
Change-Id: I75ad328c6d719df81cc24f3ae21c152af4ebdacc
2014-04-04 10:31:34 -07:00
Paul Wilkins
1259cd7bce Merge "Reinstating the DISABLE_RC_LONG_TERM_MEM macro" 2014-04-04 06:30:40 -07:00
Dmitry Kovalev
0e8f35de85 Merge "Removing interp_kernel from MACROBLOCKD." 2014-04-03 16:58:21 -07:00
Marco Paniconi
2a2e8a9d72 Merge "Add codec control function for enabling frame_periodic_boost." 2014-04-03 16:57:44 -07:00
Yaowu Xu
6ca6073b6d Merge "Fix complexity Aq mode." 2014-04-03 16:51:49 -07:00
hkuang
272e030f70 Code clean up.
No need to check pbi->common.frame_to_show again.

Change-Id: I572ea4afd0d8b6000c0bb7575b7023d75cad5a4e
2014-04-03 16:20:26 -07:00
Dmitry Kovalev
30a15633f8 Merge "Replacing magic constants with expressions." 2014-04-03 15:54:49 -07:00
Marco Paniconi
0eb88c9064 Add codec control function for enabling frame_periodic_boost.
Change-Id: I6371ef7301c6bc3138552bd349e9bd154dee3e08
2014-04-03 15:49:03 -07:00
Jingning Han
690678fc42 Merge "Adjust key frame quantization index for rtc coding" 2014-04-03 15:35:48 -07:00
Dmitry Kovalev
a9f324fa7f Removing interp_kernel from MACROBLOCKD.
Now interp_kernel is obtained when it is really required (based on
mbmi->interp_filter value).

Change-Id: I4c7a93c179d1045eba16e7526c293d02c9b8b47e
2014-04-03 15:28:42 -07:00
Alex Converse
825908218a Remove full scale duplicates of bsize.
Change-Id: I28e45870a0e3b0de3b9e40fb044789ae1209c0f7
2014-04-03 11:51:21 -07:00
Dmitry Kovalev
1e00f6c3c4 Merge "Removing XMA legacy from VP9 code." 2014-04-03 11:13:31 -07:00
Deb Mukherjee
be8d2b054e Reinstating the DISABLE_RC_LONG_TERM_MEM macro
Reinstates this macro and truns it on in order to avoid issues
due to some frames at the end starving in harder videos.
A more acceptable solution is in the works.

Change-Id: I3c46148e86fa6114e3fed245246fb3686a9e6700
2014-04-03 10:22:58 -07:00
Dmitry Kovalev
edd457a4d1 Merge "Making frame_branch_ct a local array." 2014-04-03 09:59:10 -07:00
Paul Wilkins
009ee2b737 Fix complexity Aq mode.
This was broken by change
Icc4b66f3935fad5ec4516a4d57e843d12c365e64

Change-Id: I49e3fc525664eb7a433f55f76b8f8628fe251eab
2014-04-03 14:34:43 +01:00
Dmitry Kovalev
94e082993c Merge "Fixing typo in cal_nmvjointsadcost()." 2014-04-03 01:41:46 -07:00
Jingning Han
2536a89a4f Adjust key frame quantization index for rtc coding
This commit slightly increases the bit allocation for key frame. This
improves speed -5 coding performance by 2.77% with aq-mode=0 and by
2.78% with aq-mode=3.

Change-Id: Iaa3e777f80b9706306606af06e89852bac146659
2014-04-02 22:52:22 -07:00
Dmitry Kovalev
db85ea2184 Making frame_branch_ct a local array.
Change-Id: Id79ed3b87fd6055e96738af53eb964addd0b918b
2014-04-02 19:07:51 -07:00
Dmitry Kovalev
484679e401 Removing XMA legacy from VP9 code.
Change-Id: I5e9dfc50b6312848df8c3b8276f6b4d0c7ff9cf9
2014-04-02 19:05:59 -07:00
Dmitry Kovalev
1ea18dc258 Cleaning up vp9_refining_search_sadx4() function.
Change-Id: I47a7148bf746f61d0c4947f9b22624a8c071359f
2014-04-02 18:59:21 -07:00
Dmitry Kovalev
5c185a0587 Merge "Cleaning up vp9_pattern_search() function." 2014-04-02 18:28:47 -07:00
Marco Paniconi
24c0635655 Merge "Set min_block_size for aq_mode=3 to 8x8." 2014-04-02 14:11:49 -07:00
Marco Paniconi
36f61aa836 Set min_block_size for aq_mode=3 to 8x8.
For real-time mode under cbr, this increases the gain (5-10%)
for speed 5 (none/little change for 6), on vc-clips.

Change-Id: I9b38beeb3c820de22c43a0ba53a9456168dd24ba
2014-04-02 14:09:38 -07:00
Deb Mukherjee
d6f7bfc34e Merge "Rate ctrl changes to track target bitrates closer" 2014-04-02 13:29:34 -07:00
Dmitry Kovalev
bb518e64d0 Merge "Cleaning up vp9_get_mvpred_{av_,}var() functions." 2014-04-02 13:05:21 -07:00
Jingning Han
c42e8f1429 Merge "Make frame level quantization change a parameter" 2014-04-02 12:48:05 -07:00
Jingning Han
409f48ec52 Merge "Adjust rate allocation in non-RD coding mode" 2014-04-02 12:47:50 -07:00
Paul Wilkins
32eb8c7955 Merge "Add speed feature for recode tolerance." 2014-04-02 12:22:33 -07:00
Dmitry Kovalev
6a2fb54484 Removing unused seg0_* vars.
Change-Id: I87b0668e23c54429a06bba85437606c4780be9ba
2014-04-02 12:00:11 -07:00
Deb Mukherjee
97f4fb7b5f Rate ctrl changes to track target bitrates closer
Turns off the DISABLE_RC_LONG_TERM_MEM macro and makes other changes
in the way the bits are updated, to make 2-pass rate control track
target bitrates closer.

Change-Id: I5f3be4b11c2908e6a9a9a1dd4fcf4e65531c44d8
2014-04-02 11:16:20 -07:00
Dmitry Kovalev
8b8606a737 Merge "Cleaning up vp9_mvref_common.c." 2014-04-02 11:03:36 -07:00
Dmitry Kovalev
1942f9e158 Merge "Cleaning up vp9_cx_iface.c file." 2014-04-02 11:01:16 -07:00
Dmitry Kovalev
68027a0b8a Merge "Grouping members in MB_MODE_INFO struct." 2014-04-02 11:00:58 -07:00
Dmitry Kovalev
09e4be88f9 Merge "Adding return value to set_offsets() function." 2014-04-02 11:00:32 -07:00
Dmitry Kovalev
3ae5804f7f Merge "Clearing all encoder counts with single vp9_zero() call." 2014-04-02 10:59:13 -07:00
Dmitry Kovalev
67304d10ad Merge "Adding local pointer variables referencing REATE_CONTROL struct." 2014-04-02 10:58:49 -07:00
Marco Paniconi
eb0ab20700 Merge "Remove the q division by 3 for first frame." 2014-04-02 10:21:52 -07:00
Jingning Han
d8b8d87eb7 Make frame level quantization change a parameter
Parameterize the frame level quantization index used in non-RD
coding flow with cbr.

Change-Id: I79cfbd9c32c0d0fc33ad720d2180432e910baf7a
2014-04-02 09:51:22 -07:00
Jingning Han
751d002f2f Adjust rate allocation in non-RD coding mode
This commit reduces the frequency of frames using finer quantizer
in non-RD coding flow, and slightly tune up the quantizer resolution
when used. It provides 1.7% compression gains in speed -5 at no speed
difference.

Change-Id: I430249a51260a841a0402666e5ec1566e4f7d5a6
2014-04-02 09:51:22 -07:00
Paul Wilkins
769cd78ff2 Add speed feature for recode tolerance.
The new tolerance is a little higher than before (especially
for kf/gf/arf) so this change gives an encode speed up
for some clips up for speeds 0-2.

Change-Id: I63f7d6c9cc11c7f58742f41e250dcd3eab1741eb
2014-04-02 12:18:05 +01:00
Paul Wilkins
88690475ea Merge "Speed setting correction to max q estimate." 2014-04-02 04:08:18 -07:00
Dmitry Kovalev
21b8fc4ce4 Adding local pointer variables referencing REATE_CONTROL struct.
Change-Id: I1d8c312a599db505a023e5cd0cc4ba2b8f696a2e
2014-04-01 20:11:41 -07:00
Dmitry Kovalev
4f8a440083 Clearing all encoder counts with single vp9_zero() call.
Change-Id: I4341d16ef83acd1cc9e55f7c5eff4af921bf57d4
2014-04-01 20:09:35 -07:00
Dmitry Kovalev
5f8dd6c9ec Adding return value to set_offsets() function.
Change-Id: I88e018442c527cf21eac791f0768e805dda244f1
2014-04-01 20:06:47 -07:00
Marco Paniconi
939f0e7444 Remove the q division by 3 for first frame.
This code/setting was actually not used (since speed features were not set on first frame,
until a recent change) and should be removed.

In CBR mode, the q value for the first frame can be controlled by setting
the target size via the parameters rc_buf_initial_sz (and max_intra_size_pct).

Change-Id: I65afc64972b36c449bd5a8c25800e65da5389066
2014-04-01 18:42:05 -07:00
Dmitry Kovalev
86f44a91f4 Renaming two members in MACROBLOCKD struct.
Renames:
  mi_8x8 -> mi
  mode_info_stride -> mi_stride

Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-04-01 17:46:40 -07:00
Dmitry Kovalev
5f3773d0f7 Replacing magic constants with expressions.
Change-Id: I434682bbd4cb2089cd213d77ed5a5e06256dc45d
2014-04-01 17:42:14 -07:00
Dmitry Kovalev
7c7fc719c9 Merge "Moving encoder quantization parameters into separate struct." 2014-04-01 17:15:11 -07:00
Dmitry Kovalev
79b168f388 Cleaning up vp9_cx_iface.c file.
Change-Id: I4de07d3ef81ebba759a983207d9ca768a65220a6
2014-04-01 17:14:55 -07:00
Dmitry Kovalev
06159fcd18 Merge "Common configuration for MACROBLOCKD struct." 2014-04-01 15:54:34 -07:00
Yunqing Wang
2b99fcbc58 Merge "Make last frame source available in current frame encoding" 2014-04-01 15:54:13 -07:00
Yunqing Wang
4a9928e5eb Make last frame source available in current frame encoding
While encoding a frame, its last frame source can be used to give
acurate motion information. This patch prevents last frame to be
overwritten so that it is available during current frame encoding.

The last source is scaled when it is necessary. cpi->Last_Source
points to the last source frame.

Change-Id: I0e1ef5e9e1d2badf9d0c7a1a44a7ed5b24c09425
2014-04-01 15:01:38 -07:00
Alex Converse
d0a2988dbd Merge "Propagate active map state." 2014-04-01 13:49:26 -07:00
Dmitry Kovalev
d42976c515 Common configuration for MACROBLOCKD struct.
Change-Id: Ie2ea9dd8bd338cc9fe12ca9033df64f7644c68b3
2014-04-01 10:57:59 -07:00
Paul Wilkins
992c41d2fd Speed setting correction to max q estimate.
Use a crude correction factor to correct for
lower compression efficiency at higher encode
speeds when estimating the max Q for the
clip.

Change-Id: I5ae377647f4adf5e91d700a8791fb3b8f70efc73
2014-04-01 17:03:04 +01:00
Alex Converse
12dd53d06a Propagate active map state.
This fixes active map for non-rd realtime speeds.

Change-Id: I1bf416de3f7ef2e5dd2eabde052cce3c0683a52c
2014-03-31 16:55:39 -07:00
Jingning Han
99893f2410 Apply finer quantizer to partition search frames in non-RD flow
This commit optimizes the bit allocation for the non-RD coding flow.
It applies slightly better quantizer to the frames, where all blocks
run a non-RD partition search. Such frames typically have better
rate-distortion trade off, thus improving the reconstruction quality
for next few frames reference at reasonably low increment in rate
cost.

The coding performance for rtc set at speed -5 with error-resilient
tuned on and rate control set as cbr is improved by 19.58%. It improved
the coding speed by about 10% for a portion of local test clips.

Change-Id: I9d56696cd4359dc8136ca10aff10fff05aaa2686
2014-03-31 09:33:11 -07:00
Yaowu Xu
6618b73b5e Merge "[BITSTREAM]Fix the scaling calculation" 2014-03-31 07:08:40 -07:00
Yaowu Xu
8a099deb60 Merge "Adjust rt speed steps." 2014-03-31 07:08:31 -07:00
Dmitry Kovalev
20d868f05d Grouping members in MB_MODE_INFO struct.
Change-Id: Ia6d7e7a08810e0c3401da4d10266828d560e6851
2014-03-28 17:44:13 -07:00
James Zern
1bc32afd3c Merge "[svc] Fix SvcTest.SecondPassEncode failure" 2014-03-28 17:09:31 -07:00
Dmitry Kovalev
7bcfa31750 Moving encoder quantization parameters into separate struct.
Change-Id: I2a169535489aeda3943fb5a46ab53e7a12abaa36
2014-03-28 16:46:41 -07:00
Yaowu Xu
4f857bacd2 [BITSTREAM]Fix the scaling calculation
For very large size video image, the scaling calculation may need use
value beyond the range of int. This commit upgrade the value to 64bit
to make sure the calculation do not wrap around INT_MAX.

The change corrected the decoder behavior.

The bug affects only very large resolution video because the scaling
calculation was sufficient for image size smaller than 2^13.

This resolves issue:
https://code.google.com/p/webm/issues/detail?id=750

Change-Id: I2d2ed303ca6482f31f819f3c07d6d3e98ef3adc5
2014-03-28 16:40:29 -07:00
Yaowu Xu
6fc20a8434 Adjust rt speed steps.
This commit adjusted the speed steps in rt mode to make the steps
more evenly spaced on speed and quality, specifically:
1. Merged 3 and 4 into one single step 3 and removed confilicting
features.
2. Move 8, 7, 6, 5 to be 7, 6, 5, 4 repsectively.

Change-Id: I38d56d61531f3561d772aef953c411c8fb38c063
2014-03-28 16:40:28 -07:00
Minghai Shang
ab961ad01b Merge "[svc] Finalize first version of 2nd pass rc" 2014-03-28 15:58:23 -07:00
Minghai Shang
074bbfa555 Merge "[svc] Initialization of 2nd pass rc for svc two pass rc" 2014-03-28 14:34:38 -07:00
Minghai Shang
86394d2636 [svc] Fix SvcTest.SecondPassEncode failure
Root cause is the different default register length between x86
and x64 platform. Change spatial_layer_id to long long.

Change-Id: If1a5972365c7a59f7e76cb4fd714610f3d48a8ff
2014-03-28 13:59:08 -07:00
Minghai Shang
9ee6087f34 [svc] Finalize first version of 2nd pass rc
Change-Id: I366850015004644c4fc7feabe27a782fdd8d8718
2014-03-28 13:38:02 -07:00
Dmitry Kovalev
9e46dcd2fc Merge "Moving dqcoeff array to MACROBLOCKD in decoder." 2014-03-28 13:32:37 -07:00
Dmitry Kovalev
03349d2ba2 Moving dqcoeff array to MACROBLOCKD in decoder.
Change-Id: I3e20c0cdb9d2437bddf21afb255855f2dead8e02
2014-03-28 10:36:16 -07:00
Dmitry Kovalev
0a6d5547e2 Adding vp9_speed_features.{h, c}.
Change-Id: I7d9874da8ff78a2d7e0cf11073af9c30538bc9a6
2014-03-28 10:30:28 -07:00
Paul Wilkins
77e4f85cf1 Merge "Further speed trade off adjustments." 2014-03-28 06:10:21 -07:00
Paul Wilkins
800b5718e8 Merge "Experimental change to speed 1 settings." 2014-03-28 06:10:07 -07:00
Alex Converse
7efe8876ba Merge "Remove a duplicate block_size variable." 2014-03-27 19:12:35 -07:00
Dmitry Kovalev
38053687bc Cleaning up vp9_mvref_common.c.
Change-Id: I4eb815156ecaab02c9182e6e1abbea0e4d86c441
2014-03-27 17:50:02 -07:00
Dmitry Kovalev
fc28560bbd Rewriting calc_plane_error() function.
Change-Id: I06bb077edd4917b967fefe28bf4891b61b4f79b5
2014-03-27 16:15:04 -07:00
Minghai Shang
5cf0363368 [svc] Initialization of 2nd pass rc for svc two pass rc
Change-Id: If67ed8721f258883e41bab18f5c456505de68785
2014-03-27 15:46:32 -07:00
Minghai Shang
e27bcc2451 Merge "[svc] Verify and store input two pass stats data in 2nd pass rc" 2014-03-27 15:06:42 -07:00
Alex Converse
79e68bce8a Remove a duplicate block_size variable.
Change-Id: Ia6b1e3c5a8ac21219bbfe9eecdb4801f3eaa10e5
2014-03-27 14:01:11 -07:00
Minghai Shang
6b2e406123 [svc] Verify and store input two pass stats data in 2nd pass rc
Change-Id: Ib09eedc17ea0ea2eec75d78112e4786d98f382aa
2014-03-27 13:43:20 -07:00
Jingning Han
4a42047b4e Fix segment_id assignment in update_state_rt for AQ mode
Properly obtain and buffer the segment_id in non-RD mode information
update process.

Change-Id: I43230001872f6a986d12c0d94e98fdec0db3be2c
2014-03-27 12:42:04 -07:00
Dmitry Kovalev
6998d56cb7 Merge "Moving thresh_mult{,_sub8x8} from SPEED_FEATURES to VP9_COMP." 2014-03-27 11:08:12 -07:00
Paul Wilkins
01148d4548 Further speed trade off adjustments.
Small speed gain for speed 1.

Quality is generally a little up for speed 2.

Speed 3 was similar to speed 4 but now positioned more
evenly between 2 and 4 speed and quality wise.
   (opsnr +5.6% ssim +8.25% across all sets)

Speed 4 is a little slower than before but sizable quality gains.
   (opsnr +3.7% ssim +6.8% across all sets)

The code has been cleaned up a bit so that for each incremental
speed step changes over the previous speed step are applied.
This makes it easier to see what is changing from one setting to
the next.

Change-Id: I2d98d0d6230af23486adaec01908f58942a7cdeb
2014-03-27 17:11:35 +00:00
Marco Paniconi
7cbeb910f2 Merge "aq_mode=3: Set target seg_map in sb-block order." 2014-03-27 08:48:22 -07:00
Paul Wilkins
32c4fdec78 Experimental change to speed 1 settings.
Allow tx search for ARF and GF helps quality but a little slower.
Setting subpel_iters_per_step to 1 improves encode speed.
Setting sf->mode_skip_start = 10 improves speed.

Initial local results suggest overall impact on quality is neutral
but encode is up to 15% faster.

Change-Id: Ibde02cae6626a44c10a1da0cefe888afbb51f037
2014-03-27 12:44:21 +00:00
Marco Paniconi
fc0b33182b aq_mode=3: Set target seg_map in sb-block order.
Removes a TODO. Changed meaning of some parameters
(target-max-percent refresh and starting index) to be
defined relative to superblock. Also, modify turn-off condition.

Change-Id: I5e55f372b7079c24f9cdac0b06fa34620dbf456b
2014-03-26 18:09:20 -07:00
Marco Paniconi
2b06bf20ce Move aq_mode=2 (complexity_aq) to separate file.
Change-Id: Iffa45b9b04196c1ded6037622a8644a2500a62de
2014-03-26 18:01:59 -07:00
Jingning Han
6bdfc8cd0b Merge "Motion referenced partition search for non-RD coding flow" 2014-03-26 16:06:01 -07:00
Dmitry Kovalev
0437575848 Merge "Removing prev_mi_8x8 from MACROBLOCKD." 2014-03-26 15:45:11 -07:00
Dmitry Kovalev
224d986858 Cleaning up vp9_get_mvpred_{av_,}var() functions.
Change-Id: I0df8c2a6d9863f92ee406010f2daeb5e40627649
2014-03-26 15:40:41 -07:00
Dmitry Kovalev
38c2d37b9d Merge "Cleaning up vp9_entropymv.c." 2014-03-26 14:28:45 -07:00
Jingning Han
abdb0650b4 Motion referenced partition search for non-RD coding flow
This commit enables the non-RD mode decision coding flow to
adaptively apply partition search in non-refresh frame, when the
collocated block in previous frame suggests there might be a motion
activity. It refactors the update_state_rt() function to support
buffer swap of mode_info struct, thereby unifying the encoding
stage across various non-RD coding modes.

It provides 5% compression performance gains in speed -6 for rtc
test set, at about 12% speed slow down.

Change-Id: Iefa374aed5a11c4b7ff9a3ed36a98ea8bd184edb
2014-03-26 13:09:04 -07:00
Dmitry Kovalev
0abe813c0e Moving thresh_mult{,_sub8x8} from SPEED_FEATURES to VP9_COMP.
SPEED_FEATURES should contain only configuration parameters.

Change-Id: I7d6d0636879c3e87dad09bc9455c1cf1dc039da8
2014-03-26 11:29:10 -07:00
Dmitry Kovalev
fc25e4dc52 Encapsulating CYCLIC_REFRESH struct into .c file.
Change-Id: I32695ad703dcbbbbf5f122b403f3d3120a0be366
2014-03-26 11:00:35 -07:00
Dmitry Kovalev
63f86c149a Removing prev_mi_8x8 from MACROBLOCKD.
Change-Id: I32beb5f18c10b5771146c55933b5555487f53633
2014-03-26 10:50:34 -07:00
Yaowu Xu
2ec04d1f84 Merge "Added a speed feature "allow_skip_recode"" 2014-03-26 09:53:42 -07:00
Yaowu Xu
85bf6914cf Merge "Removed redundant settings" 2014-03-26 09:53:32 -07:00
Jingning Han
3b8d00449c Merge "Apply early termination in non-RD partition search" 2014-03-26 09:28:55 -07:00
Marco Paniconi
79ec9a26d1 Merge "Fix to cylcic refresh: use correct/chosen mode for update_segment." 2014-03-26 09:15:15 -07:00
Dmitry Kovalev
0038bbec32 Cleaning up vp9_pattern_search() function.
Change-Id: I8da5e13b23a3d6b73c82bbe443c82dd87fd689f3
2014-03-25 17:41:19 -07:00
Dmitry Kovalev
4fc3e85eee Merge "Removing unused force_next_frame_intra member." 2014-03-25 17:17:22 -07:00
Dmitry Kovalev
6f139773a2 Merge "Removing redundant references to VP9D_COMP struct." 2014-03-25 16:56:33 -07:00
Marco Paniconi
eeed7e2953 Fix to cylcic refresh: use correct/chosen mode for update_segment.
Fix so that vp9_update_segment_aq() will use the correct (i..e, chosen)
encoding mode (from ctx struct) in update_state.

Change-Id: Icc4b66f3935fad5ec4516a4d57e843d12c365e64
2014-03-25 16:40:48 -07:00
Dmitry Kovalev
94800ae0ce Merge "Moving setup_{key, inter}_frame() to vp9_onyx_if.c." 2014-03-25 16:28:49 -07:00
Alex Converse
0d7ee83448 Merge "Refactor out zero motion vector equivalence." 2014-03-25 15:59:24 -07:00
Jingning Han
0d78687583 Apply early termination in non-RD partition search
This commit allows the recursive non-RD partition search to early
terminate sub search tree when the cumulative rate-distortion is
already above the best available.

Change-Id: Ifdbcbb4bee229f47fde3033200829577c9f1fc1d
2014-03-25 15:51:36 -07:00
Alex Converse
e186b66a44 Merge "Add consts to cost_mv_ref." 2014-03-25 15:42:24 -07:00
Dmitry Kovalev
b135af024c Removing unused force_next_frame_intra member.
Change-Id: I3d9fc6da986d0f1ec682fb12e067c52472453eed
2014-03-25 14:28:15 -07:00
Yaowu Xu
6eb2cacf0d Added a speed feature "allow_skip_recode"
This commit added a speed feature to make the logic of calculating
skip_recode on a block level more explicit. This also enable the
feature to be enabled at speed 5 where the previous logic is too
conservative, help gain back the lost speed for --rt(-5).

Change-Id: Ieb37ca3e85c2e7bda343486edf13d5f5395f2233
2014-03-25 14:27:45 -07:00
Dmitry Kovalev
9366624cc4 Removing redundant references to VP9D_COMP struct.
Change-Id: I4c4772c0e6aca2c7d7085a72412ac8dba8874a3d
2014-03-25 14:21:26 -07:00
Alex Converse
9fe1450da3 Refactor out zero motion vector equivalence.
Change-Id: I6b20248b6f76545356f910ca6386f5466e287b6e
2014-03-25 14:17:55 -07:00
Alex Converse
de3fc51712 Add consts to cost_mv_ref.
Change-Id: Ie5dadb5c2bcfe80a703edb58a71dc453644c9ade
2014-03-25 14:17:55 -07:00
Dmitry Kovalev
72d431b69f Removing redundant vpx_free() call.
above_seg_context is alreaded freed during vp9_remove_common() call.

Change-Id: I16b72c710e71d2f143df2d47e876d220c8d374e0
2014-03-25 14:07:49 -07:00
Yaowu Xu
de8fd6f48a Removed redundant settings
The recode_loop feature is disabled for one-pass always.

Change-Id: I6de8820add4a6f97196874af83a970f9898f842d
2014-03-25 12:33:22 -07:00
Dmitry Kovalev
ed39c40a2e Moving above_context to VP9_COMMON.
Change-Id: I713af99d1e17e05a20eab20df51d74ebfd1a68d2
2014-03-25 10:40:08 -07:00
Jingning Han
c4e807ae2f Fix compiling errors due to git merge
There were a few conflicts between the new non-RD partition search
and recent clean-up patches, which were not caught by git control.
This commit fixed these issues.

Change-Id: Ieebefbd6c19d81d0d13e3c568877d5cce2ab7797
2014-03-25 10:25:16 -07:00
Yaowu Xu
34a3628a45 Merge "Fixed a build issue" 2014-03-25 10:22:18 -07:00
Yaowu Xu
59872069d2 Merge "Change back the scaling calculation." 2014-03-25 09:48:21 -07:00
Yaowu Xu
8051563972 Fixed a build issue
Adding the missed include file.

Change-Id: I7e48df6b0633afbebaf1ccb3062ae404e7203dc9
2014-03-25 09:45:54 -07:00
Jingning Han
17e9df1441 Merge "Always use adaptive motion search in non-RD coding mode" 2014-03-25 09:27:03 -07:00
Jingning Han
c270ce662b Merge "Enable recursive partition selection for non-RD coding mode" 2014-03-25 09:26:49 -07:00
Jingning Han
1b46f315f6 Always use adaptive motion search in non-RD coding mode
This commit takes out the if statements on using adaptive motion
search flag. This feature is automatically enabled in non-RD mode
decision flow for variable partition types search.

Change-Id: I5a25cf9109d84d07aa61b3e02c8d32dda1e90cb0
2014-03-24 22:33:00 -07:00
Yaowu Xu
ebb4a26202 Merge "Align threading LFWorkerData to 32 bytes." 2014-03-24 17:19:48 -07:00
Dmitry Kovalev
0e84fb08e9 Merge "Making c++ compiler happier." 2014-03-24 17:17:57 -07:00
Alex Converse
64c766bb08 Merge "Don't subpartion inactive area in rd_use_partition." 2014-03-24 17:04:45 -07:00
Alex Converse
98fde54685 Merge "Deduplicate and rename mode info step." 2014-03-24 17:04:30 -07:00
Dmitry Kovalev
79c51573c1 Merge "Initialization code cleanup." 2014-03-24 16:12:42 -07:00
Dmitry Kovalev
a5d51fbdf3 Merge "General cleanup in vp9_decoder.{h, c}." 2014-03-24 15:56:25 -07:00
Dmitry Kovalev
ad4ce92d92 Merge "Using local variable for token_cache." 2014-03-24 15:54:38 -07:00
Dmitry Kovalev
ac49c8ca13 Merge "Adding get_buf_from_mv() function." 2014-03-24 15:52:09 -07:00
Dmitry Kovalev
4455d1c99b Merge "Cleaning up vp9_aq_cyclicrefresh.{c, h}." 2014-03-24 15:44:50 -07:00
Jingning Han
6b6d3886fc Enable recursive partition selection for non-RD coding mode
This commit enables a recursive partition type search for non-RD
mode decisions. It allows the encoder to choose variable block
sizes in a 64x64 block based on rate-distortion modeling.

It improves speed -6 coding efficiency for rtc set by 2.4%. Most
of the gains come from 32-40dB range, where many sequences gain
about 5% to 20%. Local tests suggest there is no speed change.

Change-Id: I06300016e500a21652812b7b3b081db39a783d66
2014-03-24 14:40:29 -07:00
Jim Bankoski
7d76cc36df Merge "vp9_write_bit_buffer.h header statics converted to globals" 2014-03-24 14:18:24 -07:00
Jim Bankoski
2587ce0f44 Merge "vp9_variance.h header static version converted to global" 2014-03-24 14:18:07 -07:00
Dmitry Kovalev
65259f2110 Merge "Adding init_rate_control() function + cleanup." 2014-03-24 14:17:23 -07:00
Alex Converse
5182a35004 Don't subpartion inactive area in rd_use_partition.
Change-Id: I50db8d3c99eea39e46cc5876cb1f49513c084073
2014-03-24 12:54:30 -07:00
Alex Converse
f16f507c76 Deduplicate and rename mode info step.
Change-Id: Ie624a119ce8e0891f4ca396040d679e22ef8ce27
2014-03-24 12:54:30 -07:00
Yaowu Xu
bc2761d3cb Align threading LFWorkerData to 32 bytes.
This is to silent a number misalignment warning reported by valgrind.

Change-Id: Ia47a06010b28d7a88dde21f3e4ccb9308fc6f8cf
2014-03-24 12:48:27 -07:00
Dmitry Kovalev
5b8c834c1a Initialization code cleanup.
Change-Id: I47a8b4bf9a6cc0063d1a6785eaaad641d0659e24
2014-03-24 12:21:22 -07:00
Dmitry Kovalev
6bfcb269a5 Cleaning up vp9_aq_cyclicrefresh.{c, h}.
Change-Id: I288e5ffade508fc3c803986d47ccf06df8d784dd
2014-03-24 12:03:44 -07:00
Dmitry Kovalev
20a40bd0e8 Moving setup_{key, inter}_frame() to vp9_onyx_if.c.
Change-Id: I044e393438c7b58a6393e20efa38fd03d745ad33
2014-03-24 11:27:08 -07:00
Jim Bankoski
2128f714aa Merge "refactor reset_skip_txfm_size and elimate a lot of code" 2014-03-24 11:08:27 -07:00
Jim Bankoski
9a736593ac Merge "vp9_onyx_int.h convert header statics to inline" 2014-03-24 11:07:53 -07:00
Dmitry Kovalev
49bb6df0e2 Cleaning up vp9_entropymv.c.
Change-Id: I01b3530779da89acb84c71bac5ccac456f00c5ac
2014-03-24 11:02:27 -07:00
Marco Paniconi
d13820b949 Merge "Fix to a static warning." 2014-03-24 10:54:52 -07:00
Dmitry Kovalev
6202406ebc Adding init_rate_control() function + cleanup.
Change-Id: I49b0937a8dd3520f20435a4817a408a094ab1679
2014-03-24 10:54:22 -07:00
Yunqing Wang
b458bb7c20 Merge "AVX2 SAD Optimization:" 2014-03-24 10:52:32 -07:00
Jim Bankoski
423590aa63 vp9_write_bit_buffer.h header statics converted to globals
Change-Id: I12c29a630da1fbc5508f11b61d182f9b527b3a35
2014-03-24 09:56:06 -07:00
Jim Bankoski
1a8a37ceda vp9_variance.h header static version converted to global
Change-Id: I8d02cdb5e7fef02b8c95413dfd239fa51a8c7777
2014-03-24 09:55:58 -07:00
Marco Paniconi
5510e37930 Fix to a static warning.
Change-Id: I398decf319c8f4d1b3abe1f276e009840e61b684
2014-03-24 09:32:10 -07:00
Dmitry Kovalev
c9a8c32bce Merge "Removing unused members from VP9D_CONFIG struct." 2014-03-24 09:27:06 -07:00
Jim Bankoski
5f0e5d628a vp9_onyx_int.h convert header statics to inline
Change-Id: I7872b726511887494107466a946e2b34e3d74045
2014-03-24 09:26:20 -07:00
Dmitry Kovalev
ac5bdc0ed8 Merge "Cleaning up vp9_loopfilter.c." 2014-03-24 09:02:06 -07:00
Jim Bankoski
f7188e5aea refactor reset_skip_txfm_size and elimate a lot of code
Change-Id: Id70bd0ff8836c28d9c8653e018e071ca9fb06610
2014-03-24 08:54:49 -07:00
hkuang
22232ec602 Change back the scaling calculation.
Let the calculation to be compatible with Google's HW implementation.

Change-Id: I22e179888cdb0419e230351c0a47661b37051fef
2014-03-24 08:32:56 -07:00
Jim Bankoski
35af423e8e vp9_block.h static reconverted to inline
Change-Id: I0e7d2815839d8a64250116a5486570d03659a4c0
2014-03-24 06:30:39 -07:00
Dmitry Kovalev
9895c9d4dd Merge "Removing redundant {above, left}_seg_context manipulation code." 2014-03-22 22:31:48 -07:00
Dmitry Kovalev
31e1c2e0a7 Merge "Removing output_partition from vp9." 2014-03-22 22:31:38 -07:00
Jingning Han
5950a69213 Merge "Reformat non-RD coding flow" 2014-03-21 21:43:02 -07:00
Dmitry Kovalev
355b8baf55 Merge "Convert use_fast_lpf_pick to an enum." 2014-03-21 21:19:31 -07:00
Dmitry Kovalev
2786938a3c Merge "Renaming and making vp9_update_mode_info_border() static." 2014-03-21 21:19:18 -07:00
Dmitry Kovalev
e85bff2578 Merge "Cleaning up vp9_svc_layercontext.c" 2014-03-21 18:33:20 -07:00
Marco Paniconi
d108775255 Merge "Rename the aq_mode files." 2014-03-21 17:17:53 -07:00
Jingning Han
89cc421e89 Reformat non-RD coding flow
This commit reformats non-RD coding flow layout to allow mode
decision with fixed and variable block sizes.

Change-Id: I2cdd3bb9f26c499ee4a9849004fd925cdd195d09
2014-03-21 16:41:55 -07:00
Dmitry Kovalev
58cc06f9b3 Cleaning up vp9_loopfilter.c.
Change-Id: I7c7cf7d3c7b00d1c74ffa8aa8fb8d78a0e48326f
2014-03-21 16:31:15 -07:00
Dmitry Kovalev
016bc2e744 Removing output_partition from vp9.
Change-Id: I5e0c558b86cf300722ab34fa45ab4ad7c81bd4df
2014-03-21 16:10:51 -07:00
Dmitry Kovalev
6e9ca1ecef Adding get_buf_from_mv() function.
Change-Id: I21aff45546778b8393e2edf2d810448dec1f4cdb
2014-03-21 15:57:31 -07:00
Frank Galligan
8345e76d61 Merge "Fix libvpx VP9 decoder dr memory errors" 2014-03-21 15:24:39 -07:00
Marco Paniconi
03a9e5edb6 Rename the aq_mode files.
Change-Id: Id76a628495c822e23825b66a7589b4a3279680e2
2014-03-21 15:20:59 -07:00
Alex Converse
bbfbbbf672 Convert use_fast_lpf_pick to an enum.
Change-Id: I06e17b489dea74dedea356c73ef72dc5ffad3a30
2014-03-21 14:59:26 -07:00
Dmitry Kovalev
9347e55f12 Making c++ compiler happier.
Change-Id: Ie224e968589bdb0774dc112e6f6df56cc0447465
2014-03-21 14:37:01 -07:00
Dmitry Kovalev
b09cbae0dd General cleanup in vp9_decoder.{h, c}.
Change-Id: I68819558a9c5ac6ea85fe62260712af6f4cc46b7
2014-03-21 14:20:13 -07:00
Dmitry Kovalev
89ec46e6b8 Removing unused members from VP9D_CONFIG struct.
Change-Id: I83a201ab4dcf2f00131f2030f382c6dbfcb39d7e
2014-03-21 14:08:19 -07:00
Dmitry Kovalev
e0c212646c Merge "Tiny vp9_picklpf.c cleanup." 2014-03-21 14:03:49 -07:00
Dmitry Kovalev
e141f10bfc Renaming and making vp9_update_mode_info_border() static.
Change-Id: Ibb72a29cae9ca9443aae56fc4c5458d190eae279
2014-03-21 14:02:25 -07:00
Dmitry Kovalev
2df69fefc9 Cleaning up vp9_svc_layercontext.c
Change-Id: I7c94b02f621ccc1a738b0d52edf60e9012cfc014
2014-03-21 13:56:15 -07:00
levytamar82
0fa8b668c1 AVX2 SAD Optimization:
2 functions were optimized for avx2 by using full 256 bit register
In order to handle 32 elements in parallel instead of only 16 in parallel:
1. vp9_sad32x32x4d
2. vp9_sad64x64x4d

The function level gain is 66% and the user level gain is ~1%.

Change-Id: I4efbb3bc7d8bc03b64b6c98f5cd5c4a9dd3212cb
2014-03-21 13:53:32 -07:00
Yunqing Wang
3967435f65 Merge "Add prediction mode skipping in non-rd situation" 2014-03-21 13:40:27 -07:00
Dmitry Kovalev
b3afae3a10 Merge "Cleaning up vp9_mcomp.c." 2014-03-21 13:23:18 -07:00
Yunqing Wang
9b5df3fabe Fix libvpx VP9 decoder dr memory errors
Fixed dr memory errors reported in Issue 736:
https://code.google.com/p/webm/issues/detail?id=736

All elements in left_col buffer need to be initialized to ensure
the correctness of SIMD operations in x86 optimized code.

Change-Id: I8e7f26ab45cca8099c1f9342bcf852f828bda7e4
2014-03-21 12:23:47 -07:00
Dmitry Kovalev
6b32e5f04a Using local variable for token_cache.
We use local variable for token_cache in the decoder.

Change-Id: I032763fa7894313cffe73e3f14863ae1d0527665
2014-03-21 12:14:05 -07:00
Yaowu Xu
bcd102c523 Merge "Fix bad speed settings interaction." 2014-03-21 12:13:44 -07:00
Dmitry Kovalev
4cb37bff96 Removing redundant {above, left}_seg_context manipulation code.
Change-Id: Ib3c1746e61220c629cbd971b2458aa686b5c9e36
2014-03-21 12:12:55 -07:00
Dmitry Kovalev
a57de9da03 Merge "Reusing {above, left}_seg_context vars in both encoder and decoder." 2014-03-21 12:02:42 -07:00
Dmitry Kovalev
d82766155c Merge "Removing source & source_sz from VP9Decompressor struct." 2014-03-21 12:01:25 -07:00
Dmitry Kovalev
50bbd8a583 Tiny vp9_picklpf.c cleanup.
Change-Id: I1804c3629c3df2b67438e87196ab35fafaddaa24
2014-03-21 12:00:26 -07:00
Yaowu Xu
d070aa5de0 Merge "changed to use correct pred_mv" 2014-03-21 11:13:48 -07:00
Yaowu Xu
2d70e16595 Merge "Fix a valgrind error" 2014-03-21 11:13:43 -07:00
Yaowu Xu
0e53d52088 changed to use correct pred_mv
The third pred_mv is stored in x->pred_mv[ref_frame]. This commit make
sure the correct mv is read.

Change-Id: Ibed24daf36703a63f0394c87b2381ee1d2eb7910
2014-03-21 09:16:06 -07:00
Yunqing Wang
49b2330d8b Add prediction mode skipping in non-rd situation
In non-rd pick_mode code, added mode skipping according to
thresholds. Used rd thresholds now, but we can modified them
later for real-time case.

RTC set borg test showed a 0.095% PSNR gain. For different rtc
clips, the real-time(speed 7) encoder speedup is 2% - 10%.

Change-Id: Ic72535c96b891092c662453be32d3168f7e34dcc
2014-03-21 09:15:36 -07:00
Yaowu Xu
46c71e5eba Merge "Remove duplicate declaration" 2014-03-21 08:44:04 -07:00
Yaowu Xu
e993fb5e24 Fix a valgrind error
Valgrind was complaining uninitialzed values are being used.

Change-Id: Ia9eb619f4e67d1fb7af1057d50304f15adc02aab
2014-03-21 08:36:40 -07:00
Paul Wilkins
2e05341ab4 Fix bad speed settings interaction.
The flag x->skip_recode interacts badly with
the cpi->sf.use_nonrd_pick_mode and
cpi->sf.skip_encode_sb speed settings.

Restricting the use of the skip_decode flag when
these other speed choices are in use helps quality
for speeds 3 and 4 by a large amount with only a
small impact on speed.

Average improvmentes for 2 pass speed 4:
Derf +8.8%
Yt + 10.53%
Std-Hd +6.95%
yt-hd + 22.95%

Change-Id: I8010876d8012042a11077c92e69d813c3dfa58eb
2014-03-21 10:10:50 +00:00
Marco Paniconi
1231638d33 Merge "Some code cleanup for cyclic refresh." 2014-03-20 21:15:40 -07:00
Yaowu Xu
98ed74d942 Change the min/max q validation in lossless mode
This commit changed how q is validated in lossless mode. With this
commit, when --lossless=1 is specificed at commandline, --min-q and
--max-q are now ignored. This is to make the option non-ambiguious.

Change-Id: I33e85690460537509d33be75d6a3597be4affc09
2014-03-20 19:22:27 -07:00
Yaowu Xu
0de216a995 Use local vairable in rd_auto_partition_range()
In addition to a few cleanups.

Change-Id: Ice5938ef494513921a47e7c64ba9928f2202e24e
2014-03-20 19:22:26 -07:00
Marco Paniconi
21be5ca042 Some code cleanup for cyclic refresh.
Change-Id: I0e4e2462ee27640f9bf4091431241ede6fc97267
2014-03-20 16:44:31 -07:00
Dmitry Kovalev
7ad40117f1 Reusing {above, left}_seg_context vars in both encoder and decoder.
Change-Id: Id1fa36c92cb007b73a450cc8552e810cedad38b9
2014-03-20 16:15:57 -07:00
Minghai Shang
03d75182f7 Merge "[svc] Finalize spatial svc first pass rate control" 2014-03-20 15:12:14 -07:00
Dmitry Kovalev
88a10abe7c Removing source & source_sz from VP9Decompressor struct.
Change-Id: If4c1a48c60e8b27dd021a83170289ccc5467c6de
2014-03-20 15:01:37 -07:00
Dmitry Kovalev
03781ff22d Merge "Removing mi_stream." 2014-03-20 13:43:13 -07:00