summaryrefslogtreecommitdiff
path: root/vp9/decoder
AgeCommit message (Collapse)Author
2014-10-02Fix subsampling check for images 1 pixel wide/tallAlex Converse
Change-Id: I0e262ede7eb4a4ae0c86181922d744e542e93350
2014-09-29Miscellaneous decoder changes for high bitdepthDeb Mukherjee
Also includes yv12 config changes. Change-Id: Iacf40d8bf486815b54c32a127ce3cd4516b7e44f
2014-09-25Adds various high bit-depth encode functionsDeb Mukherjee
Change-Id: I6f67b171022bbc8199c6d674190b57f6bab1b62f
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-09-19High bit-depth coefficient coding functionsDeb Mukherjee
Tokenization and Detokenization enhancements for 10/12 bit Change-Id: I3c269ec30f8eb160ee024905638a193975237559
2014-09-18Adds high bitdepth convolve, interpred & scalingDeb Mukherjee
Change-Id: Ie51c352a6b250547207cbc1ebba833a01ed053e3
2014-09-16Merge "Speeding up decode_coeffs()."Dmitry Kovalev
2014-09-16Adds high bitdepth quantization functionsDeb Mukherjee
Adds various high bitdepth quantization functions. Change-Id: I36fc0bf75a1bd15128ed271df8723de0ac134b0c
2014-09-16Speeding up decode_coeffs().Dmitry Kovalev
1080p decoding speedup -- 1.25%, 4K decoding speedup -- 2.5%. Change-Id: I5f02f521cbf7758d4d1886a93bc5b074abdff03d
2014-09-11Adds high bitdepth transform functions and testsDeb Mukherjee
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
2014-09-09vp9: wait for key/intra-only frame after corruptionJames Zern
don't bother decoding any further after receiving an earlier decode error until a key/intra-only frame is encountered. Change-Id: I381917b70d7a9e6f8d6de42e3d181bb113a4cec4
2014-09-09Merge changes If8887e1d,I36bfc9c8,I3d1e6c42James Zern
* changes: vp9_dthread: simplify loop_filter_row_worker signature simplify vp9_loop_filter_worker signature vp9_decodeframe: simplify tile_work_hook signature
2014-09-09Merge changes I660c1b7f,Id3cdf6b6James Zern
* changes: vp9_loop_filter_frame_mt: defer allocations vp9_loop_filter_alloc: reorder parameters
2014-09-08vp9_loop_filter_frame_mt: defer allocationsJames Zern
the code currently checks whether the allocation has been done instead of allocating on the first frame. since: 4f27202 vp9: fix crash in mt loopfilter w/corrupt file this change defers the allocation until the loop filter is used. Change-Id: I660c1b7f34e713a8dd9884483f01d23b9847366e
2014-09-08vp9_loop_filter_alloc: reorder parametersJames Zern
VP9LfSync lf_sync is being operated on, make it the first parameter as in dealloc Change-Id: Id3cdf6b6a48157627780ae0d5d4b7dfa94a78078
2014-09-08vp9_dthread: simplify loop_filter_row_worker signatureJames Zern
use the type names directly in the function declaration rather than (void *arg1, void *arg2) Change-Id: If8887e1dbcdf84842783a92f91668bef6223c9e5
2014-09-08vp9_decodeframe: simplify tile_work_hook signatureJames Zern
use the type names directly in the function declaration rather than (void *arg1, void *arg2) Change-Id: I3d1e6c42d384d8e628d7f2075fa561c2c5e20749
2014-09-08BITSTREAM CLARIFICATION: Forbid referencing across color spaces.Alex Converse
Check image format of reference frames. Change-Id: I7d8d7f097ba547839ff9cec3880bd15a4948ee06
2014-09-05Merge "Initializing intra modes without vpx_once()."Dmitry Kovalev
2014-09-05Merge changes I7b9f40dc,I76e74f2eJames Zern
* changes: vp9: correct context buffer resize check vp9: fail decode if block/frame refs are corrupt
2014-09-05Merge "vp9: skip loopfilter when the frame is corrupt"James Zern
2014-09-04vp9: correct context buffer resize checkJames Zern
allocations within vp9_alloc_context_buffers() rely on mi_rows/mi_cols individually, use those to determine whether to realloc rather than stride and stride * rows. this fixes a crash with some fuzzed files for invalid accesses into last_frame_seg_map and above_context. Change-Id: I7b9f40dcf170d443890f3bd2acd285507943c7d4
2014-09-04vp9: fail decode if block/frame refs are corruptJames Zern
proceeding using a corrupt (incompletely decoded) frame reference may lead to incorrect assumptions about allocation sizes leading to a crash. Change-Id: I76e74f2e1be127c2e2c7e1174bb3307497dfd23d
2014-09-03Initializing intra modes without vpx_once().Dmitry Kovalev
Change-Id: I0a9d52432f2500f1bd8f43f229e70e38bb9a0343
2014-09-02Adds config opt for highbitdepth + misc. vpxDeb Mukherjee
Adds config parameter vp9_highbitdepth, to support highbitdepth profiles. Also includes most vpx level high bit-depth functions. However encode/decode in the highbitdepth profiles will not work until the rest of the code is in place. Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
2014-08-29Merge "vp9: sync workers at the start of decode_tiles_mt()"James Zern
2014-08-29vp9: fix m/t loop filter invalid freeJames Zern
store the number of allocated rows in VP9LfSync, the calculated values can not be relied on when dealing with corrupt material. Change-Id: I13b8bcec9738c299a71df726772ab7ac05511e5b
2014-08-28vp9: sync workers at the start of decode_tiles_mt()James Zern
prevents any problems resuming decode after decoding a corrupt frame Change-Id: Ib7eb1b5c062aebe71074fef1ece32a32822c16be
2014-08-27vp9: skip loopfilter when the frame is corruptJames Zern
this change is proactive: the loop filter expects valid input and may produce undefined results / crash in other cases. Change-Id: I6cc1e966062a91cbc6db981c87cd03d9129fc8fe
2014-08-27vp9: fix crash in inline loopfilter w/corrupt fileJames Zern
attempting to decode a frame after the previous frame failed has the potential of interrupting an earlier loop filter task Change-Id: I6f2b1ddcdf5b89c3e2ee8caf5289dada2a087d66
2014-08-27vp9: fix crash in mt loopfilter w/corrupt fileJames Zern
if the first frame was corrupt and loop filter not called, the next call would assume the necessary allocations had been done and segfault when accessing a NULL pointer Change-Id: Ib6ef505e5c594e6f0fe65ab0700172bcf06b92a6
2014-08-21Fix bug 837 (Part 2): Handle increase in frame widthAdrian Grange
The case where frame width increases but the overall memory size required to hold the mi arrays does not was not handled. Change-Id: I72e70b912a7d1766687ad682979f1c9ee124449b
2014-08-19Merge "[spatial svc]Add a few different encode frame tests."Minghai Shang
2014-08-18[spatial svc]Add a few different encode frame tests.Minghai Shang
1. Clean the code for encode frame tests 2. Add encode w/ and w/o alt reference frame test 3. Add encode SNR layers test 4. Add encode multiple layers but decode partial layers test Change-Id: Ibd2c9bc02525db584a6f931a98405f2d851b3cd6
2014-08-14Merge "vp9_copy_reference_dec: check ref frame index before use"James Zern
2014-08-14vp9_copy_reference_dec: check ref frame index before useJames Zern
use get_ref_frame() to ensure a valid frame is retrieved if one exists Change-Id: I4b116d928e643ee62a991babd4b974037b6b3830
2014-08-14Merge "Fix bug 837: realloc mode info buffers on resize"Adrian Grange
2014-08-14Fix bug 837: realloc mode info buffers on resizeAdrian Grange
The test to determine if the mode info buffers need to be resized when the frame size changes was incorrect, as per bug 837. By storing the size of the allocated data structure, a simple test determines whether to allocate more memory when the frame size changes. Change-Id: I1544698f2882cf958fc672485614f2f46e9719bd
2014-08-12Merge "fixes several -Wunused-function warnings"James Zern
2014-08-12fixes several -Wunused-function warningsJim Bankoski
Change-Id: I4dc2cb255f4fe30998b6ee61184895dee9f5da8e
2014-08-08Common encode/decode function to get reference frameAdrian Grange
Replaced encoder and decoder functions to get a pointer to a reference frame with a common function, vp9_get_ref_frame, and simplified it. Change-Id: Icb206fcce8caace3bfd1db3dbfa318dde79043ee
2014-08-08Remove coding_use_prev_mi member from VP9_COMMONAdrian Grange
This was shadowing the use of error_resilient_mode, but with the opposite sense. Change-Id: Ie4d30263a304fe4b3e94f0c7741db6888cc6afd8
2014-08-07Changes hdr for profiles > 1 for intraonly framesDeb Mukherjee
Specifies the bit-depth, color sampling and colorspace for intra only frames for profiles > 0 Also adds checks to ensure that profile 1 and 3 are exclusively used for non 420 streams. Change-Id: Icfb15fa1acccbce8f757c78fa8a2f60591360745
2014-07-28Fix reference frame size restrictions.Jim Bankoski
The issue was introduced by commit g9f37d14 with adding explicit restrictions on reference-frame scale factors. The restriction is checked against aligned-by-8 frame dimensions, not against original ones. So, for example, frame of 35×35 actually can refer to frame of 70×70, but the new check won't allow this. It will compare 35 vs 72 (not 70), so 2x downscale limit will be exceeded. Change-Id: Ic663693034440f64ac8312cbff9e1e773a921060
2014-07-25Merge "Fix allocation of context buffers on frame resize"Yaowu Xu
2014-07-24Changed validation of reference frame sizeYaowu Xu
A previous change, https://gerrit.chromium.org/gerrit/#/c/70632, introduced a size validation for reference frames to insuare the input stream is a valid VP9 stream. However, the logic requiring all reference frames have valid size turned out to be too strict. In this commit, we modify the validation to require one of the reference frame has valid dimension. In addition, the decoder reports error whenever it detects the use of reference frame with invalid scalig ratio. Change-Id: If8efc312244087556cfe00f1fcbdff811268ebad
2014-07-24Fix allocation of context buffers on frame resizeAdrian Grange
The patch: https://gerrit.chromium.org/gerrit/#/c/70814/ changed the test that determined whether the context frame buffers needed to be reallocated or not. The code checked for a change in total frame area to signal the need to reallocate context buffers. However, the above_context buffer needs to be resized i:xf only the width of the frame has increased. Change-Id: Ib89d75651af252908144cf662578d84f16cf30e6
2014-07-21Remove unfinished VP9 alpha channel.Alex Converse
Change-Id: Ic5d3a3a0dac10b49495771886a31e793bb78b5ca
2014-07-21Add -DNDEBUG when config option debug is disabledYunqing Wang
For gcc, when libvpx config option debug is disabled, added the flag -DNDEBUG to disable the assertions in libvpx for some speedup. Change-Id: Ifcb7b9e8ef5cbe5d07a24407b53b9a2923f596ee
2014-07-18Re-introduce frame size check inadvertantly deletedAdrian Grange
This patch adds back in code that checks that the frame size lies within defined bounds was inadvertantly removed by a previous patch: https://gerrit.chromium.org/gerrit/#/c/70814/ Change-Id: If526570ba559260c4b7e98098bc75f7700ae7f97