platform/upstream/libvpx.git
11 years agoMerge "Skip redundant nearest/near/zero encodes in splitmv."
Ronald S. Bultje [Wed, 17 Jul 2013 23:10:51 +0000 (16:10 -0700)]
Merge "Skip redundant nearest/near/zero encodes in splitmv."

11 years agoMerge "Skip nearest/near/zero redundant encodes."
Ronald S. Bultje [Wed, 17 Jul 2013 23:10:41 +0000 (16:10 -0700)]
Merge "Skip nearest/near/zero redundant encodes."

11 years agoMerge "Best_rd breakout in rd partition search."
Ronald S. Bultje [Wed, 17 Jul 2013 23:10:22 +0000 (16:10 -0700)]
Merge "Best_rd breakout in rd partition search."

11 years agoMerge "Remove unnecessary calling of vp9_init_quantizer()"
Yunqing Wang [Wed, 17 Jul 2013 22:47:17 +0000 (15:47 -0700)]
Merge "Remove unnecessary calling of vp9_init_quantizer()"

11 years agoRemove unnecessary calling of vp9_init_quantizer()
Yunqing Wang [Wed, 17 Jul 2013 21:59:00 +0000 (14:59 -0700)]
Remove unnecessary calling of vp9_init_quantizer()

vp9_init_quantizer() is called in vp9_create_compressor(), and
should not be called in vp9_set_speed_features().

Change-Id: Ic2f1f4b0531b9d46bb841d7e1d8da9812207dad6

11 years agoMerge "Remove unnecessary buffer copy in idct4x4."
hkuang [Wed, 17 Jul 2013 21:51:53 +0000 (14:51 -0700)]
Merge "Remove unnecessary buffer copy in idct4x4."

11 years agoMerge "changed mode checking order"
Yaowu Xu [Wed, 17 Jul 2013 21:44:40 +0000 (14:44 -0700)]
Merge "changed mode checking order"

11 years agoMerge changes Ieffea49e,Idf610746
Dmitry Kovalev [Wed, 17 Jul 2013 21:44:20 +0000 (14:44 -0700)]
Merge changes Ieffea49e,Idf610746

* changes:
  Removing two unused arguments from vp9_inc_mv signature.
  Changing signature of vp9_get_pred_probs_tx_size.

11 years agoMerge "Removing experimental code from vp9_entropymv.c."
Dmitry Kovalev [Wed, 17 Jul 2013 21:43:45 +0000 (14:43 -0700)]
Merge "Removing experimental code from vp9_entropymv.c."

11 years agoMerge "Adding read_comp_pred function."
Dmitry Kovalev [Wed, 17 Jul 2013 21:26:34 +0000 (14:26 -0700)]
Merge "Adding read_comp_pred function."

11 years agoRemove unnecessary buffer copy in idct4x4.
hkuang [Wed, 17 Jul 2013 21:18:59 +0000 (14:18 -0700)]
Remove unnecessary buffer copy in idct4x4.

Change-Id: I386066b9bcfb4bffb582e6827af36ca0181f6a83

11 years agoSkip redundant nearest/near/zero encodes in splitmv.
Ronald S. Bultje [Wed, 17 Jul 2013 20:53:35 +0000 (13:53 -0700)]
Skip redundant nearest/near/zero encodes in splitmv.

Encode of first 50 frames of bus @ 1500kbps (speed 0) goes from
1min7.3 to 1min6.2, i.e. 1.7% faster overall.

Change-Id: I19d2deacfbffadd61d32551cee9586757ab4a987

11 years agochanged mode checking order
Yaowu Xu [Wed, 17 Jul 2013 19:07:48 +0000 (12:07 -0700)]
changed mode checking order

Change-Id: Ic4c4b363ed840935e42f495f13ea5e601a56f1b2

11 years agoSkip nearest/near/zero redundant encodes.
Ronald S. Bultje [Wed, 17 Jul 2013 18:33:15 +0000 (11:33 -0700)]
Skip nearest/near/zero redundant encodes.

Encode of first 50 frames of bus @ 1500kbps (speed 0) goes from 1min12.8
to 1min7.3, i.e. 8% faster.

Change-Id: Ia22d1c7b687316c553cc60eacae988b24e175b62

11 years agoEnable disable_splitmv feature for other speeds
Yunqing Wang [Wed, 17 Jul 2013 16:37:14 +0000 (09:37 -0700)]
Enable disable_splitmv feature for other speeds

Added disable_splitmv feature at other speed levels. For speed 3 or
above, always turn it on.

Change-Id: Ibb36f0a7ef12a34b4f8d0f9cb6193eab43b34360

11 years agoRemoving experimental code from vp9_entropymv.c.
Dmitry Kovalev [Wed, 17 Jul 2013 17:25:09 +0000 (10:25 -0700)]
Removing experimental code from vp9_entropymv.c.

Change-Id: I340d06e3bc32c78358654496503cccd4196cbe2e

11 years agoMerge "vp9_convolve8_neon placeholder"
Johann [Wed, 17 Jul 2013 17:09:00 +0000 (10:09 -0700)]
Merge "vp9_convolve8_neon placeholder"

11 years agoBest_rd breakout in rd partition search.
Ronald S. Bultje [Wed, 17 Jul 2013 16:56:46 +0000 (09:56 -0700)]
Best_rd breakout in rd partition search.

About 15% faster for bus (speed 0) first 50 frames @ 1500kbps, which
goes from 1min36 to 1min24. Results become slightly better (+0.2% on
derf/yt, +0.4% on hd), probably because of a bugfix for skipmode in
super_block_yrd(). Overall speed change (on derfraw300) is roughly
-13%. This can probably be improved further by caching best_yrd
between partition searches. Also, we might be able to get more
speedups by always doing PARTITION_NONE before PARTITIONS_SPLIT, not
just at the sb8x8 level.

Change-Id: I83736949ebd5b4a3b400ee688d7661913fefc98b

11 years agoDo a skip-block check for sub8x8 partitions also.
Ronald S. Bultje [Wed, 10 Jul 2013 22:18:52 +0000 (15:18 -0700)]
Do a skip-block check for sub8x8 partitions also.

+0.2% SSIM and glbPSNR on derfraw300.

Change-Id: I9cba0bca55e606a22f557c7732b064f738efe84d

11 years agoSpeed up motion estimation using small partitions' result(experiment)
Yunqing Wang [Wed, 3 Jul 2013 21:43:23 +0000 (14:43 -0700)]
Speed up motion estimation using small partitions' result(experiment)

Current partition checking starts from small sizes, and then goes up
to large sizes. This experiment uses the small partitions' motion
estimation result, which is already available, to speed up the
large partition's motion estimation. We can decide to skip some
patition checkings if they are unlikely choices. We could use the
motion vector(MV) result as current partition's prediction MV, limit
the search range and reference frame.

Current result at speed 1:
psnr loss: 1.19% for stdhd, 0.287% for derf.
speed gain: 14% for sunflower(hd), 11% for akiyo.

Further improvement will be done later.

Change-Id: I5abfd070e9cace2e91e2a0247d1325df313887ab

11 years agovp9_convolve8_neon placeholder
Johann [Tue, 16 Jul 2013 17:13:06 +0000 (10:13 -0700)]
vp9_convolve8_neon placeholder

Call the individually optimized horizontal and vertical functions. This
implementation abuses the temp buffer.

This will be replaced with a custom optimized function.

Over 2x speedup.

Change-Id: I5b908d2a73d264e9810d6022bbff73207a3055dd

11 years agoMerge "added missed replacement"
Yaowu Xu [Wed, 17 Jul 2013 14:46:04 +0000 (07:46 -0700)]
Merge "added missed replacement"

11 years agoMerge "Move uv intra mode selection in rd loop."
Paul Wilkins [Wed, 17 Jul 2013 12:19:26 +0000 (05:19 -0700)]
Merge "Move uv intra mode selection in rd loop."

11 years agoMerge "Limit transform sizes searched for uv intra."
Paul Wilkins [Wed, 17 Jul 2013 10:40:11 +0000 (03:40 -0700)]
Merge "Limit transform sizes searched for uv intra."

11 years agoMove uv intra mode selection in rd loop.
Paul Wilkins [Tue, 16 Jul 2013 17:12:34 +0000 (18:12 +0100)]
Move uv intra mode selection in rd loop.

Use an estimate based on DC_PRED for intra uv cost
within the rd loop then only do a full uv mode analysis
if an intra mode is chosen.

Significant speed gains in some cases. Currently only
enabled for speed 2 pending speed/quality tests.

Change-Id: Ie851a12400d5483bce47ec0e3ccb8516041e91c0

11 years agoLimit transform sizes searched for uv intra.
Paul Wilkins [Tue, 16 Jul 2013 14:56:42 +0000 (15:56 +0100)]
Limit transform sizes searched for uv intra.

Apply limit if search_method == USE_LARGESTALL
to the range of UV tx sizes searched.

Change-Id: I6db29f0dd237285ffc50d75a37e8b68151ad821c

11 years agoMerge "Minor cleanup in code to fine uv tx_size."
Paul Wilkins [Wed, 17 Jul 2013 09:50:09 +0000 (02:50 -0700)]
Merge "Minor cleanup in code to fine uv tx_size."

11 years agoMerge "Removing MV_GROUP_UPDATE define and corresponding code."
Dmitry Kovalev [Wed, 17 Jul 2013 04:09:00 +0000 (21:09 -0700)]
Merge "Removing MV_GROUP_UPDATE define and corresponding code."

11 years agoMerge "Skip redundant motion search in 4x4 level rd loop"
Jingning Han [Wed, 17 Jul 2013 03:54:25 +0000 (20:54 -0700)]
Merge "Skip redundant motion search in 4x4 level rd loop"

11 years agoAdding read_comp_pred function.
Dmitry Kovalev [Wed, 17 Jul 2013 03:20:25 +0000 (20:20 -0700)]
Adding read_comp_pred function.

Removing old debug code from vp9_decodemv.c.

Change-Id: I51a6d5fe6a2f6583a1555e692bb1ee5a5b315d6c

11 years agoSkip redundant motion search in 4x4 level rd loop
Jingning Han [Tue, 16 Jul 2013 19:04:07 +0000 (12:04 -0700)]
Skip redundant motion search in 4x4 level rd loop

This commit makes the encoder to perform motion search only once
per reference frame type for each 4x4/4x8/8x4 block. For bus_cif
at 2000 kbps, the runtime goes from 253812ms -> 217817ms
(14% speed-up) for speed 0.

Change-Id: I5f17599ccc8cfaf93ccb4f98fcb6008af6d79e92

11 years agoadded missed replacement
Yaowu Xu [Wed, 17 Jul 2013 00:12:45 +0000 (17:12 -0700)]
added missed replacement

Change-Id: I2bce6f381fef0729b4dd5eb09ccb609f2eddd7ef

11 years agoRemoving two unused arguments from vp9_inc_mv signature.
Dmitry Kovalev [Wed, 17 Jul 2013 00:01:08 +0000 (17:01 -0700)]
Removing two unused arguments from vp9_inc_mv signature.

Change-Id: Ieffea49eb7a5e5092f21f8694c546aff69b07c6d

11 years agoChanging signature of vp9_get_pred_probs_tx_size.
Dmitry Kovalev [Tue, 16 Jul 2013 23:34:54 +0000 (16:34 -0700)]
Changing signature of vp9_get_pred_probs_tx_size.

Removing VP9_COMMON* argument and adding struct tx_probs* instead of
MACROBLOCKD*.

Change-Id: Idf61074631a90ec51eac22c8dcd977f44ac0757c

11 years agoMerge "Loop filter code cleanup."
Dmitry Kovalev [Tue, 16 Jul 2013 22:55:17 +0000 (15:55 -0700)]
Merge "Loop filter code cleanup."

11 years agoRemoving MV_GROUP_UPDATE define and corresponding code.
Dmitry Kovalev [Tue, 16 Jul 2013 22:03:00 +0000 (15:03 -0700)]
Removing MV_GROUP_UPDATE define and corresponding code.

Change-Id: I4884cdc2557d25d50c7c4f7e19b1ad8bdb93cd63

11 years agoCleaning up tile code.
Dmitry Kovalev [Tue, 16 Jul 2013 21:47:15 +0000 (14:47 -0700)]
Cleaning up tile code.

Removing tile_rows and tile_columns from VP9Common, removing redundant
constants MIN_TILE_WIDTH and MAX_TILE_WIDTH, changing signature of
vp9_get_tile_n_bits.

Change-Id: I8ff3104a38179b2c6900df965c144c1d6f602267

11 years agoLoop filter code cleanup.
Dmitry Kovalev [Tue, 16 Jul 2013 21:39:31 +0000 (14:39 -0700)]
Loop filter code cleanup.

Cosmetic code changes, renaming 'flat' local var to 'mask', removing
unused field 'blim' from loopfilter_info_n and loop_filter_info structs.

Change-Id: I51e6ccf727fe361ad9a08e29e1201aa7abd4987f

11 years agoMerge changes I40454d26,I892e76d5,I865ab3f9,I4a4bec17,I61c4351e,I37eb3559,I1031c556...
James Zern [Tue, 16 Jul 2013 21:25:32 +0000 (14:25 -0700)]
Merge changes I40454d26,I892e76d5,I865ab3f9,I4a4bec17,I61c4351e,I37eb3559,I1031c556,I8c8f1f42

* changes:
  delete vp9_loopfilter_sse2.asm
  vp9_loopfilter_intrin_sse2: cosmetics: fix indent
  delete x86/vp9_loopfilter_x86.h
  vp9_loopfilter_intrin_sse2: make some funcs static
  vp9_loopfilter_intrin_sse2: remove unused uv funcs
  vp9_loopfilter: remove uv function typedef
  filter_block_plane: reuse some constants
  vp9_loopfilter.c: make some functions static

11 years agoMerge "use consistent framerate naming"
James Zern [Tue, 16 Jul 2013 21:22:52 +0000 (14:22 -0700)]
Merge "use consistent framerate naming"

11 years agouse consistent framerate naming
James Zern [Sat, 13 Jul 2013 00:12:46 +0000 (17:12 -0700)]
use consistent framerate naming

s/frame_rate/framerate/g

Change-Id: I6fc3e088e419c5f46e3a9390dd8a2cad2677a2fc

11 years agoMerge "SSE2 16x16 inverse ADST/DCT hybrid transform"
Jingning Han [Tue, 16 Jul 2013 21:04:04 +0000 (14:04 -0700)]
Merge "SSE2 16x16 inverse ADST/DCT hybrid transform"

11 years agoMerge "Rewriting vp9_set_pred_flag_{seg_id, mbskip}."
Dmitry Kovalev [Tue, 16 Jul 2013 20:34:42 +0000 (13:34 -0700)]
Merge "Rewriting vp9_set_pred_flag_{seg_id, mbskip}."

11 years agoMerge "Moving vp9_kf_default_bmode_probs to vp9_entropymode.c."
Dmitry Kovalev [Tue, 16 Jul 2013 20:26:53 +0000 (13:26 -0700)]
Merge "Moving vp9_kf_default_bmode_probs to vp9_entropymode.c."

11 years agodelete vp9_loopfilter_sse2.asm
James Zern [Sun, 14 Jul 2013 02:08:13 +0000 (19:08 -0700)]
delete vp9_loopfilter_sse2.asm

sse2 functions are provided by vp9_loopfilter_intrin_sse2.c

Change-Id: I40454d26034e3ef915eeaf889937fe7d1b519b9b

11 years agovp9_loopfilter_intrin_sse2: cosmetics: fix indent
James Zern [Sun, 14 Jul 2013 02:07:20 +0000 (19:07 -0700)]
vp9_loopfilter_intrin_sse2: cosmetics: fix indent

Change-Id: I892e76d5ad1443b2ea0d1a7839fe26afe9c68ffb

11 years agodelete x86/vp9_loopfilter_x86.h
James Zern [Sun, 14 Jul 2013 01:50:55 +0000 (18:50 -0700)]
delete x86/vp9_loopfilter_x86.h

also remove prototype_loopfilter{,_block} defines from vp9_loopfilter.h

Change-Id: I865ab3f9436c7b1ca166f76630328abf01389405

11 years agoMerge "vp9: remove frames_{since,till}.. from MACROBLOCKD"
James Zern [Tue, 16 Jul 2013 20:00:14 +0000 (13:00 -0700)]
Merge "vp9: remove frames_{since,till}.. from MACROBLOCKD"

11 years agoMerge "Cosmetic changes in 4x4 and 8x8 fdct unit tests"
James Zern [Tue, 16 Jul 2013 19:55:42 +0000 (12:55 -0700)]
Merge "Cosmetic changes in 4x4 and 8x8 fdct unit tests"

11 years agoSSE2 16x16 inverse ADST/DCT hybrid transform
Jingning Han [Mon, 15 Jul 2013 18:05:31 +0000 (11:05 -0700)]
SSE2 16x16 inverse ADST/DCT hybrid transform

This commit enables SSE2 implementation of 16x16 inverse ADST/DCT
hybrid transform. The runtime goes from 5742 cycles -> 1821 cycles.
This provides about 1% encoding speed-up at speed 0.

Change-Id: I1678d0988bf30b9efd524877705bbb3645edb17b

11 years agoMerge "VP[89]_COMMON: remove unused near_boffset"
James Zern [Tue, 16 Jul 2013 19:17:04 +0000 (12:17 -0700)]
Merge "VP[89]_COMMON: remove unused near_boffset"

11 years agoMerge "VP9_COMMON: remove unused framerate/bitrate"
James Zern [Tue, 16 Jul 2013 19:16:37 +0000 (12:16 -0700)]
Merge "VP9_COMMON: remove unused framerate/bitrate"

11 years agoMerge "yv12config: remove YUV_TYPE"
James Zern [Tue, 16 Jul 2013 19:16:04 +0000 (12:16 -0700)]
Merge "yv12config: remove YUV_TYPE"

11 years agoMerge "Replace generated quant tables with static lookup tables."
Ronald S. Bultje [Tue, 16 Jul 2013 19:07:17 +0000 (12:07 -0700)]
Merge "Replace generated quant tables with static lookup tables."

11 years agoReplace generated quant tables with static lookup tables.
Ronald S. Bultje [Tue, 16 Jul 2013 18:01:18 +0000 (11:01 -0700)]
Replace generated quant tables with static lookup tables.

This prevents possible float rounding issues between architectures.

Change-Id: I6ed260aebd49feb4cfb5596a5370c44be5f72167

11 years agoMerge "Fix above context pointers"
John Koleszar [Tue, 16 Jul 2013 18:23:38 +0000 (11:23 -0700)]
Merge "Fix above context pointers"

11 years agoMerge "SSE2 8x8 inverse ADST/DCT transform"
Jingning Han [Tue, 16 Jul 2013 18:00:11 +0000 (11:00 -0700)]
Merge "SSE2 8x8 inverse ADST/DCT transform"

11 years agoMoving vp9_kf_default_bmode_probs to vp9_entropymode.c.
Dmitry Kovalev [Tue, 16 Jul 2013 17:54:34 +0000 (10:54 -0700)]
Moving vp9_kf_default_bmode_probs to vp9_entropymode.c.

Removing vp9_modelcontext.c.

Change-Id: If2316c58dead2708d9f95b52d9494ba4c1dd7427

11 years agoRewriting vp9_set_pred_flag_{seg_id, mbskip}.
Dmitry Kovalev [Tue, 16 Jul 2013 17:44:48 +0000 (10:44 -0700)]
Rewriting vp9_set_pred_flag_{seg_id, mbskip}.

Making implementation of vp9_set_pred_flag_{seg_id, mbskip} consistent
with vp9_get_segment_id without using confusing sub(a, b) macro. Passing
mi_row and mi_col to functions explicitly instead of replying on
mb_to_right_edge and mb_to_bottom_edge.

Change-Id: I54c1087dd2ba9036f8ba7eb165b073e807d00435

11 years agoMinor cleanup in code to fine uv tx_size.
Paul Wilkins [Tue, 16 Jul 2013 15:58:37 +0000 (16:58 +0100)]
Minor cleanup in code to fine uv tx_size.

Change-Id: I94b97a966b5efbc9a243048f1f5ddbbdc4b1846e

11 years agoFix above context pointers
John Koleszar [Tue, 16 Jul 2013 17:20:56 +0000 (10:20 -0700)]
Fix above context pointers

In the prior code, the above context pointers used for entropy
decoding were initialized on the first frame, and not updated when
the frame size changed. The per-frame code which initializes the
contexts assumes that the contexts are contiguous, leading to an
incomplete initialization when the frame is smaller. This commit
updates the pointers so that the context is contigous whenever
the frame size changes.

Change-Id: I08b53e3a30c8289491212311682ff1b8028cff6c

11 years agoMerge "vp9_convolve8_[horiz|vert]_avg"
Johann [Tue, 16 Jul 2013 16:42:52 +0000 (09:42 -0700)]
Merge "vp9_convolve8_[horiz|vert]_avg"

11 years agoMerge "Skip inter-coded block reconstruction in rd loop"
Jingning Han [Tue, 16 Jul 2013 16:03:38 +0000 (09:03 -0700)]
Merge "Skip inter-coded block reconstruction in rd loop"

11 years agoMerge "Removing and moving around constant definitions."
Dmitry Kovalev [Tue, 16 Jul 2013 07:52:53 +0000 (00:52 -0700)]
Merge "Removing and moving around constant definitions."

11 years agoMerge "Change to extend full border only when needed"
Yaowu Xu [Tue, 16 Jul 2013 04:35:32 +0000 (21:35 -0700)]
Merge "Change to extend full border only when needed"

11 years agoChange to extend full border only when needed
Yaowu Xu [Mon, 15 Jul 2013 21:59:59 +0000 (14:59 -0700)]
Change to extend full border only when needed

This is a short term optimization till we work out a decoder
implementation requiring no frame border extension.

Change-Id: I02d15bfde4d926b50a4e58b393d8c4062d1be70f

11 years agoRemoving and moving around constant definitions.
Dmitry Kovalev [Mon, 15 Jul 2013 19:26:58 +0000 (12:26 -0700)]
Removing and moving around constant definitions.

Removing unused and duplicated constants, moving them from *.h to *.c
if possible.

Change-Id: Ief4d6b984a3ca2e9b38504f0d855ed072cf7133f

11 years agoMerge "Consistent naming for loop-filter filters."
Dmitry Kovalev [Tue, 16 Jul 2013 02:21:32 +0000 (19:21 -0700)]
Merge "Consistent naming for loop-filter filters."

11 years agoMerge "Remove print_nmvcounts"
Johann [Tue, 16 Jul 2013 01:43:41 +0000 (18:43 -0700)]
Merge "Remove print_nmvcounts"

11 years agoIncrease border size from 96 to 160.
Ronald S. Bultje [Fri, 12 Jul 2013 19:59:19 +0000 (12:59 -0700)]
Increase border size from 96 to 160.

This is required because upon downscaling, if a motion vector points
partially into the UMV (e.g. all minus 1 of 64+7 pixels, i.e. 70),
then we can point up to 140 pixels into the larger-resolution (2x)
reference buffer UMV, which means the UMV for reference buffers in
downscaling needs to be 140 rounded up to the nearest multiple of 32,
i.e. 160.

Longer-term, we should probably handle the UMV differently by detecting
edge coverage on-the-fly and using a temporary buffer for edge extensions
instead of adding 160 pixels on all sides of the image (which means a
CIF image uses 3x its own area size for borders).

Change-Id: I5184443e6731cd6721fc6a5d430a53e7d91b4f7e

11 years agoInline vp9_quantize() in xform_quant().
Ronald S. Bultje [Thu, 11 Jul 2013 20:01:44 +0000 (13:01 -0700)]
Inline vp9_quantize() in xform_quant().

Cycle times:
4x4:    151 to  131 cycles (15% faster)
8x8:    334 to  306 cycles (9% faster)
16x16: 1401 to 1368 cycles (2.5% faster)
32x32: 7403 to 7367 cycles (0.5% faster)

Total encode time of first 50 frames of bus @ 1500kbps (speed 0)
goes from 1min39.2 to 1min38.6, i.e. a 0.67% overall speedup.

Change-Id: I799a49460e5e3fcab01725564dd49c629bfe935f

11 years agoMerge "Inline xform_quant() in encode_block_intra()."
Ronald S. Bultje [Tue, 16 Jul 2013 00:29:39 +0000 (17:29 -0700)]
Merge "Inline xform_quant() in encode_block_intra()."

11 years agoMerge "Neon: Update mbfilter if all vectors follow one branch."
Frank Galligan [Tue, 16 Jul 2013 00:11:55 +0000 (17:11 -0700)]
Merge "Neon: Update mbfilter if all vectors follow one branch."

11 years agoConsistent naming for loop-filter filters.
Dmitry Kovalev [Mon, 15 Jul 2013 23:01:31 +0000 (16:01 -0700)]
Consistent naming for loop-filter filters.

Renaming flatmask4 to flat_mask4, flatmask5 to flat_mask5, hevmask to
hev_mask, filter to filter4, mbfilter to filter8, wide_mbfilter to
filter16.

Change-Id: Ic61c73e59c2eee505257584867aafac99833cea1

11 years agoInline xform_quant() in encode_block_intra().
Ronald S. Bultje [Thu, 11 Jul 2013 18:35:13 +0000 (11:35 -0700)]
Inline xform_quant() in encode_block_intra().

Also inline some of the block calculations to assist the compiler to
not do silly things like calculating the same offset (or converting
between raster/transform block offset or block, mi and pixel unit)
many, many, many times.

Cycle times:
4x4:     584 ->   505 cycles (16% faster)
8x8:    1651 ->  1560 cycles (6% faster)
16x16:  7897 ->  7704 cycles (2.5% faster)
32x32: 16096 -> 15852 cycles (1.5% faster)

Overall, this saves about 0.5 seconds (1min49.8 -> 1min49.3) on the
first 50 frames of bus (speed 0) @ 1500kbps, i.e. 0.5% overall.

Change-Id: If3dd62453f8e2ab9d4ee616bc4ea956fb8874b80

11 years agoCode cleanup inside vp9_decodeframe.c.
Dmitry Kovalev [Mon, 15 Jul 2013 21:47:25 +0000 (14:47 -0700)]
Code cleanup inside vp9_decodeframe.c.

Removing unused DEC_DEBUG define and dec_debug variable. Changing function
signatures to eliminate code duplication, renaming function
mb_init_dequantizer to init_dequantizer. Also removing redundant curly
braces, and comments.

Change-Id: Ia56ee1b0be5f24abb0e878581845be8a4773c298

11 years agoNeon: Update mbfilter if all vectors follow one branch.
Frank Galligan [Fri, 12 Jul 2013 00:13:03 +0000 (17:13 -0700)]
Neon: Update mbfilter if all vectors follow one branch.

Change the mbfilter Neon code from executing both branches if all
vectors follow only one branch.

The code is about 5% faster when executing only one branch and about
1% slower when executing both branches.

-PS5: Remove local stack space from mbfilter.

Change-Id: I6a23f9b318a9f4568a2718b4c9348db988fe2182

11 years agoCosmetic changes in 4x4 and 8x8 fdct unit tests
Jingning Han [Sat, 13 Jul 2013 03:05:05 +0000 (20:05 -0700)]
Cosmetic changes in 4x4 and 8x8 fdct unit tests

Make the codes consistent with conventions.

Change-Id: Id044ed8382f83a3c3f54f9edd569f00bcd0523db

11 years agoSkip inter-coded block reconstruction in rd loop
Jingning Han [Mon, 15 Jul 2013 18:28:46 +0000 (11:28 -0700)]
Skip inter-coded block reconstruction in rd loop

Skip the inverse transform and reconstruction of inter-mode coded
blocks in the rate-distortion optimization loop, when skip_encode_sb
feature is turned on. This provides about 1% speed-up at speed 0,
and 1.5% speed-up at speed 1. No performance change in both settings.

Change-Id: I2932718bf4d007163702b61b16b6ff100cf9d007

11 years agoSkip duplicate block encoding in the rd loop
Jingning Han [Mon, 8 Jul 2013 23:48:47 +0000 (16:48 -0700)]
Skip duplicate block encoding in the rd loop

This speed feature allows the encoder to largely remove the spatial
dependency between blocks inside a 64x64 superblock, thereby removing
the need to repeatedly encode superblocks per partition type in the
rate-distortion optimization loop.

A major challenge lies in the intra modes tested in the rate-distortion
optimization loop. The subsequent blocks do not have access to the
reconstructed boundary pixels without the intermediate coding steps.
This was resolved by using the original pixels for intra prediction
in the rd loop, followed by an appropriately designed distortion
modeling on the quantization parameters. Experiments also suggested
that the performance impact is more discernible at lower bit-rate/psnr
settings. Hence a quantizer dependent threshold is applied to deactivate
skip of block coding.

For bus_cif at 2000 kbps,
speed 0: runtime 269854ms -> 237774ms (12% speed-up) at 0.05dB
         performance loss.

speed 1: runtime 65312ms  -> 61536ms, (7% speed-up) at 0.04dB
         performance loss.

This operation is currently turned on in settings of speed 1.

Change-Id: Ib689741dfff8dd38365d8c1b92860a3e176f56ec

11 years agoMerge "Fixing vp9_get_pred_context_comp_ref_p function."
Dmitry Kovalev [Mon, 15 Jul 2013 17:51:42 +0000 (10:51 -0700)]
Merge "Fixing vp9_get_pred_context_comp_ref_p function."

11 years agovp9_loopfilter_intrin_sse2: make some funcs static
James Zern [Sun, 14 Jul 2013 01:47:52 +0000 (18:47 -0700)]
vp9_loopfilter_intrin_sse2: make some funcs static

+ drop 'vp9_'

Change-Id: I4a4bec175316aab8f65c3a23bacc8362399a1357

11 years agovp9_loopfilter_intrin_sse2: remove unused uv funcs
James Zern [Sun, 14 Jul 2013 01:44:32 +0000 (18:44 -0700)]
vp9_loopfilter_intrin_sse2: remove unused uv funcs

vp9_mbloop_filter_horizontal_edge_sse2 /
vp9_mbloop_filter_vertical_edge_uv_sse2

Change-Id: I61c4351ef0cce79fa4156a47ddace781f1566869

11 years agovp9_loopfilter: remove uv function typedef
James Zern [Sun, 14 Jul 2013 01:38:28 +0000 (18:38 -0700)]
vp9_loopfilter: remove uv function typedef

loop_filter_uvfunction is unused

Change-Id: I37eb3559e9eb2808f1f29dfea429441c94c9df2a

11 years agofilter_block_plane: reuse some constants
James Zern [Sun, 14 Jul 2013 01:21:05 +0000 (18:21 -0700)]
filter_block_plane: reuse some constants

+ light const application
+ limit scope of params to build_lfi

Change-Id: I1031c556aec160a690921dc10e7aa8a707f43ecd

11 years agovp9_loopfilter.c: make some functions static
James Zern [Sun, 14 Jul 2013 01:14:03 +0000 (18:14 -0700)]
vp9_loopfilter.c: make some functions static

+ drop 'vp9_'

Change-Id: I8c8f1f421f7fc84d2efb80349cd725de3c9bf6bd

11 years agovp9: remove frames_{since,till}.. from MACROBLOCKD
James Zern [Sat, 13 Jul 2013 18:19:28 +0000 (11:19 -0700)]
vp9: remove frames_{since,till}.. from MACROBLOCKD

frames_since_golden / frames_till_alt_ref_frame are unused.

Change-Id: I348e7689d4d75412cf4de7703d885be942e4a26b

11 years agoVP9_COMMON: remove unused framerate/bitrate
James Zern [Sat, 13 Jul 2013 00:08:39 +0000 (17:08 -0700)]
VP9_COMMON: remove unused framerate/bitrate

+ VP8_COMMON: place them under CONFIG_POSTPROC_VISUALIZER

Change-Id: I2702d5a3e1134b9c5f7ddc14b4173955a400f2cf

11 years agoSSE2 8x8 inverse ADST/DCT transform
Jingning Han [Sat, 13 Jul 2013 03:54:14 +0000 (20:54 -0700)]
SSE2 8x8 inverse ADST/DCT transform

This commit enables SSE2 implementation of 8x8 inverse ADST/DCT
transform. The runtime goes from 1216 cycles -> 266 cycles.
For bus_cif at 2000 kbps, the overall runtime reduces from
253707ms -> 248430ms, i.e., 2% speed-up at speed 0.

Change-Id: Ib0372e17e9162d7b11a10d653b1c8be547c878fb

11 years agoVP[89]_COMMON: remove unused near_boffset
James Zern [Sat, 13 Jul 2013 01:08:49 +0000 (18:08 -0700)]
VP[89]_COMMON: remove unused near_boffset

Change-Id: If9b9ca703b997312df85241a0758d414cfdc5228

11 years agoUsing vp9_copy and vp9_zero instead of custom code.
Dmitry Kovalev [Wed, 3 Jul 2013 00:19:16 +0000 (17:19 -0700)]
Using vp9_copy and vp9_zero instead of custom code.

Change-Id: Id9b6ceeddca3f9b34bfada5c499b1e7a2f42c30b

11 years agoFixing vp9_get_pred_context_comp_ref_p function.
Dmitry Kovalev [Sat, 13 Jul 2013 00:46:02 +0000 (17:46 -0700)]
Fixing vp9_get_pred_context_comp_ref_p function.

Adding missed parenthesis around boolean expressions. Bitstream is changed.
Regenerating test vectors.

Change-Id: I4cc00b761e9473f92f180a9fc3a0c607f0aaae56

11 years agoMerge "Removing redundant call to set_mi_row_col."
Dmitry Kovalev [Sat, 13 Jul 2013 00:08:23 +0000 (17:08 -0700)]
Merge "Removing redundant call to set_mi_row_col."

11 years agoRemoving redundant call to set_mi_row_col.
Dmitry Kovalev [Fri, 12 Jul 2013 23:25:23 +0000 (16:25 -0700)]
Removing redundant call to set_mi_row_col.

This function is actually called from set_offsets which is called right
before vp9_read_mode_info.

Change-Id: Ibb9d5ad606194bc80eab264fad85b31c9dfd8f77

11 years agovp9_convolve8_[horiz|vert]_avg
Johann [Fri, 12 Jul 2013 23:12:58 +0000 (16:12 -0700)]
vp9_convolve8_[horiz|vert]_avg

Super basic conversion from the other implementations. Any changes to
one should be trivial to copy over keep in sync.

Change-Id: I1720b4128e0aba4b2779e3761f6494f8a09d3ea8

11 years agoMerge "Fix a build issue"
Yaowu Xu [Fri, 12 Jul 2013 23:17:22 +0000 (16:17 -0700)]
Merge "Fix a build issue"

11 years agoMerge "Adding struct tx_probs and struct tx_counts to cleanup the code."
Dmitry Kovalev [Fri, 12 Jul 2013 23:02:09 +0000 (16:02 -0700)]
Merge "Adding struct tx_probs and struct tx_counts to cleanup the code."

11 years agoMerge "Making functions read_{inter, intra}_segment_id more similar."
Dmitry Kovalev [Fri, 12 Jul 2013 22:50:02 +0000 (15:50 -0700)]
Merge "Making functions read_{inter, intra}_segment_id more similar."

11 years agoMerge "vp9_postproc: remove useless self-assign"
James Zern [Fri, 12 Jul 2013 22:41:41 +0000 (15:41 -0700)]
Merge "vp9_postproc: remove useless self-assign"

11 years agoyv12config: remove YUV_TYPE
James Zern [Fri, 12 Jul 2013 21:11:53 +0000 (14:11 -0700)]
yv12config: remove YUV_TYPE

this was never fleshed out in the context of VP8, for which it was
added. for VP9 it has no meaning.

Change-Id: Iba2ecc026d9e947067b96690245d337e51e26eff