summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodemv.c
AgeCommit message (Collapse)Author
2015-06-29VP9: Move ref_mvs[][] and mode_context[] from MB_MODE_INFOScott LaVarnway
to MB_MODE_INFO_EXT. This saves 36 bytes per 8x8 area for both the decoder and encoder. (encoder has two MODE_INFO buffers) Change-Id: If006abb2224acaf326df3c2be09e77e967662107
2015-05-15vp9: correct some function signaturesJames Zern
silences missing prototype warnings Change-Id: Idaf68d83d2cb03847f3ee002c4d00c2ac79da604
2015-04-21Revert "Remove mi_grid_* structures."Scott LaVarnway
(see I3a05cf1610679fed26e0b2eadd315a9ae91afdd6) For the test clip used, the decoder performance improved by ~2%. This is also an intermediate step towards adding back the mode_info streams. Change-Id: Idddc4a3f46e4180fbebddc156c4bbf177d5c2e0d
2014-11-24vp9_ethread: modify VP9_COMP structureYunqing Wang
This patch modified struct VP9_COMP. Created a struct ThreadData to include data that need to be copied for each thread. In multiple thread case, one thread processes one tile. all threads share one copy of VP9_COMP, (refer to VP9_COMP *cpi in the code) but each thread has its own copy of ThreadData, (refer to ThreadData *td in the code). Therefore, within the scope of encode_tiles(), both cpi and td need to be passed as function parameters. In single thread case, the FRAME_COUNTS pointer in ThreadData points to "counts" in VP9_COMMON. Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
2014-10-22vp9_ethread: allocate frame contexts outside VP9_COMMON structYunqing Wang
This patch allocated frame contexts outside VP9_COMMON. This allows multiple threads to share the same copy of frame contexts, and reduces the overhead. It also guarantees the correct update of these contexts during bitstream packing. This patch doesn't change encoding result. Change-Id: Ic181a2460b891d1d587278a6d02d8057b9dbd353
2014-09-19Remove mi_grid_* structures.hkuang
mi_grid_* are arrays of pointer to pointer. They save the pointers that point to the MIs in cm->mi. But they are unnecessary and complicated. The original goal was to remove MODE_INFO_t copy. But with an extra MODE_INFO_t pointer inside MODE_INFO_t, same goal could be achieved. This commit totally removes the mi_grid_* structures. But there are still many dummy MODE_INFO_t inside cm->mi which are a waste of memory. Next commit will do on-demand MODE_INFO_t allocation in order to save these memories. Change-Id: I3a05cf1610679fed26e0b2eadd315a9ae91afdd6
2014-08-29Removing dummy_packing member from VP9_COMP.Dmitry Kovalev
Change-Id: I571ce84c97087f8a1a36a10058393bfdcefbf72a
2014-06-12Adding MV_SPEED_FEATURES struct.Dmitry Kovalev
Moving all motion vector related speed parameters from SPEED_FEATURES to MV_SPEED_FEATURES. Change-Id: I3e9af0039c7162f8671878c5920bce3cb256a84e
2014-04-01Renaming two members in MACROBLOCKD struct.Dmitry Kovalev
Renames: mi_8x8 -> mi mode_info_stride -> mi_stride Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-03-19Moving common code into vp9_update_mv_count().Dmitry Kovalev
Change-Id: I512482853bdf2695fbdf1c705a2ada354ccf76cf
2014-03-07Removing unused active_section global variable.Dmitry Kovalev
Change-Id: Ib8c41829a4b5a618b6bda24d9b7df2d491d0fca0
2014-03-05Merge "Adding vp9_cost.{h, c} files."Dmitry Kovalev
2014-03-05Adding vp9_cost.{h, c} files.Dmitry Kovalev
Change-Id: If90c1bc822873156d4e38fca1938e4907f6c95f0
2014-03-05Renaming NMV_UPDATE_PROB to MV_UPDATE_PROB.Dmitry Kovalev
Change-Id: I7f3bcca103f0b1f6b3c064b61472543de9a8288a
2014-02-26Replacing int_mv with MV and adding const qualifiers.Dmitry Kovalev
Change-Id: I89c37b739493c79044f8c70ae2424aa074eb56c8
2014-02-25Removing redundant vp9_clear_system_state() call.Dmitry Kovalev
This function is already called in vp9_initialize_rd_consts(). Change-Id: I88c0484a7274660287fa25fdf5cdb721d3284e01
2014-01-23Revert "Removing unnecessary vp9_clear_system_state() calls."Yaowu Xu
This reverts commit 36406fdb07dfe08df1d49abe36dbf27469e42213. Change-Id: I0bd31d03ce2a562d0624f2cd67593d0d25df4a54
2014-01-22Removing unnecessary vp9_clear_system_state() calls.Dmitry Kovalev
Change-Id: I597645a15fff2d3a1104861a5c90f64394952e0b
2014-01-08Using VP9_COMMON instead of VP9_COMP.Dmitry Kovalev
Change-Id: If7d3958653104f3e170853e931f8489de3ecf3cc
2013-12-16Merge "Reusing nmv_frame_counts from FRAME_COUNTS in encoder."Dmitry Kovalev
2013-12-11Reusing nmv_frame_counts from FRAME_COUNTS in encoder.Dmitry Kovalev
Change-Id: Iadf2fcc9a5bfa5d02fc166f31963be1cc814831c
2013-12-10Renaming treed_write() to vp9_write_tree().Dmitry Kovalev
Making name consistent with vp9_read_tree(). Change-Id: Ie213ffe0d5345bf3035f28e17f610894fec79205
2013-11-25Moving mv entropy encodings calculation to the encoder side.Dmitry Kovalev
Moved arrays: vp9_mv_joint_encodings vp9_mv_class_encodings vp9_mv_class0_encodings vp9_mv_fp_encodings Change-Id: Iaf5008c579fcbd6d77fdd81d1aef8c71b5f308b7
2013-11-24Cleaning up vp9_write_nmv_probs() function.Dmitry Kovalev
Change-Id: I9af38f1a0e226ee094c17081f044a722ac1caded
2013-11-22Merge "Cleaning up entropy probability update in encoder."Dmitry Kovalev
2013-11-20Adding MV_FP_SIZE constant.Dmitry Kovalev
Change-Id: I98d750ee92ff51fb714980418ea28be3b1d0f3c6
2013-11-19Cleaning up entropy probability update in encoder.Dmitry Kovalev
Change-Id: I94cb9e3d910dff74bf90906dd96e3a4e06ebdbe6
2013-11-19Cleaning up probability/cost functions.Dmitry Kovalev
Change-Id: Ifad4b0e6355ce49fcc6f470becc080e8069452ee
2013-11-05Localizing NEARESTMV special cases in the code.Dmitry Kovalev
Removing special case handling from vp9_tree_probs_from_distribution(), tree_merge_probs(), and vp9_tokens_from_tree_offset() functions. Replacing inter_mode_offset() function with macro INTER_OFFSET which is used now for vp9_inter_mode_tree definition. Change-Id: Iff75a1499d460beb949ece543389c8754deaf178
2013-11-01Removing 'new' probability calculation from convert_distribution().Dmitry Kovalev
We don't have to calculate 'new' probability in convert_distribution() because it is enough to calculate only 'new' counters which could be used to calculate probability if necessary. That's why removing a lot of unused temporary probability arrays and reducing number of get_binary_prob() calls. Change-Id: I4e14eb7203d1ace61bbddefd6b9b6326be83ba63
2013-10-09Deprecate the use of PARTITION_INFO from encoderJingning Han
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-04cpplint issues vp9_encodemv.cJim Bankoski
Change-Id: Icda1d2d7cbfb176884fa6c7d9366a2d60e2994e9
2013-09-24Cleaning up vp9_update_nmv_count function.Dmitry Kovalev
Using best_mv[2] array instead of two separate variables. Change-Id: Iefa0a41f5c42c42f2c66cef26750da68405f0f25
2013-09-11New mode_info_context storage -- undo revertScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of pointers to MODE_INFO structs. The MODE_INFO structs are now stored as a stream (decoder only), eliminating unnecessary copies and is a little more cache friendly. Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
2013-09-09Revert "New mode_info_context storage"James Zern
This reverts commit dae17734ece414091ba1184f7becd0aa6c0004f1 Encode crashes, leaks and increases integer overflow errors. Change-Id: I595aa2649bb8d0b6552ff91652837a74c103fda2
2013-09-06New mode_info_context storageScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of a pointer to a MODE_INFO struct and a "in the image" flag. The MODE_INFO structs are now stored as a stream, eliminating unnecessary copies and is a little more cache friendly. For the test clips used, the decoder performance improved by ~4.3% (1080p) and ~9.7% (720p). Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p) and 5.9% (720p). Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
2013-09-04faster accounting of inc_mvJim Bankoski
Moves counting of mv branches to where we have a new mv, instead of after the whole frame is summed. Change-Id: I945d9f6d9199ba2443fe816c92d5849340d17bbd
2013-08-23cosmetics: strip 'VP9_' from defines in vp9 only codeJames Zern
Change-Id: I481d9bb2fa3ec72b6a83d5f04d545ad8013f295c
2013-08-07Merge "Removing NMS_STATS defines."Dmitry Kovalev
2013-08-05Replacing long block size enum values with shorter ones (2).Dmitry Kovalev
Change-Id: I428c4d42212b757112e3acfe5b81314cfbb5fd6b
2013-08-02Removing NMS_STATS defines.Dmitry Kovalev
Change-Id: Iabab0e59042a33456df1d449c0d0f01debc00c7c
2013-07-23Removing LOW_PRECISION_MV_UPDATE define.Dmitry Kovalev
Change-Id: I78d16ee758e1fae0200b746f00031f6d9c6d6ce7
2013-07-23clean up bw, bhJim Bankoski
many structures use bw and bh and they have different meanings. This cl attempts to start this clean up and remove unneccessary 2 step look up log and then shift operations... also removed partition type multiple operation code in bitstream.c. Change-Id: I7e03e552bdfc0939738e430862e3073d30fdd5db
2013-07-19Reworked the auto_mv_step_size speed featureDeb Mukherjee
This patch modifies the auto_mv_step_size speed feature to use a combination of the maximum magnitude mv from the last inter frame, and the maximum magnitude mv for the two reference mvs with the same reference. For arf frames, the max mav step for the resolution is used. The bounds therefore are slightly tighter. The feature is made a speed 1 feature. Rebased. Results (when this feature is turned on over speed 0): derfraw300: -0.046% psnr, about 5+% speedup (tested on football: goes from 4m30.760s to 4m17.410s). Change-Id: If492797a61b0b4b3e58c0b8f86afb880165fc9f6
2013-07-18Remove motion vectors from PARTITION_INFO.Ronald S. Bultje
The same information already exists in union b_mode_info. Change-Id: Iac5086b99a3c3cc270380138062bb693e58f9e6d
2013-07-17Merge changes Ieffea49e,Idf610746Dmitry Kovalev
* changes: Removing two unused arguments from vp9_inc_mv signature. Changing signature of vp9_get_pred_probs_tx_size.
2013-07-16Removing two unused arguments from vp9_inc_mv signature.Dmitry Kovalev
Change-Id: Ieffea49eb7a5e5092f21f8694c546aff69b07c6d
2013-07-16Removing MV_GROUP_UPDATE define and corresponding code.Dmitry Kovalev
Change-Id: I4884cdc2557d25d50c7c4f7e19b1ad8bdb93cd63
2013-07-11Remove print_nmvcountsJohann
For some reason iOS builds take a really long time to sort this function out. It's not used anywhere so remove it. Change-Id: Ia5c8513a0d9c7eb32641cca58ca1c1113e2dd9f4
2013-06-26Auto adapt step size feature.Paul Wilkins
Also tweaks to other features and experiments with what is on and off at different speed settings. Change-Id: I3e1d0be0d195216bf17c2ac5df67f34ce0b306b2