summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_detokenize.c
AgeCommit message (Collapse)Author
2014-04-01Renaming two members in MACROBLOCKD struct.Dmitry Kovalev
Renames: mi_8x8 -> mi mode_info_stride -> mi_stride Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-01-31static function convert to inline or global vp9_blockd.hJim Bankoski
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
2014-01-03Moving get_scan() call out of decode_coeffs() function.Dmitry Kovalev
Change-Id: I5db2e5a6c36e6c503dea2e07d9d2e0daf4ac9d89
2013-12-05Renaming PREV_COEF_CONTEXTS to COEFF_CONTEXTS.Dmitry Kovalev
Also adding BAND_COEFF_CONTEXTS macro to simplify for loop logic. Change-Id: I12a78a49cf1addf81e6b3fe2a3736ec2b79bd79e
2013-12-04Cleaning up vp9_detokenize.c file.Dmitry Kovalev
Using consistent names (block_idx => block, dqcoeff_ptr => dqcoeff, pt => ctx), inlining get_tx_eob() call. Change-Id: I05208e57df81bbb8f25b8274684a48192e9de464
2013-12-04Merge "Cleaning up vp9_entropy.h file."Dmitry Kovalev
2013-12-03Moving eob array to the encoder.Dmitry Kovalev
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
2013-12-03Cleaning up vp9_entropy.h file.Dmitry Kovalev
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
2013-12-03Merge "Removing token_to_counttoken array."Dmitry Kovalev
2013-12-02Removing token_to_counttoken array.Dmitry Kovalev
Change-Id: I02050bcca4c9fd68a00abdea5aba0c3f8993d9a9
2013-12-02Using local variable for token_cache.Dmitry Kovalev
The difference with the old code is that originally the whole token_cache was initialized with zeros at the beginning of decode_coefs() function. Now we set several zero values explicitly with "token_cache[scan[c]] = 0". Change-Id: I88cc5031f01d13012d1a4491739c36cb44f9401e
2013-12-02Cleaning up decode_coefs() function.Dmitry Kovalev
Removing goto and using while loop instead, renaming seg_eob to max_eob, moving eob token counter increment. Change-Id: Idcc4b3a45e4f313596a71776aef56691a6647e5f
2013-11-26Deleting vp9_treereader.h file.Dmitry Kovalev
Renaming treed_read() to consistent vp9_read_tree() and moving it from deleted vp9_treereader.h to vp9_dboolhuff.h file. Change-Id: Iedd8655acbe25e4fcf62b79e5a13bdea69b6b004
2013-11-22Organizing all scan tables into lookup table.Dmitry Kovalev
Change-Id: Ie829ee58a55157e6972c63cebe69a5d0a3221349
2013-11-21detokenization speedupsJim Bankoski
removed unnecessary ifs and branches .. Change-Id: Id1698a35292659388f48926791024d1400f2cea9
2013-11-21Don't write 0's to token_cacheJim Bankoski
This code only updates the token_cache if the result is non0. Change-Id: Idcabd0b993a926fea9c29dbec134b9c5c4859b40
2013-11-19scan order table lookup same for encoder and decoderJim Bankoski
Change-Id: I473947b5ca70b7a81151926284bff86f8555492a
2013-11-19entropy code speedupJim Bankoski
Change-Id: Ic316d3374ff9a2b43897272260947d56765a0fdd
2013-11-19scan order / neighbors converted to lookupJim Bankoski
Change-Id: I64b189dfeee1cf3e90134a1a93497072f3361e5e
2013-11-13Simplifies band-getting with a static arrayDeb Mukherjee
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
2013-11-13Cleaning up decode_coefs() function.Dmitry Kovalev
Removing vp9_read_and_apply_sign macro which was used only once. Change-Id: I6a1625b720d89fc1291c99deccd6638b705f9b06
2013-11-12Calculating transform block offsets (x and y) only once.Dmitry Kovalev
Change-Id: I4b5106bdc08fd4551339b968c13428a8f43122e2
2013-11-12Removes conditional statements from band gettingDeb Mukherjee
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
2013-11-07Merge "Miscelleneous changes in detokenize for speed"Deb Mukherjee
2013-11-06Using pd->dqcoeff instead of pd->qcoeff in the decoder.Dmitry Kovalev
It is more logical to use dqcoeff buffer to put there *dequantized* transform coefficients (inside inverse_transform_block and decode_coefs functions). Dequantization happens inside WRITE_COEF_CONTINUE macro. qcoeff buffer should be only used in the encoder for *quantized* transform coefficients. Change-Id: Ifd54bef272bbf5311ced6669c4f1079f998af5d7
2013-11-05Simply a macroYaowu Xu
Change-Id: I1c0c1b92aab33b1e4321b8e584a934fe58e0b324
2013-11-05Miscelleneous changes in detokenize for speedDeb Mukherjee
Changes to reduce branching in detokenization in order to improve decode speed. Change-Id: I23a74d072cc14d99f6fc054c1e6a72021e777903
2013-11-05token_cache changes in decoderDeb Mukherjee
Removes stack-alocation of token_cache in decode_coefs function Seems to achieve about 1% decode speed improvement as tested on 25 480p videos. Change-Id: I8e7eb3361fa09d9654dfad0677a6d606701fdc6e
2013-10-31Reducing the number of foreach_transformed_block() calls.Dmitry Kovalev
The change doesn't affect the bitstream. It changes the order or function calls and affects how we reconstruct intra- and inter-blocks. Speed up is about 1...1.5%. For intra-blocks: Before: for each transform block read tokens for each transform block do prediction for each transform block do inverse transform Now: for each transform block read tokens do prediction do inverse transform For inter-blocks: Before: for each transform block read tokens for each transform block do inverse transform Now: for each transform block read tokens do inverse transform Change-Id: I12a79bf1aa5a18c351b8010369bd3ff1deae1570
2013-10-21vp9 dec/com: only update frame counts when necessary (2)James Zern
missed one in vp9_detokenize.c in the last + add some asserts in vp9_decode_frame() to catch regressions Change-Id: Ide67505114ee17efdafb13694aed0c09039e5a16
2013-10-21vp9_decode_tokens: limit scope of function paramsJames Zern
replace VP9D_COMP usage with the (slightly) more targeted VP9_COMMON/MACROBLCKD/struct segmentation structures. Change-Id: Iabb3616e231417b0e17b7e4b384ea63167a81745
2013-10-18vp9 dec/com: only update frame counts when necessaryJames Zern
don't update them when frame_parallel_mode is true Change-Id: I22ff131a6c6eea238415d10b729f195c7d6dc60d
2013-10-16Merge changes I6226456d,I97925178,I766c4b74Guillaume Martres
* 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-16Get rid of "this_mi", use "mi_8x8[0]" everywhere insteadGuillaume Martres
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-16Adding get_band_translate() function.Dmitry Kovalev
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-14Cleanup of decode_coefs() function.Dmitry Kovalev
Moving entropy context calculation to outer scope and adding consts to pointers. Change-Id: I25d0987e97495326ab1e8046e3fa3082c0584485
2013-10-08Remove extra line in decode_coefsJingning Han
Change-Id: Id1fde9920d60c6991a8ef6de5103ae3e578312ed
2013-10-07Removing redundant vp9_pt_energy_class declarations.Dmitry Kovalev
Declaring vp9_pt_energy_class in vp9_entropy.h instead of many external places. Change-Id: I66e8a3fc119a43f88d130d0dae4133c825a047a3
2013-09-29Merge changes ↵Jim Bankoski
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-29cpplint issue in vp9_detokenize.cJim Bankoski
Change-Id: Ibf996de79e9c9bbe03b2202d4af11aebc58f9bcc
2013-09-27Removing vp9_get_coef_neighbors_handle function.Dmitry Kovalev
Change-Id: I6be72c8b048d1ccc7ef43764cf84c32360098970
2013-09-19Adding get_scan_and_band function.Dmitry Kovalev
Extracting get_scan_and_band function from get_entropy_context to remove duplicated code. Change-Id: I5da1f5a60263017e887da68bc834317b5f084cb2
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-08-27Adding get_entropy_context function.Dmitry Kovalev
Moving common code from encoder and decoder to this function. Change-Id: I60fa643fb1ddf7ebbff5e83b6c4710137b0195ef
2013-08-26Renaming BLOCK_SIZE_TYPE to BLOCK_SIZE in the common/decoder.Dmitry Kovalev
Adding temporary "typedef BLOCK_SIZE BLOCK_SIZE_TYPE" which will go away after encoder's patch. Change-Id: I06ec6a6f079401439843ec981d1496234fd7775c
2013-08-21Removing a lot of duplicated code.Dmitry Kovalev
Adding set_contexts contexts function and call it instead of set_contexts_on_border. Calling txfrm_block_to_raster_xy to get aoff and loff. Change-Id: I41897e344afd2cae1f923f4fdbe63daccf6fe80e
2013-08-19Passing plane_bsize to foreach_transformed_block_visitor.Dmitry Kovalev
Updating all foreach_transformed_block_visitor functions to work with plane block size instead of general block. Removing a lot of duplicated code. Change-Id: I6a9069e27528c611f5a648e1da0c5a5fd17f1bb4
2013-08-15Moving from ss_txfrm_size to tx_size.Dmitry Kovalev
Updating foreach_transformed_block_visitor and corresponding functions to accept tx_size instead of ss_txfrm_size. List of functions per file: vp9_decodframe.c decode_block decode_block_intra vp9_detokenize.c decode_block vp9_encodemb.c optimize_block vp9_xform_quant vp9_encode_block_intra vp9_rdopt.c dist_block rate_block block_yrd_txfm vp9_tokenize.c set_entropy_context_b tokenize_b is_skippable Change-Id: I351bf563eb36cf34db71c3f06b9bbc9a61b55b73