summaryrefslogtreecommitdiff
path: root/vp9/vp9_dx_iface.c
AgeCommit message (Collapse)Author
2018-10-08Loopfilter Multi-Thread OptimizationSupradeep T R
Take the original loopfilter multi-thread optimization (dafe064289a917977439ab6f4f002b9946496084) along with the fixes for bugs 1558 and 1562. BUG=webm:1558 BUG=webm:1562 Change-Id: Ibbf6bd13f4ffff0e79184ccfd6b85a49e067a6d8
2018-08-27Rework enc/dec mismatch detectionJingning Han
The previous enc/dec mismatch detection assumes the previously reconstructed frame would always stay at frame buffer pool index at 0. It could hence cause certain delay in enc/dec mismatch detection when the immediate reconstruction frame is not yet propagated to index 0 in the buffer map pool. This change always keeps the latest decoded show frame buffer index and directly gets the reconstructed frame from encoder and decoder buffer pools to check for mismatch. Change-Id: If53092cbc42ab78d55af5b83f12a489fc362f3ae
2018-07-25vp9: fix OOB read in decoder_peek_si_internalJames Zern
Profile 1 or 3 bitstreams may require 11 bytes for the header in the intra-only case. Additionally add a check on the bit reader's error handler callback to ensure it's non-NULL before calling to avoid future regressions. This has existed since at least (pre-1.4.0): 09bf1d61c Changes hdr for profiles > 1 for intraonly frames BUG=webm:1543 Change-Id: I23901e6e3a219170e8ea9efecc42af0be2e5c378
2018-07-20Add Flag to Enable Row Based MultiThreadingVenkatarama NG. Avadhani
This commit adds a command line argument "--row-mt". Passing "--row-mt=1" will set the row_mt flag in the decoder context. This flag will be used to determine whether row-wise multi-threading path is to be taken when the row-wise multi-threading functions are added. Change-Id: I35a5393a2720254437daa5e796630709049e0bc2
2017-09-27vp9_dx_iface: Stop using iter parameter incorrectlyVignesh Venkatasubramanian
'iter' parameter is being checked for NULL in every call to decoder_get_frame which is quite pointless because it is always going to be NULL unless the application changed it. The code works as described only because vp9_get_raw_frame returns -1 on all subsequent calls after the first. Change-Id: Ic736b9e8fe36fc1430fc11d6a9b292be02497248
2017-07-05vp9: remove FrameWorkerData & vp9_dthread.hJames Zern
the file was empty after the struct removal. the only remaining use was within vp9_dx_iface, but the wrapper became unnecessary after the removal of frame_parallel_decode. BUG=webm:1395 Change-Id: I515ab585d701e77d388d12b2802d844c424f9bcd
2017-07-05vp9: remove (un)lock_buffer_poolJames Zern
there is no threaded access to this pool after the removal of frame_parallel_decode BUG=webm:1395 Change-Id: I710769b87102edc898c59eb9a2e7a91d8c49107f
2017-06-30vp9_onyxc_int,RefCntBuffer: rm unused membersJames Zern
the last frame_worker_owner, row and col references were removed in: 131bd06e6 remove vp9_dthread.c BUG=webm:1395 Change-Id: Ia7fb2e8782b12a58d2a2263849d20a8abf06aef6
2017-06-30VP9_COMMON: rm frame_parallel_decodeJames Zern
this has been 0 since the removal of frame_parallel_decode in vp9_dx_iface. BUG=webm:1395 Change-Id: I3a562b2c6b82050064d2b2ccb18a3e77c700b2da
2017-06-30VP9Decoder: rm frame_parallel_decodeJames Zern
this has been 0 since the removal of frame_parallel_decode in vp9_dx_iface. BUG=webm:1395 Change-Id: I3f579766ecfa4777395b99686738e1c5610f86ef
2017-06-30vp9_dx: rm worker thread creationJames Zern
creating a thread associated with the sole worker isn't necessary when only execute() is being used after the removal of frame_parallel_decode. BUG=webm:1395 Change-Id: I2255ce72607321e5708bc82a632dc6825d4eff5c
2017-06-29vp9_dx,vpx_codec_alg_priv: rm *worker_id*James Zern
+ available_threads these are unused with the removal of frame_parallel_decode BUG=webm:1395 Change-Id: I59c5075542a5a74d4a539c213682f566b005f5a6
2017-06-29vp9_dx,vpx_codec_alg_priv: rm *cache*James Zern
these fields are unused with the removal of frame_parallel_decode BUG=webm:1395 Change-Id: Ia3821f7fb81d17b20033b094e5265b1030ee4030
2017-06-29vp9_dx,vpx_codec_alg_priv: rm frame_parallel_decodeJames Zern
this field has been 0 since: 01d23109a vp9: make VPX_CODEC_USE_FRAME_THREADING a no-op BUG=webm:1395 Change-Id: I15448e9401e15329b54c6878dda033b17be5ec6b
2017-03-29vp9: make VPX_CODEC_USE_FRAME_THREADING a no-opJames Zern
this is unmaintained and due to be removed BUG=webm:1395 Change-Id: Iaffa6aa057c820fd1a182b93ebb45d4286e1306e
2017-02-28VPX_CODEC_CAP_HIGHBITDEPTH for decoder interfaceChris Cunningham
Moves the def from vpx_encoder.h -> vpx_codec.h. The defined value is changed as part of this move. Adds the value to decoder capabilities when CONFIG_VP9_HIGHBITDEPTH. Change-Id: I7d61fc821cda29f1e32bb9b2b9ffd3d83966e419
2017-01-12Add decoder getters for the last quantizer.Peter Boström
To be used for frame stats output of vpxdec. Change-Id: I0739a01bd3635c4b3fedd58f3e27363ce8fb1b1e
2016-11-03vp9-svc: Add decoder control to decode up to x spatial layers.Marco
Change-Id: I85536473b8722424785c84c5b5520960b4e5744a
2016-10-05Remove vpx_realloc()Alex Converse
It only handles the realloc constraint (preserving low elements) by serendipity, and we don't actually rely on that behavior anyway. Meanwhile the calls may do extra copying that gets immediately clobbered by the callers. Change-Id: I8dfa89e4a81084b084889c27bd272fdf85184e8d
2016-09-20vp8: remove VP8_SET_DBG* control supportJames Zern
the --enable-postproc-visualizer configure option remains as a no-op as do the control names and values for compatibility + remove the corresponding debug flags from vpxdec: --pp-* Change-Id: I4a001cd9962b59560d7d6bda6272d4ff32b8d37c
2016-08-03vp9/decoder,vp9/*.[hc]: apply clang-formatclang-format
Change-Id: Ic38ea06c7b2fb3e8e94a4c0910e82672a1acaea7
2016-07-23vp9: fix frame-level threaded decode shutdownJames Zern
Shutdown all threads before reclaiming any memory. The frame-level parallel decoder may access data from another worker. BUG=webm:1259 Change-Id: I26856ebd1f77cc4a4545331baa19bbf3e01c4ea4
2016-07-01Make set_reference control API work in VP9Yunqing Wang
Moved the API patch from NextGenv2. An example was included. To try it, for example, run the following command: $ examples/vpx_cx_set_ref vp9 352 288 in.yuv out.ivf 4 30 Change-Id: I4cf8f23b86d7ebd85ffd2630dcfbd799c0b88101
2016-06-23vp9: Fix potential SEGV in decoder_peek_si_internalVignesh Venkatasubramanian
decoder_peek_si_internal could potentially read more bytes than what actually exists in the input buffer. We check for the buffer size to be at least 8, but we try to read up to 10 bytes in the worst case. A well crafted file could thus cause a segfault. Likely change that introduced this bug was: https://chromium-review.googlesource.com/#/c/70439 (git hash: 7c43fb6) BUG=chromium:621095 Change-Id: Id74880cfdded44caaa45bbdbaac859c09d3db752
2015-10-29vp9_dx_iface: move struct defs to separate headerJames Zern
this avoids redefining vpx_codec_vp9_dx, vpx_codec_vp9_dx_algo in vp9_encoder_parms_get_to_decoder.cc Change-Id: I3b89e7a62497227ee32419f1a7d30e4c10a13c05
2015-09-25Rename display_{size,width,height} to render_*.Ronald S. Bultje
The name "display_*" (or "d_*") is used for non-compatible information (that is, the cropped frame dimensions in pixels, as opposed to the intended screen rendering surface size). Therefore, continuing to use display_* would be confusing to end users. Instead, rename the field to render_*, so that struct vpx_image can include it. Change-Id: Iab8d2eae96492b71c4ea60c4bce8121cb2a1fe2d
2015-09-09vp9/10 decoder_init: add missing alloc castJames Zern
Change-Id: I1ba4400d67095f3a360fb7d97ee8d118d4f741fe
2015-08-26vpx_dsp_common: add VPX prefix to MIN/MAXJames Zern
prevents redeclaration warnings; vp8 has its own define which will be resolved in a future commit Change-Id: Ic941fef3dd4262fcdce48b73075fe6b375f11c9c
2015-07-20vpx_dsp/bitreader_buffer.h: vp9_->vpx_Yaowu Xu
Replace vp9_ in names to vpx_ for non codec specific functions. Change-Id: Ib9e3b86cb0728d10b239f3493ceda18cc2c34e0f
2015-07-20vpx_dsp/bitreader.h: vp9_->vpx_Yaowu Xu
Replace vp9_ in names to vpx_ as they are not codec specific. Change-Id: I2e583aa63dee769353ada4b42417aa15c4074ebb
2015-07-20Removed vp9_ prefix from vpx_dsp/bitreader file namesYaowu Xu
Change-Id: I0426126d0a65f13f9250983e44cc366b1b1a9c4a
2015-07-17Move bit reader files to vpx_dspYaowu Xu
Change-Id: Ib1cb1fbe92a39ff5312cee069559be6d3ea458d0
2015-07-02Rename vpx_thread to vpx_utilJingning Han
Change the dir name to include more util tools. Change-Id: Id5b16062803ce5eed872fe2edb36d7e56b32eed8
2015-07-02Use vpx prefix for codec independent threading functionsJingning Han
Replace vp9_ prefix with vpx_ for common multi-threading functions. Change-Id: I941a5ead9bfe8213fdad345511d2061b07797b55
2015-07-01Move multi-threading module functions into vpx_thread folderJingning Han
This commit moves the primitive multi-threading files from vp9 folder to vpx_thread, which will be accessible by all vpx codec. Change-Id: Ib51e66e9c69801c10631fab56d35a0c0aaed5883
2015-06-05Add control to skip loop filter in VP9 decoder.Frank Galligan
This control allows the application to skip the loop filter in the decoder. This is an advanced control that should only be used in extreme circumstances as it may introduce and accumulate decode artifacts. Change-Id: I278c65c60826f84c9141ebe06c6eeed3c2335fa8
2015-05-14Fix illegal memory access when stream starts w/ invisible frame.Adrian Grange
Add a check to make sure we have a decoded frame available before copying its 'corrupt' flag. (Originally submitted to the old repository by Alexander Voronov as: https://gerrit.chromium.org/gerrit/#/c/74305/). Change-Id: Iceb4686c785afb437b668015bf8818b18d60e0ce
2015-04-28vpx_mem: remove vpx_memcpyJames Zern
vestigial. replace instances with memcpy() which they already were being defined to. Change-Id: Icfd1b0bc5d95b70efab91b9ae777ace1e81d2d7c
2015-04-01Remove unnecessary set postproc flags.hkuang
Change-Id: Iaf136969bc368a890f9671647576ee9d54eef03b
2015-03-30Set postproc flags in decoder_get_frame.Marco
The postproc settings were not set in decoder_get_frame(). Change-Id: I20d23de3ea18f6df061a53d691d4095d5c62532a
2015-03-19Safely free all the frame buffers after all the workers finish the work.hkuang
Issue: 978 Change-Id: Ia7aa809095008f6819a44d7ecb0329def79b1117
2015-03-04Fix variable shadowing.hkuang
Change-Id: I287c61ad4aa85654aef3c871a62131bcd0d891ac
2015-03-04Make encoder buffer allocation dynamicAdrian Grange
Frame buffers are now allocated dynamically on-demand. Entries in the reference frame map, cm->ref_frame_map, may now be set to -1 (INVALID_IDX) to indicate that there is not a valid reference buffer in that "slot". All slots in the reference frame map are now initialized to the empty state (-1) and each buffer is initialized to have a reference count of 0. Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
2015-02-18Merge "Fix the frame parallel invalid file test failure on ARM."hkuang
2015-02-17Fix the frame parallel invalid file test failure on ARM.hkuang
There is a corner case that when a frame is corrupted, the following inter frame decode worker will miss the previous failure. To solve this problem, a need_resync flag needs to be added to master thread to keep control of that. Change-Id: Iea9309b2562e7b59a83dd6b720607410286c90a6
2015-02-13Improve readability: move return statementsAdrian Grange
Change-Id: I18428d0a93084f78ec136d9019f10466326c67e5
2015-02-13Add VP9 decoder control to get frame sizeAdrian Grange
Adds a control function that allows the caller to get the size of the current frame. Change-Id: Iddfdedc0f3aa9aa46119f87d294681c82f275c9f
2015-02-09Set the maximum decode threads to be 8.hkuang
This will fix the frame parallel decode hang on windows due to not enough semaphores. This will also make the frame parallel decode safer as the number of frame buffers could only support maximum 8 threads. Change-Id: Id9ef50692819dcbebbd74a0aabffbfb3f39a4309
2015-02-07Fix jenkins unit test failure due to "uninitialised value".hkuang
Change-Id: Ief6b526486bc729dcb787358bc0b781f278bdc66
2015-02-04Fix a thread lost bug in frame parallel decode.hkuang
After syncing the frame worker thread, avaiable thread count should increase by 1 even the worker thread does not have displayable frame to output. Change-Id: I9eeb87720fed82dfe38555286833ff88e8a8e746