Граф коммитов

4150 Коммитов

Автор SHA1 Сообщение Дата
Jingning Han a4c94a94cc Merge "Optimze inv 16x16 DCT with 10 non-zero coeffs - P2" 2014-01-09 18:17:25 -08:00
Jingning Han faa2ba86cc Merge "Optimze inv 16x16 DCT with 10 non-zero coeffs - P1" 2014-01-09 18:17:12 -08:00
Deb Mukherjee 36c8daed58 Merge "Cleanups on refresh flags" 2014-01-09 17:38:45 -08:00
Deb Mukherjee 412e4954c1 Cleanups on refresh flags
Cleanups on frame refresh flags and external overrides.

Change-Id: Ia6a56fe1bde906b1dc3fcbf4ef1c7b207cd2df2d
2014-01-09 17:00:23 -08:00
Johann e8192cf633 Merge "Use the correct member for initialization" 2014-01-09 15:21:19 -08:00
Yaowu Xu b1d81e19d8 Merge "Simplify set_rt_speed_feature()" 2014-01-09 15:02:24 -08:00
Marco Paniconi 193fa5c8ba Keep buffer clipped to maximum in change_config.
Under a configuration change, where the bitrate suddenly decreases,
the buffer level may be larger than maximum allowed (for that first frame to be encoded after change_config).
This change keeps it clipped to its maximum level.

Change-Id: I4d0b5b3d1fd8148600dd39e02bd630c9464baba5
2014-01-09 14:33:40 -08:00
Dmitry Kovalev c8e8d3a461 Merge "Renaming 'Sharpness' to 'sharpness'." 2014-01-09 13:42:55 -08:00
Yaowu Xu 2d381d76d8 Simplify set_rt_speed_feature()
1. Made speed choices to be progressive
2. Adjusted rt speed settings to achieve better speed/quality

Overall, rt-5 gained 2.5% in compression/quality, encoding time of 720p
niklas clip goes from 137,052ms to 121,874ms

Change-Id: Ia6e7e1e15225395a868a2f1059c3db8e266e1600
2014-01-09 13:02:15 -08:00
Jingning Han af31b27aae Optimze inv 16x16 DCT with 10 non-zero coeffs - P2
This commit further optimizes SSE2 operations in the second 1-D
inverse 16x16 DCT, with (<10) non-zero coefficients. The average
runtime of this module goes down from 779 cycles -> 725 cycles.

Change-Id: Iac31b123640d9b1e8f906e770702936b71f0ba7f
2014-01-09 12:46:09 -08:00
Yunqing Wang f3b9b97c0e Merge "SSSE3 convolution optimization" 2014-01-09 12:39:47 -08:00
levytamar82 511d218c60 SSSE3 convolution optimization
Optimizing all SSSE3 assembly for convolution:
1. vp9_filter_block1d4_h8_sse2
2. vp9_filter_block1d8_h8_sse2
3. vp9_filter_block1d16_h8_sse2
4. vp9_filter_block1d4_v8_sse2
5. vp9_filter_block1d8_v8_sse2
6. vp9_filter_block1d16_v8_sse2
my optimization include:
-processing 2x8 elements in one 128 bit register instead of processing
8 elements in one 128 bit register.
-removing unecessary loads.
This optimization gives between 2.4% user level gain for 480p input
and 1.6% user level gain for 720p.
This Optimization done only for 64bit.

Change-Id: Icb586dc0c938b56699864fcee6c52fd43b36b969
2014-01-09 12:27:51 -07:00
Dmitry Kovalev 42647fc9fe Merge "Using VP9_COMMON instead of VP9_COMP." 2014-01-09 11:15:29 -08:00
Paul Wilkins 11569060f4 Merge "Fix rate allocation bug." 2014-01-09 03:00:15 -08:00
Johann 719dadf3ef Use the correct member for initialization
On Windows this fails with:
error C2440: 'initializing': cannot convert from int_mv to uint32_t

Change-Id: I51630efd0e83a0ce620c91aa7859dd6fc1572e99
2014-01-08 19:31:24 -08:00
Dmitry Kovalev b16fac42d4 Using VP9_COMMON instead of VP9_COMP.
Change-Id: If7d3958653104f3e170853e931f8489de3ecf3cc
2014-01-08 18:36:38 -08:00
Dmitry Kovalev d606bf93ef Merge "Removing direct references to {lst_fb, gld_fb, alt_fb}_idx fields." 2014-01-08 18:12:09 -08:00
Dmitry Kovalev feaad4f133 Merge "Cleanups around cpi->common." 2014-01-08 17:48:28 -08:00
Dmitry Kovalev c01fe86ccc Adding {get, set}_rate_correction_factor() functions.
Change-Id: Ib3212832953a3445fc5f021af0e1de7886f09b4f
2014-01-08 17:40:35 -08:00
Dmitry Kovalev 4fbe54d201 Merge "Renaming 'Mode' to 'mode'." 2014-01-08 16:29:29 -08:00
Jingning Han ba6ab46cdc Optimze inv 16x16 DCT with 10 non-zero coeffs - P1
This commit is the first patch optimizing SSE2 implementation of inverse
16x16 DCT with <10 non-zero coefficients. It focused on the first 1-D (row)
transformation. It exploits the fact that only top-left 4x4 block contains
non-zero coefficients, in a 2-D inverse 16x16 DCT with <10 coeffients.

The average runtime of idct16x16_10 unit is reduced from
883 cycles -> 779 cycles (12% faster).

For pedestrian_area_1080p 300 frames at 4000 kbps, the speed 2 runtime goes
down from 310651 ms  -> 305910 ms. The decoding speed goes up from
80.37 fps -> 80.87 fps.

Change-Id: Ic6f3ac5a637a76c07ba73ddaafe318a699fea645
2014-01-08 15:36:45 -08:00
Dmitry Kovalev 510a828256 Removing direct references to {lst_fb, gld_fb, alt_fb}_idx fields.
Change-Id: Ib1d9628d2b538b6dc27b0db1fa7f40f70ff2072f
2014-01-08 15:21:41 -08:00
Dmitry Kovalev 0ecd583d8d Cleanups around cpi->common.
Change-Id: I0c42a729038d0f4cb7bc07f587d066fcb1dfe9d9
2014-01-08 14:51:00 -08:00
Alex Converse 8fcb74e6bb Merge "Add a C fallback for get_msb() and change inline to INLINE." 2014-01-08 14:43:46 -08:00
hkuang 5be0ed30dc Merge "Add initial intra frame neon optimization. 1~2% gain." 2014-01-08 14:41:43 -08:00
Dmitry Kovalev 962c8b241e Renaming 'Mode' to 'mode'.
Change-Id: I6cdd670d66288dbd66228f38bba6b30502d25362
2014-01-08 14:33:59 -08:00
Dmitry Kovalev 57be81369a Renaming 'Sharpness' to 'sharpness'.
Change-Id: I54513dc3b3321e0c0bb6b15ea5c34085ed80b4a4
2014-01-08 14:19:14 -08:00
Dmitry Kovalev feab7e1146 Merge "Using struct twopass_rc* instead of VP9_COMP*." 2014-01-08 14:14:05 -08:00
Alex Converse ce7ff3b63d Add a C fallback for get_msb() and change inline to INLINE.
For systems without __builtin_clz() or _BitScanReverse(), taken from libwep

Change-Id: Iead257efc1772c466c79e1dc0356ed571d38d43e
2014-01-08 12:25:47 -08:00
hkuang 691111aacf Add initial intra frame neon optimization. 1~2% gain.
More intra optimizations will be added.

Change-Id: I33ae8d93f6002bf7b64cc2669602d9e6bfa5a6e8
2014-01-08 11:58:42 -08:00
Yunqing Wang a84029ad9c Merge "AVX2 Variance Optimization" 2014-01-08 11:33:42 -08:00
Alex Converse 22d83a0ab7 Merge "Replace RD modeling with a fixed point approximation." 2014-01-08 11:06:54 -08:00
levytamar82 357b65369f AVX2 Variance Optimization
Optimizing the variance functions: vp9_variance16x16, vp9_variance32x32,
vp9_variance64x64, vp9_variance32x16, vp9_variance64x32,
vp9_mse16x16 by migrating to AVX2
some of the functions were optimized by processing 32 elements instead of 16.
some of the functions were optimized by processing 2 loop strides of 16
elements in a single 256 bit register
This optimization gives between 2.4% - 2.7% user level performance gain
and 42% function level gain.

Change-Id: I265ae08a2b0196057a224a86450153ef3aebd85d
2014-01-08 12:05:53 -07:00
Alex Converse f2ca665f1c Replace RD modeling with a fixed point approximation.
Change-Id: I44eb44eb3f36c05d916ef140ef42cc84f72f99ec
2014-01-08 10:37:24 -08:00
Jingning Han aa9552b0b5 Merge "Fix an issue in motion vector prediction stage" 2014-01-08 10:06:03 -08:00
Deb Mukherjee 0d21d79bbc Merge "Further rate control cleanups" 2014-01-08 09:20:29 -08:00
Paul Wilkins d7b49b28e6 Fix rate allocation bug.
Fix miss alignment of the frames contributing to the
error score and bit allocation for gf/arf groups.

Initial results slightly +.

Change-Id: Ie508bdcfdac52e592d48e1f13e01b3551b523deb
2014-01-08 15:30:13 +00:00
Deb Mukherjee 730ade414d Further rate control cleanups
Some cleanups on frames_to_key, frames_since_key.
Also removes the unused fixed_q parameters in vp9.

Change-Id: If8743a32c71de30a8d17136477b53d607a7acda8
2014-01-07 13:51:50 -08:00
Jingning Han 06e4f825af Fix an issue in motion vector prediction stage
The previous implementation stops motion vector prediction test when
the zero motion vector appears for the second time. This commit fixes
it by simply skipping the second time check on zero mv and continuing
on to next mv candidate.

It slightly improves stdhd in speed 2 by 0.06% on average. Most static
sequences are not affected. A few hard ones, like jet, ped, and riverbed
were improved by 0.1 - 0.2%.

Change-Id: Ia8d4e2ffb7136669e8ad1fb24ea6e8fdd6b9a3c1
2014-01-07 10:18:04 -08:00
Jingning Han fdad4fd226 Remove deprecated variable from rt_speed_feature
This resolves a merge error.

Change-Id: Ifb83acc0a08e80c82f7624f9c86f79d3a86cc871
2014-01-07 10:15:51 -08:00
Dmitry Kovalev 16f5607dfe Merge "Adding new_mv local variable." 2014-01-07 09:56:41 -08:00
Dmitry Kovalev 7b496783c2 Merge "Adding get_ref_frame_buffer() function." 2014-01-07 09:56:06 -08:00
Dmitry Kovalev b3af2f87b0 Merge "Removing unused mvp_fill manipulation code." 2014-01-07 09:54:05 -08:00
Jingning Han 656166ea81 Merge "Remove avoid_frame_with_high_error from RD loop" 2014-01-07 09:31:17 -08:00
Dmitry Kovalev 9e18cf70db Merge "Reusing ROUND_POWER_OF_TWO macro." 2014-01-07 02:40:02 -08:00
Paul Wilkins e4e58ac400 Merge "Clean up: unused function and variables" 2014-01-07 02:27:20 -08:00
Dmitry Kovalev 6a7a7341ee Removing unused mvp_fill manipulation code.
The code can be removed because mvp_full will be overridden after that.

Change-Id: I89559b1b6914c86bcd02b7359d37241948ac11d3
2014-01-06 18:07:12 -08:00
Dmitry Kovalev c015ba5f6e Adding new_mv local variable.
Change-Id: I9631b35810c232c134f39dc0edadb1b3860a45ae
2014-01-06 17:58:01 -08:00
Dmitry Kovalev ff655420b5 Reusing ROUND_POWER_OF_TWO macro.
Change-Id: I064ba32d5358bfbf080a4300fc1793b345080006
2014-01-06 17:38:57 -08:00
Dmitry Kovalev abe4940d64 Replacing &cpi->common with cm.
Change-Id: Ic5bf5682ccdb8d2fbad6bba0d7db19a4f47b62a1
2014-01-06 17:29:16 -08:00
Marco Paniconi 166d8142ac Merge "Code cleanup: remove unneeded lines." 2014-01-06 16:35:52 -08:00
Yaowu Xu 9aa16eecd0 Merge "Added placeholder for real time mode" 2014-01-06 16:26:57 -08:00
Marco Paniconi 3817c7c732 Code cleanup: remove unneeded lines.
Change-Id: I44a89b822a436299b9dd4ff26ad2e35767c29c58
2014-01-06 16:04:48 -08:00
Dmitry Kovalev a224b0dded Merge "Combining ref_frame and second_ref_frame into ref_frames[2]." 2014-01-06 15:02:31 -08:00
Dmitry Kovalev 29199efd57 Merge "Moving reset_segment_features() to encoder/vp9_segmentation.h." 2014-01-06 15:01:54 -08:00
Dmitry Kovalev 7919bf6afd Adding get_ref_frame_buffer() function.
Encapsulating direct references to lst_fb_idx, gld_fb_idx, alt_fb_idx.

Change-Id: I7e65ba3f131286e433e6651970c5647311fa4687
2014-01-06 14:50:54 -08:00
Dmitry Kovalev bbb25e6a39 Merge "Adding RefBuffer struct." 2014-01-06 14:19:44 -08:00
Jingning Han 393a8ccef9 Remove avoid_frame_with_high_error from RD loop
The feature undergoes prior assumption that the recursive partition
size search from 4x4 to 64x64, hence utilizing information from small
blocks to determine early termination in large block rate-distortion
optimization search. The current codebase is now going from top down.
The previous function might go with not properly initialized values,
hence removed.

Tested on pedestrian_area_1080p at 4000 kbps running under speed 2.
No visible difference in runtime observed.

Change-Id: I553df415c6191413762db7ae34e8790c71d8118e
2014-01-06 13:34:07 -08:00
Dmitry Kovalev b57b82b5d6 Using struct twopass_rc* instead of VP9_COMP*.
Change-Id: Id9ff7772aa3a3fb5d6cf94aff7dc9489bd964340
2014-01-06 12:46:23 -08:00
Dmitry Kovalev 6b150c2884 Combining ref_frame and second_ref_frame into ref_frames[2].
Change-Id: I007d66a1cb1b44751dcceafbaa64649ed9a34562
2014-01-06 12:24:37 -08:00
Deb Mukherjee f73b21439d Merge "Corerctly sets frame type in the 2 pass case" 2014-01-06 12:01:30 -08:00
Yaowu Xu a2c01ed5b4 Added placeholder for real time mode
Change-Id: I203d10f76c7ca78d875eaae15557cd765c6240d1
2014-01-06 11:57:25 -08:00
Dmitry Kovalev 4603f31d02 Moving reset_segment_features() to encoder/vp9_segmentation.h.
Change-Id: I0db4b31cb2382d4f6249eae0a8f42d227ad0ac57
2014-01-06 11:31:57 -08:00
Dmitry Kovalev a9deec4389 Merge "Moving get_scan() call out of decode_coeffs() function." 2014-01-06 10:50:16 -08:00
Deb Mukherjee cf3d2c8d5a Corerctly sets frame type in the 2 pass case
This patch sets frame types correctly in the new
vp9_get_second_pass_params() function called prior
to encode_frame_to_data_rate() function, so that the
latter function can just work with what is passed to
it. This will allow multiple vp9_get_second_pass_params()
to be created for various encode strategies without
messing with the core encode function.

There is no difference in derf and yt. stdhd/hd are pending.

Change-Id: I70dfb97e9f497e9cee04052e0e8e0c2892eab0c3
2014-01-06 10:49:25 -08:00
Jingning Han b49e9fb433 Merge "Tune IDCT8_1D macro function interface" 2014-01-06 09:38:19 -08:00
Paul Wilkins d7663edeba Clean up: unused function and variables
Remove adjust_maxq_qrange() and related variables.

Change-Id: I50d065f4619c499283e2680e31d0d99c22439dec
2014-01-06 11:26:02 +00:00
Paul Wilkins bc27812c8b Merge "Modified Handling of min and max vbr rates." 2014-01-06 02:04:55 -08:00
Dmitry Kovalev 5771276fda Moving get_scan() call out of decode_coeffs() function.
Change-Id: I5db2e5a6c36e6c503dea2e07d9d2e0daf4ac9d89
2014-01-03 18:18:39 -08:00
Dmitry Kovalev 2344e3a2e1 Merge "Converting CHECK_POINT macro to inline function." 2014-01-03 18:02:10 -08:00
Dmitry Kovalev 6e8c103620 Merge "Replacing int_mv with MV." 2014-01-03 17:38:28 -08:00
Dmitry Kovalev 513666e78c Converting CHECK_POINT macro to inline function.
Change-Id: I08533d59a78346dac30a7dcbc12146f23ef88bbc
2014-01-03 16:16:28 -08:00
Dmitry Kovalev ed2fba2a79 Merge "Replacing CHECK_BOUNDS macro with inline check_bounds function." 2014-01-03 15:57:36 -08:00
Dmitry Kovalev 0c5575fe57 Merge "Moving hev mask calculation into filter4() function." 2014-01-03 15:56:16 -08:00
Jingning Han 3e0c62b53f Tune IDCT8_1D macro function interface
This commit adds input/output ports for IDCT8_1D macro function to
provide more flexibility in variable use. It allows to skip several
buffer swap operations.

Change-Id: I21f3450509537322293043b3281bfd3949868677
2014-01-03 15:23:47 -08:00
Dmitry Kovalev ba41e9d459 Adding RefBuffer struct.
Adding RefBuffer to simplify reference buffer management. The struct has a
pointer to image data and scale factors relative to the current frame.

Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
2014-01-03 15:21:55 -08:00
Dmitry Kovalev efb150bb30 Merge "Cleaning up get_prediction_decay_rate() function." 2014-01-03 15:13:22 -08:00
Dmitry Kovalev 2336853be1 Merge "Pre planes configuration cleanup." 2014-01-03 15:04:53 -08:00
Jingning Han 326b73e41e Merge "Reduce num of buffer swap calls in idct8_1d_sse2" 2014-01-03 12:54:57 -08:00
Jingning Han 12f742bc3f Merge "Rework idct8x8_10 SSE2 implementation" 2014-01-03 12:54:43 -08:00
Dmitry Kovalev a8ba34d299 Pre planes configuration cleanup.
Change-Id: I1d50f8701d9c9dedb84387a773a3e9b4daaad720
2014-01-03 12:50:57 -08:00
Dmitry Kovalev 38a478fc2c Merge "Merging best_ref_mv and second_best_ref_mv into best_ref_mv[2]." 2014-01-03 12:12:53 -08:00
Jingning Han 0b1a27135a Reduce num of buffer swap calls in idct8_1d_sse2
This commit merges the initial buffer swap operations in idct8_1d_sse2
into the array transpose step, hence reducing number of instructions
therein.

Change-Id: I219f6f50813390d2ec3ee37eecf2a4a2b44ae479
2014-01-03 12:12:03 -08:00
Dmitry Kovalev 84520829ed Cleaning up get_prediction_decay_rate() function.
Change-Id: Ie8fcee21f41f91f94b4fa02f2a55691dea1734e3
2014-01-03 12:11:36 -08:00
Jingning Han 1bb11781e2 Rework idct8x8_10 SSE2 implementation
This commit optimizes the SSE2 implmentation of idct8x8_10. It exploits
the fact that only top-left 4x4 block contains non-zero coefficients,
and hence reduces the instructions needed.

The runtime of idct8x8_10_sse2 goes down from 216 to 198 CPU cycles,
estimated by averaging over 100000 runs. For pedestrian_area_1080p 300
frames coded at 4000kbps, the average decoding speed goes up from
79.3 fps to 79.7 fps.

Change-Id: I6d277bbaa3ec9e1562667906975bae06904cb180
2014-01-03 12:04:09 -08:00
Dmitry Kovalev 672c355a26 Replacing int_mv with MV.
Change-Id: Ifd432fa3741ba47102d298e0b348eb00f5a9ce53
2014-01-03 11:48:07 -08:00
Dmitry Kovalev f215c641bb Merge changes Ic0a2427a,I3addbf6d
* changes:
  Removing CONFIG_MD5.
  Using VP9_FRAME_MARKER instead of raw number.
2014-01-03 11:47:57 -08:00
Dmitry Kovalev 5b04962cf4 Merging best_ref_mv and second_best_ref_mv into best_ref_mv[2].
Change-Id: If04b57828847cee09a79c94e1098d1aa4990ea0d
2014-01-03 11:31:00 -08:00
Paul Wilkins 65ede3da45 Modified Handling of min and max vbr rates.
In two pass encodes bits are allocated to each frame
according to a modified error score for the frame as a
fraction of the modified error score for the clip or section.

Previously a minimum rate per frame was reserved and
subtracted from the bits allocatable by the two pass code.
The vbr max section rate was enforced by clipping the
actual number of bits allocated.

In this patch the min and max vbr rates are enforced
instead by clipping the modified error scores for each frame
rather than the number of bits allocated.

Small gains for all test sets (psnr and SSIM) ranging from
~ +0.05 for YT psnr up to ~ +0.25 for Std-hd SSIM.

Change-Id: Iae27d70bdd3944e3f0cceaf225bad2e8802833de
2014-01-03 14:56:08 +00:00
Dmitry Kovalev f16b186b8e Reusing vp9_get_skip_context() function in encoder.
Change-Id: Ic0345622115941f49b6a568c7b8154ba892cbf0d
2014-01-02 18:29:56 -08:00
Yaowu Xu 8458c8c450 Merge "Fix show existing frame" 2014-01-02 09:27:28 -08:00
Jingning Han cdc933ca00 Merge "Adaptive motion control on ref and search range" 2013-12-27 15:04:16 -08:00
Dmitry Kovalev 46d5cc4307 Using VP9_FRAME_MARKER instead of raw number.
Change-Id: I3addbf6d89a86a707c8df1a463da3e9e367910df
2013-12-27 14:50:27 -08:00
Dmitry Kovalev 7eb09151bc Merge "Removing vpx_codec_vp9x_cx and internal experimental flag." 2013-12-27 14:47:57 -08:00
Yunqing Wang a7248a04b7 Merge "Remove a unused sub-pixel search" 2013-12-27 14:05:38 -08:00
Dmitry Kovalev 116e0a1ab7 Removing vpx_codec_vp9x_cx and internal experimental flag.
vpx_codec_vp9x_cx is not used internally. Experimental flag from
vp9_extracfg is also not really used. YUV 4:4:4 just works after these
changes (you have to specify --profile=1 for the encoder).

Change-Id: Ib1c8461d0d19d159827e005efe868f891eea0140
2013-12-27 14:01:12 -08:00
Jingning Han a4ce53f14d Adaptive motion control on ref and search range
This commit takes a preliminary attempt to refine the motion search
control. It detects the SAD associated with mv predictor per reference
frame, and based on which to determine whether the encoder wants to
reduce the motion search range (if the predicted mv provides fairly
small SAD), or to skip the current reference frame (if there exists
another ref frame that gives much smaller SAD cost).

This feature is turned on in the settings of speed 1 and above.

In speed 1, compression performance changed
derf  -0.018%
yt    -0.043%
hd    -0.045%
stdhd -0.281%

speed-up
pedestrian_area_1080p at 4000 kbps 100 frames
199651ms -> 188846ms (5.5% speed-up)
blue_sky_1080p at 6000 kbps
443531ms -> 415239ms (6.3% speed-up)

In speed 2, compression performance changed
derf  -0.026%
yt    -0.090%
hd    -0.055%
stdhd -0.210%

speed-up
pedstrian 113949ms -> 108855ms (4.5% speed-up)
blue_sky  271057ms -> 257322ms (5% speed-up)

Change-Id: I1b74ea28278c94fea329d971d706d573983d810d
2013-12-27 12:43:06 -08:00
Dmitry Kovalev f3beca079c Merge "Calculating has_second_ref only once for single_ref context." 2013-12-26 13:41:02 -08:00
Dmitry Kovalev 1e8b5bf4ac Merge "Removing vp9_findnearmv.{h, c} files." 2013-12-26 13:38:38 -08:00
James Zern 44963dfd37 cosmetics: vp9_reconinter.h: make some variables const
Change-Id: If5cd0a1487e97c8e9d13dc2e078c6dceaf79de4f
2013-12-26 14:02:46 -05:00
Dmitry Kovalev 87440aeb82 Moving MAX_PROB constant to vp9_prob.h.
Change-Id: I07470ad1b7a0344d088911428ffab8ba9a0d8708
2013-12-20 15:56:59 -08:00
Dmitry Kovalev f69b5609ff Renaming vp9_dboolhuff.{h, c} to vp9_reader.{h, c}.
Change-Id: I50c009ff8108bda1c57427f23d63a79c04f7e776
2013-12-20 12:53:03 -08:00
Dmitry Kovalev 36ee0a2d0b Merge "Renaming vp9_boolcoder.{h, c} to vp9_writer.{h, c}." 2013-12-20 12:51:37 -08:00
Dmitry Kovalev b3b9f4a4d0 Merge "Using single struct to represent scale factors." 2013-12-20 11:22:02 -08:00
Dmitry Kovalev 4084566554 Renaming vp9_boolcoder.{h, c} to vp9_writer.{h, c}.
Change-Id: I9b9a5fcce8530284df0f270706ee060a0edc1517
2013-12-20 11:10:24 -08:00
Dmitry Kovalev 47d482cb0a Merge "Reusing FRAME_COUNTS in the encoder." 2013-12-20 10:56:31 -08:00
Jingning Han 9938777058 Merge "Store the SSE of prediction residuals" 2013-12-20 10:37:20 -08:00
Marco Paniconi 68cdbfe50e Merge "Initialize avg_frame_qindex to worst_allowed for 1 pass." 2013-12-20 10:28:09 -08:00
Yaowu Xu 6afd37aa15 Merge "Fix a bug" 2013-12-20 09:20:50 -08:00
Yaowu Xu 2472f125c1 Fix a bug
The line was accidently removed in 4dbad63a7.

Change-Id: Ic1e18f209cead95cecc684f952ae667271b58a97
2013-12-20 08:52:35 -08:00
Yunqing Wang b6a0ac11f0 Merge "Code clean up" 2013-12-20 08:46:11 -08:00
Paul Wilkins 17b2d63196 Merge "Adjust gf_group_error_left for arf groups." 2013-12-20 04:21:56 -08:00
Jingning Han 243327f43c Store the SSE of prediction residuals
Buffer the SSE of prediction residuals in the rate-distortion
optimization loop of a given block. This information would be used
for later encoding control.

Change-Id: If4e63f3462490513c48be9407d3327c8dd438367
2013-12-19 18:45:28 -08:00
Dmitry Kovalev 987810ad95 Removing vp9_findnearmv.{h, c} files.
Moving all code from that files to vp9_mvref_common.{h, c}.

Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
2013-12-19 17:39:57 -08:00
Dmitry Kovalev a3fbcc88bb Using single struct to represent scale factors.
Moving back to scale_factors struct. We don't need anymore x_offset_q4 and
y_offset_q4 because both values are calculated locally inside vp9_scale_mv
function.

Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
2013-12-19 16:06:33 -08:00
Dmitry Kovalev 40e173ac42 Merge "vp9_encode_frame() cleanup." 2013-12-19 15:37:13 -08:00
Marco Paniconi 5ba4b16c2d Initialize avg_frame_qindex to worst_allowed for 1 pass.
Change-Id: I535bde16c8fc4c2cd263bbbbaed46ead4c776090
2013-12-19 14:55:49 -08:00
Dmitry Kovalev c872d2be65 Call set_scaled_offsets() just before scale_mv() call.
Before mv scaling it is required to calculate x_offset_q4/y_offset_q4
by calling set_scaled_offsets(). Now offset configuration can not be
missed because it happens just before scale_mv().

Change-Id: I7dd1a85b85811a6cc67c46c9b01e6ccbbb06ce3a
2013-12-19 14:55:13 -08:00
Dmitry Kovalev 5bfd475104 Merge "Adding get_block_variance_fn() function." 2013-12-19 14:47:59 -08:00
Dmitry Kovalev a619f5a776 Merge "Replacing 1 << mi_{width, height}_log2() with lookup tables." 2013-12-19 14:28:58 -08:00
Dmitry Kovalev f06187f125 vp9_encode_frame() cleanup.
Change-Id: I82ecbe7fe0baa890ce251043f3c7159188c00665
2013-12-19 14:28:42 -08:00
Dmitry Kovalev 66ef9d1c20 Adding get_block_variance_fn() function.
Change-Id: I67d934b6af899ffd4bcad2d913a650685fa64abd
2013-12-19 14:07:03 -08:00
Dmitry Kovalev 431aaefbec Replacing 1 << mi_{width, height}_log2() with lookup tables.
Change-Id: Iba91ff1e797a83517e2cd7c3ab86cba39f39415b
2013-12-19 13:43:45 -08:00
Deb Mukherjee 84b4d8c692 Merge "Begin refactor of frame schedule in rate control" 2013-12-19 11:37:06 -08:00
Yunqing Wang 6ff4f19269 Remove a unused sub-pixel search
The original iterative search was replaced by subpel_tree search,
and was not used anymore.

Change-Id: I998b38e1cb0ee359a08b2410d0766dbf183ab071
2013-12-19 11:20:56 -08:00
Yunqing Wang 09faf55916 Code clean up
Removed unused filter coefficients.

Change-Id: Ib395a51305e23ff41ab69c1808d56946d25961cd
2013-12-19 11:09:23 -08:00
Dmitry Kovalev c67ee5ea24 Merge "Converting vp9_treecoder.h to vp9_prob.{h, c}" 2013-12-19 11:03:30 -08:00
Dmitry Kovalev e4b85c9ed8 Merge "Adding get_zbin_mode_boost() function." 2013-12-19 11:03:23 -08:00
Deb Mukherjee 4dbad63a71 Begin refactor of frame schedule in rate control
Various cleanups and streamlining of interfaces as precursor
to further advancements in rate control.
Pre-encode parameter setting for different use cases:
One-pass, first of 2-pass, second of 2-pass, and Svc
are separated out.

There is no change in output with this change.

Change-Id: Ied8ca7d84d610993776aa30ef263fe20452e0e3e
2013-12-19 10:55:38 -08:00
Paul Wilkins ee29b7e85c Adjust gf_group_error_left for arf groups.
Take account of the fact that the overlay frame is usually
very cheap so distribute target bits among the other frames.

Change-Id: I120685122e8cbbe75da8d07d02932f7877059867
2013-12-19 17:26:04 +00:00
Paul Wilkins cb8659981d Allow arf just before kfs or end of sequence.
This will hurt metrics in some cases (particularly for static
clips at low data rates where there is extra overhead, but it
helps smooth transitions around forced key frames between
stitched kf sections.

Change-Id: I7e1026ae0de6c77bba863061e115136d7f283cc0
2013-12-19 16:52:38 +00:00
Paul Wilkins e1312c3696 Further q estimate adjustment.
Slightly reduces the mean tendency to undershoot target
rate in vbr, especially when using the memory less mode
and when recodes are disabled.

The effect is primarily at low q.

Change-Id: I59a593b99522cc7da31b4134d1c8a65f5b7b7c53
2013-12-19 15:32:50 +00:00
Paul Wilkins d99e890840 Remove unused code and data structure.
Remove modified_error_used and adjust_active_maxq().

Change-Id: I8915007128dc1a17e11693104cfb008a6d64e6a2
2013-12-19 15:27:44 +00:00
Dmitry Kovalev 4e84ad1fc6 Reusing FRAME_COUNTS in the encoder.
Replacing: intra_inter_count, y_mode_count, y_uv_mode_count.

Change-Id: I5d70f73288af6effe6176e26400138067a2ae2a3
2013-12-18 18:52:58 -08:00
Dmitry Kovalev 829ec56b47 Merge "Reusing FRAME_COUNTS in the encoder." 2013-12-18 18:27:08 -08:00
Johann dc2c62eba8 Cast away Windows warning
Subtracting the pointers promoted to a signed type.

Change-Id: Ied0e822a1756ed7b2f514efafcb6dce4efb9b9d6
2013-12-18 15:52:51 -08:00
Alex Converse 69384a2510 Merge "Fix arnr for 4:4:4." 2013-12-18 14:58:03 -08:00
Alex Converse 7e731b6cea Fix arnr for 4:4:4.
Change-Id: I80a0cea96c65c0cfb530a71053616dba6edeb896
2013-12-18 14:33:29 -08:00
Jingning Han 89b6d40690 Replace cpi->common with cm in vp9_onyx_if
Replace repeated cpi->common fetching with cm variable in a few
places in vp9_onyx_if.c

Change-Id: Ifa16d617f37919b2e0baf8efb256130a647b5eb3
2013-12-18 12:31:41 -08:00
Jingning Han ae0e383d35 Merge "Make rd_pred_filter update consistent in all bsizes" 2013-12-18 12:31:35 -08:00
Jingning Han d8557a052c Make rd_pred_filter update consistent in all bsizes
This commit reworks the prediction filter rate-distortion cost update
process consistent for all block sizes.

Change-Id: I5874349ab38df380240f96c2d4ef924072bab68d
2013-12-18 11:54:31 -08:00
Dmitry Kovalev de49895804 Adding get_zbin_mode_boost() function.
Change-Id: Ia356178d6a3c40b512d3123390781ef94dec72d6
2013-12-18 10:39:08 -08:00
Marco Paniconi 02d5ebcfdc Merge "Updates for 1-pass CBR rate control." 2013-12-18 10:28:33 -08:00
Marco Paniconi 1b8b8b0d0d Updates for 1-pass CBR rate control.
Adjustments based on buffer level, frame dropper.

Change-Id: Iaa85b570493526a60c4b9fb7ded4c0226b1b3a33
2013-12-18 09:24:24 -08:00
Johann bb12bbaefb Merge "Fix incorrect size reading" 2013-12-17 21:26:50 -08:00
Frank Galligan 05d5332407 Merge "Increase required number of external frame buffers" 2013-12-17 21:20:34 -08:00
Jim Bankoski 9d754dcca8 Merge "rename loop filter functions" 2013-12-17 18:56:09 -08:00
Johann 85770264ac Fix incorrect size reading
Guard against incorrect size values moving *data past data_end.

Check read length against the difference of the buffers.

Change-Id: Ie0b54e2db517fd41a0f3ceb23402ee44839a4739
2013-12-17 18:48:55 -08:00
Frank Galligan 9e41d569d7 Increase required number of external frame buffers
Make applications pass in VPX_MAXIMUM_WORK_BUFFERS as well as
VP9_MAXIMUM_REF_BUFFERS.

Change-Id: I9c07ce83fa19c90ed43227b801b2013690e81edd
2013-12-17 17:34:36 -08:00
Jim Bankoski b720ba165f rename loop filter functions
This renames all the loop filter functions so that they no
longer refer to mb

Change-Id: I8a58a8c7fd253d835cb619bde13913e896ece90b
2013-12-17 17:34:34 -08:00
Dmitry Kovalev 118c8fb3fb Calculating has_second_ref only once for single_ref context.
Change-Id: Ib1253e0606426850f53060a4c5303af86bf1c093
2013-12-17 17:02:24 -08:00
Yaowu Xu ede392d765 Merge changes I5d28c2f5,Ib00b036f
* changes:
  Remove redundant function and calls
  Add test for partial inverse transforms
2013-12-17 16:57:01 -08:00
Dmitry Kovalev c6a1ff223b Merge "Calling is_inter_block() only if mbmi is available." 2013-12-17 16:10:56 -08:00
Yaowu Xu ed90a176af Remove redundant function and calls
lf deltas are later setup in function vp9_setup_past_independence(),
so this commit removed the redundant copy. Also renamed a function
to better align the behavior of the funciton.

Change-Id: I5d28c2f5b12b3d31817e14296ed4605c1fd5c98c
2013-12-17 15:44:25 -08:00
Dmitry Kovalev 4821084b3f Moving hev mask calculation into filter4() function.
Change-Id: Ieccf2070b2b01b4135f4c5f9857667eb7825c761
2013-12-17 15:23:23 -08:00
Dmitry Kovalev eb0c73b6e0 Merge "Converting mode_lf_lut struct member into static lookup table." 2013-12-17 15:20:05 -08:00
Dmitry Kovalev 1d23a6594b Reusing FRAME_COUNTS in the encoder.
Change-Id: I6ab9fe2326ebbadf0dd10cca9f66cf8277e3f43b
Replacing: comp_inter_count, single_ref_count, comp_ref_count.
2013-12-16 20:12:47 -08:00
James Zern bd9a388a06 vp9: normalize include guards
Change-Id: If4ddbdcfb3ab387cbca6910b42cf4df8111e6879
2013-12-16 19:40:49 -08:00
Johann 83baed0b6b Merge "Add const to match declaration" 2013-12-16 19:17:43 -08:00
Yaowu Xu 1f919cf27d Merge "Define POSITION to differentiate from MV" 2013-12-16 18:21:55 -08:00
Yaowu Xu 36c4e27454 Merge "Move two functions to encoder" 2013-12-16 18:09:51 -08:00
Jingning Han 07a28c77e3 Merge "Fix rd_filter_cache update in sub8x8 RD loop" 2013-12-16 17:57:02 -08:00
Jingning Han ef838c349c Merge "Remove redefinition in handle_inter_mode" 2013-12-16 17:56:41 -08:00
Yaowu Xu 3cce464342 Define POSITION to differentiate from MV
MV struct was ussed to indicate the postition of a MI_BLOCK with row
and col components. The expression was confusing, this commit added a
new stucture "POSITION" with row and col component to better describe
the position of a mi_block.

Change-Id: I59fdd4b45010fe7d85a8db22a55503265c4f5b2b
2013-12-16 17:28:00 -08:00
Yaowu Xu 50ec6311e6 Move two functions to encoder
As they are used by encoder only.

Change-Id: I7b1e6955b218aba66fe156523521a8121c9a84a4
2013-12-16 17:27:48 -08:00
Deb Mukherjee 1e59cbf23b Rate control changes on active_worst_quality
Various cleanups and refactoring.
Removes feedback of active worst qaulity and uses last_q
instead to make the interface cleaner. Active worst quality
is now decided only once for a frame being coded in the
beginning based on last_q and other stats. Also, adds other
cleaups on last_q to store also the last_q for altref frames,
and reduces the altref interval a little.

The output does change a little.
derfraw300: +0.224% (global psnr)
stdhdraw250: +0.442% (global psnr)

Change-Id: Ie634cdc032697044c472dd0fe79c109b3e7f9767
2013-12-16 17:08:16 -08:00
Dmitry Kovalev 3755be94ed Merge "Using MV struct instead of int_mv union in encoder (2)." 2013-12-16 16:56:07 -08:00
Johann 5894e7ef50 Add const to match declaration
The definition fell out of sync in
I7d2fda72de5fc27e86c6589543b41fa044681dbf

Change-Id: I3ce3f6ba96bb121f51efaa08f64a69ad9f731a9e
2013-12-16 15:46:11 -08:00
Dmitry Kovalev bb7b4bad6d Merge "Getting rid of b_{width, height}_log2 calls in non-420 loop filter." 2013-12-16 15:10:25 -08:00
Dmitry Kovalev 865d5b83f2 Calling is_inter_block() only if mbmi is available.
Modifying vp9_get_intra_inter_context(), vp9_get_reference_mode_context(),
vp9_get_pred_context_single_ref_p1(), vp9_get_pred_context_single_ref_p2()
functions.

Change-Id: Ifaa2c3eb0c76a544ae8bd1fe3155aada266eae78
2013-12-16 15:09:33 -08:00
Jingning Han 75cfadbd1f Fix rd_filter_cache update in sub8x8 RD loop
Properly handle the rd_filter_cache update, when early termination
or skip prediction filter type check is triggered.

Change-Id: Ie7b9a75fed3358f45ffd15817f2b36670c14eb2d
2013-12-16 14:52:20 -08:00
hkuang fb53409d2a Merge "Remove border extension in intra frame prediction." 2013-12-16 14:48:54 -08:00
Dmitry Kovalev b1d821704b Merge "Yet another vp9_pred_common.c cleanup." 2013-12-16 14:10:52 -08:00
Dmitry Kovalev 4f0a381b49 Merge "Reusing nmv_frame_counts from FRAME_COUNTS in encoder." 2013-12-16 14:10:13 -08:00
hkuang 25e5552630 Remove border extension in intra frame prediction.
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
2013-12-16 14:05:58 -08:00
Dmitry Kovalev b5c9261832 Converting vp9_treecoder.h to vp9_prob.{h, c}
Moving vp9_norm probability table from vp9_entropy.c to vp9_prob.c

Change-Id: Ie757b73860c6f43130790c332b292e2a1a81b788
2013-12-16 12:53:09 -08:00
Dmitry Kovalev 1a23a34419 Merge "Cleaning up encode_sb() and encode_b() functions." 2013-12-16 12:21:38 -08:00
Dmitry Kovalev f00d4e0198 Merge "Removing unnecessary assert(delta != 0) from encode_loopfilter()." 2013-12-16 11:41:36 -08:00
Frank Galligan fbada948fa Add frame buffer lru cache.
Add an option for libvpx to return the least recently used
frame buffer.

Change-Id: I886a96ffb94984f1c42de53086e0131922df3260
2013-12-15 19:57:42 -08:00
Frank Galligan d0ee1fd797 Merge "Add support to pass in external frame buffers." 2013-12-15 19:18:25 -08:00
Frank Galligan 10f891696b Add support to pass in external frame buffers.
VP9 decoder can now use frame buffers passed in by the application.

Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-12-15 18:45:46 -08:00
Dmitry Kovalev 4d2d1591a3 Converting mode_lf_lut struct member into static lookup table.
Change-Id: I6e6c7cb5ff5b60fbe6a7c314daec5ccdc2cafcc3
2013-12-14 17:42:12 -08:00
Dmitry Kovalev 2aadc06e0d Yet another vp9_pred_common.c cleanup.
Change-Id: I617d6c610d181076773c5c3d6f3dbc6717b02580
2013-12-14 17:39:24 -08:00
Dmitry Kovalev b41574e379 Removing unnecessary assert(delta != 0) from encode_loopfilter().
Change-Id: I8ae093d0b61d71d3c294b95d98d0178f7f67c8f6
2013-12-13 18:05:15 -08:00
Dmitry Kovalev 095b03231c Using MV struct instead of int_mv union in encoder (2).
Change-Id: I068345f722a7116e3119927295ad23a28d3066a0
2013-12-13 17:20:40 -08:00
Dmitry Kovalev 64cf398713 Merge "Using MV struct instead of int_mv union in encoder." 2013-12-13 16:42:54 -08:00
Dmitry Kovalev 33df4f0483 Merge "vp9_convole.c cleanup." 2013-12-13 15:40:00 -08:00
Dmitry Kovalev f54b515797 Merge "Cleaning up vp9_append_sub8x8_mvs_for_idx()." 2013-12-13 15:38:53 -08:00
Dmitry Kovalev 25da21b14e Using MV struct instead of int_mv union in encoder.
Change-Id: I8b81a3e4b4fa530a654c28d9c136afa0c1d379fd
2013-12-13 15:24:48 -08:00
Yunqing Wang d4b500d9d7 Merge "Increase disable_filter_search_var_thresh threshold" 2013-12-13 15:11:17 -08:00
Jingning Han 84acc988eb Remove redefinition in handle_inter_mode
Change-Id: I44513b9db6d42e2c52723e1a429f06a93d300c8b
2013-12-13 13:38:05 -08:00
Dmitry Kovalev 466cc94e7a Getting rid of b_{width, height}_log2 calls in non-420 loop filter.
Using num_{4x4, 8x8}_blocks_{wide, high}_lookup instead.

Change-Id: I66a7ab807fa57395253b2d0e636c2479fa8c4adf
2013-12-13 12:53:41 -08:00
James Zern 3aa75bcef6 Merge "vp9 asserts: fix compile warning" 2013-12-13 12:41:31 -08:00
Jingning Han a793cf953f Merge "Rename so -> scan_order in vp9_encodemb.c" 2013-12-13 12:14:48 -08:00
Dmitry Kovalev df13e01665 Merge "Renaming treed_write() to vp9_write_tree()." 2013-12-13 11:19:04 -08:00
Dmitry Kovalev 15a23c8131 Merge "zz_motion_search() cleanup." 2013-12-13 11:18:13 -08:00
Dmitry Kovalev 33859ad8e3 Merge "Moving mi configuration loop from vp9_read_mode_info to set_offsets." 2013-12-13 11:16:59 -08:00
Jingning Han 2f9d118f21 Merge "Remove some dead code" 2013-12-13 11:10:39 -08:00
Jingning Han 930ae71ef0 Rename so -> scan_order in vp9_encodemb.c
Change-Id: I7ff2899ea18a55b37f5c581431ef59806f01e009
2013-12-13 11:06:23 -08:00
Yunqing Wang da9f55c3fb Increase disable_filter_search_var_thresh threshold
Increased threshold(t) for interp filter search. This sped up the
encoder with some PSNR loss.

Borg tests were ran at speed 2.
t = 100, PSNR loss:
-0.710%(derf); -0.561%(stdhd); -0.647%(youtube)
speedup:
9%(derf); 3%(stdhd); 5.7%(youtube)

t = 500, PSNR loss:
-1.687%(derf); -1.665%(stdhd); -1.664%(youtube)
speedup:
18%(derf); 10%(stdhd); 8%(youtube)

Change-Id: I180e3657c1e156aaa88dc7c437f8bcbd19f5caba
2013-12-13 10:47:14 -08:00
Jingning Han 8b73296d7b Merge "Enable adaptive pred filter type for sub8x8" 2013-12-13 09:34:24 -08:00
Dmitry Kovalev e121bf4c1d Moving mi configuration loop from vp9_read_mode_info to set_offsets.
set_offsets() is a right place to configure all mi-related pointers.

Change-Id: I7d2fda72de5fc27e86c6589543b41fa044681dbf
2013-12-12 19:56:30 -08:00
James Zern 178db94cd6 vp9 asserts: fix compile warning
string literal to int within an assert

Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
2013-12-12 19:49:19 -08:00
Jingning Han 3b5a90bd86 Enable adaptive pred filter type for sub8x8
This commit enables an adaptive prediction filter type selection
for sub8x8 block sizes. In speed 1, it re-uses the filter type of
collocated 8x8 block if it is tested in the rate-distortion optimization
loop, for the sub8x8 blocks. Otherwise, it runs the normal test
over all the three filter types. In speed 2, it re-uses the 8x8
block's prediction filter type, if available. Otherwise, force it
to be EIGHTTAP.

Compression and speed performance wise:
speed 1
derf -0.266%
yt   -0.138%

bus at 2000 kbps: 33766ms -> 30451ms (10% speed-up)
football at 600 kbps: 48173ms -> 43786ms (9% speed-up)

speed 2
derf -0.026%
yt   +0.134%

bus at 2000 kbps: 18973ms -> 17698ms (6% speed-up)
football at 600 kbps: 26748ms -> 25096ms (6% speed-up)

Change-Id: I77e097533b969fd3472147225fa79fc98095d342
2013-12-12 17:54:34 -08:00
Dmitry Kovalev 52bf93479c zz_motion_search() cleanup.
Change-Id: I4991bc36e1627bd3a9495ca72c0738f1a937da2e
2013-12-12 11:18:17 -08:00
Dmitry Kovalev 629fb85f17 vp9_convole.c cleanup.
Making overall logic more clear, moving "hacked" calculation of base filter
array pointer to get_filter_base() function.

Change-Id: Ibbd38a9f937e48d35bbbfef3ad933ab36664cccb
2013-12-12 11:14:06 -08:00
Dmitry Kovalev 2a6c7a1a9b Merge "Little cleanup in vp9_encode_block_intra()." 2013-12-11 17:58:02 -08:00
Deb Mukherjee 7edd5170b5 Merge "Changes interfaces to vp9_get_compressed_data fn" 2013-12-11 15:50:40 -08:00
Dmitry Kovalev 1b92ab0ecb Little cleanup in vp9_encode_block_intra().
Change-Id: Ibfe04b920648e15bf7116f4fdc98960572a7007e
2013-12-11 15:26:45 -08:00
Dmitry Kovalev efe5b28c09 Reusing nmv_frame_counts from FRAME_COUNTS in encoder.
Change-Id: Iadf2fcc9a5bfa5d02fc166f31963be1cc814831c
2013-12-11 15:16:10 -08:00
Dmitry Kovalev 5556090dd0 Replacing CHECK_BOUNDS macro with inline check_bounds function.
Change-Id: I8437113da256088576bf66401186e35125089c03
2013-12-11 15:00:36 -08:00
Jingning Han a4ccfadcc2 Merge "Rename clamp_mv_min_max to set_mv_search_range" 2013-12-11 14:45:06 -08:00
Dmitry Kovalev b8dc52f4a3 Cleaning up encode_sb() and encode_b() functions.
Trying to make encode_sb() more similar to write_modes_sb() and
decode_mode_sb() because essentially all branching logic should be the
same.

Change-Id: Ib7dec7b48fce29418142abad4d1dcfdb1c770735
2013-12-11 14:38:22 -08:00
Dmitry Kovalev e79103166f Merge "Renames for consistency in vp9_pred_common.{c, h} files." 2013-12-11 14:30:44 -08:00
Deb Mukherjee e33855cc47 Changes interfaces to vp9_get_compressed_data fn
Silences some lint warnings in previous patches

Change-Id: I04bf47ebe7e63a95fd322719a3154e589c115d78
2013-12-11 14:22:51 -08:00
Jingning Han 9d6e7ce12d Rename clamp_mv_min_max to set_mv_search_range
This function sets the motion search range limit. Rename it to be
more informative.

Change-Id: I2e8e01073dcb99c9bea9c9acd0a61d672d615444
2013-12-11 14:00:08 -08:00
Jingning Han cf83dfb283 Merge "Enforce motion search range clamp for sub8x8" 2013-12-11 13:51:32 -08:00
hkuang 9460226acd Merge "Fix valgrind error." 2013-12-11 13:22:32 -08:00
hkuang 1339f3842c Fix valgrind error.
Temporarily change memcpy to memmove.

Change-Id: I700a197bc1ce496be1ddad7118429c5da465b0ca
2013-12-11 13:21:28 -08:00
Jingning Han a67e654b6c Enforce motion search range clamp for sub8x8
This commit constrains the maximal motion search range for sub8x8
blocks to be [-1023, 1023], in the unit of full pixel.

Change-Id: I955b60649364ab410f2453cafd46a496f2fcb43e
2013-12-11 10:59:27 -08:00
James Zern 345fbfef06 vp9 mt decode: reorder tile decode
reorder the tiles based on size and their presumed complexity. this
minimizes the cases where the main thread is waiting on a worker to
complete.

Change-Id: Ie80642c6a1d64ece884f41683d23a3708ab38e0c
2013-12-10 18:33:27 -08:00
Dmitry Kovalev 3274fc30ee Renames for consistency in vp9_pred_common.{c, h} files.
Change-Id: Icba06e84ca55c419abbacedf5825eeb394a1b140
2013-12-10 18:31:46 -08:00
Dmitry Kovalev 021a15fe9f Renaming treed_write() to vp9_write_tree().
Making name consistent with vp9_read_tree().

Change-Id: Ie213ffe0d5345bf3035f28e17f610894fec79205
2013-12-10 18:13:29 -08:00
Dmitry Kovalev 098d13ba10 Cleaning up vp9_append_sub8x8_mvs_for_idx().
Replacing if-else with switch statement, reordering function arguments.

Change-Id: I4825d2ef311ba8999b6d4ceb0eef003587a13434
2013-12-10 17:56:53 -08:00
Yaowu Xu 014b9c70f7 Merge "Fix a bug" 2013-12-10 16:06:42 -08:00
Dmitry Kovalev 1048a7e314 Merge "Cleaning up skip context calculation." 2013-12-10 15:00:22 -08:00
Dmitry Kovalev bcee73f7ae Merge "Cleaning up read_inter_block_mode_info() function." 2013-12-10 14:59:36 -08:00
Guillaume Martres 020a1e7006 Merge "avoid crash when using --best on cpus with SSE3 (but not SSE4) support" 2013-12-10 14:49:10 -08:00
Yaowu Xu e0f82c6ed6 Fix a bug
In evaluating partition split case, Wrong partition size is used in
calling partition_plane_context(). This commit change to use the
correct sub partition size. The incorrect partition size used were
causing an ASAN error in unit test.

Change-Id: Iab695b764bc51cc61580075f2ae4001421132362
2013-12-10 14:34:32 -08:00
Dmitry Kovalev 2dd20e468a Cleaning up skip context calculation.
Renames:
  vp9_get_pred_context_mbskip => vp9_get_skip_context
  vp9_get_pred_prob_mbskip    => vp9_get_skip_prob

Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
2013-12-10 14:11:26 -08:00
Dmitry Kovalev 35b7b0b549 Merge "Removing unused vp9_get_pred_flag_mbskip() function." 2013-12-10 13:58:35 -08:00
hkuang 19bbe41c71 Merge "Refactor inter_predictor function." 2013-12-10 13:34:24 -08:00
Dmitry Kovalev 48088f210d Removing unused vp9_get_pred_flag_mbskip() function.
Change-Id: Ib46a97d8ff9f2915b9fa2abba3cd18b6711fcb0c
2013-12-10 12:53:17 -08:00
Dmitry Kovalev e18eb7721e Merge "Renaming comp_pred_mode to reference_mode." 2013-12-10 10:52:34 -08:00
hkuang 6c9dcae532 Refactor inter_predictor function.
Change-Id: Ic429b2f16462e926f30efb3af4da3080026359d8
2013-12-10 10:36:44 -08:00
Guillaume Martres 0102f1d5ec avoid crash when using --best on cpus with SSE3 (but not SSE4) support
Change-Id: Ie100114a01b8b4da7248603c40676792cd06b32a
2013-12-10 18:17:10 +01:00
Dmitry Kovalev d2dad31e79 Merge "Cleaning up vp9_get_pred_context_switchable_interp() functuion." 2013-12-09 17:34:30 -08:00
hkuang d70a8c09c6 Merge "Implenment on demand border extension. In place extend the border now. Next commit will totally remove the border." 2013-12-09 17:16:31 -08:00
Dmitry Kovalev 9edd4d4db7 Cleaning up vp9_get_pred_context_switchable_interp() functuion.
Change-Id: I67a45a41312ca0efd8fe00ccd8bdc0f97675d09f
2013-12-09 17:02:38 -08:00
hkuang ff2c96be1f Implenment on demand border extension. In place extend
the border now. Next commit will totally remove the border.

Change-Id: Ic1e1ca9cc34f81c688715b3948689b47df63a151
2013-12-09 16:44:08 -08:00
Jingning Han 54040f94b9 Merge "Clean-ups in diamond_search_sad" 2013-12-09 16:12:39 -08:00
Jingning Han f92b5842bf Merge "Full range motion search for regular block sizes" 2013-12-09 16:12:35 -08:00
Yaowu Xu dad8dfe254 Merge "Further clean up of estimate_max_q." 2013-12-09 15:35:00 -08:00
Dmitry Kovalev 08c48ddc01 Renaming comp_pred_mode to reference_mode.
Change-Id: I83ffed2b1878a35ac35f07f9ee74309adc9c7b11
2013-12-09 15:13:34 -08:00
Dmitry Kovalev 347df4ce55 Merge "Renaming vp9_get_pred_context_tx_size() function." 2013-12-09 15:10:49 -08:00
Dmitry Kovalev 7293ef7ac0 Cleaning up read_inter_block_mode_info() function.
Change-Id: Ib4e215a80f00e342d857a54a4ca1b2dc82b6db1d
2013-12-09 14:45:17 -08:00
Dmitry Kovalev 2c3120274a Removing max_uv_txsize_lookup lookup table.
Adding get_uv_tx_size_impl() with tx size selection logic, rewriting
get_uv_tx_size().

Change-Id: I3ecb108059a41be227a8c89a0710bd174f508951
2013-12-09 14:03:23 -08:00
Paul Wilkins 267daddecc Further clean up of estimate_max_q.
Clean up and simplification of both estimate_max_q
variants and only call once per clip/section.

This leads to a more constrained range of Q values
across a clip / section.

Average gains across all 4 test sets:-

PSNR ~0.5%  SSIM ~0.3%

Change-Id: If77d5f7bb50939a464e117724f4da5b001c62d70
2013-12-09 17:49:46 +00:00
Dmitry Kovalev a19d694f09 Merge "Removing BLOCK_TYPES and adding PLANE_TYPES constant instead." 2013-12-07 02:20:41 -08:00
Alex Converse 0428579b3d Have check_initial_width() take subsampling as arguments directly.
This way it doesn't need to derive subsampling differently for each caller.

Change-Id: I186aa7a84d315b796dcf2fdde5468ec12b3a59e3
2013-12-06 21:43:05 -08:00
Alex Converse 1c3e04bb94 Remove some dead code
Change-Id: I0953a3b28758811f9d6a85787850e77592bd7670
2013-12-06 21:21:04 -08:00
Dmitry Kovalev cb92f4f042 Renaming vp9_get_pred_context_tx_size() function.
Change-Id: Ia6d6f4dfb1fd1ec0f8ba53796b59a802e9d7881d
2013-12-06 15:31:06 -08:00
Jim Bankoski dcb17eaefc Merge "Disable early exit based on distortion in lossless" 2013-12-06 14:46:28 -08:00
Jingning Han 44627a9677 Clean-ups in diamond_search_sad
Use the pre-fetched stride value.

Change-Id: I8d4aaedab7a83a4870be51c110da27e55ca3bc85
2013-12-06 14:25:20 -08:00
Dmitry Kovalev b6e5bb27c9 Merge "Renaming reference mode context calculation function." 2013-12-06 14:22:47 -08:00
Dmitry Kovalev af04bfa300 Merge "Replacing b_width_log2 with num_4x4_blocks_wide_lookup." 2013-12-06 14:19:59 -08:00
Yaowu Xu f8c06fb2ac Disable early exit based on distortion in lossless
In lossless coding, distortion is always 0. Early exit based on this
metric was incorrect.

This CL also changed to use best_rd instead of distortion as the metric
for easly exit as requested by Jim.

Change-Id: I8ef3e407ac03b4abc3283b273f936a68fad5c2ab
2013-12-06 13:37:55 -08:00
Jingning Han b295092b8f Full range motion search for regular block sizes
Add a full range motion search for regular block sizes. This runs
exhaustive search within the given reference area. This commit further
optimizes the search process by combining 4 points test into one
pipeline, which gives 30% speed-up as compared to run each individual
point at a time.

This full range search serves as a best possible motion search reference.
When replacing the diamond search with full range search, the speed 0
runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The
compression performance compared to speed 0 setting gains 0.585% for
derf set.

Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
2013-12-06 12:24:53 -08:00
Dmitry Kovalev 2da30a96d4 Merge "Removing duplicated C code from vp9_loopfilter_filters.c file." 2013-12-06 12:13:24 -08:00
Dmitry Kovalev 52618d28e1 Replacing b_width_log2 with num_4x4_blocks_wide_lookup.
Change-Id: I8ab9bbe2595ed1743f35223b6a6ce6d023b9a20e
2013-12-06 12:04:06 -08:00
Dmitry Kovalev 63963f51ef Renaming reference mode context calculation function.
Renames:
  vp9_get_pred_context_comp_inter_inter => vp9_get_reference_mode_context
  vp9_get_pred_prob_comp_inter_inter    => vp9_get_reference_mode_prob

Change-Id: I3bbb69481e6b0c848028667c9269f567f293d3bd
2013-12-06 11:23:01 -08:00
Dmitry Kovalev d6b159d4a6 Removing BLOCK_TYPES and adding PLANE_TYPES constant instead.
Change-Id: Ic3bb862e93aedf6a489a33ea6f7e5097d96855ee
2013-12-06 10:54:00 -08:00
Yaowu Xu 2dd730ccb3 Merge "Remove rate correction factor." 2013-12-06 10:39:51 -08:00
Dmitry Kovalev cf4dfdc8e7 Merge "Moving vp9_tree_probs_from_distribution() to encoder." 2013-12-06 10:18:30 -08:00
Dmitry Kovalev 8eac2ca840 Merge "Renaming constants." 2013-12-06 09:55:02 -08:00
Dmitry Kovalev 5be34ba80f Merge "vp9_get_pred_context_intra_inter() clean up." 2013-12-06 09:14:36 -08:00
Adrian Grange de2046275d Merge "Remove redundant calls to vp9_update_mode_info_border" 2013-12-06 08:59:47 -08:00
Jingning Han ee02f3fbed Merge "Remove redundant bsize mapping in motion search" 2013-12-06 08:57:58 -08:00
Paul Wilkins 570b6d25c0 Remove rate correction factor.
Removed an adaptive rate correction factor that was having
a negative impact on quality in many clips. This factor
was influencing the Q range available to each frame
independently of the bits allocated to each.

Average results with DISABLE_RC_LONG_TERM_MEM.

derf +0.199, -0.059.
yt +3.957, +3.798
std hd +1.577, +2.140
yt hd +4.127, +4.513

Average results without  DISABLE_RC_LONG_TERM_MEM

derf -0.628, -0.665
yt +3.432, +3.015
std hd -0.105, +0.153
yt hd +3.432, +3.015

Change-Id: I45bab6b606f49a442e7b27a6d631f3ffd843bbce
2013-12-06 16:57:16 +00:00
Dmitry Kovalev 4ac6a2552b Moving vp9_tree_probs_from_distribution() to encoder.
Writing custom coeff branch count calculation (which is much clearer) in
adapt_coef_probs() function. Removing vp9_treecoder.c file.

Change-Id: I8880fb7a39996c8bcf6cd0acf9898a8c712ba91f
2013-12-05 18:13:26 -08:00
Dmitry Kovalev d72c847fe8 Merge "Renaming PREV_COEF_CONTEXTS to COEFF_CONTEXTS." 2013-12-05 17:54:44 -08:00
Dmitry Kovalev 377fa8aff8 Renaming PREV_COEF_CONTEXTS to COEFF_CONTEXTS.
Also adding BAND_COEFF_CONTEXTS macro to simplify for loop logic.

Change-Id: I12a78a49cf1addf81e6b3fe2a3736ec2b79bd79e
2013-12-05 17:08:06 -08:00
Dmitry Kovalev 6fd71e1b09 vp9_get_pred_context_intra_inter() clean up.
Renaming:
 vp9_get_pred_context_intra_inter => vp9_get_intra_inter_context
 vp9_get_pred_prob_intra_inter    => vp9_get_intra_inter_prob

Change-Id: I2c1affea2e84f4e616137c6df82adb11c7845781
2013-12-05 17:01:03 -08:00
Deb Mukherjee 8de1d8bfe3 Merge "Further rate control cleanups" 2013-12-05 16:55:35 -08:00
Dmitry Kovalev da519166e9 Merge "Cleaning up vp9_detokenize.c file." 2013-12-05 16:45:10 -08:00
Dmitry Kovalev f7396f3394 Merge "Removing vp9_default_coef_probs.h file." 2013-12-05 16:44:26 -08:00
Deb Mukherjee 52d273674b Further rate control cleanups
Includes various cleanups.
Streamlines the interfaces so that all rate control state
updates happen in the vp9_rc_postencode_update() function.
This will hopefully make it easier to support multiple
rate control schemes.
Removes some unnecessary code, which in rare cases can casue
a difference in the constrained quality mode output, but
other than that there is no bitstream change yet.

Change-Id: I3198cc37249932feea1e3691c0b2650e7b0c22fc
2013-12-05 16:31:04 -08:00
Dmitry Kovalev 0d4b8d7e43 Renaming constants.
NUM_YV12_BUFFERS        => FRAME_BUFFERS
ALLOWED_REFS_PER_FRAME  => REFS_PER_FRAME
NUM_REF_FRAMES_LOG2     => REF_FRAMES_LOG2
NUM_REF_FRAMES          => REF_FRAMES
NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
NUM_FRAME_CONTEXTS      => FRAME_CONTEXTS

Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
2013-12-05 16:23:09 -08:00
Dmitry Kovalev 2b95a05bf6 Removing duplicated C code from vp9_loopfilter_filters.c file.
Change-Id: I299b621fca1c8ff5d296afde9698cdcccfecaf3f
2013-12-05 15:49:57 -08:00
Adrian Grange 93d8a3fd29 Remove redundant calls to vp9_update_mode_info_border
Removed calls to vp9_update_mode_info_border since
they immediately followed code that initialized the
entire buffer to 0.

Change-Id: Ife06794daa20439a0b607a83a87f88df59afac40
2013-12-05 15:02:32 -08:00
Dmitry Kovalev 3eb0170ea6 Using lookup to determine tx_size in encode_superblock().
Change-Id: I68d6217db6f67da15380cd59ec5eda0c44da7d34
2013-12-05 12:25:03 -08:00
Dmitry Kovalev 6df9ec52a0 Merge "Cleaning up vp9_get_pred_context_tx_size() function." 2013-12-05 09:59:00 -08:00
Yaowu Xu bdf3f07677 Merge "Disable --tune=ssim for vp9" 2013-12-05 09:15:13 -08:00
Tero Rintaluoma 047b0b01bb Fix show existing frame
- Disable mode info update in case where current frame is coded
  as "show existing frame".
- Should fix issue 676.

Change-Id: Ibee681850eb307f982da6528d3e31cb94f881c08
2013-12-05 12:10:10 +02:00
Frank Galligan 7ecf3bc91c Fix ref count decrement code.
Buffer 0 would never be decremented, so it could only be used
once.

Change-Id: I605d99fa2a513eadae6a0e230161729880653282
2013-12-04 22:21:00 -08:00
Dmitry Kovalev 5eeffc9fc5 Cleaning up vp9_get_pred_context_tx_size() function.
Change-Id: Ia6ef876e3d1e66b2182a9c0bce3fd758691cd381
2013-12-04 21:35:30 -08:00
Dmitry Kovalev a1123538a5 Moving vp9_token from common to encoder.
Change-Id: I40a070c353663e82c59e174d7c92eb84f72ed808
2013-12-04 19:36:58 -08:00
Frank Galligan 8363349b84 Merge "Fix the initial references to frame buffers." 2013-12-04 19:26:40 -08:00
Jingning Han 45aa6f15b0 Remove redundant bsize mapping in motion search
Both single frame and compound inter motion search run with luma
component only. Hence removing the block size mapping therein.

Change-Id: I217488e702432ae9fa0e95bf6f516ebb36b5c79b
2013-12-04 17:25:06 -08:00
Dmitry Kovalev 934e10d0f1 Cleaning up vp9_detokenize.c file.
Using consistent names (block_idx => block, dqcoeff_ptr => dqcoeff,
pt => ctx), inlining get_tx_eob() call.

Change-Id: I05208e57df81bbb8f25b8274684a48192e9de464
2013-12-04 17:24:18 -08:00
Dmitry Kovalev 4afd141a05 Removing vp9_default_coef_probs.h file.
Moving all probability tables from removed file to vp9_entropy.c.

Change-Id: I12846f1da778c3016d96b82e53384d4634883430
2013-12-04 17:04:35 -08:00
Dmitry Kovalev cf8e3d2c5c Merge "Cleaning up vp9_dec_build_inter_predictors_sb function." 2013-12-04 16:57:54 -08:00
Frank Galligan 9ed616a56c Fix the initial references to frame buffers.
The old code would start in a mixed state, where all the reference
frames were pointing to frame buffer 0, but the reference counts
were 0. This is why we needed special code for the first frame.

Change-Id: I734961012917654ff8c0c8b317aac00ab75ded1a
2013-12-04 16:53:18 -08:00
Dmitry Kovalev 3712b58c2f Merge "Cleaning up vp9_entropy.h file." 2013-12-04 16:46:41 -08:00
Dmitry Kovalev 97b36b26e0 Merge "Removing old code." 2013-12-04 16:45:11 -08:00
Dmitry Kovalev c6ca5c5ad9 Compact formatting default_coef_probs_{4x4, 8x8, 16x16, 32x32}.
Change-Id: If40b930431766d5179b9769509b5e4ca1628e9cc
2013-12-04 15:45:28 -08:00
Yaowu Xu d84c098417 Disable --tune=ssim for vp9
The feature is not yet supported.

Change-Id: If46382302d2077b20670391b4a03017045a104f5
2013-12-04 12:39:15 -08:00
Dmitry Kovalev da2da79012 Merge "Formatting vp9_pareto8_full array." 2013-12-04 12:22:50 -08:00
Dmitry Kovalev beb35aba19 Cleaning up vp9_dec_build_inter_predictors_sb function.
Using get_plane_block_size() instead of manipulation with subsampling
values, calculating all required values only once without redundant calls
to b_width_log2().

Change-Id: I00303f2a0926f9c4cb17f34591adda60615f8919
2013-12-04 12:11:01 -08:00
Yunqing Wang f6582d6928 Revert "Simplify mask checking in loop filters"
Jingning saw bitstream change with this patch. It could be true
that (mask_16x16_0 & 1) is 1, but (mask_16x16_1 & 1) is 0 in some
edge cases.

This reverts commit 8f05e70340.

Change-Id: I0a529435ce816a1e14653eb510d5090de276070a
2013-12-04 11:31:19 -08:00
Dmitry Kovalev 1470789927 Merge "Moving eob array to the encoder." 2013-12-04 10:58:02 -08:00
Adrian Grange 584c72992a Merge "Change default behavior to assume sampled chroma" 2013-12-04 09:35:14 -08:00
Yunqing Wang 920a074e89 Merge "Improve idct16x16: _256_add_sse2(x1.107)&_10_add_sse2(x1.012)" 2013-12-04 08:50:51 -08:00
Dmitry Kovalev 30a5a07a71 Removing old code.
Change-Id: I7ccbe13e1accd292a3e0e98522416f9c4b4bc82b
2013-12-03 19:44:48 -08:00
Dmitry Kovalev ff6d6a9f07 Formatting vp9_pareto8_full array.
Change-Id: Ic7f47a8d233daf5e61e82092865837ea4eda4095
2013-12-03 18:49:19 -08:00
Dmitry Kovalev f00d157c12 Moving eob array to the encoder.
In the decoder we don't need to save eobs, we can pass eob as an argument.
That's why removing eob arrays from VP9Decompressor and TileWorkerData,
and moving eob pointer from macroblockd_plane to macroblock_plane.

Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a
2013-12-03 17:59:32 -08:00
Dmitry Kovalev 8e89e2f2e0 Cleaning up vp9_entropy.h file.
Renaming constants for consistency:
  DCT_VAL_CATEGORY1 => CATEGORY1_TOKEN
  DCT_VAL_CATEGORY2 => CATEGORY2_TOKEN
  DCT_VAL_CATEGORY3 => CATEGORY3_TOKEN
  DCT_VAL_CATEGORY4 => CATEGORY4_TOKEN
  DCT_VAL_CATEGORY5 => CATEGORY5_TOKEN
  DCT_VAL_CATEGORY6 => CATEGORY6_TOKEN
  DCT_EOB_TOKEN     => EOB_TOKEN
  DCT_EOB_MODEL_TOKEN => EOB_MODEL_TOKEN
  MAX_ENTROPY_TOKENS => ENTROPY_TOKENS

Moving constants:
  INTER_MODE_CONTEXTS from vp9_entropy.h to vp9_blockd.h.
  EOSB_TOKEN from vp9_entropy.h to vp9_tokenize.h

Change-Id: I5fcbf081318e1d365792b6d290a930c6cb0f3fc2
2013-12-03 17:23:03 -08:00
Jingning Han 3c34619125 Fix initialization order for the encoder
This commit makes the coefficient tree initialized prior to token
initialization, where the coefficient costs are filled out according
to the probabilities associated with coefficient value categories.

Change-Id: If4e89c3923058376f8382c683fe4a225a4a38af3
2013-12-03 15:29:24 -08:00
Dmitry Kovalev fd16baae25 Merge "Making names consistent with REFERENCE_MODE enum name." 2013-12-03 12:48:34 -08:00
Dmitry Kovalev 4585b9dbac Merge "Removing token_to_counttoken array." 2013-12-03 12:29:56 -08:00
Dmitry Kovalev ac830b3970 Merge "Using local variable for token_cache." 2013-12-03 12:29:50 -08:00
Dmitry Kovalev 09577b8c8d Merge "Removing dummy assignments." 2013-12-03 10:59:34 -08:00
Alex Converse f63c75de84 Merge "Remove plane_block_idx." 2013-12-03 10:51:13 -08:00
Jingning Han b88b49a7bc Merge "Fix intra prediction ref selection in skip_encode" 2013-12-03 09:47:41 -08:00
Paul Wilkins 8a4310b160 Merge "Fix use_uv_intra_estimate in rd loop" 2013-12-03 04:30:50 -08:00
Jingning Han f01ad926d0 Fix intra prediction ref selection in skip_encode
This commit fixes the intra prediction reference source selection
in the settings of skip_encode. Use original boundary pixels as
prediction reference, when the inverse transform and reconstruction
are skipped in the per block size rate-distortion optimization loop.

Change-Id: I36081aa30aa46e203e0e6f4e8a420fd08269469a
2013-12-02 18:48:51 -08:00
Dmitry Kovalev 54b5deff77 Removing token_to_counttoken array.
Change-Id: I02050bcca4c9fd68a00abdea5aba0c3f8993d9a9
2013-12-02 18:41:53 -08:00
Alex Converse 2360a5f093 Remove plane_block_idx.
Its last remaining caller can be passed its results directly without any
additional work. Also, it's not non-4:2:0 safe.

Change-Id: Ia5089ba5f7f66c7617270483c619c9271aefd868
2013-12-02 18:33:50 -08:00
Abo Talib Mahfoodh e4419ab691 Improve idct16x16: _256_add_sse2(x1.107)&_10_add_sse2(x1.012)
The performance gain of idct16x16_10_add_sse2 function is not
noticeable. However since both functions use the IDCT16_1D,
idct16x16_10_add_sse2 should be modified as well.
Tested with: park_joy_420_720p50.y4m

Change-Id: I02b957e36fcf997c677d15baf496533895271bff
2013-12-02 21:08:56 -05:00
Jingning Han 9f81a50c85 Fix use_uv_intra_estimate in rd loop
This commit fixes the use of uv_intra_estimate by properly restoring
the mode_info struct required by rd_pick_intra_sbuv_mode.

Change-Id: I6a156d79533c4e2e60dfd3b8c5bb0a42a8eca280
2013-12-02 17:30:41 -08:00
Dmitry Kovalev 5ab920d2ae Using local variable for token_cache.
The difference with the old code is that originally the whole token_cache
was initialized with zeros at the beginning of decode_coefs() function.
Now we set several zero values explicitly with "token_cache[scan[c]] = 0".

Change-Id: I88cc5031f01d13012d1a4491739c36cb44f9401e
2013-12-02 15:44:26 -08:00
Dmitry Kovalev e7922a5b70 Merge "Cleaning up decode_coefs() function." 2013-12-02 15:31:10 -08:00
Yunqing Wang 8f182a1cac Merge "improve vp9_idct32x32_34(x1.472)&1024(x1.032)_add_sse2" 2013-12-02 15:10:05 -08:00
Alex Converse 5cf74bf10c Merge "Disable partitioning in the dominant subsampling direction." 2013-12-02 15:08:22 -08:00
Dmitry Kovalev 9144111296 Cleaning up decode_coefs() function.
Removing goto and using while loop instead, renaming seg_eob to max_eob,
moving eob token counter increment.

Change-Id: Idcc4b3a45e4f313596a71776aef56691a6647e5f
2013-12-02 14:36:06 -08:00
Alex Converse 962fc2e1e7 Disable partitioning in the dominant subsampling direction.
E.g. disable vertical partioning for 4:2:2. Until we come up with something
better to do with the chroma block size, this prevents an assert error.

Change-Id: I9394fb3f14ec1343abc3ad4769de208e6278f285
2013-12-02 13:38:11 -08:00
Yunqing Wang 37e68aba55 Merge "Simplify mask checking in loop filters" 2013-12-02 12:06:26 -08:00
Dmitry Kovalev 862c22cf7d Merge "Moving token-encoding related stuff from common to encoder." 2013-12-02 10:32:04 -08:00
Dmitry Kovalev 526a774adb Merge "Moving reaster_block_offset{,_int16} from vp9_blockd.h to vp9_rdopt.h." 2013-12-02 10:31:31 -08:00
Yaowu Xu e237b7dea3 Merge "Simplify super_block_yrd()" 2013-12-02 09:39:42 -08:00
Yaowu Xu 56d9a4fcd5 Merge "Merge tx selection into RD calculation" 2013-12-02 09:39:10 -08:00
Deb Mukherjee e924057d80 Fixing inadvertent change
Fixes an inadvertant change made in a previous patch while doing
some experiments.

Change-Id: I9961f2157c803676491a3d6daf056ff8a37367b3
2013-11-27 14:50:34 -08:00
Yunqing Wang 8f05e70340 Simplify mask checking in loop filters
Considering a horizontal edge, if mask_16x16 is 1 for an even-
indexed 8x8 block, then mask_16x16 is 1 for next 8x8 block in
same row. Similiar to a verticle edge, if mask_16x16 is 1 for
an even-rowed 8x8 block, then mask_16x16 is 1 for the 8x8 block
right below it in next raw. Based on that, the mask_16x16 checking
can be simplified to save cycles. The corresponding 8-pixel
vp9_mb_lpf_horizontal_edge code can also be removed.

Change-Id: Ic3fe7a5674322239208cbe2731dc3216ce2084f3
2013-11-27 14:10:57 -08:00
Dmitry Kovalev d83d61d942 Moving reaster_block_offset{,_int16} from vp9_blockd.h to vp9_rdopt.h.
Change-Id: I5a5888d4639cc6b7eb266be47581dd15ba08c91e
2013-11-27 12:57:21 -08:00
Deb Mukherjee a622ed554f Merge "Continued rate control clean-ups" 2013-11-27 12:04:38 -08:00
Deb Mukherjee d17ac4feb2 Continued rate control clean-ups
Moves all post encode rate control updates to a separate function
plus other cleanups.

Change-Id: I70e8eccf666c88d8b649b969997fd84d27e4baaa
2013-11-27 11:34:48 -08:00
Dmitry Kovalev f9da823216 Moving token-encoding related stuff from common to encoder.
Change-Id: I0e59d320407b3bed0ba3622a7b29975f6fad7ebf
2013-11-27 11:27:57 -08:00
Dmitry Kovalev e2f1d02eb3 Merge "Moving mode encodings from common to encoder + cleanup." 2013-11-27 11:00:54 -08:00
Yaowu Xu e9c19617bf Merge "vp9_short_fdct32x32_rd vp9_short_fdct32x32 optimized for AVX2" 2013-11-27 10:27:32 -08:00
Dmitry Kovalev d3a2e55af4 Removing qcoeff buffers from the decoder.
We only need qcoeff buffers in the encoder. Reducing TileWorkerData struct
and VP9Decompressor struct sizes by 24K.

Change-Id: Id148868461f7ffa3d3dd634b371503ae9c57e207
2013-11-26 18:52:10 -08:00
Yaowu Xu 971112f965 Simplify super_block_yrd()
Change-Id: Iae16644faeed920e69cd5d1db71e2e1e4bda241c
2013-11-26 17:05:56 -08:00
Dmitry Kovalev c5bdc9dfd2 Making names consistent with REFERENCE_MODE enum name.
Change-Id: I17268af3e0cbf7e5788c3154466e404947c944b3
2013-11-26 16:46:13 -08:00
Dmitry Kovalev fc3c3303f1 Removing dummy assignments.
Change-Id: I10d1a4bcac751a982d9dd135f019e3a4d92f8522
2013-11-26 15:35:11 -08:00
Dmitry Kovalev f4bf712fbb Moving mode encodings from common to encoder + cleanup.
Change-Id: I248ccb1532e2cd95314d0b95108f2c2e71cf084f
2013-11-26 14:53:17 -08:00
Yaowu Xu b60293e1ce Merge "Amended some comments for clarity" 2013-11-26 14:32:02 -08:00
Dmitry Kovalev 4622cd14c2 Merge "Deleting vp9_treereader.h file." 2013-11-26 14:13:30 -08:00
Dmitry Kovalev d7efe068d2 Deleting vp9_treereader.h file.
Renaming treed_read() to consistent vp9_read_tree() and moving it from
deleted vp9_treereader.h to vp9_dboolhuff.h file.

Change-Id: Iedd8655acbe25e4fcf62b79e5a13bdea69b6b004
2013-11-26 12:38:58 -08:00
Yaowu Xu 08d6fa6de4 Merge tx selection into RD calculation
Change-Id: I406021e34b31b899202a99b39d3da4fa06ebee69
2013-11-26 12:37:25 -08:00
Yaowu Xu 5e4f4196a9 Merge "Fix unit test failures" 2013-11-26 11:22:30 -08:00
Frank Galligan b4874e2c82 Fix 16 wide neon horz loopfilter.
Multiply by 3 was on 8bit vectors when it should have been on
16bit vectors.

Change-Id: I248c1429b3134dfd171dfab0ebb109fd2437e1fc
2013-11-26 10:02:40 -08:00