Commit Graph

828 Commits

Author SHA1 Message Date
Dmitry Kovalev
b2fc6fa969 Adding update_tx_counts function.
Moving common encoder/decoder code to update_tx_counts. Also renaming
vp9_get_pred_probs_tx_size to get_tx_probs2 and adding get_tx_probs to
call vp9_get_pred_context_tx_size inside read_selected_tx_size only once
(twice before).

Change-Id: Ia50247f3893de88ef8e9041b0d44be44a40aaa4d
2013-07-22 14:57:43 -07:00
Dmitry Kovalev
ee1fe2f750 Merge "Removing pre probabilities from FRAME_CONTEXT." 2013-07-20 22:50:32 -07:00
Dmitry Kovalev
8962d975b2 Merge "Moving all loop filter related variables into new struct." 2013-07-20 22:45:24 -07:00
Dmitry Kovalev
39342db138 Merge "Consistent names for inter mode probabilities and encodings." 2013-07-20 22:40:51 -07:00
Dmitry Kovalev
f66821afbb Merge "Removing frame_type field from MACROBLOCKD struct." 2013-07-20 22:40:06 -07:00
Dmitry Kovalev
7e703de729 Removing pre probabilities from FRAME_CONTEXT.
Using cm->frame_contexts[cm->frame_context_idx] as source of previous
probabilities.

Change-Id: Ie03778acf0e7bebdc3a1f6a51854d4a0712f24a1
2013-07-19 17:33:10 -07:00
Dmitry Kovalev
ee1771ebaa Moving all loop filter related variables into new struct.
Adding loopfilter struct with fields from MACROBLOCKD and VP9Common.
Eventually it will be moved to vp9_loopfilter.h for better code structure.

Change-Id: Iaf5fb71c33719cdfa1b991f671caf071be9ea035
2013-07-19 16:19:10 -07:00
Dmitry Kovalev
d6e74e0d59 Moving vp9_reader into decode_tiles function.
Change-Id: Ic741054836d6c1b89c4f1c75cc6bd938a7d56723
2013-07-19 12:27:56 -07:00
Dmitry Kovalev
e71a4a77bb Merge "Renaming TXFM_MODE to TX_MODE (like TX_SIZE, TX_TYPE)." 2013-07-19 12:14:32 -07:00
Dmitry Kovalev
97e96bc4e9 Removing frame_type field from MACROBLOCKD struct.
Change-Id: Ia4e83913251c1cdc7aa2abd64bf01ecb1a962119
2013-07-19 11:55:36 -07:00
Dmitry Kovalev
c0eb57406c Renaming TXFM_MODE to TX_MODE (like TX_SIZE, TX_TYPE).
Moving TX_MODE enum to vp9_enums.h. Renaming txfm_mode variables to
tx_mode.

Change-Id: I459d1af6dd928ce7fccdf8ce30b6f1ca057bef92
2013-07-19 11:37:13 -07:00
Dmitry Kovalev
afe43d4089 Removing redundant VP9_COMMON* from function signatures.
Functions: vp9_get_pred_context_switchable_interp,
           vp9_get_pred_context_intra_inter,
           vp9_get_pred_context_single_ref_p1,
           vp9_get_pred_context_single_ref_p2.

Change-Id: I3d6fb8aee23c9062270768e1e6da416dd9bb8f96
2013-07-19 11:20:49 -07:00
Dmitry Kovalev
bc7acb134b Consistent names for inter mode probabilities and encodings.
Renaming vp9_sb_mv_ref_tree to vp9_inter_mode_tree, and
vp9_sb_mv_ref_encoding_array to vp9_inter_mode_encodings.

Change-Id: I0e91fbf81350d3ec5a2599064c74089b5d06133a
2013-07-19 10:40:04 -07:00
Dmitry Kovalev
13253d6121 Merge "Removing kf_{y, uv}_mode_prob arrays from VP9Common." 2013-07-19 01:00:46 -07:00
Yaowu Xu
67fb0679ee Merge "Merge scale_factors and scale_factors_uv." 2013-07-18 17:50:34 -07:00
Ronald S. Bultje
5ebe503f04 Merge scale_factors and scale_factors_uv.
This prevents a duplicate memcpy of a 128-byte struct every time
set_scale_factors() is called (which is a lot), thus leading to a
decrease from 3.7 MB to 1.85 MB of struct copying per 64x64 block
RD/partition loop.

Overall, this decreases encoding time of the first 50 frames of bus
@ 1500kbps (speed 0) from 1min5.9 to 1min4.9, i.e. about a 1.5%
overall speedup. We can likely get more gains by removing the copy
of the other struct (and replacing it with an indexing) as well.

Change-Id: I3dceb7e79f71e6fe911b11cc994cf89a869dde7a
2013-07-18 14:10:56 -07:00
Dmitry Kovalev
3de20f3ea9 Removing unused members of VP9Decompressor: mbc, prob_skip_false.
Change-Id: Id5480a4fd56c184ad046c2192b30d190debb3de0
2013-07-18 11:29:34 -07:00
Dmitry Kovalev
f9f453ec8d Removing kf_{y, uv}_mode_prob arrays from VP9Common.
These arrays have constant values (no any updates). Removing two
corresponding memcpy calls. Making a little cleanup in vp9_entropymode.h
as well: removing redundant 'extern' keyword and moving all function
declarations at the end.

Change-Id: Ia16b38b46aec2e2500f5df29c40a297ae241dede
2013-07-17 16:50:52 -07:00
Dmitry Kovalev
a7a1e96136 Merge changes Ieffea49e,Idf610746
* changes:
  Removing two unused arguments from vp9_inc_mv signature.
  Changing signature of vp9_get_pred_probs_tx_size.
2013-07-17 14:44:20 -07:00
Dmitry Kovalev
102632aab1 Merge "Adding read_comp_pred function." 2013-07-17 14:26:34 -07:00
Dmitry Kovalev
6638b6f63f Merge "Removing MV_GROUP_UPDATE define and corresponding code." 2013-07-16 21:09:00 -07:00
Dmitry Kovalev
851a911158 Adding read_comp_pred function.
Removing old debug code from vp9_decodemv.c.

Change-Id: I51a6d5fe6a2f6583a1555e692bb1ee5a5b315d6c
2013-07-16 20:20:25 -07:00
Dmitry Kovalev
41ae3d02d4 Removing two unused arguments from vp9_inc_mv signature.
Change-Id: Ieffea49eb7a5e5092f21f8694c546aff69b07c6d
2013-07-16 17:01:08 -07:00
Dmitry Kovalev
5b65a71cdc Changing signature of vp9_get_pred_probs_tx_size.
Removing VP9_COMMON* argument and adding struct tx_probs* instead of
MACROBLOCKD*.

Change-Id: Idf61074631a90ec51eac22c8dcd977f44ac0757c
2013-07-16 16:34:54 -07:00
Dmitry Kovalev
3997da0d35 Removing MV_GROUP_UPDATE define and corresponding code.
Change-Id: I4884cdc2557d25d50c7c4f7e19b1ad8bdb93cd63
2013-07-16 15:03:00 -07:00
Dmitry Kovalev
9482a0bf10 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
2013-07-16 14:47:15 -07:00
Dmitry Kovalev
5de96b3ce6 Merge "Rewriting vp9_set_pred_flag_{seg_id, mbskip}." 2013-07-16 13:34:42 -07:00
James Zern
3a7c2665d0 Merge "yv12config: remove YUV_TYPE" 2013-07-16 12:16:04 -07:00
Dmitry Kovalev
863138a2ad 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
2013-07-16 10:44:48 -07:00
Dmitry Kovalev
e8e7620a1f Merge "Removing and moving around constant definitions." 2013-07-16 00:52:53 -07:00
Yaowu Xu
5b915ebd92 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
2013-07-15 20:52:13 -07:00
Dmitry Kovalev
ca75f1255f Removing and moving around constant definitions.
Removing unused and duplicated constants, moving them from *.h to *.c
if possible.

Change-Id: Ief4d6b984a3ca2e9b38504f0d855ed072cf7133f
2013-07-15 19:26:30 -07:00
Dmitry Kovalev
2c31729839 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
2013-07-15 14:47:25 -07:00
Dmitry Kovalev
429070987a Using vp9_copy and vp9_zero instead of custom code.
Change-Id: Id9b6ceeddca3f9b34bfada5c499b1e7a2f42c30b
2013-07-12 18:07:43 -07:00
Dmitry Kovalev
31403080ff Merge "Removing redundant call to set_mi_row_col." 2013-07-12 17:08:23 -07:00
Dmitry Kovalev
3c94fffdb0 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
2013-07-12 16:25:23 -07:00
Dmitry Kovalev
aa518af8c7 Merge "Adding struct tx_probs and struct tx_counts to cleanup the code." 2013-07-12 16:02:09 -07:00
Dmitry Kovalev
444c8d4c53 Merge "Making functions read_{inter, intra}_segment_id more similar." 2013-07-12 15:50:02 -07:00
James Zern
4fc6c88e9c 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
2013-07-12 15:25:48 -07:00
Dmitry Kovalev
cc662dd768 Adding struct tx_probs and struct tx_counts to cleanup the code.
Also removing unused declarations from vp9_entropymode.h file.

Change-Id: Ib9c5826db3584a32f6bb3297a76c522b99d83402
2013-07-12 15:22:38 -07:00
Dmitry Kovalev
db0d603b1c Making functions read_{inter, intra}_segment_id more similar.
Change-Id: I51f9ac910834f2d7aba2be4f7ffbce597e61a144
2013-07-12 14:50:33 -07:00
James Zern
0195fb53cb vp9: consistent 'log2' variable naming
lg2 -> log2

Change-Id: I0602ddff49e42c9c40c29c084d04b7592b9f8edf
2013-07-12 11:37:43 -07:00
Dmitry Kovalev
dd150e8ea9 Removing redundant code mostly from vp9_pred_common.{h, c}.
Removing redundant function arguments and curly braces.

Change-Id: I46e02561f33fe02e84a3b19756f03b9504bd6a1b
2013-07-11 18:39:10 -07:00
Dmitry Kovalev
c4ad3273c7 Moving segmentation related vars into separate struct.
Adding segmentation struct to vp9_seg_common.h. Struct members are from
macroblockd and VP9Common structs. Moving segmentation related constants
and enums to vp9_seg_common.h.

Change-Id: I23fabc33f11a359249f5f80d161daf569d02ec03
2013-07-11 11:57:57 -07:00
Dmitry Kovalev
704afd0c7a Adding read_compressed_header function.
Splitting setup_txfm_mode into read_tx_mode and read_tx_probs.

Change-Id: I5b4fe48698d56490857d32eafcaeb4291f208479
2013-07-10 10:27:50 -07:00
Jim Bankoski
fb027a7658 removing case statements around prediction entropy coding
Removes SEG_ID
Removes MBSKIP
Removes SWITCHABLE_INTERP
Removes INTRA_INTER
Removes COMP_INTER_INTER
Removes COMP_REF_P
Removes SINGLE_REF_P1
Removes SINGLE_REF_P2
Removes TX_SIZE

Change-Id: Ie4520ae1f65c8cac312432c0616cc80dea5bf34b
2013-07-09 20:10:16 -07:00
John Koleszar
f0d9f10d24 Remove all asm offset files from VP9
The files are empty and unused.

Change-Id: Ieb4242d14273efdf24149bda33f9591540bba06a
2013-07-09 14:26:53 -07:00
Scott LaVarnway
69d1d1d865 Removed unnecessary xd->mode_info_context assignment
mi is xd->mode_info_context

Change-Id: Ib101be922b695205ec57b5ce1828ba19bde5b41c
2013-07-09 13:41:34 -04:00
Jim Bankoski
7f960223ea cleanup read_mode_info if (1)
Change-Id: I851af23c787a2d3637d84244b9f75063cbf782f1
2013-07-09 09:04:45 -07:00
Jim Bankoski
c36d502e92 decoder speedup - get-segment-id only if segmentation enabled
Change-Id: I9355f8446660aeb7dfdbc5ee56635c791ac35e95
2013-07-09 08:52:30 -07:00
Dmitry Kovalev
c6c279aff0 Merge "Using mi_cols instead of mb_cols." 2013-07-08 20:09:19 -07:00
Dmitry Kovalev
1c65c580d6 Merge "Refactoring setup_pre_planes function." 2013-07-08 20:08:05 -07:00
Dmitry Kovalev
6254c8d780 Merge "Calling set_partition_seg_context() instead of code duplication." 2013-07-08 20:07:06 -07:00
Dmitry Kovalev
b7559258a4 Using mi_cols instead of mb_cols.
Eliminating usage of mb-units, switching to mi-units. Adding
ALIGN_POWER_OF_TWO macro.

Change-Id: I2491c969f713207c062011878b57e4e531818607
2013-07-08 14:54:04 -07:00
Dmitry Kovalev
f72e072555 Refactoring setup_pre_planes function.
Removing set_refs, adding set_ref function.

Change-Id: I5635c478b106ae4e57d317f1c83d929644307e63
2013-07-03 17:42:01 -07:00
Dmitry Kovalev
430bd0c94a Merge "Replacing 64 / MI_SIZE with MI_BLOCK_SIZE." 2013-07-03 14:16:02 -07:00
Dmitry Kovalev
2ad62c9312 Calling set_partition_seg_context() instead of code duplication.
Change-Id: I65be6acc54c99688fd1f0c946cec3511514b8555
2013-07-03 11:15:58 -07:00
Dmitry Kovalev
5a21de8418 Replacing 64 / MI_SIZE with MI_BLOCK_SIZE.
Change-Id: I32276552b3ea6dc1dce8e298be114cfe1019b31c
2013-07-03 10:54:50 -07:00
Dmitry Kovalev
be77f6bbbf Removing redundant struct from union b_mode_info.
Change-Id: I08fc6e474ff2c12cfa065bae4989c724276e2c83
2013-07-02 16:51:57 -07:00
Deb Mukherjee
9c20cedd93 Clean-up in forward update to use mapping tables
Uses mapping tables instead of complicated modulo/division
operations for prob mapping for forward updates.

No bit-stream or output change.

Change-Id: Ifd9ce8ac1437835c305c94f64c18273c7a68f546
2013-07-02 12:48:20 -07:00
Ronald S. Bultje
3cc6eb7c00 Merge "Make get_coef_context() branchless." 2013-07-02 11:48:15 -07:00
Dmitry Kovalev
3140c443e4 Merge "Removing vp9_mbpitch.c, moving vp9_setup_block_dptrs to vp9_block.h." 2013-07-02 11:31:35 -07:00
Dmitry Kovalev
18fd43601c Merge "Additional vp9_decodemv.c cleanup." 2013-07-02 11:31:23 -07:00
Dmitry Kovalev
1ac0540296 Removing vp9_mbpitch.c, moving vp9_setup_block_dptrs to vp9_block.h.
Change-Id: Ia547a5dd7650b771fd00edd673ab9f920270731c
2013-07-01 17:28:08 -07:00
Ronald S. Bultje
26b6318de8 Make get_coef_context() branchless.
This should significantly speedup cost_coeffs(). Basically what the
patch does is to make the neighbour arrays padded by one item to
prevent an eob check in get_coef_context(), then it populates each
col/row scan and left/top edge coefficient with two times the same
neighbour - this prevents a single/double context branch in
get_coef_context(). Lastly, it populates neighbour arrays in pixel
order (rather than scan order), so we don't have to dereference the
scantable to get the correct neighbours.

Total encoding time of first 50 frames of bus (speed 0) at 1500kbps
goes from 2min10.1 to 2min5.3, i.e. a 2.6% overall speed increase.

Change-Id: I42bcd2210fd7bec03767ef0e2945a665b851df56
2013-07-01 16:34:10 -07:00
Dmitry Kovalev
7ed754995d Additional vp9_decodemv.c cleanup.
Change-Id: I5b413bc0884af0bda38c05332d86490103905b3b
2013-07-01 16:14:13 -07:00
Yaowu Xu
ba3b2604f0 Merge "Quantize (64-bit only, for now) SSSE3 SIMD." 2013-07-01 15:58:57 -07:00
Dmitry Kovalev
6411228aca Merge "Removing vp9_modecont.{h, c}." 2013-07-01 14:58:48 -07:00
Dmitry Kovalev
a4e14d7f9f Merge "Adding vp9_rb_read_signed_literal function." 2013-07-01 14:58:20 -07:00
Dmitry Kovalev
33fffc155e Merge "Inlining decode_atom, decode_sb_intra, and decode_sb." 2013-07-01 14:58:06 -07:00
Dmitry Kovalev
2381d46480 Merge "Cleanup inside vp9_decodemv.c." 2013-07-01 14:50:32 -07:00
Ronald S. Bultje
7353ceab9d Quantize (64-bit only, for now) SSSE3 SIMD.
Total encoding time for first 50 frames of bus (speed 0) @ 1500kbps
goes 2min34.8 to 2min14.4, i.e. a 10.4% overall speedup. The code is
x86-64 only, it needs some minor modifications to be 32bit compatible,
because it uses 15 xmm registers, whereas 32bit only has 8.

Change-Id: I2df53770c2e850813ffa713e1a91b45b0082b904
2013-07-01 11:36:07 -07:00
Dmitry Kovalev
2ab3bc8871 Removing vp9_modecont.{h, c}.
Moving vp9_default_inter_mode_probs array to vp9_entropymode.c.

Change-Id: I88ebda86ccc07f2a43c6c01d4b37898214cfb6de
2013-07-01 10:17:15 -07:00
Dmitry Kovalev
e5e15eb38e Adding vp9_rb_read_signed_literal function.
Change-Id: I30ea91561ffac7e5065ba41b2d3ab7dedb720593
2013-07-01 02:09:36 -07:00
Johann
6098e359f4 Merge "add Neon optimized add constant residual functions" 2013-06-28 19:50:38 -07:00
Ronald S. Bultje
a487af8d35 Merge "Inline vp9_get_coef_context() (and remove vp9_ prefix)." 2013-06-28 19:37:11 -07:00
chm
a83cfd4da1 add Neon optimized add constant residual functions
- Add add_constant_residual_8x8 16x16 32x32 functions
- Tested under RealView debugger enviroment

Change-Id: I5c3a432f651b49bf375de6496353706a33e3e68e
2013-06-28 19:06:51 -07:00
Dmitry Kovalev
1947828c3d Inlining decode_atom, decode_sb_intra, and decode_sb.
Change-Id: I41711bb994f542c5ba3d0cefd9b2e79db3c2c3a1
2013-06-28 18:34:30 -07:00
Dmitry Kovalev
15fefced7d Cleanup inside vp9_decodemv.c.
Adding read_skip_coeff function. Renaming decode_mv to read_mv for
consistency with another function names. Removing redundant function
arguments. Renaming kfread_modes to read_intra_mode_info, read_mb_modes_mv
to read_inter_mode_info, vp9_decode_mb_mode_mv to vp9_read_mode_info,
vp9_decode_mode_mvs_init to vp9_prepare_read_mode_info. Inlining function
mb_mode_mv_init inside vp9_prepare_read_mode_info.

Change-Id: Ifee05d333da4cd331d4aff40ce41ccd9b70e494a
2013-06-28 15:32:31 -07:00
Dmitry Kovalev
59070f6e3c Merge "Removing CONFIG_DEBUG checks on assertions." 2013-06-28 14:03:28 -07:00
Ronald S. Bultje
d00b8e5f82 Inline vp9_get_coef_context() (and remove vp9_ prefix).
Makes cost_coeffs() a lot faster:
4x4: 236 -> 181 cycles
8x8: 888 -> 588 cycles
16x16: 3550 -> 2483 cycles
32x32: 17392 -> 12010 cycles

Total encode time of first 50 frames of bus (speed 0) @ 1500kbps goes
from 2min51.6 to 2min43.9, i.e. 4.7% overall speedup.

Change-Id: I16b8d595946393c8dc661599550b3f37f5718896
2013-06-28 10:40:21 -07:00
Dmitry Kovalev
8e6ce6bb9e Removing CONFIG_DEBUG checks on assertions.
Adding CHECK_MEM_ERROR macro to vp9_common.h and removing two duplicated
ones from vp9_onyx_int.h and vp9_onyxd_int.h.

Change-Id: I916afec61b3019f18193135dac7c35ed0f89b8b6
2013-06-28 10:36:20 -07:00
Dmitry Kovalev
3231da0a9e Decoder's code cleanup.
Using vp9_set_pred_flag function instead of custom code, adding
decode_tokens function which is now called from decode_atom,
decode_sb_intra, and decode_sb.

Change-Id: Ie163a7106c0241099da9c5fe03069bd71f9d9ff8
2013-06-27 16:15:43 -07:00
Dmitry Kovalev
a3664258c5 Merge "General cleanup in segmentation-related code." 2013-06-27 14:57:07 -07:00
Dmitry Kovalev
be83ef3104 Merge "Moving subexp encoding functions in separate vp9_dsubexp.c file." 2013-06-27 14:55:18 -07:00
Jingning Han
fc1cfd8e32 Merge "Make intra predictor reference buffer configurable" 2013-06-26 19:02:02 -07:00
Jingning Han
861cb06c67 Make intra predictor reference buffer configurable
This commit enables configurable reference buffer pointer for intra
predictor. This allows later removal of spatial dependency between
blocks inside a 64x64 superblock in the rate-distortion optimization
loop.

Change-Id: I02418c2077efe19adc86e046a6b49364a980f5b1
2013-06-26 17:17:21 -07:00
Dmitry Kovalev
be07485e9a General cleanup in segmentation-related code.
Using consistent function and variable names.

Change-Id: I2deb3fded8797453a2081836c9ce2e79ade06eb7
2013-06-26 10:27:28 -07:00
Dmitry Kovalev
6fb10f2de4 Renaming "nmv" to "mv".
Change-Id: I8299f55c3b930221e52c2237f2ddea65b94fd33b
2013-06-25 15:19:18 -07:00
Dmitry Kovalev
9467571777 Moving subexp encoding functions in separate vp9_dsubexp.c file.
Change-Id: Idbb2ea80f764fa830fe2ddcfc54ef7fe232f05a8
2013-06-25 11:53:17 -07:00
Dmitry Kovalev
87ee34aacb Removing unused code.
Removing block index (ib) parameter from get_tx_type_{8x8, 16x16}
functions.

Change-Id: Ia213335aae7a7cb027f97b9cc9b04519840250f1
2013-06-25 10:17:19 -07:00
Dmitry Kovalev
40141681c0 Removing find_seg_id and using vp9_get_pred_mi_segid instead.
Change-Id: Ia40229903c08f14020e90e94cfdf494aba1be827
2013-06-21 13:05:10 -07:00
Dmitry Kovalev
8283d893eb Merge "Renaming 'nmv' to 'mv' for several functions." 2013-06-20 10:17:12 -07:00
Dmitry Kovalev
77186ee61a Merge "Function decomposition inside vp9_decodemv.c file." 2013-06-20 10:17:05 -07:00
Yaowu Xu
6e3b34bdc3 Removed a number of unnecessary check on ref_frame
Since intra block decoding is handled by decode_sb_intra() separately.

Change-Id: I42d757884714084c92fc23ec5d35d4dc946f4b15
2013-06-19 17:53:07 -07:00
Dmitry Kovalev
15eaba103d Function decomposition inside vp9_decodemv.c file.
Change-Id: Iab96e6a50aec543c63e15cd134f9d5f01ca7ceff
2013-06-19 13:09:34 -07:00
Yaowu Xu
12180c8329 Remove unnecessary copying of probs.
Change-Id: Ic924f07c6ab0c929c6cdf11880d3c625806e272c
2013-06-18 23:02:27 -07:00
Dmitry Kovalev
87e1fa7627 Renaming 'nmv' to 'mv' for several functions.
Change-Id: I183a38997a9d01e4a1b869e92509f6915216fa09
2013-06-18 18:28:10 -07:00
Dmitry Kovalev
f231a3edee Merge "Code cleanup inside the decoder code." 2013-06-18 10:16:46 -07:00
Dmitry Kovalev
6f06450cec Code cleanup inside the decoder code.
Change-Id: I927c7223996cdeb44f46e0e6c2e2054d458c300b
2013-06-17 17:19:00 -07:00
Dmitry Kovalev
686b99741c Removing vp9_invtrans.{c, h} files.
Moving single function from vp9_invtrans.c to vp9_encodemb.c.

Change-Id: I26bf6bb90de342a3036c0dbfba78a7dd75a61fe7
2013-06-17 16:09:03 -07:00
John Koleszar
61ecc282b5 Merge "Remove unused need_to_clamp_mvs" 2013-06-17 10:31:58 -07:00
John Koleszar
c2da365484 Merge "Remove constant vp9_coef_update_prob table" 2013-06-14 17:07:19 -07:00
John Koleszar
0f7a66e962 Remove constant vp9_coef_update_prob table
All elements of this table are equal to 252, so replace it with a
single constant VP9_COEF_UPDATE_PROB.

Change-Id: I1e2d1d284326ce6df9899a740c2fc344b3ec81c9
2013-06-14 15:12:31 -07:00
John Koleszar
1dfc717ba8 Merge "Avoid inverse transform/recon without residual" 2013-06-14 08:49:58 -07:00
John Koleszar
a5657f2cd6 Avoid inverse transform/recon without residual
Avoid calling decode_block, inverse transform/add in the block is
a skip block for SBs smaller than 8x8 and intra-coded SBs.

Change-Id: I1684182f4a0050c8d6bb46cba6830d9425e7127d
2013-06-13 16:39:00 -07:00
Frank Galligan
a136b87185 Fix win64 warning.
- size_t is 64bits in win64. int is 32 bits.

Change-Id: I4e756427ad42c841098a01a216469f65313987e7
2013-06-13 16:27:21 -07:00
John Koleszar
8e47093c9e Remove unused need_to_clamp_mvs
This flag no longer needed.

Change-Id: If13482015ddb92d225792ea5c0ee455d2285d1f6
2013-06-12 16:50:14 -07:00
John Koleszar
ceee4563d6 Remove unused vp9_idct_add_{y,uv}_block
These functions are not used, and appear to have been superceded.

Change-Id: I86fe51b088264f6b1b8d4d232bba97b371b98120
2013-06-12 12:24:22 -07:00
John Koleszar
76e0c95dd9 Trap reference frames of invalid size
A corrupt bitstream could refer to a reference frame that has no size.

Change-Id: I56c3b71a9dbb58b498e9969403e289c0e574f948
2013-06-11 15:16:38 -07:00
John Koleszar
2bcc473602 decode_tiles(): validate buffer reads
Previous code indexed using the tile length coded in the bitstream
without checking that the read would be valid.

Change-Id: Ia5047762223a4f80d75016dd546dc2ef18b6887d
2013-06-11 14:52:32 -07:00
Deb Mukherjee
a4d906c132 Minor change in forward updates
Removes the case of coding prob = 0 for forward updates, since that
is not an allowed probability to code.
Slightly improves efficiency but may not matter in practice.

Change-Id: I3b4caf82e8f0891992f0706d4089cc5a27568dba
2013-06-11 10:33:07 -07:00
John Koleszar
9b78ed8229 Merge "Using network byte order (big-endian) to encode tile size." into experimental 2013-06-10 16:48:11 -07:00
Deb Mukherjee
51a7c7631d Merge "New probs for filters/tx_size and a few others" into experimental 2013-06-10 16:39:43 -07:00
Deb Mukherjee
a43ff15399 New probs for filters/tx_size and a few others
* New probs for subpel filters/tx_count
* Makes a change to not reset to defaults for the tx_size
probs if an intermediate frame reverts to using a fixed tx_size.
* A few updates to the parameters for backward adaptation for mode/mv
* some cosmetic cleanups

derf300: +0.06%

Change-Id: I22994d659bc31ca7a4fc8820fde24001e64a2920
2013-06-10 16:38:47 -07:00
Dmitry Kovalev
85381e3416 Using network byte order (big-endian) to encode tile size.
This is consistent with uncompressed header encoding.

Change-Id: Iccf40a44b493ed36ee085b81ed56f7952cde70a9
2013-06-10 16:13:08 -07:00
John Koleszar
0fcb625e35 Remove remnants of VP8 profiles/versions
Remove the bilinear filter mode, and the no-loopfilter mode, and the
related vp9_setup_version() function.

Change-Id: I32311367812faf37863131df3af37d63d03973d7
2013-06-10 15:55:03 -07:00
Adrian Grange
eac344ef10 Implement intra-coded frames
Implements ability to signal and decode frames that are
encoded using only intra coding modes. Only the decode
side has been implemented here.

Change-Id: I53ac6a8d90422cd08ba389e5236e15b45f9e93de
2013-06-10 11:43:16 -07:00
Deb Mukherjee
17da2cab78 TX_SIZE contexts simplification.
Reduces TX_SIZE contexts to 2 for each kind. The code is
cleaner and there is hardly any performance difference with
more than two contexts.

Results: almost neutral

Change-Id: I17656bd6db76224ae2856adf882504560e7dbaa4
2013-06-08 12:32:26 -07:00
Dmitry Kovalev
f576e79272 Merge "Uncompressed header: new encoding for frame size" into experimental 2013-06-07 18:22:53 -07:00
Yaowu Xu
b7da6d0c5a Merge "Handle partition type coding of boundary blocks" into experimental 2013-06-07 18:16:16 -07:00
Dmitry Kovalev
4053fde7ee Uncompressed header: new encoding for frame size
For key frames everything is the same as before. For inter frames we try
to reference last/golden/altref frame size. If there is no match then the
actual size is encoded. Also we don't allow zero width and height anymore.

Change-Id: I49d791fd94af749c823579b0c5ef17c961372678
2013-06-07 18:09:29 -07:00
Adrian Grange
07a5777bde Frame header changes to support intra_only frames
Made changes to the frame header to write the sync
code in the frame header for a non-displayable,
intra-only frame.

Extended reset_frame_context to 2-bits.

(Submitting on behalf of Dmitri)

Change-Id: Ie836ae0df9ed572fb4f08aabe9351a555c4f3b96
2013-06-07 16:19:34 -07:00
Deb Mukherjee
21401942b0 Coding tx-size selection by use of spatial context
Adds coding of transform size within a frame by use of context
of transform sizes selected in left and above blocks.

Also incorporates code for generating stats.

TODO: generate and incorporate new default stats

Change-Id: I6a7af099f6ad61d448521d9a51167aedaf638ed6
2013-06-07 16:07:58 -07:00
Deb Mukherjee
869a39ba60 Cleans up mbskip encoding
Refactors mbskip coding to be compatible with coding of the rest of
the symbols. Adds forward/backward adaptation and removes a lot of
the legacy code.

Results:
fast50: +1.6%
derfraw300: +0.317%

Change-Id: I395a2976d15af044d3b8ded5acfa45f6f065f980
2013-06-07 16:00:26 -07:00
Ronald S. Bultje
36f02bf3c1 Add slightly more colorspace variations.
Change-Id: Ib44541fbbdcf71ec881814bd6715ea1c6bd82cf4
2013-06-07 14:45:49 -07:00
Dmitry Kovalev
6533ac7352 Merge "Preparation to new frame size encoding." into experimental 2013-06-07 14:42:49 -07:00
Jingning Han
78b8190cc7 Handle partition type coding of boundary blocks
The partition types of blocks sitting on the frame boundary are
constrained by the block size and the position of each sub-block
relative to the frame. Hence we use truncated probability models
to handle the coding of such information.

100 frames run:
yt 0.138%

Change-Id: I85d9b45665c15280069c0234ea6f778af586d87d
2013-06-07 14:19:40 -07:00
Ronald S. Bultje
6462afe088 Fix ref_frame segment feature when it is intra.
Change-Id: Ifbf790c14cee0c08a27f6728e3c637404e1f8477
2013-06-07 13:57:55 -07:00
Paul Wilkins
340c7a48e6 Change to segment ref frame feature.
Simplify feature to only support a single reference frame
instead of a mask.

Change-Id: I5dd3a98c7a224aafb35708850ab82e2f220e68fb
2013-06-07 21:42:22 +01:00
Dmitry Kovalev
514b8adacd Preparation to new frame size encoding.
Just an intermediate change set to simplify merges. Reordering several
uncompressed header bits, code restructuring + minor cleanups.

Change-Id: I28272f520762f8c4e3ad230ae39fff5102ba5c0d
2013-06-07 13:41:44 -07:00
John Koleszar
fd935f309c Merge "Add cheap show-buffer operation" into experimental 2013-06-07 11:41:08 -07:00
John Koleszar
229f9a5f09 Merge "Add bits for colorspace, profile" into experimental 2013-06-07 11:41:02 -07:00
John Koleszar
8c6bff6c0c Merge "Add marker bit to bool-coded partition start" into experimental 2013-06-07 11:40:58 -07:00
Deb Mukherjee
78fbaf4d84 Merge "Coding updates for tx-size selection" into experimental 2013-06-07 09:19:36 -07:00
Deb Mukherjee
3ee1a21a42 Coding updates for tx-size selection
Changes to the coding of transform sizes, along with forward
and backward probability updates.

Results:
derf300: +0.241%

Context based coding of transform sizes will be in a separate
patch.

Change-Id: I97241d60a926f014fee2de21fa4446ca56495756
2013-06-07 08:54:00 -07:00
Paul Wilkins
576c2bb021 Fix bug in segment skip.
Wrong max data size (skip has no data) and use of vp9_get_segdata()
when it should be vp9_segfeature_active().

Change-Id: I1eb97d33df6e2a42cc589049f704266fe3639902
2013-06-07 13:27:08 +01:00
John Koleszar
2584a5e5e5 Add cheap show-buffer operation
Adds the ability to have the decoder show one of the existing reference
frames directly, without having to code it indirectly as a series of
skip blocks.

Change-Id: Ib6c26c5f6a8709863cf304ab890db8559687d25e
2013-06-07 00:48:03 -07:00
John Koleszar
e5b956f620 Add bits for colorspace, profile
Adds 3 bits for colorspace (sent on keyframes), 2 bits for version.

Change-Id: Iaa0cf1dcdd085cebb46e2bc4a7c78cd33cf24325
2013-06-07 00:00:16 -07:00
John Koleszar
a425e2cc06 Add marker bit to bool-coded partition start
Adds a marker bit to allow distinguishing the frame header from its residual
data.

Change-Id: Id75d47acc9e5a97007e4690c4f8748a4ce63e641
2013-06-06 23:06:26 -07:00
Ronald S. Bultje
6ef805eb9d Change ref frame coding.
Code intra/inter, then comp/single, then the ref frame selection.
Use contextualization for all steps. Don't code two past frames
in comp pred mode.

Change-Id: I4639a78cd5cccb283023265dbcc07898c3e7cf95
2013-06-06 17:28:09 -07:00
Dmitry Kovalev
395ae7abed Merge "Moving segmentation and tile info to uncompressed header." into experimental 2013-06-06 15:34:00 -07:00
Dmitry Kovalev
a23757633d Moving segmentation and tile info to uncompressed header.
Change-Id: I0ca77329d882a2026f6c1941b8e447d86bc87bda
2013-06-06 12:33:12 -07:00
Ronald S. Bultje
ad34368786 New intra mode and partitioning probabilities.
Split partition probabilities between keyframes and non-keyframes,
since they are fairly different. Also have per-blocksize interframe
y intramode probabilities, since these vary heavily between different
blocksizes.

Lastly, replace default probabilities for partitioning and intra modes
with new ones generated from current codec. Replace counts with actual
probabilities also.

Change-Id: I77ca996e25e4a28e03bdbc542f27a3e64ca1234f
2013-06-06 10:45:30 -07:00
Jim Bankoski
5a88271b09 don't tokenize & encode tokens for blocks in UMV
This avoids encoding tokens for blocks that are entirely
in the UMV border. This changes the bitstream.

Change-Id: I32b4df46ac8a990d0c37cee92fd34f8ddd4fb6c9
2013-06-06 06:10:25 -07:00
Dmitry Kovalev
28d31aed7f Merge "Moving bits from compressed header to uncompressed one." into experimental 2013-06-06 01:15:44 -07:00
Deb Mukherjee
9504f5fac7 Merge "Fix in forward updates for INTRA modes/partitions" into experimental 2013-06-06 00:07:06 -07:00
Dmitry Kovalev
12345cb391 Moving bits from compressed header to uncompressed one.
Bits moved: refresh_frame_flags, active_ref_idx[], ref_frame_sign_bias[],
allow_high_precision_mv, mcomp_filter_type, ref_pred_probs[].

Derf results: +0.040%

Change-Id: I011f43c7eac0371d533b255fd99aee5ed75b85a5
2013-06-05 20:56:37 -07:00
Deb Mukherjee
2693704621 Fix in forward updates for INTRA modes/partitions
Results:
derfraw300: +0.2

Change-Id: Ie40dc3b31e877ee705f936066d7fa5702bd01ecd
2013-06-05 15:43:44 -07:00
Deb Mukherjee
30226a658f Cosmetic renaming VP9_MVREFS to VP9_INTER_MODES
NO bitstream change

Change-Id: I79f6146dac5fdd157051b6f8dc611c0b7b5e5f7f
2013-06-05 11:24:01 -07:00