Commit Graph

5656 Commits

Author SHA1 Message Date
Jingning Han
a808dfe3f2 Merge "Fix potential overflow issue in SSSE3 forward 8x8 2D-DCT" 2014-06-03 16:43:49 -07:00
Jingning Han
540d910350 Fix potential overflow issue in SSSE3 forward 8x8 2D-DCT
The SSSE3 implementation might find a potential overflow issue in
its second 1-D transform, if all input residual pixels are close to
255. This commit fixes the issue and re-enables the unit test on
the SSSE3 version.

Change-Id: I0520478abdab7afd3ff2842516bec951111e9b3c
2014-06-03 14:21:47 -07:00
Dmitry Kovalev
1cdc238902 Adding buffer levels to RATE_CONTROL struct.
Change-Id: Ib35ff854378764dc3c6745844c67a33dee545663
2014-06-03 13:56:46 -07:00
Dmitry Kovalev
bd0bb363bd Removing lossless field from VP9EncoderConfig.
Right now there is just one place to check: xd->lossless and for the first
pass there is a function is_lossless_requested().

Change-Id: I949a6834e64ce51e422e2892f097f2b871b5429a
2014-06-03 12:52:49 -07:00
Dmitry Kovalev
6cf3d68fe5 Cleaning up accumulate_frame_motion_stats().
Change-Id: I9986f3fd23c5e0677068af768eae0def3db9782f
2014-06-03 10:36:29 -07:00
Dmitry Kovalev
7106f709fc Merge "Cleaning up full_pixel_search()." 2014-06-03 10:22:35 -07:00
Dmitry Kovalev
ebd4e47aa6 Merge "Moving first pass related functions to vp9_firstpasss.c." 2014-06-03 10:05:38 -07:00
Dmitry Kovalev
19c492a749 Merge "Reusing existing vp9_get{8x8, 16x16}var() instead of new ones." 2014-06-03 10:04:27 -07:00
Paul Wilkins
090d07984f Fix AQ mode 2 bug where delta causes Q 0.
In Aq mode 2 for kf/arf/gf the segment q delta
is calculated and then applied by re-quantization without
going through the rd loop again. If the base Q != 0
but the segment Q == 0 (lossless) this can could give rise
to a situation where we have an illegal combination of
transform size and Q. (Q == 0 requires that all blocks
are coded 4x4 WHT).

Change-Id: I241a58c6494ed442e9e4630070b0cde0fb99ae45
2014-06-03 13:31:32 +01:00
Deb Mukherjee
81c2fcccbc Merge "Remove Wextra warnings from vp9_sad.c" 2014-06-02 22:39:17 -07:00
Alex Converse
04a8980c65 Merge "Remove an attempt to handle SEG_LVL_SKIP sub8x8." 2014-06-02 18:50:40 -07:00
Deb Mukherjee
fc88292ef2 Remove Wextra warnings from vp9_sad.c
As a side-effect, the sad unit tests for VP8 and VP9
had to be separated.

Fixes a bug in original patch:
(https://gerrit.chromium.org/gerrit/#/c/70163/8)
that was reverted due to a nightly test failure.

Change-Id: Ia2a4e9e278fd3c89d6c3c82fcc6381320ec2a8a6
2014-06-02 13:50:20 -07:00
Dmitry Kovalev
f5628853d7 Fixing failed ARM build.
Change-Id: I3f74418f07c2dfdd7725a5b4a8ef5c5f4aca6289
2014-06-02 11:14:12 -07:00
Yaowu Xu
f13c99562c Merge "seeing a 10x slowing down, revert now for investigation" 2014-06-02 09:02:32 -07:00
Yaowu Xu
dbfc3692eb seeing a 10x slowing down, revert now for investigation
Revert "Fix a problem of using an uninitialized parameter"

This reverts commit 538af7db5f

Change-Id: I071aa9b7068ef515abb8ae9584df15067706ccb5
2014-06-02 09:02:19 -07:00
Frank Galligan
c40a968e13 Merge "Revert "Remove Wextra warnings from vp9_sad.c"" 2014-06-01 16:58:11 -07:00
Frank Galligan
0b44988952 Revert "Remove Wextra warnings from vp9_sad.c"
This reverts commit 916550428d

Change-Id: I500822b03f09c64ff6ec5396c68edee9ca3b75cb
2014-06-01 16:20:26 -07:00
Dmitry Kovalev
5132e6da1a Merge "Converting disable_inter_mode_mask to inter_mode_mask." 2014-05-31 00:08:45 -07:00
Jingning Han
ba6bed372b Merge "Fix a potential overflow issue in inverse 16x16 full 2D-DCT" 2014-05-30 15:52:53 -07:00
hkuang
6a0dcc1337 Merge "Refactor the vp9_get_frame code for frame parallel." 2014-05-30 13:38:36 -07:00
Yaowu Xu
2dc7f506d4 Merge "Fix a problem of using an uninitialized parameter" 2014-05-30 11:37:04 -07:00
Dmitry Kovalev
19b5200172 Merge "Removing unused ref_frame_mask local var." 2014-05-30 11:24:25 -07:00
hkuang
6f5aba069a Refactor the vp9_get_frame code for frame parallel.
In frame parallel decoding mode,  there will be still several frames inside
the decoder when application stop calling vpx_codec_decode to decode frames.
The application will need to keep calling vpx_codec_get_frame to get all the
remaining decoded frames in the decoder.

Change-Id: I2ce8260a91282f045bb9a6093ff8a606b1990f14
2014-05-30 10:37:00 -07:00
Yaowu Xu
538af7db5f Fix a problem of using an uninitialized parameter
This commit added a call to set speed feature before initializing
motion search, fixed the problem where unintialized search method
is used before its value being set.

Change-Id: I537e4612bf0d00fd6f51396fd222d4b3bd6fde58
2014-05-30 10:18:54 -07:00
Paul Wilkins
d009c2360e Merge "Re-factor some duplicate code." 2014-05-30 06:14:06 -07:00
Dmitry Kovalev
eccae1de19 Removing unused ref_frame_mask local var.
Change-Id: Ie11558c076a0161cc9608788e050b1b16e31c490
2014-05-29 15:03:02 -07:00
Dmitry Kovalev
cf83983b9a Merge "Consistent names for intra mask flags." 2014-05-29 13:23:31 -07:00
Alex Converse
d30b297c44 Merge "Don't update encoder skip count for SEG_LVL_SKIP." 2014-05-29 12:46:20 -07:00
Dmitry Kovalev
403719963e Converting disable_inter_mode_mask to inter_mode_mask.
Making this consistent with intra mode masks: you need to specify
allowed inter/intra modes to use.

Change-Id: Iaecd28bf79047259707d8e7a59a57bb7b856383e
2014-05-29 12:25:41 -07:00
Dmitry Kovalev
26bdf26ddc Consistent names for intra mask flags.
Change-Id: Ibdd5255d37200fb8a1d50f71a2a49c6089ae21e7
2014-05-29 12:11:02 -07:00
Alex Converse
2a89983999 Remove an attempt to handle SEG_LVL_SKIP sub8x8.
SEG_LEVEL_SKIP requires the block size to be at least 8x8. Attempting to
use it on smaller partitions causes the decoder to reject the bitstream.

Change-Id: Ia7188cdf8ae5ac1df6bd29f3f80dbb0610e1f7b1
2014-05-29 12:04:09 -07:00
Dmitry Kovalev
60866b030a Merge "Making speed checks consistent in set_rt_speed_feature()." 2014-05-29 11:58:42 -07:00
Jingning Han
2c1cdf69b6 Fix a potential overflow issue in inverse 16x16 full 2D-DCT
An overflow issue could potentially happen in the second round 1-D
transform of the SSSE3 full inverse 16x16 2D-DCT. This commit fixes
this issue.

Change-Id: Ia19e4888fda1cc929a28a5f89a5beec612d628dc
2014-05-29 11:46:32 -07:00
Alex Converse
aaf3765606 Don't update encoder skip count for SEG_LVL_SKIP.
This aligns the encoder behavior with the decoder.

Change-Id: Ifa0840e4b07b19309e0bf1d1182498883249ec45
2014-05-29 11:24:03 -07:00
Dmitry Kovalev
e14f900ae3 Merge "Moving itxm_add pointer from MACROBLOCKD to MACROBLOCK." 2014-05-29 11:16:39 -07:00
Dmitry Kovalev
f7ff24cdd0 Reusing existing vp9_get{8x8, 16x16}var() instead of new ones.
Change-Id: I87b7c657d8813d7fb383ab519d150c0ffb1dd377
2014-05-29 11:14:06 -07:00
Dmitry Kovalev
d262cda524 Making speed checks consistent in set_rt_speed_feature().
Change-Id: Id3d0a49836fe996b806707d29a8130acf9d7ea0e
2014-05-29 11:11:50 -07:00
Yaowu Xu
2e6040daca Merge "Fixing -Wextra warnings in vp9_{cx, dx}_iface.c." 2014-05-29 09:09:58 -07:00
Yaowu Xu
d553cc10dc Merge "Fixed a crash windows build" 2014-05-29 08:16:19 -07:00
Yaowu Xu
43414f3f7b Fixed a crash windows build
Change-Id: I58baa1da1f3bfc8a6da454399139fe6a7473ff10
2014-05-28 15:50:50 -07:00
Dmitry Kovalev
ac3d97f124 Cleaning up vp9_variance_mmx.c.
Change-Id: I42d83f91e272c92daed604c233f74439fe6307c5
2014-05-28 12:03:55 -07:00
Dmitry Kovalev
852fcbcc68 Fixing -Wextra warnings in vp9_{cx, dx}_iface.c.
Change-Id: I0abad32551dc534d3db27424c118e4b2f6b50f37
2014-05-28 11:15:43 -07:00
Dmitry Kovalev
39b9731876 Merge "Using 2 instead of 3 elements for last_q array." 2014-05-28 10:57:40 -07:00
Dmitry Kovalev
377950f111 Merge "Removing redundant vp9_zero() call." 2014-05-28 10:55:12 -07:00
Jingning Han
6d21cbd20b Enable SSSE3 inverse 2D-DCT with 10 non-zero coeffs
This commit enables SSSE3 implementation of the inverse 2D-DCT
with only first 10 coefficients non-zero. It reduces the runtime
of SSE2 version from 745 cycles to 538 cycles, i.e., 27% speed-up.

Change-Id: I18ba4128859b09c704a6ee361d69a86c09fe8dfe
2014-05-28 10:53:33 -07:00
Dmitry Kovalev
5023627cb4 Merge "Cleaning up vp9_variance_sse2.c." 2014-05-28 10:50:46 -07:00
Alex Converse
f9501295c9 Merge "Always allow ZEROMV when SEG_LVL_SKIP is on." 2014-05-28 10:19:49 -07:00
Alex Converse
8a69cef042 Merge "Fix the all intra modes mask constant." 2014-05-28 10:19:18 -07:00
Paul Wilkins
15600eb8b8 Merge "Removing this_frame_stats member from TWO_PASS struct." 2014-05-28 08:07:50 -07:00
Paul Wilkins
39c91d84ed Re-factor some duplicate code.
Change-Id: I89a1dbea39c50c7633f746d9c93fec3a289f1b42
2014-05-28 14:15:45 +01:00
Paul Wilkins
8df1b869a2 Merge "Remove brightness weighting in two pass." 2014-05-28 02:04:29 -07:00
Deb Mukherjee
5c93c580f8 Removing undeclared identifier - build fix
Fixes build with --enable-internal-stats

Change-Id: I137169c859f561478e45891defe976d595454166
2014-05-27 23:24:06 -07:00
Dmitry Kovalev
c7a2e746bf Cleaning up full_pixel_search().
Change-Id: Ie517ac06385133ffb3bbc449d9f23240f245976d
2014-05-27 19:00:53 -07:00
Dmitry Kovalev
edccfcebb2 Using 2 instead of 3 elements for last_q array.
Change-Id: I2c6950e7d79fc89c6f97e6dcf47317ef66c453a5
2014-05-27 18:19:19 -07:00
Alex Converse
6fbbb33aaf Always allow ZEROMV when SEG_LVL_SKIP is on.
Change-Id: I6db1dc82f66438ac48f571d2f1a2ac7c39a97a1a
2014-05-27 18:17:17 -07:00
Alex Converse
75d77e36db Fix the all intra modes mask constant.
The new constant expands to 0x3fc00808.

Change-Id: Ib5109e4faf035fe0402b59f8a8d2e412628b9276
2014-05-27 18:17:17 -07:00
Dmitry Kovalev
0becfe42bb Merge "Removing ctrl_id parameter from vpx_codec_control_fn_t." 2014-05-27 17:35:38 -07:00
Dmitry Kovalev
3f95a230c7 Removing this_frame_stats member from TWO_PASS struct.
Change-Id: Id8877fad1f1e88b145e7c40c43174109b9c4f373
2014-05-27 17:09:28 -07:00
Jingning Han
d5bcef5242 Merge "Fix compiling error in MSVS" 2014-05-27 16:58:00 -07:00
Dmitry Kovalev
8a8b662eaa Removing ctrl_id parameter from vpx_codec_control_fn_t.
Change-Id: I2b61c8c17ded1074dea92b4f6ad9be84d128b52a
2014-05-27 16:45:58 -07:00
Dmitry Kovalev
df6f618079 Removing redundant vp9_zero() call.
rd.tx_select_threshes is cleared in encode_frame_internal().

Change-Id: Ie03776a41c585f13b392a9b62d4e91ef26ebeaf0
2014-05-27 16:24:01 -07:00
Jingning Han
239e68ddbf Fix compiling error in MSVS
Need to include math.h before tmmintrin.h in some versions of MSVS.

Change-Id: Ia6b83ae599316887ecf30c4e4b9e4355fb8a4219
2014-05-27 15:58:47 -07:00
Yaowu Xu
32228ac13a Merge "vp9_rdopt.c: Removed 2 unused parameters" 2014-05-27 15:52:50 -07:00
Dmitry Kovalev
1349e8634c Merge "Converting target_bandwidth to Bit/s at very beginning." 2014-05-27 15:02:21 -07:00
Yaowu Xu
4c9843cbef vp9_rdopt.c: Removed 2 unused parameters
Change-Id: I935ec0e78570ce3d3585f972350e39043eefa30a
2014-05-27 14:45:19 -07:00
Dmitry Kovalev
a789bfec87 Cleaning up vp9_variance_sse2.c.
Change-Id: I5ec336848f6489c31cf2b645026fa2025db07466
2014-05-27 13:53:19 -07:00
Yunqing Wang
1f2200080b Revert "Making vp9_get_sse_sum_{8x8, 16x16} static."
This reverts commit e8bbb3d9db.

Change-Id: Ie368d36fd249d323d859d208609c711f04537bbc
2014-05-27 13:37:08 -07:00
Deb Mukherjee
444f93945b Merge "Remove Wextra warnings from vp9_sad.c" 2014-05-27 11:54:05 -07:00
Yunqing Wang
a591ac9e5a Merge "Fix decoder mismatch in sub-pixel AVX2 intrinsic filters" 2014-05-27 10:52:16 -07:00
Dmitry Kovalev
bf503e5236 Merge "Reusing rd_less_than_thresh() function." 2014-05-27 10:50:55 -07:00
Paul Wilkins
f085d128f7 Remove brightness weighting in two pass.
This code dates from the ancient past and
applied an error score weighting based on pixel
brightness. This not seem to be providing any
benefit metrics wise and could be making some
visual issues in dark frames worse.

The field is left in place in the FIRSTPASS_STATS data
structure in this patch, pending changes to unit tests that
use a pre-defined first pass file.

Change-Id: Id50f04205230234858e7548ce523f11acaf3567d
2014-05-27 13:27:49 +01:00
Paul Wilkins
debd048531 Merge "Further first pass allocation changes." 2014-05-25 14:48:36 -07:00
Paul Wilkins
620ce56154 Merge "Re-factor bit allocation in first pass." 2014-05-25 14:47:35 -07:00
Dmitry Kovalev
3fff4bd2df Converting target_bandwidth to Bit/s at very beginning.
Change-Id: I1d8c9fe4228e2f1ef67a66883694842a9545e7b9
2014-05-23 18:11:07 -07:00
levytamar82
773596050f Fix decoder mismatch in sub-pixel AVX2 intrinsic filters
The subpixel SSSE3 was fixed in this patch:
https://gerrit.chromium.org/gerrit/#/c/70283/
So the equivalent AVX2 is fixed accordingly.

Change-Id: Ieebbc1949c99d34b12b8b47692df71aca5001f3a
2014-05-23 16:48:40 -07:00
Jingning Han
59c3f446fe Merge "Inverse 16x16 2D-DCT SSSE3 implementation" 2014-05-23 16:01:22 -07:00
Jingning Han
48b0891370 Inverse 16x16 2D-DCT SSSE3 implementation
This commit enables the SSSE3 implementation of full inverse 16x16
2D-DCT. The unit runtime goes down from 1642 cycles to 1519 cycles,
about 7% speed-up.

Change-Id: I14d2fdf9da1fb4ed1e5db7ce24f77a1bfc8ea90d
2014-05-23 15:09:35 -07:00
Yunqing Wang
67ca5b586a Merge "Fix decoder mismatch in sub-pixel SSSE3 intrinsic filters" 2014-05-23 14:24:48 -07:00
Dmitry Kovalev
d7d7cedaaa Merge "Removing vp9_pragmas.h." 2014-05-23 12:58:00 -07:00
Paul Wilkins
1edbaeb09d Further first pass allocation changes.
Further changes to first pass allocation for gf/arf groups.
Three variables removed from TWO_PASS structure as only
now used locally. Dont adjust gf_group_bits in the post
encode update as this will no longer have any effect.

Change-Id: Iff89b225db923fc856f5d2aedbc899f1d7d68b55
2014-05-23 20:21:25 +01:00
Yunqing Wang
c5443fc881 Fix decoder mismatch in sub-pixel SSSE3 intrinsic filters
In 8-tap filtering, to guarantee the intermediate results fit in
16 bits, the order of accumulating the products needs to be done
correctly, and the largest product should be added last. This
patch fixed the problem using the method in commit "Correct ssse3
8/16-pixel wide sub-pixel filter calculation".

Change-Id: I79d0ad60c057b15011ece84cda9648eee0809423
2014-05-23 11:52:20 -07:00
Alex Converse
52b32ad025 Merge "Use offset mode info when filling pc tree." 2014-05-23 10:19:13 -07:00
Alex Converse
7c8479acea Merge "Always partition check after keyframe (rt speed 5)" 2014-05-23 10:19:03 -07:00
Paul Wilkins
03eb06212a Re-factor bit allocation in first pass.
Restructuring to allocate the bits for each frame in
a GF group at the time the group is defined.

At the moment the allocation closely mirrors what
we had before.

Also changes the default rate adjustment method to
LONG_TERM_VBR_CORRECTION.

Change-Id: Ie5793c46c6b9c888cead5d8790792efd7d60b7c1
2014-05-23 18:01:54 +01:00
Yaowu Xu
9410330893 Merge "change to use assembly version of ssse3 filter code" 2014-05-23 08:02:28 -07:00
Deb Mukherjee
916550428d Remove Wextra warnings from vp9_sad.c
As a side-effect, the sad unit tests for VP8 and VP9
had to be separated.

Change-Id: I068cc2391eed51e9b140ea6aba78338c5fec8d71
2014-05-22 22:21:16 -07:00
Dmitry Kovalev
d1ad3b678b Merge "Adding several consts to assign_std_frame_bits()." 2014-05-22 19:26:39 -07:00
Yaowu Xu
7a0c9b82f2 change to use assembly version of ssse3 filter code
As mismatchs were found  between the intrinsic version and c only. The
commit temporarily revert to use the matching assembly version to
allow further investigation.

Change-Id: I08436c47d4888b562c0eac8e8856d90a831442df
2014-05-22 17:11:57 -07:00
Yunqing Wang
aaf204e550 Merge "Fix a decoding mismatch in sub-pixel filters" 2014-05-22 17:09:14 -07:00
Alex Converse
b9c24dfa23 Always partition check after keyframe (rt speed 5)
Prevents too small partitions from being copied to the next frame.

Change-Id: I4b97c30b27d06051574d54aaaca5434407a0c9ff
2014-05-22 16:51:06 -07:00
Alex Converse
80e5326cf2 Use offset mode info when filling pc tree.
Use the appropriate subblock offset mode info rather than the parent
block base, when filling mbmi in the pc tree in nonrd_use_partition.
This mimics what is done in the vertical case and what is done for
both cases in nonrd_pick_partition.

This change has little practical effect at the moment since in speed 5
rt horizontal and vertical partitions are currently only used unpaired
at edges of the picture.

Change-Id: I4632f66ca84086dac56c7d36b45ddbe38a06f42a
2014-05-22 16:24:40 -07:00
Deb Mukherjee
701d907f3a Fix for missing initialization of ratectrl vars
Initializes total_actual_bits and total_target_bits to 0

Change-Id: Ia50d3bf5df765146a44aa1f6045e73367ccf50df
2014-05-22 15:51:41 -07:00
Yunqing Wang
efcdf946ed Fix a decoding mismatch in sub-pixel filters
This did the same correction as the one in commit "Correct ssse3
8/16-pixel wide sub-pixel filter calculation" to avoid saturation
during filtering.

Change-Id: Ife9aa3f62daf9114eb24fe38f7baa3c3f361b2d6
2014-05-22 15:42:13 -07:00
Tom Finegan
00fbdc159b Merge "vp9_ratectrl.c: Fix MSVC warnings." 2014-05-22 15:16:01 -07:00
Dmitry Kovalev
639e16ee00 Merge "Cleaning up vp9_init_second_pass()." 2014-05-22 14:49:33 -07:00
Tom Finegan
4205b51d51 vp9_ratectrl.c: Fix MSVC warnings.
Change-Id: I4bd635949240880ced5f581c24e981ccd0374e40
2014-05-22 14:44:37 -07:00
Dmitry Kovalev
59948cc343 Merge "Cleaning up calculate_section_intra_ratio()." 2014-05-22 13:49:28 -07:00
Deb Mukherjee
cebb03c39b Merge "Adjust cq_level in constrained quality mode" 2014-05-22 13:49:17 -07:00
Dmitry Kovalev
72ab966d5e Removing vp9_pragmas.h.
Change-Id: I9120a87e27e73e496932d11716937e2fad246521
2014-05-22 13:46:31 -07:00
Dmitry Kovalev
f738895099 Merge "Cleaning up calc_frame_boost()." 2014-05-22 13:05:23 -07:00