summaryrefslogtreecommitdiff
path: root/vp9/decoder
AgeCommit message (Collapse)Author
2014-03-02vp9_decodeframe.c: remove unused paramsYaowu Xu
Change-Id: Ie83e18802234199491dbb6e90886739814558f96
2014-03-01Remove vp9_create_common()Yaowu Xu
The function has evolved over time, now only calls vp9_rtcd(), so this commit removes the function and changes to call vp9_rtcd() directly. Change-Id: I8cfa6190daa4b28f6f3d1e11bb3a07f9c95322bf
2014-02-28Fix unused parameters in vp9_extend_frame_bordersYaowu Xu
Change-Id: I7255b3bc47d760333f58ac4878becbcc8ad30967
2014-02-28Merge "Adding get_y_mode() function."Dmitry Kovalev
2014-02-27Reusing existing mem_{get, put}_be32() functions.Dmitry Kovalev
Change-Id: Iba128039534e16a6e0a8cfe7e58306c4655e9f0d
2014-02-27Adding get_y_mode() function.Dmitry Kovalev
Change-Id: Iaac57b24f79cd205a8c62bc1177412d22f5787a8
2014-02-25Merge "Consistent names for reference_mode functions."Dmitry Kovalev
2014-02-24Trap request to display non-existant frameAdrian Grange
If show_existing_frame indicates that the decoder should display an existing (previously decoded) frame, add a check to make sure that the signaled buffer does contain a valid decoded frame. Change-Id: Iac8c686b321827414d69a3f2d0467566911bcba2
2014-02-19Consistent names for reference_mode functions.Dmitry Kovalev
Change-Id: I48c9e5e4ca21e11740c750ca2eabf7e8a51c52d2
2014-02-19Adding is_mv_valid() function.Dmitry Kovalev
Change-Id: I9d036244b558765b252d8c6681b22721cb2e51bb
2014-02-13Merge "Removed the reset of mode_info from previous frame"Yaowu Xu
2014-02-13Removed the reset of mode_info from previous frameYaowu Xu
Prior to this commit, both encoder and decoder reset mode/mv info from previous frame in error resilient mode to ensure bitstreams are able to decode when there is loss of frame in decoder side. However, this is not necessary. This commit changed to remove the reset, so encoder can continue to use mode/mv/partition information from previously encoded frame without affecting decodeablilty under loss of frame. Change-Id: I0279f862900dc647fb471ae3389770bb1b9f454f
2014-02-12Renaming skip_coeff to skip for consistency.Dmitry Kovalev
Change-Id: I036e815ca63d00cba71202ae09ba0f6ef745dcb8
2014-02-11Fix frames that have no references to them.Frank Galligan
BasicRateTargeting3TemporalLayers found an error with the get/release frame buffer management. Change-Id: Iccff25cba1d2f276f2a0d0fb7b20cf99b4405549
2014-02-11Merge "Add get release decoder frame buffer functions."Frank Galligan
2014-02-10Add get release decoder frame buffer functions.Frank Galligan
This CL changes libvpx to call a function when a frame buffer is needed for decode. Libvpx will call a release callback when no other frames reference the frame buffer. This CL adds a default implementation of the frame buffer callbacks. Currently only VP9 is supported. A future CL will add support for applications to supply their own frame buffer callbacks. Change-Id: I1405a320118f1cdd95f80c670d52b085a62cb10d
2014-02-06vp9_dthread: interleave mutex/cond alloc+initJames Zern
this ensures both are properly initialized when calling _dealloc(). + check the arrays before access Change-Id: I789af39b41c271b5cb3c029526581b4d9903b895
2014-02-03Propgate constants through subexp routines.Alex Converse
This avoids calls to get_unsigned_bits() with constants and replaces hard to trace loops with simpler structures. Change-Id: Ic1afc5a17d7df5bcfc85b76efda316b0bf118467
2014-01-31static function convert to inline or global vp9_blockd.hJim Bankoski
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
2014-01-31Rename a loopfilter parameterYunqing Wang
As pointed out by Dmitry and James, "partial" is a Microsoft- specific c++ keyword, and it is renamed. Change-Id: Ia0fc11ceb89e54b3195287f89f7e26edbbe9beb8
2014-01-31Merge "Combining fb_idx_ref_cnt[] and yv12_fb[] arrays."Dmitry Kovalev
2014-01-31Merge "Renaming "mbskip" to "skip"."Dmitry Kovalev
2014-01-31vp9 decoder: row-based multi-threaded loopfilterYunqing Wang
Implemented parallel loopfiltering, which uses existing tile- decoding threads. Each thread works on one row, and when that row is loopfiltered, it moves to next unattended row. To ensure the correct filtering order, threads are synchronized and one superblock is filtered only if the superblocks it depends on are filtered already. To reduce synchronization overhead and speed up the decoder, we use nsync > 1 for high resolution. Performance tests: 1. on desktop: 8-tile 4k video using 8 threads, speedup: 70% - 80% 4-tile HD video using 4 threads, speedup: ~35% 2. on mobile device(Nexus 7): 4-tile 1080p video using 4 threads, speedup: 18% - 25% 4-tile 1080p video using 2 threads, speedup: 10% - 15% Change-Id: If54b4a11960dd706c22d5ad145ad94156031f36a
2014-01-31Disable update of last_show_frame for existing frameAdrian Grange
When showing a previously decoded frame, i.e. when show_existing_frame=1, the update of the last_show_frame flag must be disabled. This is to ensure that the last_show_frame flag reflects the state of the flag for the immediately previously decoded frame rather then the value that was forced to ensure that a previously decoded frame would be displayed. This patch also adds a test vector to verify that the display_existing_frame flag works as expected. Code for generating the test vector can be found in this patch: https://gerrit.chromium.org/gerrit/#/c/68581/ (Bug originally reported by Alexander Voronov <ru.xalba@gmail.com>). Change-Id: I731d288fba02088959f7fcc87707137fffc6acf5
2014-01-29Renaming "mbskip" to "skip".Dmitry Kovalev
Change-Id: I27a30b43eae026a77f92958e2238d02d9cdf7832
2014-01-29Combining fb_idx_ref_cnt[] and yv12_fb[] arrays.Dmitry Kovalev
Adding new RefCntBuffer struct which contains reference counter and image buffer. Change-Id: I71c1f532faa13442c32c43fc03ec45b6f88fb844
2014-01-24Removing subpix_fn_table struct.Dmitry Kovalev
We don't use different filter kernels for x and y, it is always one kernel for both directions. Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
2014-01-24Renaming INTERPOLATION_TYPE to INTERP_FILTER.Dmitry Kovalev
Corresponding renames: subpel_kernel => interp_kernel vp9_get_filter_kernel() => vp9_get_interp_kernel() pred_filter_type => pred_interp_filter adaptive_pred_filter_type => adaptive_pred_interp_filter mcomp_filter_type => interp_filter read_interp_filter_type() => read_interp_filter() write_interp_filter_type() => write_interp_filter() fix_mcomp_filter_type() => fix_interp_filter() Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
2014-01-24Merge "Revert external frame buffer code."Frank Galligan
2014-01-24Merge changes ↵James Zern
I826655a7,I5164df72,Iba9b198c,Ide9a6846,I4f51ce85,I0e6aa00f,Ic334da9a,I252f5f8a,I7865db2d,I13b434b1 * changes: test/: remove unnecessary extern "C"s top-level: add extern "C" to headers vpx_ports: add extern "C" to headers vpx: add extern "C" to headers vp9/encoder: add extern "C" to headers vp9/decoder: add extern "C" to headers vp9/common: add extern "C" to headers vp8/encoder: add extern "C" to headers vp8/decoder: add extern "C" to headers vp8/common: add extern "C" to headers
2014-01-24Revert external frame buffer code.Frank Galligan
A future CL will add external frame buffers differently. Squash commit of four revert commits: Revert "Increase required number of external frame buffers" This reverts commit 9e41d569d7c84dd9ca8f0047c15377a883945685. Revert "Add external constants." This reverts commit bbf53047b03106e3c2e24b28cb836cc838db5ee8. Revert "Add frame buffer lru cache." This reverts commit fbada948fa345e67acf9aa41a8f9a78f5dfe8648. Conflicts: vpxdec.c Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005 Revert "Add support to pass in external frame buffers." This reverts commit 10f891696bc4c972c13cc9fde2c53470501a03e2. Conflicts: test/external_frame_buffer_test.cc vp9/common/vp9_alloccommon.c vp9/common/vp9_reconinter.c vp9/decoder/vp9_decodeframe.c vp9/encoder/vp9_onyx_if.c vp9/vp9_dx_iface.c vpx/vpx_decoder.h vpx/vpx_external_frame_buffer.h vpx_scale/generic/yv12config.c vpxdec.c Change-Id: I7434cf590f1c852b38569980e4247fad0d939c2e
2014-01-23vp9/decoder: add extern "C" to headersJames Zern
Change-Id: I0e6aa00f220280e22d30d098545265835d0c1079
2014-01-23Changed to prevent decoder crashYaowu Xu
The change prevent a decoder crash for invalid stream with negative size. Change-Id: I7411765f3524c783058fa3d436549be4e75d8969
2014-01-22Merge "Seperate the border size for encoder and decoder."hkuang
2014-01-22Merge "Force show_frame=1 when show_existing_frame=1"Adrian Grange
2014-01-21Seperate the border size for encoder and decoder.hkuang
Encoder's boarder is still 160, while decoder's boarder will be 32. With on demand and separate boarder buffer for boarder extension. The decoder's boarder does not need to to 160 anymore. Change-Id: I93d5aaff15a33a2213e9761eaa37c5f2870747db
2014-01-21Force show_frame=1 when show_existing_frame=1Adrian Grange
When showing a previously decoded frame, we need to explicitly set the show_frame flag. For the current frame being decoded this flag is explicitly set in the frame header. This should fix WebM Issue 696: http://code.google.com/p/webm/issues/detail?id=696 Change-Id: I5751a809813f88d2ca6f62c47c3878475ff9ba8d
2014-01-16Deprecate the use of best_mv in decoding processJingning Han
This commit removes the use of best_mv in the decoding process. This variable can be replaced with nearest_mv. It saves a few cycles on assigning the values for best_mv. Change-Id: Ic183f9c1fb615c54efd7e6ccfedcf09d493435e4
2014-01-06Merge "Adding RefBuffer struct."Dmitry Kovalev
2014-01-03Moving get_scan() call out of decode_coeffs() function.Dmitry Kovalev
Change-Id: I5db2e5a6c36e6c503dea2e07d9d2e0daf4ac9d89
2014-01-03Adding RefBuffer struct.Dmitry Kovalev
Adding RefBuffer to simplify reference buffer management. The struct has a pointer to image data and scale factors relative to the current frame. Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
2014-01-02Merge "Fix show existing frame"Yaowu Xu
2013-12-26Merge "Removing vp9_findnearmv.{h, c} files."Dmitry Kovalev
2013-12-20Renaming vp9_dboolhuff.{h, c} to vp9_reader.{h, c}.Dmitry Kovalev
Change-Id: I50c009ff8108bda1c57427f23d63a79c04f7e776
2013-12-19Removing vp9_findnearmv.{h, c} files.Dmitry Kovalev
Moving all code from that files to vp9_mvref_common.{h, c}. Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
2013-12-19Using single struct to represent scale factors.Dmitry Kovalev
Moving back to scale_factors struct. We don't need anymore x_offset_q4 and y_offset_q4 because both values are calculated locally inside vp9_scale_mv function. Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
2013-12-19Merge "Converting vp9_treecoder.h to vp9_prob.{h, c}"Dmitry Kovalev
2013-12-18Cast away Windows warningJohann
Subtracting the pointers promoted to a signed type. Change-Id: Ied0e822a1756ed7b2f514efafcb6dce4efb9b9d6
2013-12-17Fix incorrect size readingJohann
Guard against incorrect size values moving *data past data_end. Check read length against the difference of the buffers. Change-Id: Ie0b54e2db517fd41a0f3ceb23402ee44839a4739
2013-12-16Merge "Add const to match declaration"Johann