Age | Commit message (Collapse) | Author |
|
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
|
|
This reverts commit 6906d218ddd1af97228a797f4558e402231d94f1.
Another way will be used to handle mb struct.
Change-Id: Ic1111a46b2b1ee00f8f9e3fcd4cf3eb6030b2dc4
|
|
Several frame counters in encoder are updated at SB level. Combine
those counters and put them in a separate struct, which allows us
to allocate one copy for each thread.
Change-Id: I00366296a13c0ada4d8fa12f5e07728388b6cab7
|
|
Modified VP9_COMP struct to include MACROBLOCK *mb. This change
makes it feasible in multi-thread case to allocate a mb for each
thread.
Change-Id: I624d6d1aa9c132362200753e5d90b581b1738d6e
|
|
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
|
|
This commit enables the encoder to skip split partition search if
the bigger block size has all non-zero quantized coefficients in low
frequency area and the total rate cost is below a certain threshold.
It logarithmatically scales the rate threshold according to the
current block size. For speed 3, the compression performance loss:
derf -0.093%
stdhd -0.066%
Local experiments show 4% - 20% encoding speed-up for speed 3.
blue_sky_1080p, 1500 kbps
51051 b/f, 35.891 dB, 67236 ms ->
50554 b/f, 35.857 dB, 59270 ms (12% speed-up)
old_town_cross_720p, 1500 kbps
14431 b/f, 36.249 dB, 57687 ms ->
14108 b/f, 36.172 dB, 46586 ms (19% speed-up)
pedestrian_area_1080p, 1500 kbps
50812 b/f, 40.124 dB, 100439 ms ->
50755 b/f, 40.118 dB, 96549 ms (4% speed-up)
mobile_calendar_720p, 1000 kbps
10352 b/f, 35.055 dB, 51837 ms ->
10172 b/f, 35.003 dB, 44076 ms (15% speed-up)
Change-Id: I412e34db49060775b3b89ba1738522317c3239c8
|
|
Miscellaneous bug-fixes for high bitdepth functionality.
With this patch, high bit-depth profiles become mostly functional,
except for an intermittent assert failure issue that is being
tracked.
Change-Id: I6a7fcbdcf1e5b09842e88535f8442d2e1230748c
|
|
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
|
|
Tokenization and Detokenization enhancements for 10/12 bit
Change-Id: I3c269ec30f8eb160ee024905638a193975237559
|
|
Adds various high bitdepth transform functions and tests.
Much of the changes are related to using typedefs tran_low_t
and tran_high_t for the final transform cofficients and intermediate
stages of the transform computation respectively rather than fixed
types int16_t/int. When vp9_highbitdepth configure flag is off,
these map tp int16_t/int32_t, but when the flag is on, they map
to int32_t/int64_t to make space for needed extra precision.
Change-Id: I3c56de79e15b904d6f655b62ffae170729befdd8
|
|
Refactoring to remove some duplication of probability
tables between tokenization and detokenization.
Change-Id: I2fc6a6497f9c0410021a9b41f828bc58a864e466
|
|
Change-Id: I16bf93d40e9b345705b49bf09dd4b6996b513a83
|
|
Change-Id: I85854f1ab2d60feea0bfe6b2141f89a998777ecb
|
|
Actual renames:
vp9_onyx_if.c -> vp9_encoder.c
vp9_onyx_int.h -> vp9_encoder.h
Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
|
|
Renames:
mi_8x8 -> mi
mode_info_stride -> mi_stride
Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
|
|
|
|
Change-Id: I47a8b4bf9a6cc0063d1a6785eaaad641d0659e24
|
|
We use local variable for token_cache in the decoder.
Change-Id: I032763fa7894313cffe73e3f14863ae1d0527665
|
|
Change-Id: Ib9e27298c575afc02a98b593bc6ad60762064d9b
|
|
Change-Id: If90c1bc822873156d4e38fca1938e4907f6c95f0
|
|
Change-Id: I7d11c6ae259aff6560710d16fea3032c661e5b02
|
|
The largest value is 13358.
Change-Id: I7a6b024a92b6250933d9ebc0cad066b966c96bd4
|
|
Change-Id: Ica1b583d69810182f621de757d2543b2a3b35566
|
|
Change-Id: If8e340dd6823323025a12f851e78fffdbcaaf6f8
|
|
Change-Id: I036e815ca63d00cba71202ae09ba0f6ef745dcb8
|
|
Change-Id: I60401b45b85de8123d16233c2a14abddc1c55041
|
|
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
|
|
Change-Id: I27a30b43eae026a77f92958e2238d02d9cdf7832
|
|
Calculate the skip_coeff as part of the encode process, rather than
checking the eobs after the fact with another pass.
Change-Id: Ib41b139e96a97dee30e4b993b4cc53d86337128d
|
|
Refactoring for speed in the same vein as detokenize_b...
Change-Id: I90779aa46e3b13c22ddce9a42b60e1920ad97142
|
|
Renames:
vp9_get_pred_context_mbskip => vp9_get_skip_context
vp9_get_pred_prob_mbskip => vp9_get_skip_prob
Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
|
|
|
|
In the decoder we don't need to save eobs, we can pass eob as an argument.
That's why removing eob arrays from VP9Decompressor and TileWorkerData,
and moving eob pointer from macroblockd_plane to macroblock_plane.
Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a
|
|
Renaming constants for consistency:
DCT_VAL_CATEGORY1 => CATEGORY1_TOKEN
DCT_VAL_CATEGORY2 => CATEGORY2_TOKEN
DCT_VAL_CATEGORY3 => CATEGORY3_TOKEN
DCT_VAL_CATEGORY4 => CATEGORY4_TOKEN
DCT_VAL_CATEGORY5 => CATEGORY5_TOKEN
DCT_VAL_CATEGORY6 => CATEGORY6_TOKEN
DCT_EOB_TOKEN => EOB_TOKEN
DCT_EOB_MODEL_TOKEN => EOB_MODEL_TOKEN
MAX_ENTROPY_TOKENS => ENTROPY_TOKENS
Moving constants:
INTER_MODE_CONTEXTS from vp9_entropy.h to vp9_blockd.h.
EOSB_TOKEN from vp9_entropy.h to vp9_tokenize.h
Change-Id: I5fcbf081318e1d365792b6d290a930c6cb0f3fc2
|
|
Change-Id: I0e59d320407b3bed0ba3622a7b29975f6fad7ebf
|
|
We only need qcoeff buffers in the encoder. Reducing TileWorkerData struct
and VP9Decompressor struct sizes by 24K.
Change-Id: Id148868461f7ffa3d3dd634b371503ae9c57e207
|
|
Change-Id: Ie829ee58a55157e6972c63cebe69a5d0a3221349
|
|
Simplifies the code by implementing band mapping with static arrays.
A lot of the code complexity introduced in a previous patch
disappears.
Change-Id: Ia3fac36e594fb5ad2d55ae141c58bba4c55c2d28
|
|
Change-Id: I60e02fa3de930ff1f969687ab5af93dee40d86ad
|
|
Implements scan order to band map with arrays in both the encoder
and decoder to remove conditional statements.
Encoding seems to be about 1% faster at speed 0, tested on football.
Decoding seems to be about 0.5-1% faster on a set of 25 videos.
Change-Id: Idb233ca0b9e0efd790e30880642e8717e1c5c8dd
|
|
|
|
Removes stack-allocation of token_cache in the tokenize
function in the encoder.
Change-Id: Ifdbab76dc2b23384da0080d2e9390533e489db8c
|
|
Change-Id: Ie05cc5e2d8ce12eacdf482a8b75e5a6ce6f59f57
|
|
* 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
|
|
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
|
|
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
|
|
Declaring vp9_pt_energy_class in vp9_entropy.h instead of many external
places.
Change-Id: I66e8a3fc119a43f88d130d0dae4133c825a047a3
|
|
Change-Id: Id4ec0084641d2ad4def95fb05239455fbc25f9b9
|
|
Change-Id: I6be72c8b048d1ccc7ef43764cf84c32360098970
|
|
Extracting get_scan_and_band function from get_entropy_context to
remove duplicated code.
Change-Id: I5da1f5a60263017e887da68bc834317b5f084cb2
|