2054 Commits

Author SHA1 Message Date
Jingning Han
f60a3910c4 Move token_cache from cost_coeffs to MACROBLOCK
This commit moves token_cache buffer into macroblock struct, instead
of defining as a local variable in cost_coeffs. This avoids repeatedly
re-allocating memory space in the rate-distortion optimization loop.

The runtime at speed 0 reduces:
bus 2000kbps, 161692ms to 159951ms
football 600kbps, 229505ms to 225821ms

Change-Id: If7da6b0b6d8c5138a16271a33c4548fba33d8840
2013-10-14 10:45:56 -07:00
Dmitry Kovalev
ac468dde46 Consistent names for inverse hybrid transforms (2 of 2).
Renames:
  vp9_iht_add       -> vp9_iht4x4_add
  vp9_iht_add_8x8   -> vp9_iht8x8_add
  vp9_iht_add_16x16 -> vp9_iht16x16_add

Change-Id: I8f1a2913e02d90d41f174f27e4ee2fad0dbd4a21
2013-10-11 15:49:05 -07:00
Dmitry Kovalev
107897cf05 Merge "Consistent names for inverse hybrid transforms (1 of 2)." 2013-10-11 15:33:00 -07:00
Dmitry Kovalev
e765aade0b Merge "Replacing {VP9_COEF, MODE}_UPDATE_PROB with DIFF_UPDATE_PROB." 2013-10-11 14:15:46 -07:00
Deb Mukherjee
c222b96bfd Merge "Change in rddiv parameter to make it a power of 2" 2013-10-11 13:53:59 -07:00
Dmitry Kovalev
7ef573914d Consistent names for inverse hybrid transforms (1 of 2).
Renames:
  vp9_short_iht4x4_add     -> vp9_iht4x4_16_add
  vp9_short_iht8x8_add     -> vp9_iht8x8_64_add
  vp9_short_iht16x16_add_c -> vp9_iht16x16_256_add

Change-Id: Ibca7a188fd062b196787ac5efc1ea545e7f166c0
2013-10-11 13:31:32 -07:00
Dmitry Kovalev
1ab7eb1406 Merge "Adding const to the input argument of all 1D transforms." 2013-10-11 13:20:57 -07:00
Yaowu Xu
4c20bff9d2 Merge "Masking intra mode choice adaptively" 2013-10-11 11:25:52 -07:00
Dmitry Kovalev
44195fda71 Adding const to the input argument of all 1D transforms.
Also adding static to iadst16_1d and fadst16 functions.

Change-Id: I13c7df3b776f0f8efc6e80099bdb0a2f6d29edaf
2013-10-11 11:19:58 -07:00
Dmitry Kovalev
4a0f9478ef Replacing {VP9_COEF, MODE}_UPDATE_PROB with DIFF_UPDATE_PROB.
Values of MODE_UPDATE_PROB and VP9_COEF_UPDATE_PROB are equal, so replacing
them with one constant. Inlining appropriate arguments for functions:
  vp9_cond_prob_diff_update (encoder)
  vp9_diff_update_prob (decoder)

Change-Id: I1255a1cb477743b799b3bfbbcd8de6b32b067338
2013-10-11 10:47:22 -07:00
Dmitry Kovalev
6e21ca7635 Merge "Removing vp9_tree_p typedef." 2013-10-11 10:44:04 -07:00
Deb Mukherjee
d9655e42b8 Change in rddiv parameter to make it a power of 2
Converts the constant rddiv parameter to 128 (from 100) and
implements RDCOST with bit-shift rather than multiplication.
Other parameters are also adjusted to roughly keep the same
balance between Rate and Distortion.

There is a slight speed-up of about 0.5-1% (at speed 0) as
testted on football_cif.

There is a slight change in performance due to small change
in the parameters.
derfraw300: +0.033%
stdhdraw250; +0.102%

Change-Id: I70ac69f58fa71c83108f68fe41796cd19d1fc760
2013-10-11 10:43:02 -07:00
Yaowu Xu
8b175679be Masking intra mode choice adaptively
The commit changes to mask available intra prediction modes for test
based on prediction block size.

With this patch, encoding time of CpuUsed 2 reduces from 10% to 20% for
HD clips with a compression drop of 0.2%

Change-Id: I65f320f1237c0f5ae3a355bf7caf447f55625455
2013-10-11 10:29:53 -07:00
Jingning Han
54e702b5d7 Merge "Restore mode skip feature in sub8x8 rd loop" 2013-10-11 09:21:06 -07:00
Paul Wilkins
704028d435 Experimental rate control change.
When the codec in VBR (or cq) mode hits its max q limits and is
struggling to hit a target bandwidth, the bit target per frame collapses.

In the first instance normal frames cap out at the maximum allowed
Q and then the ARF and GFs do the same. This latter behavior is not
generally desirable as GFs and ARFs are only effective from a quality
and data rate perspective if they have at lease some level of -Q delta
compared to the surrounding frames.

In this patch I define a separate max Q for GFs and ARFs that is
derived from but somewhat lower than that defined for normal frames.
In effect there is a minimum Q delta that will always be available for
GFs and ARFs regardless of the target rate and MAXQ setting.

This may of course mean that the absolute lowest rate obtainable for
a given clip is somewhat higher.

Change-Id: I268868b28401900d0cd87e51e609cd3b784ab54a
2013-10-11 13:40:54 +01:00
Paul Wilkins
8b989f5b23 Disable recode loop.
For VBR coding disable the recode loop for speeds > 0.

Results pending.

Change-Id: I2cd9a87c3fcbe39c05b954798d0671a4ca62c37f
2013-10-11 13:38:52 +01:00
Dmitry Kovalev
98400c1bc4 Removing vp9_tree_p typedef.
It is used only two times and it is more clear to use real type instead
of typedef.

Change-Id: Idc25c16504c3da4d040e0cdb33a2987631bb6a5b
2013-10-10 17:16:20 -07:00
Dmitry Kovalev
2be3b84aed Merge "Giving consistent names to IDCT 32x32 functions." 2013-10-10 15:31:25 -07:00
Dmitry Kovalev
3309b040c8 Merge "Consistent names for FDCT functions." 2013-10-10 15:29:29 -07:00
Adrian Grange
61c607fd79 Merge "Fix typo in comment message" 2013-10-10 14:05:51 -07:00
Yaowu Xu
e2d6e37a54 Merge "change to avoid out-of-range computation" 2013-10-10 13:38:16 -07:00
Jingning Han
09aca3089f Merge "Re-design rate-distortion cost tracking buffers" 2013-10-10 12:57:31 -07:00
Guillaume Martres
b364176c08 Prevent accidental changes to the previous frame mode_infos
This is needed to fix mbgraph but shouldn't affect anything else

Change-Id: I2f515052f62e348cd3794b7ff0c139802225ea95
2013-10-10 12:18:12 -07:00
Jingning Han
f0772dc5b8 Fix typo in comment message
Change-Id: Ifef756a3a91423bb9f5411f06fa092027be21ecf
2013-10-10 12:17:10 -07:00
Dmitry Kovalev
fc82dbb434 Consistent names for FDCT functions.
Renames:
  fdct4_1d   -> fdct4
  fadst4_1d  -> fadst4
  fdct8_1d   -> fdct8
  fadst8_1d  -> fadst8
  fdct16_1d  -> fdct16
  fadst16_1d -> fadst16

"_1d" suffix is redundant, so removing it. The same will happen with idct
in the next change sets.

Change-Id: Ibf421cd2f569146c6079269df7a31819c098265e
2013-10-10 11:53:55 -07:00
Dmitry Kovalev
1e766b50e2 Giving consistent names to IDCT 32x32 functions.
Renames:
  vp9_short_idct32x32_add   -> vp9_idct32x32_1024_add
  vp9_short_idct32x32_1_add -> vp9_idct32x32_1_add
  vp9_idct_add_32x32        -> vp9_idct32x32_add

Change-Id: Id85306f5814bac6c47463a6b5901a93082510666
2013-10-10 11:27:39 -07:00
Jingning Han
fc19243ced Re-design rate-distortion cost tracking buffers
This commit re-designs the per transformed block rate-distortion
costs tracking buffers. It removes redundant buffer usage, makes
the needed context memory allocation per VP9_COMP instance and
reuses the same buffer sets inside the rate-distortion optimization
search loop, thereby avoiding repeatedly requiring memory space.

It reduces speed 0 runtime:

bus at 2000 kbps from 166763ms to 158967ms,
football at 600 kbps from 246614ms to 234257ms.

Both about 5% speed-up. Local tests suggest about 2% to 5% speed-up
for speed 1 and 2 settings. This does not change compression
performance.

Change-Id: I363514c5276b5cf9a38c7251088ffc6ab7f9a4c3
2013-10-10 11:03:44 -07:00
Yaowu Xu
b47cef056e change to avoid out-of-range computation
Change-Id: Id5e31833a0ef40de9f64c2f5674af7083233bf14
2013-10-10 11:01:50 -07:00
Dmitry Kovalev
1e8fc24af8 Merge "Removing inv_txm4x4_1_add and inv_txm4x4_add function pointers." 2013-10-10 10:49:27 -07:00
Dmitry Kovalev
419c3f6fba Merge "Giving consistent names to IDCT 16x16 functions." 2013-10-10 10:43:14 -07:00
Deb Mukherjee
2b055dfe3f Merge "Adjustment to mv cost parameters" 2013-10-10 09:08:58 -07:00
Jingning Han
be6ae20510 Merge "Fix intra dist model of skip_encode feature" 2013-10-10 09:00:20 -07:00
Jingning Han
4793324c16 Merge "Allow sub8x8 intra modes test for alt frame coding" 2013-10-10 09:00:08 -07:00
Paul Wilkins
c317fbd6cf Merge "Disable MODE_TEST_HIT_STATS" 2013-10-10 05:52:06 -07:00
Deb Mukherjee
e4b0fce41c Adjustment to mv cost parameters
Increases these parameters.
There is a small efficiency gain.

Change-Id: Ie5f0ddb39c907d335e0dafa5eb112365a81f4542
derfraw300: +0.091%
stdhdraw250: +0.238%
2013-10-09 23:14:25 -07:00
Jingning Han
80f215198f Merge "Simplifying and inlining k_cvtlo_epi16 and k_cvthi_epi16" 2013-10-09 16:08:42 -07:00
Jingning Han
013db649fa Fix intra dist model of skip_encode feature
The intra mode distortion adjustment for skip_encode feature was
broken in the refactoring cc91851. This commit fixes it and tunes
the distortion models used therein.

Change-Id: I0d676e82f8e855536a90cf9b3e3fdefafcd886c6
2013-10-09 16:05:50 -07:00
Deb Mukherjee
d6aae4d456 Merge "Clean-ups in rdopt.c" 2013-10-09 12:10:20 -07:00
Deb Mukherjee
eb8b1cd764 Clean-ups in rdopt.c
Some minor cleanups in preparation for experimentation with
some encode parameters and thresholds

Change-Id: I449d66da97eae0a7acdf4aae374e2f9111342056
2013-10-09 11:32:03 -07:00
Jingning Han
03fe08ca30 Deprecate the use of PARTITION_INFO from encoder
Use b_mode_info to store the inter prediction mode of sub8x8 block,
in replacement of the use of partition_info. Remove redundant buffer
update for partition_info. For bus_cif at 2000 kbps, this seem to make
speed 0 about 1% faster.

Change-Id: Id1b3be45e75a24fb4b42335ac480c23e440978f6
2013-10-09 09:23:52 -07:00
Dmitry Kovalev
c983c966cb Removing inv_txm4x4_1_add and inv_txm4x4_add function pointers.
We already have itxm_add member in MACROBLOCKD structure. Both
inv_txm4x4_1_add and inv_txm4x4_add are just its special cases for
different eob values. But eob logic is already implemented in
vp9_iwht4x4_add and vp9_idct4x4_add (that's why also removing
inverse_transform_b_4x4_add).

Change-Id: I80bec9b6f7d40c5e5033c613faca5c819c3e6326
2013-10-08 11:27:56 -07:00
Dmitry Kovalev
8d3ef287a2 Merge "Removing redundant vp9_pt_energy_class declarations." 2013-10-08 10:54:48 -07:00
Jim Bankoski
ee6b7c1b6c Merge "easy to fix cpplint issue in rdopt.c" 2013-10-08 10:28:30 -07:00
Yaowu Xu
e29137df05 Change to allow less rectangular partion check
For CpuUsed 1 & 2, this commit allow to skip retangular partition check
when NONE is better than SPLIT. It also changed to allow such logic
on alt ref frame coding rather than use square partition all them. The
change has gain compressio about .3% on yt and ythd for both 1&2, It
helped .6% compression on cif and stdhd for both CpuUsed 1&2.

Change-Id: I814b653baf89f59acd20e042629a12938a1bd4e5
2013-10-08 08:12:56 -07:00
Deb Mukherjee
9390862702 Merge "Rate control parameter adjustment" 2013-10-07 19:16:53 -07:00
Jim Bankoski
08feefbe7b easy to fix cpplint issue in rdopt.c
Change-Id: Id093816146de0d100f0c6ae2542aaa427dbab2d8
2013-10-07 17:03:29 -07:00
Jim Bankoski
9d4c6fab44 cpplint issue missed in first pass for vp9_bitstream.c
Change-Id: Ia725748acbc2a3f825f0d208f26522a0412301fa
2013-10-07 15:54:20 -07:00
Jim Bankoski
9603989c72 Merge "cpplint vp9_variance_sse2.c" 2013-10-07 15:44:50 -07:00
Deb Mukherjee
f43c3199bd Rate control parameter adjustment
Adjusts the bits per mb parameter about 10% smaller.

Results at speed 0:
fullderfraw: +0.255%
fullstdhdraw: +0.262%
stdhdraw250: +0.291%

Change-Id: I2b7317ac3f61737bc77eb5470aad870cade83fa5
2013-10-07 15:08:40 -07:00
Jim Bankoski
2b491c19b8 Merge "cpplint errors in vp9_onyx_if.h" 2013-10-07 14:47:21 -07:00