Commit Graph

3432 Commits

Author SHA1 Message Date
James Zern
820201caa8 vp9_thread: add vp9_worker_execute()
cherry-picked from:
commit 988b70844e03efcfcc075a9bc25d846670494f36
Author: Pascal Massimino <pascal.massimino@gmail.com>
Date:   Fri Aug 2 11:15:16 2013 -0700

    add WebPWorkerExecute() for convenient bypass

    This is mainly for re-using the worker structs without using the
    thread.

    Change-Id: I8e1be29e53874ef425b15c192fb68036b4c0a359

Original source:
 http://git.chromium.org/webm/libwebp.git
 100644 blob c0d318aee628fdf9ba4876451a28aa978f1066b8 src/utils/thread.c
 100644 blob c2b92c9fe353f8e514f78922f3d237204a9cbc66 src/utils/thread.h

Change-Id: I13fe92b1e94062bb99fdeeb7cb0b4b0575d27793
2013-10-17 16:44:22 +02:00
Dmitry Kovalev
01993f7d4a Removing last_kf_gf_q member from VP9Common structure.
It looks like we don't actually use this value.

Change-Id: If21d52b597337e7755f7ea817824fc2b1e477a14
2013-10-16 18:01:48 -07:00
Dmitry Kovalev
1350f885f6 Using TREE_SIZE macro for vp9_segment_tree.
Change-Id: I2965453135643d8f061b9fa9406fdca2db9c961e
2013-10-16 17:35:06 -07:00
Guillaume Martres
7fd2561d64 Merge changes I6226456d,I97925178,I766c4b74
* changes:
  Use a separate MODE_INFO stream for each tile column
  Get rid of "this_mi", use "mi_8x8[0]" everywhere instead
  Make the static_segmentation feature work again
2013-10-16 17:05:39 -07:00
Guillaume Martres
5b984b36ca Use a separate MODE_INFO stream for each tile column
This should make parallel tiles decoding easier to implement.

Change-Id: I6226456dd11f275fa991e4a7a930549da6675915
2013-10-16 16:24:48 -07:00
Guillaume Martres
acf0d56f0b Get rid of "this_mi", use "mi_8x8[0]" everywhere instead
The only case where they were intentionally pointing to different
structures was in mbgraph, and this didn't have the expected behavior
because both of these pointers are used interchangeably through the code

Change-Id: I979251782f90885fe962305bcc845bc05907f80c
2013-10-16 16:24:03 -07:00
Guillaume Martres
9a03154f46 Make the static_segmentation feature work again
Change-Id: I766c4b74db526efa4ff6dd2d95ef3e0beb45b6e5
2013-10-16 16:15:27 -07:00
Dmitry Kovalev
6c891d4303 Merge "Adding get_band_translate() function." 2013-10-16 16:15:18 -07:00
Guillaume Martres
42bcb4a7ad Merge "Prevent accidental changes to the previous frame mode_infos" 2013-10-16 16:07:05 -07:00
Yaowu Xu
f5377cd74f Merge "change to use vp9_idct_32x32_add" 2013-10-16 15:53:37 -07:00
Dmitry Kovalev
9deb614a57 Adding get_band_translate() function.
Moving code that gets band_translate array from get_scan_and_band()
function to get_band_translate() function. Renaming get_scan_and_band() to
get_scan().

Change-Id: I43047c205a1ca2a6e24be44db39dc04b7a385008
2013-10-16 15:11:42 -07:00
Dmitry Kovalev
ab829274b1 Inlining and removing fwd_txm16x16 and fwd_txm8x8 pointers.
Change-Id: I3528ba1c3fee761918509f9d9dc2d842c69f5a44
2013-10-16 15:00:48 -07:00
Dmitry Kovalev
ba71191ce1 Merge "Cleanup of decode_coefs() function." 2013-10-16 14:47:17 -07:00
Yaowu Xu
aa60db19d2 change to use vp9_idct_32x32_add
instead of vp9_idct32x32_1024_add by making use the eob positions

Change-Id: Iafcad20f0c75d8e00536c6a20dda76fe40a973fb
2013-10-16 14:39:14 -07:00
Dmitry Kovalev
501a8c6b91 Merge "Removing print_prob_tree function and vp9_coeff_probs typedef." 2013-10-16 13:13:25 -07:00
Dmitry Kovalev
65583b14e0 Merge "Moving FILTER_BITS constant from vp9_convolve.h to vp9_filter.h." 2013-10-16 13:13:14 -07:00
Dmitry Kovalev
9e66515886 Merge "Using constants instead of plain numbers." 2013-10-16 13:13:04 -07:00
Marco Paniconi
e078c3d854 Initial 1-pass.
Change-Id: I58c5436f5c95f6012fb2891cd2a02f76e4870b6a
2013-10-16 12:04:29 -07:00
Guillaume Martres
e55f60240a Implement variance-based adaptive quantization
This should be similar to what x264 does with --aq-mode 1.
It works well with clips like parkjoy and touhou
(http://x264.nl/developers/Dark_Shikari/LosslessTouhou.mkv).
At low bitrates, the segmentation signaling overhead may negate the
benefits of this feature.

(PGW) Default changed to feature OFF to allow provisional merge.
Change-Id: I938abf9bb487e1d4ad3b0264ea03d9826275c70b
2013-10-16 11:55:13 +01:00
Adrian Grange
12b2c712ca Merge "Updated encoder to handle intra-only frames" 2013-10-15 17:19:28 -07:00
Johann
e404db44ff Merge "Remove Windows-style newlines using dos2unix" 2013-10-15 17:05:32 -07:00
Jingning Han
9b05f23e05 Merge "Make vp9_zero use cases of consistent format" 2013-10-15 16:49:05 -07:00
Alexander Voronov
d6a59fb12c Updated encoder to handle intra-only frames
Updated the encoder to handle frames that are coded
intra-only. Intra-only frames must be non-showable,
that is, the "show frame" flag must be set to 0 in
the frame header.

Tested by forcing the ARF frames to be coded intra-
only.

Note: The rate control code will need to be modified
to account for intra-only frames better than they
are currently handled.

Change-Id: I6a9dd5337deddcecc599d3a44a7431909ed21079
2013-10-15 16:44:02 -07:00
Jingning Han
355db16734 Merge "Remove unused variable vp9_64x64_zeros" 2013-10-15 16:24:34 -07:00
Jingning Han
bf187d1b2d Merge "Fix a few indent format issues in buffer defs" 2013-10-15 16:23:50 -07:00
Jingning Han
fd1cd89da6 Merge "Remove unused comment" 2013-10-15 16:23:44 -07:00
Jingning Han
3f52cfa130 Merge "Re-design all-zero-coeff block index buffer use" 2013-10-15 16:23:38 -07:00
Jingning Han
c8e48f4b02 Make vp9_zero use cases of consistent format
Remove the semicolon in the definition of vp9_zero macro. Make all
the use cases of vp9_zero of consistent format.

Change-Id: Ibaf9751e8595872b12766381a93d185a4d90df8f
2013-10-15 16:12:21 -07:00
Guillaume Martres
67cf81b1c0 Remove Windows-style newlines using dos2unix
Change-Id: I0a0f9c07e774450896abc9455728b97fd38ef00c
2013-10-15 15:49:52 -07:00
Yaowu Xu
e4d12a1352 Merge "Converted assertion to returning error" 2013-10-15 15:27:48 -07:00
Yaowu Xu
f999d791e0 Merge "Added trap for invalid key frame" 2013-10-15 14:28:21 -07:00
Yaowu Xu
f2cb97bbda Merge "Prevent access to invalid pointer" 2013-10-15 14:28:15 -07:00
Yaowu Xu
da9e67ce3c Merge "Add clamp to prevent out of bound access" 2013-10-15 14:28:08 -07:00
Yaowu Xu
50494d5c1b Converted assertion to returning error
Assertion happens for invalid input data, the commit replace the
assertion with returning error.

Change-Id: I1b73ae752d64882d984cd23936efe75a757c2b41
2013-10-15 14:06:00 -07:00
Yaowu Xu
52a39f75f2 Added trap for invalid key frame
Change-Id: I698e8df9b336d38bffe01e656acba00d4003695f
2013-10-15 13:55:25 -07:00
Yaowu Xu
ff1083c113 Prevent access to invalid pointer
The commit added check to make sure no invalid memory access even when
the decoder instance is never initialized.

Change-Id: I4da343d0b3c78c27777ac7f5ce7688562c69f0c5
2013-10-15 13:51:42 -07:00
Yaowu Xu
45dbe94ee0 Add clamp to prevent out of bound access
For bad input data, the decoder may access the array out of bounds. The
commit added clamp to prevent such out of bound access

Change-Id: I0a1cfd9b8786ea7113a998053c76605c963b077a
2013-10-15 13:30:55 -07:00
Jingning Han
9115d84509 Remove unused variable vp9_64x64_zeros
Remove the unused variable vp9_64x64_zeros from vp9_encodeframe_.

Change-Id: I34bfdcab9a9105440ad05154c1e0516e70258785
2013-10-15 11:53:46 -07:00
Jingning Han
0a66541619 Fix a few indent format issues in buffer defs
Change-Id: Iac55891ac9e6f13718c9f822aa099b5ca491832a
2013-10-15 11:51:09 -07:00
Jingning Han
9622271033 Remove unused comment
Change-Id: I2d96940fae4c7a16661a43c2bf6907d8b1c1a127
2013-10-15 11:45:38 -07:00
Dmitry Kovalev
a4585285ed Removing unused 8x4 transform from the encoder.
Change-Id: Icbcf68b5b685a56f255ebc3859c9692accdadf9e
2013-10-15 11:27:28 -07:00
Jingning Han
8e3ce1a9e3 Re-design all-zero-coeff block index buffer use
Use the zcoeff_blk buffer of PICK_MODE_CONTEXT to store the indexes
of all-zero-coeff block of the current best mode. Remove the temporary
buffer best_zcoeff_blk defined in the rate-distortion optimization
loop. This improves the speed performance by about 0.5% in all speed
settings.

Change-Id: Ie3e15988ddfa581eafa2e19a8228d3fe4a46095c
2013-10-15 10:54:06 -07:00
Dmitry Kovalev
77cd8db1bf Moving FILTER_BITS constant from vp9_convolve.h to vp9_filter.h.
Change-Id: Idd7bdb0c364d94c5a0d24c87bb8574292e4c840c
2013-10-14 21:15:40 -07:00
Dmitry Kovalev
6965e6f3d5 Removing print_prob_tree function and vp9_coeff_probs typedef.
Change-Id: If14265084e9b4c85c75b43e8d33a6fafad468cbc
2013-10-14 21:08:21 -07:00
Dmitry Kovalev
a97fe89538 Using constants instead of plain numbers.
Replacing
  22 with TREE_SIZE(MAX_ENTROPY_TOKENS)
  12 with MAX_ENTROPY_TOKENS

Change-Id: If24919336e8ace9cf64991bd5ae33fa6656f7b93
2013-10-14 20:33:37 -07:00
Dmitry Kovalev
942c820d95 Cleanup of decode_coefs() function.
Moving entropy context calculation to outer scope and adding consts to
pointers.

Change-Id: I25d0987e97495326ab1e8046e3fa3082c0584485
2013-10-14 19:59:44 -07:00
James Zern
bee4abc3ff Merge "vp9_receive_compressed_data: remove unnecessary indent" 2013-10-14 13:22:08 -07:00
Jingning Han
a0d8ec7b76 Merge "Move token_cache from cost_coeffs to MACROBLOCK" 2013-10-14 13:05:32 -07:00
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
f36ba3da20 Merge "Making input pointer of any inverse transform constant." 2013-10-13 12:22:55 -07:00
Dmitry Kovalev
898c217cbc Merge "Adding TREE_SIZE macro + cleanup." 2013-10-13 12:21:09 -07:00
Dmitry Kovalev
65f118d72f Making input pointer of any inverse transform constant.
Also renaming dest_stride to stride in some places.

Change-Id: I75f602b623a5a7071d4922b747c45fa0b7d7a940
2013-10-11 18:27:12 -07:00
Johann
1ea04d980c Merge "Get libvpx to compile on VS2013." 2013-10-11 17:26:29 -07:00
Dmitry Kovalev
860e467643 Adding TREE_SIZE macro + cleanup.
Using TREE_SIZE for the following trees:
  vp9_intra_mode_tree
  vp9_inter_mode_tree
  vp9_partition_tree
  vp9_switchable_interp_tree
  vp9_mv_joint_tree
  vp9_mv_class_tree
  vp9_mv_class0_tree
  vp9_mv_fp_tree

Change-Id: I0212bb4c1ee6648249f68517e28a67a56591ee1b
2013-10-11 16:25:50 -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
Scott Graham
3806bab283 Get libvpx to compile on VS2013.
`round` is defined in the runtime library now.
https://codereview.chromium.org/23922008/

Change-Id: I3852740058d32f63ce283579acbe284865e32dba
2013-10-11 14:27: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
Dmitry Kovalev
9c8f3063b1 Merge "Removing vp9_idct4_1d_sse2 function." 2013-10-11 10:43:56 -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
Yunqing Wang
dc079ab138 Merge "Code cleanup" 2013-10-11 09:38:24 -07:00
Jingning Han
54e702b5d7 Merge "Restore mode skip feature in sub8x8 rd loop" 2013-10-11 09:21:06 -07:00
Yunqing Wang
57b97b56f6 Code cleanup
Minor code cleanup.

Change-Id: I47c1f794842d4570bb39cfd23b80f54f5606bba6
2013-10-11 09:08:41 -07:00
Paul Wilkins
b30445edd6 Merge "Experimental rate control change." 2013-10-11 08:45:13 -07:00
Paul Wilkins
39c0e4e034 Merge "Disable recode loop." 2013-10-11 08:45:00 -07:00
Yunqing Wang
3a0b59e3fd Merge "SSE2 8-tap sub-pixel filter optimization" 2013-10-11 08:44:56 -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
ddf1b76205 Removing vp9_idct4_1d_sse2 function.
We have two SSE2-optimized functions for idct4_1d:
  vp9_idct4_1d_sse2 <-- removing this one
  idct4_1d_sse2

vp9_idct4_1d_sse2 was used only by the following functions which already
have SSE2 optimized variants:
  vp9_idct4x4_16_add_c   -> vp9_idct4x4_16_add_see2
  idct8_1d               -> vp9_idct8x8_{16, 10, 1}_see2
  vp9_short_iht4x4_add_c -> vp9_short_iht4x4_add_see2

Change-Id: Ib0a7f6d1373dbaf7a4a41208cd9d0671fdf15edb
2013-10-10 16:50:43 -07:00
Scott LaVarnway
83936e8cd5 d207 intra prediction ssse3 using bytes
byte version of ronalds d207 ssse3 optimizations
(commit: f891f84d3ba9345b0074e682f0fea09b8ddf4f1e)

Change-Id: If15f71a589ea16f78ac86a501b0c5c6231dc9af1
2013-10-10 15:50:31 -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
Yunqing Wang
86528586a3 Merge "d153 intra prediction (32x32) ssse3 using bytes" 2013-10-10 15:16:45 -07:00
Yunqing Wang
3fb728c749 SSE2 8-tap sub-pixel filter optimization
To ensure fast encoding/decoding on devices without ssse3 support,
SSE2 optimization of sub-pixel filters was done. Test using 1080p
clip showed the decoder speeds were ~70fps with ssse3 filters, ~60fps
with sse2 filters, and ~15fps with c filters.

Change-Id: Ie2088f87d83a889fba80a613e4d0e287aadd785c
2013-10-10 14:12:47 -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
9a1250e3e0 Merge "Moving all scan/iscan code into separate vp9_scan.{h, c} files." 2013-10-10 10:45:07 -07:00
Dmitry Kovalev
419c3f6fba Merge "Giving consistent names to IDCT 16x16 functions." 2013-10-10 10:43:14 -07:00
Dmitry Kovalev
5bcc11b17a Merge "Adding const to several pointers." 2013-10-10 10:43:05 -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
Dmitry Kovalev
d9d7040e98 Adding const to several pointers.
Change-Id: I7231589bda71d0d23c730283febd5bb58585a0da
2013-10-09 19:46:30 -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
Yaowu Xu
8a06cb55ee Merge "Added #define of snprintf for MSVC" 2013-10-09 13:04:20 -07:00
Yaowu Xu
850a919640 Added #define of snprintf for MSVC
snprintf is not supported by MSVC, the commit replace it with the msvc
variant _snprintf to enable build.

Change-Id: I686943a78c289bae6b486a5e75effad5f86c24de
2013-10-09 12:16:53 -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
8933b964e9 Merge "Deprecate the use of PARTITION_INFO from encoder" 2013-10-09 09:58:34 -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
Parag Salasakar
eeb5b62dc1 mips dsp-ase r2 vp9 decoder bilinear convolve optimizations
Change-Id: Ic31b4ef85e65070b4f8b9f26e068ccfaae00c4f0
2013-10-09 18:05:27 +05:30
James Zern
b4148c3a03 Merge "vp9_blockd.h: update get_tx_eob() signature" 2013-10-09 00:55:48 -07:00
Jingning Han
c5e9108018 Remove extra line in decode_coefs
Change-Id: Id1fde9920d60c6991a8ef6de5103ae3e578312ed
2013-10-08 15:03:44 -07:00
Jingning Han
83b285e546 Merge "All zero coeff skip in IDCT 32x32" 2013-10-08 12:30:48 -07:00
Jingning Han
6594ca8897 All zero coeff skip in IDCT 32x32
When all coefficients are zeros, skip the corresponding 1-D inverse
transform. This practice has been used in the SSE2 implementation of
inverse 32x32 DCT. This commit imports this algorithm into the C code.

Change-Id: I0f58bfcb183a569fab85d524d5d9cf8ae8653f86
2013-10-08 11:47:29 -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
Paul Wilkins
f9ec0433ad Merge "Fix MSVC warning." 2013-10-08 10:19:49 -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
46b192d36d Merge "cpplint issue with convolve resolved" 2013-10-07 17:00:14 -07:00
Jim Bankoski
56af13a1b1 cpplint issue with convolve resolved
Change-Id: I38b2100f1a64cb067c63f4e1662c36914b3569df
2013-10-07 15:55:42 -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
Dmitry Kovalev
b096c5a336 Giving consistent names to IDCT 16x16 functions.
Renames:
  vp9_short_idct16x16_add    -> vp9_idct16x16_256_add
  vp9_short_idct16x16_10_add -> vp9_idct16x16_10_add
  vp9_short_idct16x16_1_add  -> vp9_idct16x16_1_add
  vp9_idct_add_16x16         -> vp9_idct16x16_add

Change-Id: Ief8a3904de78deab0f4ede944c4d0339c228cfc3
2013-10-07 14:31:10 -07:00
Jingning Han
c8f481fa3d Restore mode skip feature in sub8x8 rd loop
This commit restores the mode skip feature in the sub8x8 rd loop.

Change-Id: I5496ee32053f572b8961b549e9ecd4f1360824de
2013-10-07 14:20:34 -07:00
Dmitry Kovalev
2ae93a776b Merge "Giving consistent names to IDCT 8x8 functions." 2013-10-07 14:19:50 -07:00
Dmitry Kovalev
23cc1cd8e6 Removing redundant vp9_pt_energy_class declarations.
Declaring vp9_pt_energy_class in vp9_entropy.h instead of many external
places.

Change-Id: I66e8a3fc119a43f88d130d0dae4133c825a047a3
2013-10-07 14:11:01 -07:00
Jim Bankoski
7eb7dd2fed cpplint errors in vp9_onyx_if.h
Slightly bigger change -> broke up encode_frame_to_datarate,  lots
of line length fixes.

Change-Id: I7c53325e954de130f3fe1a6656626efc6705be82
2013-10-07 13:57:20 -07:00
Dmitry Kovalev
e3597c6af7 Moving all scan/iscan code into separate vp9_scan.{h, c} files.
Now we have entropy code separate from scan/iscan code. The next step
in future is to move iscan code from common part to the encoder.

Change-Id: Id9732f7d80aec00af35c1d58d1137c4c96c91451
2013-10-07 13:55:56 -07:00
Dmitry Kovalev
272adbbec4 Using inter_mode_offset_function instead of duplicated code.
Change-Id: I8de865cd1deca07b5c92c225782f0867367e9a11
2013-10-07 13:18:46 -07:00
Dmitry Kovalev
6d3db91d3b Merge "Cleaning up foreach_predicted_block_in_plane() function." 2013-10-07 11:30:45 -07:00
Adrian Grange
18a2617126 Merge "cpplint issues resolved vp9_ratectrl.c" 2013-10-07 10:54:17 -07:00
Jim Bankoski
31b7a912d1 cpplint issues resolved vp9_ratectrl.c
Change-Id: Iae7674b0c946a5ac01617840b3f62965c654d920
2013-10-07 09:21:29 -07:00
Jim Bankoski
92519a005a Merge "cpplint problems resolved with vp9_firstpass.c" 2013-10-07 09:16:46 -07:00
Jim Bankoski
ccc5a483f4 Merge "cpplint issues resolved in vp9_mcomp.c" 2013-10-07 09:14:35 -07:00
Scott LaVarnway
a2a3b4a479 d153 intra prediction (32x32) ssse3 using bytes
Change-Id: Ie2c0d84ff9f6294084d65f4380e1f30c09e681c9
2013-10-07 11:21:10 -04:00
Paul Wilkins
65f0cc7f4b Disable MODE_TEST_HIT_STATS
This flag is for stats generation and testing and should not
be checked in as enabled by default.

Change-Id: I4ea57dbcf49790f14777f598ddd3dc37dcc7a6bb
2013-10-07 02:54:19 -07:00
James Zern
879e21ddfd vp9_blockd.h: update get_tx_eob() signature
as the name implies, the segmentation pointer can be const

Change-Id: I945f01a077c112ec86c00e35a1e9395bc230c2d9
2013-10-07 11:45:16 +02:00
Paul Wilkins
950058765d Fix MSVC warning.
A new set of MSVC warnings were introduced by change
I3f36d3f7cd8d15195a6e2fafd1777cdaf9ecb847

In particular MSVC does not like:-

typedef const int16_t subpel_kernel[SUBPEL_TAPS];

struct subpix_fn_table {
  const subpel_kernel *filter_x;
  const subpel_kernel *filter_y;
};

causes  new warning in MSVC.
warning C4114: same type qualifier used more than once

Change-Id: Iae596fd13aadf36169faf00c68eabe9a32a9b156
2013-10-07 02:26:44 -07:00
Jim Bankoski
bf893e84bd Merge changes I8a106dd6,Iec442603
* changes:
  d153 intra prediction (16x16) ssse3 using bytes
  d153 intra prediction ssse3 using bytes
2013-10-06 20:11:24 -07:00
Dmitry Kovalev
c6ad70d5f1 Giving consistent names to IDCT 8x8 functions.
Renames:
  vp9_short_idct8x8_add    -> vp9_idct8x8_64_add
  vp9_short_idct8x8_1_add  -> vp9_idct8x8_1_add
  vp9_short_idct8x8_10_add -> vp9_idct8x8_10_add
  vp9_idct_add_8x8         -> vp9_idct8x8_add

Change-Id: Ifb8d3a45b4c0397aa805b30463f3d14581bf72c1
2013-10-06 00:24:09 -07:00
Dmitry Kovalev
5c0b108639 Merge "Adding assign_mv() function to reduce code duplication." 2013-10-05 23:44:59 -07:00
Dmitry Kovalev
9dba044be2 Merge "Giving consistent names to IDCT/IWHT functions." 2013-10-05 23:44:05 -07:00
Jim Bankoski
a5db3967ea Merge "encodemb cpplint issues revisited." 2013-10-05 18:16:01 -07:00
Jim Bankoski
7edc5ac42f NOLINT issue with headers that's hard to avoid do to config.h issue
Change-Id: Ibd0b3414cdea05bc2fd6d0aa35808e44b3db8d96
2013-10-05 17:32:43 -07:00
Jim Bankoski
44228663f1 remaining cpplint issue in vp9_decode_frame
Change-Id: Ia3030882c5276dc1f8e6b6c82b9eb301f00b6bbc
2013-10-05 17:30:34 -07:00
Jim Bankoski
bf21ce63ee encodemb cpplint issues revisited.
Change-Id: Id5f25b74e2207bf44b6f6c8ffe548fa30fd78b4d
2013-10-05 17:24:51 -07:00
Jim Bankoski
30dee8adfc cpplint problems resolved with vp9_firstpass.c
Change-Id: Ic7b7014a0d857585bfd4baaea1d5c27ffe355642
2013-10-05 17:10:54 -07:00
Jim Bankoski
c9f3f9ed70 Merge "unused typedef in vp9_variance.h" 2013-10-05 16:49:13 -07:00
Jim Bankoski
7fd13472ae Merge "cpplint issues with vp9_boolhuff.c resolved" 2013-10-05 16:48:28 -07:00
Jim Bankoski
f59cb3eacc Merge "added nolint to function that doesn't seem easy to breakup" 2013-10-05 16:47:23 -07:00
Jim Bankoski
4410bbbf88 Merge "cpplint issues in vp9_lookahead.c" 2013-10-05 16:46:11 -07:00
Jim Bankoski
b79b7c354d cpplint issues resolved in vp9_mcomp.c
Change-Id: I2c2f83f4dfa2782fc6b0aa6db3ba2c4e6e423ffa
2013-10-05 16:44:40 -07:00
Jim Bankoski
6a7b1fb754 Merge changes Idbfabe42,I788f1a30
* changes:
  cpplint issues resolved in vp9_variance_mmx.c
  cpplint issues in vp9_ssim.c
2013-10-05 16:32:50 -07:00
Jim Bankoski
2dba2eb46a Merge "cpplint issues in vp9_picklpf.c" 2013-10-05 16:32:00 -07:00
Jim Bankoski
c4697a6690 Merge "cpplint issues resolved vp9/vp9_cx_iface.c" 2013-10-05 16:31:50 -07:00
James Zern
557862d152 vp9_receive_compressed_data: remove unnecessary indent
+ useless comment

Change-Id: Ied29a4cc8c506b216968ce67af630bae542aca12
2013-10-05 12:10:38 +02:00
Jingning Han
0d0ed6a29b Allow sub8x8 intra modes test for alt frame coding
This commit allows sub8x8 intra modes test in the rate-distortion
loop for hd sequences in speed 1 and 2.

For sequence y90n of hd set at 8000 kbps, speed 2 runtime goes
from 207s to 210s. For ped_1080p at 3000 kbps, speed 2 runtim goes
from 336s to 337s. Both are running with 300 frames.

This improves compression performance by 0.24% for stdhd and 0.32%
for hd.

Change-Id: I173ca38a6411565ae6cfadd184c42b2070c5de1f
2013-10-04 19:13:00 -07:00
Jim Bankoski
0500cf429f cpplint issues with vp9_boolhuff.c resolved
Change-Id: I6990c9ab838323d8770dd1f49a25bf3acc4c05c7
2013-10-04 17:20:58 -07:00
Jim Bankoski
a36045fb3b Merge "cpplint issues with vp9_temporal_filter.c" 2013-10-04 17:17:02 -07:00
Jim Bankoski
fa7dbab3fe cpplint issues resolved vp9/vp9_cx_iface.c
Change-Id: I4f66d6f1aebe7d47ad01cda9b03c600725240680
2013-10-04 17:16:20 -07:00
Jim Bankoski
cac3e1588e cpplint issues in vp9_picklpf.c
Change-Id: I62e631ca95fefbb1a993479a5e3926dc81359fe7
2013-10-04 17:08:41 -07:00
Jim Bankoski
eead4bb89e Merge "lint issue in vp9_psnr.c" 2013-10-04 16:42:30 -07:00
Jim Bankoski
e2d73897d0 Merge "vp9_encodeframe.c cpplint issues resolved" 2013-10-04 16:42:06 -07:00
Jim Bankoski
6e161a26e3 Merge "cpp lint issues resolved in vp9_encodeintra.c" 2013-10-04 16:41:58 -07:00
Jim Bankoski
5f80d2ad33 Merge "cpplint vp9_dct.c issues resolved" 2013-10-04 16:41:46 -07:00
Jim Bankoski
38f6a3cdc7 Merge "cpplint issues vp9_tokenize.c resolved" 2013-10-04 16:41:23 -07:00
Dmitry Kovalev
ee74054e81 Cleaning up foreach_predicted_block_in_plane() function.
Change-Id: Ibb3d9667eba56621667412f62097aa7a392659c2
2013-10-04 15:53:32 -07:00
Jim Bankoski
d07545b7b8 cpplint issues with vp9_temporal_filter.c
Change-Id: I695a990689c79d160227975116125b140875aed1
2013-10-04 15:49:30 -07:00
Dmitry Kovalev
56acf7e528 Merge "Adding vp9_get_filter_kernel() function." 2013-10-04 15:21:39 -07:00
Yaowu Xu
d129eea9fa Merge "Further clean up of speed 4" 2013-10-04 14:45:21 -07:00
Jim Bankoski
de5cb8b140 vp9_encodeframe.c cpplint issues resolved
Change-Id: Id9d837e062d9c4a94def4b4ed1f49a67c75d3618
2013-10-04 14:37:31 -07:00
Jim Bankoski
02f28bac29 cpp lint issues resolved in vp9_encodeintra.c
Change-Id: Ib6a8360d24f44eeaec12c5055568382a105dc235
2013-10-04 14:35:01 -07:00
Jim Bankoski
9c2b3744c9 cpplint issues in vp9_lookahead.c
Change-Id: I2a98995f0df77d99dc47bda5e41886f014d8843f
2013-10-04 14:24:19 -07:00
Jim Bankoski
5b4f836148 cpplint issues resolved in vp9_variance_mmx.c
Change-Id: Idbfabe427fbeab44210f13fec8b6f63f7a4eb0dd
2013-10-04 14:22:08 -07:00
Jim Bankoski
eb5b7ac27b added nolint to function that doesn't seem easy to breakup
Change-Id: I5489b116aea7c510ea5ebbed3c1445f321b05f3e
2013-10-04 14:17:47 -07:00
Dmitry Kovalev
3a0602578e Giving consistent names to IDCT/IWHT functions.
The idea is to have the following names for each transform size:

vp9_idct4x4_add
  vp9_idct4x4_1_add
  vp9_idct4x4_10_add
  vp9_idct4x4_16_add

vp9_idct8x8_add
  vp9_idct8x8_1_add
  vp9_idct8x8_10_add
  vp9_idct8x8_64_add

etc for 16x16, 32x32

The actual list of renames in this patch:

vp9_idct_add_lossless     -> vp9_iwht4x4_add
vp9_short_iwalsh4x4_add   -> vp9_iwht4x4_16_add
vp9_short_iwalsh4x4_1_add -> vp9_iwht4x4_1_add

vp9_idct_add            -> vp9_idct4x4_add
vp9_short_idct4x4_add   -> vp9_idct4x4_16_add
vp9_short_idct4x4_1_add -> vp9_idct4x4_1_add

Change-Id: I6f43f7437c68dd30cdd05d72e213765578ed30b1
2013-10-04 14:17:06 -07:00
Jim Bankoski
25ecb1f0b3 cpplint vp9_variance_sse2.c
Change-Id: Ifce8f5b57a1ea8952e8a67c5b92a127a061899fa
2013-10-04 14:15:06 -07:00
Jim Bankoski
f3e6a35cdb cpplint issues in vp9_ssim.c
Change-Id: I788f1a3004643347ca08d08fc3cb2bb8f0b134d9
2013-10-04 14:08:37 -07:00
Jim Bankoski
424c74e736 cpplint vp9_dct.c issues resolved
Change-Id: Ia21653a447040f1b472d21ebd19103b0558c4b16
2013-10-04 13:47:59 -07:00
Jim Bankoski
c6960b6086 cpplint issues vp9_tokenize.c resolved
Change-Id: Id4ec0084641d2ad4def95fb05239455fbc25f9b9
2013-10-04 13:42:58 -07:00
Jim Bankoski
660dcfe6a2 Merge "cpplint issues vp9_encodemv.c" 2013-10-04 12:55:46 -07:00
Jim Bankoski
19641c40f9 Merge "cpplint issues vp9_mbgraph" 2013-10-04 12:55:26 -07:00
Guillaume Martres
014a2c17df Fix first pass for non-square blocks
Change-Id: Ic049f0a6ce190f33859118e7b8cfcfe305979102
2013-10-04 12:04:15 -07:00
Dmitry Kovalev
042c475a8f Merge "Moving all idct/iht functions in one place." 2013-10-04 12:01:42 -07:00
Jim Bankoski
d9215a6616 cpplint issues vp9_mbgraph
Change-Id: Iedf9ac460edb31d7c072e2bebd26f2afe8e6089b
2013-10-04 11:22:22 -07:00
Jim Bankoski
19e227561a cpplint issues vp9_encodemv.c
Change-Id: Icda1d2d7cbfb176884fa6c7d9366a2d60e2994e9
2013-10-04 11:19:06 -07:00
Jim Bankoski
916f803175 lint issue in vp9_psnr.c
Change-Id: Ifc7ffc02cfedb47230571298622602609a4e8a70
2013-10-04 11:01:49 -07:00
Jingning Han
1ab60f7bfb Merge "Remove redundant second_ref_frame check in sub8x8" 2013-10-04 09:04:11 -07:00
Paul Wilkins
44e039b4f5 Further clean up of speed 4
Speed 4 still does not give a big gain over speed 3.
This just cleans it up a little from the last patch and comments
out features that do not seem to be giving much benefit.

Change-Id: I5f366e6160e1dbe5dc45cf5eb90cc02712baa1b6
2013-10-04 16:57:24 +01:00
Paul Wilkins
8abd92f12f Remove mode_skip_start and mask code for sub 8x8
This code serves no purpose in the re-factored sub 8x8 code.

Change-Id: I5364986224d1a28b71bcb046ec8557a3d14aaa47
2013-10-04 14:26:17 +01:00
Paul Wilkins
de6ecc5ac3 Selective masking of split modes.
Allow selective masking of individual split modes rather than
just a single on / off flag.

For speed 2 recovers the large speed loss seen for some derf
clips  in change Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
and a small quality gain.

For speed 1 10 % speed increase observed locally on some derf clips
for minimal quality change.

Change-Id: If86191087b93cbc05351c26c60c7933e2149e485
2013-10-04 14:20:58 +01:00
Paul Wilkins
03dd2818e4 Missing threshold case for disable split.
In relation to change:
Refactor inter mode rate-distortion search
 Ie6bdfa0a370148dd60bd800961077f7e97e67dd4

sf->thresh_mult_sub8x8[THR_INTRA] = INT_MAX missing;

Change-Id: Ia86b68a5073368a3e2ca124a27b632243b525c8b
2013-10-04 11:54:24 +01:00
Dmitry Kovalev
bde3ae0c60 Adding assign_mv() function to reduce code duplication.
Change-Id: I2b4e5b842c19f64749b18946ad215c0caa57e7b7
2013-10-03 20:06:32 -07:00
Dmitry Kovalev
d975804e9a Merge "Replacing duplicated code with get_scan_and_band call." 2013-10-03 18:58:40 -07:00
Dmitry Kovalev
9ec09700d6 Adding vp9_get_filter_kernel() function.
Moving INTERPOLATIONFILTERTYPE enum and subpix_fn_table struct to
vp9_filter.h. Adding convenient typedef for subpel kernels.

Function vp9_setup_interp_filters() besides setting xd->subpix.filter_x &
xd->subpix.filter_y has a side effect of also setting scale factors. This
is not required inside decode_modes_b() because scale factors have been
already set by set_ref() calls. That's why replacing
vp9_setup_interp_filters() call with newly created vp9_get_filter_kernel()
call. The behavior of vp9_setup_interp_filters() is unchanged (it
is used from the encoder).

Change-Id: I3f36d3f7cd8d15195a6e2fafd1777cdaf9ecb847
2013-10-03 18:55:21 -07:00
Dmitry Kovalev
934c4e6621 Merge "Reading diff update flag inside vp9_diff_update_prob." 2013-10-03 17:47:10 -07:00
Dmitry Kovalev
8b34437522 Replacing duplicated code with get_scan_and_band call.
Change-Id: I2cc3684f416a63dc99b9303109f9850f34a470d5
2013-10-03 17:46:28 -07:00
Jingning Han
63a92eb665 Merge "Use vp9_zero in sub8x8 RD optimiazion loop" 2013-10-03 17:04:16 -07:00
Dmitry Kovalev
3b7794f9eb Merge "BITSTREAM - "update_map" SEMANTICS BROKEN IN 398ddafb629b7f49cf255bf09d3e38b4abd0bb95" 2013-10-03 15:09:49 -07:00
Dmitry Kovalev
0e23048303 BITSTREAM - "update_map" SEMANTICS BROKEN IN 398ddafb62
This patch reverts old commit 398ddafb62
"New way of updating last frame segmentation map.".

Change-Id: Iba730f433c30ed7f5e5449d6768049cbf9a2b2c5
2013-10-03 14:41:36 -07:00
Jingning Han
2952b7d1fb Remove redundant second_ref_frame check in sub8x8
This commit removes the redundant second reference frame check in
the rate-distortion optimization loop for sub8x8 blocks.

Change-Id: I13a57a6f624c4a9bcef02ff2a867fa30d8b44a93
2013-10-03 14:02:12 -07:00
Jingning Han
b9daef91d8 Use vp9_zero in sub8x8 RD optimiazion loop
Change-Id: Ic23a705e48cadaa7151f2bd8536d56636cb973e3
2013-10-03 12:34:25 -07:00
Jingning Han
4093192ec9 Change b_mode_info definition from union to struct
This commit defines b_mode_info as a struct type. This will allow
us to further remove the use of PARTITION_INFO in the encoding process.

Change-Id: I975b0f7d557b5e0f66545a61b472def76b671cce
2013-10-03 12:34:11 -07:00
Jingning Han
793c2d8429 Remove unused variables in inter_mode rd loops
Remove redundant variable definition/use in rate-distortion search
loop for regular and sub8x8 blocks, respectively.

Change-Id: Ic0eb3660bb6851ba2eb8d702ba9fd11595000d01
2013-10-03 12:34:11 -07:00
Jingning Han
a55625873f Merge "Refactor inter mode rate-distortion search" 2013-10-03 12:19:53 -07:00
Yunqing Wang
134dfea878 Merge "Rewrite HORIZx4 and HORIZx8 in subpixel filter functions" 2013-10-03 12:17:47 -07:00
Dmitry Kovalev
3aed95dbdb Merge "Using vp9_zero instead of vpx_memset." 2013-10-03 11:41:11 -07:00
Jingning Han
11abab356e Refactor inter mode rate-distortion search
This commit separates the rate-distortion optimization loop of
superblocks from that of sub8x8 blocks. This allows better design
rate-distortion optimization search loop for each setting. It also
removes the use of SPLITMV and I4X4_PRED therein.

No performance change in speed 0 settings. For bus@CIF at 2000kbps,
the speed 1 runtime goes from 48009ms to 43894ms (about 10% faster).
The overall compression performance on derf changed by -0.021%.

Speed 2 runtime goes from 27114ms to 28700ms (6% slower), while the
overall coding efficiency goes up by 1.629% for derf, 1.236% for yt.

Change-Id: Ie6bdfa0a370148dd60bd800961077f7e97e67dd4
2013-10-03 11:36:49 -07:00
Dmitry Kovalev
8394f1a015 Merge "Making decode_modes_b function more straightforward." 2013-10-03 11:06:29 -07:00
Dmitry Kovalev
9250d1529c Using vp9_zero instead of vpx_memset.
Change-Id: I9a0d0e9c3459954aa7b9c68f92cc5d56385ebd18
2013-10-03 10:59:36 -07:00
Dmitry Kovalev
6f1bb2246c Reading diff update flag inside vp9_diff_update_prob.
Change-Id: I5ae659c1bfb132428a7272d094b5287d144ec7c8
2013-10-03 10:55:36 -07:00
Paul Wilkins
b03d3da9c1 Merge "Speed setting review." 2013-10-03 09:49:00 -07:00
Paul Wilkins
fa71882e63 Merge "make use last partition consider motion" 2013-10-03 09:48:49 -07:00
Johann
fd6c4c71d6 Merge "mips dsp-ase r2 vp9 decoder convolve module optimizations" 2013-10-03 09:41:16 -07:00
Dmitry Kovalev
6cb6987d4d Merge "BITSTREAM - RESTORING BILINEAR INTERPOLATION FILTER SUPPORT" 2013-10-03 09:34:26 -07:00
Yunqing Wang
ed22179a82 Rewrite HORIZx4 and HORIZx8 in subpixel filter functions
In subpixel filters, prefetched source data, unrolled loops,
and interleaved instructions.

In HORIZx4, integrated the idea in Scott's CL (commit:
d22a504d11), which was suggested by
Erik/Tamar from Intel. Further tweaking was done to combine row 0,
2, and row 1, 3 in registers to do more 2-row-in-1 operations until
the last add.

Test showed a ~2% decoder speedup.

Change-Id: Ib53d04ede8166c38c3dc744da8c6f737ce26a0e3
2013-10-03 09:04:02 -07:00
Paul Wilkins
6253cc9279 Speed setting review.
Substantial reworking of the speed vs quality trade offs for
speed 1 and 2.

In this patch I am attempting to freeze the "quality" meaning of
speeds 1 and 2 relative to speed 0 so that in future we can
better evaluate progress.

I am targeting :
Speed 1 quality ~-5% vs speed 0.
Speed 2 quality ~-10% vs speed 0

It is inevitable that quality will still fluctuate a little as we adjust
settings and add new features, but we will attempt to keep as
close as possible to these values. Above speed 2 things will remain
a bit more fluid for now.

In this patch speed 1 is approximately 4-5x as fast as speed 0. This
is similar to before but the quality hit is a lot less. Likewise speed 2
is approximately 2x as fast as speed 1 but is similar in quality to the
previous speed 1 configuration.

Also slight change to behavior of FLAG_EARLY_TERMINATE to insure
all reference frames get at least one rd test. Important for very low
variance regions.

WIP :- Added a new speed level with old speed 4 becoming speed 5.
Speed 3 and 4 tradeoffs still WIP

Change-Id: Ic7a38dd7b5b63ab1501f9352411972f480ac6264
2013-10-03 10:23:28 +01:00
Jim Bankoski
f1d3e5e4d6 make use last partition consider motion
This commit causes use last partition to consider whether a 64x64 has
motion that might make a new partitioning worth while.

Change-Id: I3a57bedef4f3cd961fadbfa96651c206fa36da4a
2013-10-03 10:22:39 +01:00
Paul Wilkins
ece99b3da0 Merge "Improved auto_partition_range." 2013-10-03 02:06:13 -07:00
Dmitry Kovalev
68a3e4a888 BITSTREAM - RESTORING BILINEAR INTERPOLATION FILTER SUPPORT
Adding appropriate test vector vp90-2-06-bilinear.webm.

Change-Id: Ia3bbf57318e0cc61a1b724fe751e3f9c7e11b337
2013-10-02 18:04:12 -07:00
A.Mahfoodh
5215b83aea Simplifying and inlining k_cvtlo_epi16 and k_cvthi_epi16
Simplify the k_cvtlo_epi16 and k_cvthi_epi16 to only two
instructions. Then inlined them.

quoting from intel MMX_App_Compute_16bit_Vector.pdf‎
"The PMADDWD instruction multiplies four
pairs of 16-bit numbers and produces partial sums of the results
and can do so once per clock (with a three-clock latency)."
so I am assuming that there will be three clock overhead after the
last _mm_madd_pi16 command.
Even with the overhead the number of clocks in general should be
smaller. I am not sure though becasue I could not find information
about number of clocks required for instructions in k_cvtlo_epi16
and k_cvthi_epi16. I will run a test and compare the execution time.

Change-Id: Ieda4aa338f69ad3dd196ac6e7892da3cf1b47ea7
2013-10-02 20:02:03 -04:00
Parag Salasakar
40edab5e39 mips dsp-ase r2 vp9 decoder convolve module optimizations
Change-Id: I401536778e3c68ba2b3ae3955c689d005e1f1d59
2013-10-02 16:58:37 -07:00
Dmitry Kovalev
43e979db3b Merge "Adding const to function arguments." 2013-10-02 16:26:20 -07:00
Dmitry Kovalev
7fa14f42c1 Merge "Removing unused vp9_coeff_stats_model typedef." 2013-10-02 16:26:09 -07:00
Dmitry Kovalev
a88a0e88a4 Merge "Moving get_token_alloc function from common to the encoder." 2013-10-02 16:26:00 -07:00
Jim Bankoski
f5bcc372c9 unused typedef in vp9_variance.h
Change-Id: I15f79c9de34c723c1dd419b8da96c3ff948c5e03
2013-10-02 15:59:31 -07:00
Dmitry Kovalev
be7eec79be Moving all idct/iht functions in one place.
Moving functions from vp9_idct_blk to vp9_idct because these functions are
used from both encoder and decoder. Removing duplicated code from
vp9_encodemb.c and reusing existing functions.

Change-Id: Ia0a6782f8c4c409efb891651b871dd4bf22d5fe8
2013-10-02 14:13:33 -07:00
Scott LaVarnway
20a09d928a d153 intra prediction (16x16) ssse3 using bytes
Change-Id: I8a106dd61b0a2520fae792d87d6348e662649b2d
2013-10-02 16:34:05 -04:00
Dmitry Kovalev
d958c0486a Merge "Removing memset calls inside idct/iht functions." 2013-10-02 12:45:27 -07:00
Dmitry Kovalev
c4d1ab573a Removing memset calls inside idct/iht functions.
Making appropriate memset inside decode_block now.

Change-Id: I8e944194668c830de08271c8fb6e413251c201d8
2013-10-02 11:48:08 -07:00
Jingning Han
54bc73151b Deprecate unused mode count variables
Remove mode_check_freq and mode_test_hit_counts from VP9_COMP.

Change-Id: Iabfd9f841444cd9bf19ac761a9795f140082ce0b
2013-10-02 11:07:14 -07:00
Jingning Han
6d3bd96607 BITSTREAM - CLARIFICATION OF MV SIZE RANGE
The codec should effectively run with motion vector of range (-2048, 2047)
in full pixels, for sequences of 1080p and below. Add assertions to clarify
this behavior.

Change-Id: Ia0cac28249f587d8f8882205228fa480263ab313
2013-10-02 10:29:45 -07:00
Dmitry Kovalev
6c2082db71 Merge "Adding read_intra_mode_{y, uv} functions for clarity." 2013-10-02 09:17:10 -07:00
Dmitry Kovalev
3c4e9e341f Adding SSE2 optimized vp9_short_idct32x32_1_add function.
Change-Id: I4b1c6bb9ff615f5872b96ed07dbf0f5e18e63643
2013-10-01 18:34:36 -07:00
Dmitry Kovalev
771f3ef5ad Adding read_intra_mode_{y, uv} functions for clarity.
Change-Id: I92fd32476c472e54f52b8d7602a98262b25e6eaf
2013-10-01 17:55:48 -07:00
Jim Bankoski
e83ebc8992 Merge "vp9_thread nolintify lint issue I can't fix easily" 2013-10-01 16:15:03 -07:00
Jim Bankoski
825b7c301d Merge "vp9_block.h cpplint issues resolved" 2013-10-01 16:14:58 -07:00
Jim Bankoski
691177842c Merge "cpplint issue in vp9_rdopt.h" 2013-10-01 15:45:35 -07:00
Jim Bankoski
d0308b7daa Merge "cpplint issues in vp9_onyx_int.h" 2013-10-01 15:45:02 -07:00
Dmitry Kovalev
aeb603f2af Making decode_modes_b function more straightforward.
Moving out decode_tokens function calls and adding decode_blocks boolean
variable. We only have to decode if eobtotal > 0, i.e. we have at least one
non-zero coefficient. Also inlining and remove vp9_set_pred_flag_mbskip
function.

Change-Id: I7be38b12ee8206faf0beea2bbf4d52be42575b03
2013-10-01 15:41:30 -07:00
Jim Bankoski
c52d85442c vp9_thread nolintify lint issue I can't fix easily
Change-Id: Ib19dabe697656e4d7e8403d91bedca7cd31d36bf
2013-10-01 15:19:39 -07:00
Jim Bankoski
5491a1f33e vp9_block.h cpplint issues resolved
Change-Id: Icc6a76a5be77f3e19918155bab3998e0aa32ccf5
2013-10-01 15:17:39 -07:00
Jim Bankoski
c4627a9ff1 cpplint issues in vp9_onyx_int.h
Change-Id: I6c4058aebe834e1a12b7a3fb10484b9ebe60b349
2013-10-01 15:14:39 -07:00
Jim Bankoski
b6e2f9b752 cpplint issue in vp9_rdopt.h
Change-Id: I84209d382ca5dfc537ee533cd792d8caa0e25cee
2013-10-01 15:09:32 -07:00
Yunqing Wang
03698aa6d8 Merge "Modify HORIZx16 macro in subpixel filter functions" 2013-10-01 14:18:10 -07:00
Yunqing Wang
df8e156432 Modify HORIZx16 macro in subpixel filter functions
Interleaved the instructions, reduced register dependency, and
prefetched the source data. This improved the decoder speed
by 0.6% - 2%.

Change-Id: I568067aa0c629b2e58219326899c82aedf7eccca
2013-10-01 12:49:25 -07:00
Dmitry Kovalev
0a5e9ee054 Moving get_token_alloc function from common to the encoder.
Also renaming mb_row -> mi_row, mb_col -> mi_col arguments and calculate
mb_rows/mb_cols values from mi_rows/mi_cols.

Change-Id: I6919a279f560648e23bc9a12f507d17c21ffd5d7
2013-10-01 11:54:10 -07:00
Yaowu Xu
5c66f6f5eb fix build with MSVC
near is a key word, changed to use nearmv instead.

Change-Id: Ib54438c431b2b2521a62fc7b61a9c127dd7bc01e
2013-10-01 09:51:59 -07:00
Scott LaVarnway
27b390e1a1 d153 intra prediction ssse3 using bytes
byte version of ronalds d153 ssse3 optimizations for
4x4 and 8x8
(commit: fc91a2a112238a1aee568f3b840585de4e928fca)

Change-Id: Iec4426032311483f615fd9e0dceba3ee85ddebd7
2013-10-01 09:05:20 -04:00
Dmitry Kovalev
c982a73b9f Removing unused vp9_coeff_stats_model typedef.
Change-Id: I6973e7121b6393379b5759f288632e8eab763d3e
2013-09-30 15:10:00 -07:00
Dmitry Kovalev
c64e23832f Adding const to function arguments.
Function list:
  tx_counts_to_branch_counts_32x32
  tx_counts_to_branch_counts_8x8
  tx_counts_to_branch_counts_8x8
  update_ct
  update_ct2
  update_mode_probs

Change-Id: I120d8945a34378cf285d6bd415e23de1d522cf2f
2013-09-30 14:50:15 -07:00
Dmitry Kovalev
40047bef5d Merge "Using array of motion vectors instead of separate variables." 2013-09-30 13:16:45 -07:00
Dmitry Kovalev
cd945c7bd9 Merge "Removing vp9_add_constant_residual_{8x8, 16x16, 32x32} functions." 2013-09-30 13:16:34 -07:00
Jingning Han
195061feda Fix rectangular partition check in speed 1
Make encoder skip rectangular partition check in speed 1 and above,
when early termination was triggered in partition split.
Thanks Guillaume (gmartres@) for catching this issue.

This change makes bus_cif at 2000kbps speed 1 runtime goes down from
25612ms to 23438ms (about 9% speed-up), at the expense of -0.235%
performance down.

Change-Id: I98613fad081a261d30d5fa206f934ca70601c180
2013-09-30 12:14:36 -07:00
Dmitry Kovalev
c151bdd412 Using array of motion vectors instead of separate variables.
Change-Id: I7380a089105f658257bbb3e30a525da168e76952
2013-09-30 12:11:46 -07:00
Dmitry Kovalev
1a9d4fedf3 Merge "Using size_t for memory buffer size." 2013-09-30 11:10:08 -07:00
Dmitry Kovalev
548671dd20 Removing vp9_add_constant_residual_{8x8, 16x16, 32x32} functions.
We don't need these functions anymore. The only one which was actually
used is vp9_add_constant_residual_32x32. Addition of
vp9_short_idct32x32_1_add eliminates this single usage. SSE2 optimized
version of vp9_short_idct32x32_1_add will be added in the next patch set,
right now it is only C implementation. Now we have all idct functions
implemented in a consistent manner.

Change-Id: I63df79a13cf62aa2c9360a7a26933c100f9ebda3
2013-09-30 10:56:37 -07:00
Jim Bankoski
4906fe45e2 Merge "systemdependent lint issue resolved" 2013-09-30 10:55:07 -07:00
Jim Bankoski
fd09be0984 Merge changes I2b2af1dd,Id2cc5c82
* changes:
  fixed cpp lint issue in vp9_postproc_x86
  nolintify intrinsic idct file
2013-09-30 10:53:30 -07:00
Jim Bankoski
e3c1f0880f Merge "cpplint issues in vp9_loopfilter.h" 2013-09-30 10:53:13 -07:00
Jim Bankoski
509ba98938 Merge "treecoder lint issues resolved" 2013-09-30 10:43:22 -07:00
Jim Bankoski
7ddd9f7f27 Merge "cpplint issue with entropymv.h" 2013-09-30 10:43:16 -07:00
Jim Bankoski
c424c5e808 Merge "cpplint issue with vp9_loopfilter_filters.c" 2013-09-30 10:43:05 -07:00
Jim Bankoski
282704145d Merge "cpplint issue in blockd.h" 2013-09-30 10:42:45 -07:00
Jim Bankoski
58a09c32c2 Merge "common_data.h lint issues resolved" 2013-09-30 10:42:35 -07:00
Jim Bankoski
9e056fa094 Merge "vp9_loopfilter.c cpplint issues resolved." 2013-09-30 10:42:27 -07:00
Jim Bankoski
d2a4ddf982 Merge "cpplint issue resolved in vp9_pred_common.h" 2013-09-30 10:42:19 -07:00
Jim Bankoski
cbdcc215b3 Merge "resolved lint issues in default_coef_probs" 2013-09-30 10:42:12 -07:00
Jim Bankoski
d35e9a0c53 Merge "lint issues in mvref_common.c" 2013-09-30 10:41:50 -07:00
Jim Bankoski
14916b0ca6 Merge "vp9 convolve lint issues" 2013-09-30 10:41:43 -07:00
Jim Bankoski
4e5d99ca72 Merge "vp9_rtcd.c lint issues" 2013-09-30 10:41:32 -07:00
Jim Bankoski
bc1b089372 Merge changes Id58e2176,I7efc74ef
* changes:
  cpplint issues in vp9_filter.h
  cpplint issues with onyxc_int.h
2013-09-30 10:41:23 -07:00
Jim Bankoski
0f8805e086 Merge "vp9_entropy.c lint issues" 2013-09-30 10:34:11 -07:00
Paul Wilkins
d12a502ef9 Merge "Alter Speed 3." 2013-09-30 09:12:28 -07:00
Jim Bankoski
7f13b33a78 Merge "cpplint issues resolved in vp9_postproc.c" 2013-09-30 08:26:00 -07:00
Jim Bankoski
1a2f4fd2f5 Merge "fix lint issues in quant common" 2013-09-30 08:26:00 -07:00
Jim Bankoski
88251c86dc Merge "fix cpplint issue in reconintra" 2013-09-30 08:26:00 -07:00
Jim Bankoski
68b8d1ea0a Merge changes Ia7969baa,Ic5807152,I1c3943cd,I0b5af849,I01cbd1b0
* changes:
  fixed cpplint issue with vp9_scale.h
  vp9_entropymv.c cpplint issues resolved
  cpplint fixes to debug modes
  cpplint issues in vp9_onyx.h
  cpplint issues resolved in vp9_dx_iface.c
2013-09-30 08:26:00 -07:00
Jim Bankoski
821b987486 Merge "cpplint issue with treedreader" 2013-09-30 08:24:59 -07:00
Deb Mukherjee
fad3d07df3 Merge "Some minor changes/cleanups in rate control" 2013-09-30 06:50:56 -07:00
Paul Wilkins
65b93c7e52 Improved auto_partition_range.
The code now takes into account temporal and spatial
information to determine the partition size range, but the
frequency counts have been removed.

The net effect is similar in quality but about 10% faster.

Change-Id: I39a513fb79cec9177b73b2a7218f0da70963ae95
2013-09-30 11:32:57 +01:00
Paul Wilkins
a76caa7ff4 Alter Speed 3.
This patch deletes the variance based speed three partitioning.
Speed 3 now uses the same partitioning method as speed 2
but with some stricter conditions.

The speed and quality are now somewhere between speeds 2 and 4
whereas before it was worse in both than speed 4.

Change-Id: Ia142e7007299d79db3ceee6ca8670540db6f7a41
2013-09-30 11:26:46 +01:00
Jim Bankoski
777460329b vp9_entropy.c lint issues
Change-Id: I4e163cc4ce9ec2f3a5a8b9da478049c71b08d71f
2013-09-29 20:29:43 -07:00
Jim Bankoski
7019e34c34 vp9 convolve lint issues
Change-Id: I8b496191c6a60a60a52c929adca305db47058a84
2013-09-29 19:44:05 -07:00
Jim Bankoski
f6d7e3679c resolved lint issues in default_coef_probs
Change-Id: I97bf241c0d981721cc74a50be47c9db8a00f6be3
2013-09-29 19:41:31 -07:00
Jim Bankoski
c66bfc70d1 treecoder lint issues resolved
Change-Id: I442609f689aa9381e1e208012305cf62a6b31eee
2013-09-29 19:37:11 -07:00
Jim Bankoski
a57912f893 systemdependent lint issue resolved
Change-Id: I07fbb32d5cee0003d04b2369cfafcb03c371cd4f
2013-09-29 19:34:44 -07:00
Jim Bankoski
8f229caf87 lint issues in mvref_common.c
Change-Id: If6a7a8c48fefc69349c792d8ed52a6e1d374e46e
2013-09-29 19:32:53 -07:00
Jim Bankoski
623e163f84 vp9_rtcd.c lint issues
Change-Id: I58209ae96d21c56cbb8ef796940b6ca3b3ebfa72
2013-09-29 19:29:58 -07:00
Jim Bankoski
c288b94ab9 common_data.h lint issues resolved
Change-Id: I1fd79093a5b9cb40c9e877b6b71c25a07a69b3ae
2013-09-29 19:28:32 -07:00
Jim Bankoski
03df17070b vp9_loopfilter.c cpplint issues resolved.
Change-Id: Idfa17d120ec4edf542e424fa0deb769951afbf4a
2013-09-29 19:04:21 -07:00
Jim Bankoski
6249a5b17e cpplint issue with vp9_loopfilter_filters.c
Change-Id: I13aa43df6bff340b5768d69125b473a52d1d59bd
2013-09-29 19:03:00 -07:00
Jim Bankoski
855d078f95 cpplint issue with entropymv.h
Change-Id: I3556738d27def6a5bd71577728050a1e2bb1de63
2013-09-29 19:01:46 -07:00
Jim Bankoski
2b5bf7b8d8 cpplint issue in blockd.h
Change-Id: Ia41e1966431652b839134a1c27feccb25c762539
2013-09-29 19:00:40 -07:00
Jim Bankoski
716d37f8bf fixed cpplint issue with vp9_scale.h
Change-Id: Ia7969baac7ffc6d7a0e8e8e83e9252d077a3c5b3
2013-09-29 18:58:58 -07:00
Jim Bankoski
2ecd0dae1e vp9_entropymv.c cpplint issues resolved
Change-Id: Ic5807152cc78127b3f84b5abb4c5f3ef6d06ce65
2013-09-29 18:57:35 -07:00
Jim Bankoski
7a59efe7f8 cpplint issues resolved in vp9_postproc.c
Change-Id: If61380115163a02ecfe74b82e116001ac54e20e2
2013-09-29 18:52:29 -07:00
Jim Bankoski
152fd59964 fixed cpp lint issue in vp9_postproc_x86
Change-Id: I2b2af1dd9f5c29c05e28a4fd51fa58ccc4071477
2013-09-29 18:44:58 -07:00
Jim Bankoski
ec421b7810 nolintify intrinsic idct file
Change-Id: Id2cc5c829399a2afdf7a8a82615a4e272c814986
2013-09-29 18:42:24 -07:00
Jim Bankoski
31ceb6b13c cpplint issues in vp9_loopfilter.h
Change-Id: Ib142f9c5130aa5f0e1fc76e1c4f51cd66c73dcc7
2013-09-29 18:36:42 -07:00
Jim Bankoski
11cf0c39c9 cpplint issues in vp9_filter.h
Change-Id: Id58e21760c7948a2b020c9623c38cf007874d43e
2013-09-29 18:34:41 -07:00
Jim Bankoski
01d43aaa24 cpplint issue resolved in vp9_pred_common.h
Change-Id: Ibacac91c2192fcfbd9e411ae141dd00445566efe
2013-09-29 18:17:06 -07:00
Jim Bankoski
ab03c00504 cpplint issues with onyxc_int.h
Change-Id: I7efc74ef53139bbaa6ec4f01482d9d9b362be27b
2013-09-29 18:10:03 -07:00
Jim Bankoski
eb506a6590 cpplint fixes to debug modes
Change-Id: I1c3943cd5db6cd8fc759116a3717dba3c030fa0d
2013-09-29 18:04:48 -07:00
Jim Bankoski
fb6e6cd24d fix cpplint issue in reconintra
Change-Id: I934f9cfb96ce4f5f266b025064237875dcd92b3a
2013-09-29 18:02:42 -07:00
Jim Bankoski
d052117319 fix lint issues in quant common
Change-Id: I135ee6e8df91262f813c474b24f14381a4064e02
2013-09-29 17:59:43 -07:00
Jim Bankoski
efc8638890 cpplint issues in vp9_onyx.h
Change-Id: I0b5af849833ac077bd4de71a24af8f8bd7ec06d6
2013-09-29 17:50:18 -07:00
Jim Bankoski
4ecdf26d9c cpplint issues resolved in vp9_dx_iface.c
Change-Id: I01cbd1b00d8d8e02541b2c29b9e88e690edfcaba
2013-09-29 17:33:30 -07:00
Jim Bankoski
0f9efe9e7a cpplint issue with treedreader
Change-Id: I4036add96dd5e42896c57a80a6ef2b6f27b8224a
2013-09-29 17:20:33 -07:00
Jim Bankoski
8e45778eaf Merge changes I29b5bbb9,Iaa6b8ac9,Ibf996de7,Ie1b544e4,I9dea60e3,If71923f4,I6498d2ee
* changes:
  cpplint issue extra line in decodemv.c
  cpplint issue - vp9_idct_blk.c
  cpplint issue in vp9_detokenize.c
  fixed cpplint issue vp9_onyxd_int.h
  cpplint issue in vp9_read_bit_buffer resolved
  cpplint issue vp9_decodeframe.c
  fix cpplint issue in vp9_onyxd.h
2013-09-29 17:10:17 -07:00
Jim Bankoski
8486741e15 Merge "cpplint issues vp9_thread.h" 2013-09-29 17:07:55 -07:00
Jim Bankoski
8d0b712af6 Merge "cpplint style issue" 2013-09-29 17:07:27 -07:00
Jim Bankoski
8d50d766d4 Merge "fixed cpplint issues in vp9_onyxd_if.c" 2013-09-29 17:07:17 -07:00
Dmitry Kovalev
b927620231 Merge "Using is_inter_block and has_second_ref functions." 2013-09-29 12:14:41 -07:00
Dmitry Kovalev
29815ca729 Merge "Moving from int_mv* to MV* (3)." 2013-09-29 12:13:16 -07:00
Dmitry Kovalev
4ab01fb5f7 Merge "Reusing FRAME_CONTEXT struct to simplify the code." 2013-09-29 12:02:26 -07:00
Dmitry Kovalev
b3d3578ee4 Merge "Renaming vp9_short_idct10_8x8_add to vp9_short_idct8x8_10_add." 2013-09-29 12:01:50 -07:00
Dmitry Kovalev
7343681675 Merge "Removing vp9_get_coef_neighbors_handle function." 2013-09-29 12:01:36 -07:00
Dmitry Kovalev
efbacc9f89 Merge "Removing vp9_subpelvar.h from common." 2013-09-29 12:00:46 -07:00
Dmitry Kovalev
5df8b1d05b Merge "Fixing warning generated by gcc." 2013-09-29 12:00:27 -07:00
Dmitry Kovalev
3bb773d03e Merge "Removing unnecessary function calls." 2013-09-29 11:59:44 -07:00
Jim Bankoski
cf688474ea cpplint issue extra line in decodemv.c
Change-Id: I29b5bbb9bed7296d0bf7d58ae1e78187ccdc5b34
2013-09-29 11:53:14 -07:00
Jim Bankoski
33c7ed4478 cpplint issue - vp9_idct_blk.c
Change-Id: Iaa6b8ac967c0000d4632b64ff9709304072d6ef2
2013-09-29 11:53:10 -07:00
Jim Bankoski
11fe8ecf57 cpplint issue in vp9_detokenize.c
Change-Id: Ibf996de79e9c9bbe03b2202d4af11aebc58f9bcc
2013-09-29 11:53:06 -07:00
Jim Bankoski
67a0a89272 fixed cpplint issue vp9_onyxd_int.h
Change-Id: Ie1b544e488a5e346a62174bfdeb9b54c34a19083
2013-09-29 11:53:02 -07:00
Jim Bankoski
ef6d82358d cpplint issue in vp9_read_bit_buffer resolved
Change-Id: I9dea60e39bc4a51684cfba49c82c3570a2f7b61e
2013-09-29 11:52:58 -07:00
Jim Bankoski
fff4caeac1 cpplint issue vp9_decodeframe.c
Change-Id: If71923f4821a7bf3372a1ead83baa91fc576977c
2013-09-29 11:52:52 -07:00
Jim Bankoski
2ce70a15d2 fix cpplint issue in vp9_onyxd.h
Change-Id: I6498d2eee0b3f3bbb94787eb0ba72ccfcf8f5f02
2013-09-29 11:52:47 -07:00
Jim Bankoski
da17ffa937 cpplint issues vp9_thread.h
apparently we are going to have trouble completely removing lint issue in this file.
It needs a bit more work.   We need to include vpx_config.h to know whether
we need to have multi threading .    and that means vpx_config.h has to come
before the system headers.  ( a violation )

Change-Id: I023feeab1bf5643b79dccc3b80a4a9ad42689e7b
Signed-off-by: Jim Bankoski <jimbankoski@google.com>
2013-09-29 11:49:52 -07:00
Jim Bankoski
681fb22820 cpplint style issue
Change-Id: I550e27b2d40f0e608032e74e1472ceec53c97dc7
2013-09-29 11:19:26 -07:00
Jim Bankoski
cfbc246d57 fixed cpplint issues in vp9_onyxd_if.c
Change-Id: Ia67e9ed2d5ea79f3dbf1d58f9a187cb18ecd0995
2013-09-29 11:03:53 -07:00
Dmitry Kovalev
b10e6b2943 Removing unnecessary function calls.
Both vp9_init_mbmode_probs() and vp9_zero(cm->ref_frame_sign_bias) are
called inside vp9_setup_past_independence() which called in any case for
encoder/decoder after VP9_COMMON struct creation.

Change-Id: I3724d1a4fb8060101ff0290dd6a158f0b5c57bb4
2013-09-27 17:42:05 -07:00
Dmitry Kovalev
bd9c057433 Reusing FRAME_CONTEXT struct to simplify the code.
Change-Id: Ia455c1900d84a3221e3681e31e15ca86bd03f89d
2013-09-27 16:41:20 -07:00
Guillaume Martres
ceaa3c37a9 Merge "Simplify RDMULT and RDDIV derivation" 2013-09-27 16:32:54 -07:00
Dmitry Kovalev
3fab2125ff Renaming vp9_short_idct10_8x8_add to vp9_short_idct8x8_10_add.
Making name consistent with vp9_short_idct8x8 and vp9_short_idct8x8_1.

Change-Id: I99e0be040ec893f9571dcf090e18f98dc58339f5
2013-09-27 15:26:27 -07:00
Christian Duvivier
b1b4ba1bdd Properly save neon registers.
Replace current code which corrupts the stack by
duplicate of vp8 code to save and restore neon
registers.

Change-Id: Ibb0220b9aa985d10533befa0a455ebce57a2891a
2013-09-27 14:25:33 -07:00
Dmitry Kovalev
209c6cbf8f Removing vp9_get_coef_neighbors_handle function.
Change-Id: I6be72c8b048d1ccc7ef43764cf84c32360098970
2013-09-27 14:11:13 -07:00
Deb Mukherjee
80d582239e Some minor changes/cleanups in rate control
Some small changes to the quantizer mapping functions.
Also includes some cleanups.

Change-Id: I9dea29b24015f6e6697012a0e4d8983049d8e5c7
Results:
derfraw300: +0.106%
stdhdraw250: +0.139%
2013-09-27 13:57:42 -07:00
Dmitry Kovalev
db60c02c9e Merge "Renaming vp9_short_idct10_16x16 to vp9_short_idct16x16_10." 2013-09-27 13:08:52 -07:00
Dmitry Kovalev
36d2794369 Merge "New way of updating last frame segmentation map." 2013-09-27 13:08:44 -07:00
Scott LaVarnway
35830879db Merge "d63 intra prediction ssse3 using bytes" 2013-09-27 07:21:08 -07:00
Dmitry Kovalev
398ddafb62 New way of updating last frame segmentation map.
Implementing more natural (and faster) way of updating last frame
segmentation map.

Change-Id: I9fefa8f78e77bd7948133b04173da45edc15a17e
2013-09-26 18:44:48 -07:00
Christian Duvivier
3c465af2ab Merge "Fix a bunch of TODO from vp9_short_idct32x32_add_neon." 2013-09-26 14:15:18 -07:00
Dmitry Kovalev
15a36a0a0d Renaming vp9_short_idct10_16x16 to vp9_short_idct16x16_10.
Making function name consistent with vp9_short_idct16x16 and
vp9_short_idct16x16_1.

Change-Id: I70e54be9e6b9a1dddab0de470686591e96d05517
2013-09-26 14:01:25 -07:00
Guillaume Martres
2b426969c3 Simplify RDMULT and RDDIV derivation
Don't divide RDMULT and RDDIV by 100 when RDMULT > 1000. This was
probably done to avoid overflow when the rd cost was stored in a 32 bits
integer but this is not the case anymore. This change will make it easier
to support multiple quantizers per frame.

derf compression gain at speed 0: 0.037%

Change-Id: Ibeeb9b7cfa1a132a7af41bc90fc07a3bba0857f6
2013-09-26 13:55:16 -07:00
Dmitry Kovalev
794a7ccd78 Fixing warning generated by gcc.
vp9/vp9_cx_iface.c:92: warning: type qualifiers ignored on function
return type

Change-Id: I6f130e280e2db261506a4af8ce11fc788ad13198
2013-09-26 10:33:21 -07:00
Christian Duvivier
5b1dc1515f Fix a bunch of TODO from vp9_short_idct32x32_add_neon.
- full ASM version, no more C gateway file.
- integrate combine-add with last step of 2nd pass.
- remove a few push/pop pairs.
- some instruction reordering to hide latency.

Change-Id: Ic9d9933c908b65d1bf7ba8fd47b524cda808c9c6
2013-09-25 21:15:19 -07:00
Dmitry Kovalev
eda4e24c0d Using is_inter_block and has_second_ref functions.
Change-Id: I60dee58a4fd24d3c4f3c101a49d30e217309f43a
2013-09-25 19:03:04 -07:00
Guillaume Martres
7755b9dada Merge "Correctly set the segment_id prediction flag and context" 2013-09-25 18:04:21 -07:00
Yaowu Xu
0c02bfcc2a Merge "Limit mv search range for first pass and mbgraph" 2013-09-25 17:21:13 -07:00
Dmitry Kovalev
8266da1cd1 Moving from int_mv* to MV* (3).
Change-Id: I9795d0937bc07793c13d067281995e0750f694d9
2013-09-25 16:44:19 -07:00
Dmitry Kovalev
f9e2140cab Merge "Moving from int_mv* to MV* (2)." 2013-09-25 16:12:13 -07:00
Dmitry Kovalev
64eff7f360 Removing vp9_subpelvar.h from common.
Moving all code from that file to vp9_variace_c.c in the encoder.

Change-Id: Ic803d5b4c78d5191e4d25541b3df97337878fc3e
2013-09-25 16:10:43 -07:00
Dmitry Kovalev
2b5670238b Merge "Replacing txfm with tx." 2013-09-25 15:57:56 -07:00
Dmitry Kovalev
e2c92d1510 Merge "Removing unused SUBMVREF_COUNT constant." 2013-09-25 15:57:49 -07:00
Dmitry Kovalev
87a214c277 Merge "Adding vp9_get_entropy_contexts function." 2013-09-25 15:43:55 -07:00
Dmitry Kovalev
9cd14ea6ed Merge "Removing redundant 'extern' keyword." 2013-09-25 15:42:48 -07:00
Dmitry Kovalev
49f5efa8d8 Removing unused SUBMVREF_COUNT constant.
Change-Id: I302ab4603553352a84b57bc89bc9e3d037978d29
2013-09-25 15:33:05 -07:00
Scott LaVarnway
208658490c d63 intra prediction ssse3 using bytes
byte version of ronalds d63 ssse3 optimizations
(commit: c5a1c8cf3541cf3665fee981b36d22c9fbd4191e)

Change-Id: Ifd3e6d454a2246085f23eabb38518a930321e807
2013-09-25 16:16:44 -04:00
Dmitry Kovalev
d445945a84 Adding vp9_get_entropy_contexts function.
Change-Id: Ife0dd29fb4ad65c7e12ac5f1db8cea4ed81de488
2013-09-24 17:26:05 -07:00
Dmitry Kovalev
d0365c4a2c Replacing txfm with tx.
Renaming txfm_stepdown_count to tx_stepdown_count and max_txfm_size to
max_tx_size.

Change-Id: Ifc173e22c78240e561a57c4c741b64b1b8fc6fef
2013-09-24 17:24:35 -07:00
Dmitry Kovalev
c7b7b1da86 Using size_t for memory buffer size.
Change-Id: Ibf1642525731c66c99fa25f95c7b5834ae88c688
2013-09-24 16:38:30 -07:00
Dmitry Kovalev
682c27239f Merge "Cleaning up vp9_update_nmv_count function." 2013-09-24 16:27:18 -07:00
Dmitry Kovalev
450cbfe53a Cleaning up vp9_update_nmv_count function.
Using best_mv[2] array instead of two separate variables.

Change-Id: Iefa0a41f5c42c42f2c66cef26750da68405f0f25
2013-09-24 15:55:49 -07:00
Dmitry Kovalev
12d57a9409 Removing redundant 'extern' keyword.
Change-Id: Ie51306689c0dc527a8aa12d3984389dd8f360dea
2013-09-24 15:13:09 -07:00
Dmitry Kovalev
d571e4e785 Replacing unsigned char* with uint8_t*.
Change-Id: I99a1880aee015ae16311ba05a31aa307df89bef2
2013-09-24 14:57:42 -07:00
Guillaume Martres
57272e41dd Correctly set the segment_id prediction flag and context
This fix a bug introduced by ac6093d179

Change-Id: I0700a4daf7a6a2471074f81a4596352287fb2ac9
2013-09-24 14:18:27 -07:00
Yaowu Xu
35c5d79e6b Limit mv search range for first pass and mbgraph
Both first pass and mbgraph search use block size 16x16 for motion
estimation. This commit put a limit of motion vector range. The
effective range allows the entire 16x16 with required subpel
interpolation input to be completely outside image border, but
not any further away from image border.

Change-Id: Id70a5ed08be49e70959f064859d72adc7d775d08
2013-09-24 13:47:29 -07:00
Dmitry Kovalev
b87696ac37 Moving from int_mv* to MV* (2).
Updating fractional_mv_step_fp and fractional_mv_step_comp_fp function
types.

Change-Id: I601c4378bc39ac3ffd4e295d9cbd8e1f74829d46
2013-09-24 12:48:12 -07:00
Jingning Han
b1c58f57a7 Merge "Remove redundant mode update in sub8x8 decoding" 2013-09-24 12:35:58 -07:00
Dmitry Kovalev
30888742f4 Merge "Moving from int_mv to MV." 2013-09-24 12:25:56 -07:00
Yaowu Xu
71cfaaa689 Merge "Replace memcpy with vpx_memcpy" 2013-09-24 11:35:03 -07:00
Yaowu Xu
9be0bb19df Replace memcpy with vpx_memcpy
Also removed obselete comment

Change-Id: Iae1664777d76383639c637ee786e0d50fc45819a
2013-09-24 10:56:06 -07:00
Yaowu Xu
6037f17942 Rename defined constants
The change is to better reflect the nature of the constants.

Change-Id: Icabac6e9bceefbdb3f03f8218f88ef75943c30fb
2013-09-24 10:53:01 -07:00
Yaowu Xu
ff1ae7f713 Prevent using uninitialized value in RD decision
INT64_MAX may be assigned as RDCOST when RDCSOST computation is skipped
for speed, this commit to prevent INT64_MAX from being used as real
RDCOST in transform size decision.

Change-Id: I89a945134191bbdea1f1431ade70424ac079eaac
2013-09-24 10:53:01 -07:00
Yaowu Xu
fe533c9741 Merge "Change to prevent invalid memory access" 2013-09-24 10:37:17 -07:00
Dmitry Kovalev
f24b9b4f87 Merge "Adding best_mv[2] array instead of two variables." 2013-09-24 10:17:53 -07:00
Deb Mukherjee
f1a627e8a2 Merge "Small tweak in the constant quality parameter" 2013-09-24 09:51:08 -07:00
Jingning Han
9bcd750565 Merge "Enable per transformed block zero coeffs forcing" 2013-09-24 09:18:17 -07:00
Jingning Han
24ad692572 Merge "Calculate rd cost per transformed block" 2013-09-24 09:18:03 -07:00
Deb Mukherjee
b7a93578e5 Small tweak in the constant quality parameter
Improves results a little.

Change-Id: I7bcac02dbb65b43a993445cf557c520197114e5c
2013-09-24 09:09:35 -07:00
Yunqing Wang
bacb5925ff Merge "Number of instructions in fdct4_1d_sse2 reduced by two." 2013-09-24 08:40:56 -07:00
Yaowu Xu
92a29c157f Change to prevent invalid memory access
After change of MI context storage , mi_8x8[]  pointer may be null for
a block outside of image border. The commit changes to access the data
only after validation of mi_row and mi_col.

Change-Id: I039c4eb486a228ea9d8e5f35ab9ae6717d718bf3
2013-09-24 08:36:59 -07:00
A.Mahfoodh
13c7715a75 Number of instructions in fdct4_1d_sse2 reduced by two.
Mathematically the results are the same.

Change-Id: I1c5126cd3ca64e8515ca6331e0989c6f7dd651a0
2013-09-23 17:23:27 -07:00
Jingning Han
e85eaf6acd Remove redundant mode update in sub8x8 decoding
The probability model used to code prediction mode is conditioned
on the immediate above and left 8x8 blocks' prediction modes. When
the above/left block is coded in sub8x8 mode, we use the prediction
mode of the bottom-right sub8x8 block as the reference to generate
the context.

This commit moves the update of mbmi.mode out of the sub8x8 decoding
loop, hence removing redundant update steps and keeping the bottom-
right block's mode for the decoding process of next blocks.

Change-Id: I1e8d749684d201c1a1151697621efa5d569218b6
2013-09-23 17:21:40 -07:00
Yaowu Xu
838eae3961 Correct 3 step search site initialziation
39c7b01d accidently reverted the row/col initialization, which broke
mv clamps, which is dependent on the sites for valid motion vector
range. This commit fixed the issue.

Change-Id: Ibcce0226e0360b1ef483fe760b2e33f1af4bf494
2013-09-23 16:11:49 -07:00
Jingning Han
a517343ca3 Enable per transformed block zero coeffs forcing
This commit enables forcing all coefficients zero per transformed
block, when its rate-distortion cost is lower than regular coeff
quantization.

The overall performance improvement (including its parent patch on
calculating rd cost per transformed block) at speed 1:
derf:  0.298%
yt:    0.452%
hd:    0.741%
stdhd: 0.006%

Change-Id: I66005fe0fd7af192c3eba32e02fd6d77952accb5
2013-09-23 10:39:35 -07:00
Jingning Han
54c87058bf Merge "Remove redundant mv_pred use for sub8x8 blocks" 2013-09-23 08:47:21 -07:00
Deb Mukherjee
d11221f433 Improves constant qual, constrained qual turned on
Adds modeled functions to decide the qp for altref frames in constant q
mode similar to other functions in use in bitrate mode.

Also turns on the constrained quality mode (end-usage=2) option which
was turned off before. Basic testing shows the mode works in principle,
to cap bitrate to the target-bitrate specified, while allowing lower
bitrate depending on the cq-level specified. The mode will need to be
improved over time.

Results for constant quality vs bitrate control mode:
derfraw300/fullderfraw: +3.0% at constant quality over bitrate control.
fullstdhdraw: +4.341%
stdhdraw250: +5.361%

Change-Id: If5027c9ec66c8e88d33e47062c6cb84a07b1cda9
2013-09-22 23:04:50 -07:00
Dmitry Kovalev
14330abdc6 Merge "Cleanup in vp9_init3smotion_compensation." 2013-09-21 02:57:47 -07:00
Johann
a6a00fc6a3 Use lowercase instruction in assembly
The iOS compiler does not recognize BLE:
bad instruction `BLE idct32_transpose_pair_loop'

Change-Id: I7426694c66bc31caf939a2d5000968da1222c15b
2013-09-20 16:11:05 -07:00
Jingning Han
78fbb10642 Calculate rd cost per transformed block
This commit makes the rate-distortion optimization loop evaluate
the rd costs of regular quantization and all zero coeffs, per
transformed block. It improves speed 1 compression performance:

derf: 0.245%
yt:   0.515%

For a large partition that consists multiple transformed blocks,
this allows more flexibility to selectively force a portion of
them coded as all zero coeffs, as well be continued in the next
patches.

Change-Id: I211518be4179747b57375696f017d1160cc91851
2013-09-20 12:40:17 -07:00
Dmitry Kovalev
bb5e2bf86a Adding best_mv[2] array instead of two variables.
Change-Id: I584fe50f73879f6a72fada45714ef80893b6d549
2013-09-20 17:08:53 +04:00
Dmitry Kovalev
e51e7a0e8d Moving from int_mv to MV.
Converting vp9_mv_bit_cost, mv_err_cost, and mvsad_err_cost
functions for now.

Change-Id: I60e3cc20daef773c2adf9a18e30bc85b1c2eb211
2013-09-20 13:52:43 +04:00