- 31 Jan, 2014 2 commits
-
-
Yunqing Wang authored
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
-
Adrian Grange authored
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
-
- 25 Jan, 2014 1 commit
-
-
Dmitry Kovalev authored
We don't use different filter kernels for x and y, it is always one kernel for both directions. Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
-
- 24 Jan, 2014 3 commits
-
-
Dmitry Kovalev authored
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
-
Frank Galligan authored
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 9e41d569. Revert "Add external constants." This reverts commit bbf53047. Revert "Add frame buffer lru cache." This reverts commit fbada948. Conflicts: vpxdec.c Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005 Revert "Add support to pass in external frame buffers." This reverts commit 10f89169. 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
-
James Zern authored
Change-Id: I0e6aa00f220280e22d30d098545265835d0c1079
-
- 23 Jan, 2014 1 commit
-
-
Yaowu Xu authored
The change prevent a decoder crash for invalid stream with negative size. Change-Id: I7411765f3524c783058fa3d436549be4e75d8969
-
- 21 Jan, 2014 2 commits
-
-
hkuang authored
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
-
Adrian Grange authored
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
-
- 17 Jan, 2014 1 commit
-
-
Jingning Han authored
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
-
- 04 Jan, 2014 1 commit
-
-
Dmitry Kovalev authored
Change-Id: I5db2e5a6c36e6c503dea2e07d9d2e0daf4ac9d89
-
- 03 Jan, 2014 1 commit
-
-
Dmitry Kovalev authored
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
-
- 20 Dec, 2013 3 commits
-
-
Dmitry Kovalev authored
Change-Id: I50c009ff8108bda1c57427f23d63a79c04f7e776
-
Dmitry Kovalev authored
Moving all code from that files to vp9_mvref_common.{h, c}. Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
-
Dmitry Kovalev authored
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
-
- 18 Dec, 2013 2 commits
-
-
Johann authored
Subtracting the pointers promoted to a signed type. Change-Id: Ied0e822a1756ed7b2f514efafcb6dce4efb9b9d6
-
Johann authored
Guard against incorrect size values moving *data past data_end. Check read length against the difference of the buffers. Change-Id: Ie0b54e2db517fd41a0f3ceb23402ee44839a4739
-
- 16 Dec, 2013 4 commits
-
-
Johann authored
The definition fell out of sync in I7d2fda72de5fc27e86c6589543b41fa044681dbf Change-Id: I3ce3f6ba96bb121f51efaa08f64a69ad9f731a9e
-
hkuang authored
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
-
Dmitry Kovalev authored
Moving vp9_norm probability table from vp9_entropy.c to vp9_prob.c Change-Id: Ie757b73860c6f43130790c332b292e2a1a81b788
-
Frank Galligan authored
VP9 decoder can now use frame buffers passed in by the application. Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
-
- 13 Dec, 2013 2 commits
-
-
Dmitry Kovalev authored
set_offsets() is a right place to configure all mi-related pointers. Change-Id: I7d2fda72de5fc27e86c6589543b41fa044681dbf
-
James Zern authored
string literal to int within an assert Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
-
- 11 Dec, 2013 2 commits
-
-
James Zern authored
reorder the tiles based on size and their presumed complexity. this minimizes the cases where the main thread is waiting on a worker to complete. Change-Id: Ie80642c6a1d64ece884f41683d23a3708ab38e0c
-
Dmitry Kovalev authored
Replacing if-else with switch statement, reordering function arguments. Change-Id: I4825d2ef311ba8999b6d4ceb0eef003587a13434
-
- 10 Dec, 2013 2 commits
-
-
Dmitry Kovalev authored
Renames: vp9_get_pred_context_mbskip => vp9_get_skip_context vp9_get_pred_prob_mbskip => vp9_get_skip_prob Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
-
hkuang authored
the border now. Next commit will totally remove the border. Change-Id: Ic1e1ca9cc34f81c688715b3948689b47df63a151
-
- 09 Dec, 2013 2 commits
-
-
Dmitry Kovalev authored
Change-Id: I83ffed2b1878a35ac35f07f9ee74309adc9c7b11
-
Dmitry Kovalev authored
Change-Id: Ib4e215a80f00e342d857a54a4ca1b2dc82b6db1d
-
- 06 Dec, 2013 6 commits
-
-
Dmitry Kovalev authored
Change-Id: Ia6d6f4dfb1fd1ec0f8ba53796b59a802e9d7881d
-
Dmitry Kovalev authored
Renames: vp9_get_pred_context_comp_inter_inter => vp9_get_reference_mode_context vp9_get_pred_prob_comp_inter_inter => vp9_get_reference_mode_prob Change-Id: I3bbb69481e6b0c848028667c9269f567f293d3bd
-
Dmitry Kovalev authored
Change-Id: Ic3bb862e93aedf6a489a33ea6f7e5097d96855ee
-
Dmitry Kovalev authored
Also adding BAND_COEFF_CONTEXTS macro to simplify for loop logic. Change-Id: I12a78a49cf1addf81e6b3fe2a3736ec2b79bd79e
-
Dmitry Kovalev authored
Renaming: vp9_get_pred_context_intra_inter => vp9_get_intra_inter_context vp9_get_pred_prob_intra_inter => vp9_get_intra_inter_prob Change-Id: I2c1affea2e84f4e616137c6df82adb11c7845781
-
Dmitry Kovalev authored
NUM_YV12_BUFFERS => FRAME_BUFFERS ALLOWED_REFS_PER_FRAME => REFS_PER_FRAME NUM_REF_FRAMES_LOG2 => REF_FRAMES_LOG2 NUM_REF_FRAMES => REF_FRAMES NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2 NUM_FRAME_CONTEXTS => FRAME_CONTEXTS Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
-
- 05 Dec, 2013 3 commits
-
-
Tero Rintaluoma authored
- Disable mode info update in case where current frame is coded as "show existing frame". - Should fix issue 676. Change-Id: Ibee681850eb307f982da6528d3e31cb94f881c08
-
Dmitry Kovalev authored
Using consistent names (block_idx => block, dqcoeff_ptr => dqcoeff, pt => ctx), inlining get_tx_eob() call. Change-Id: I05208e57df81bbb8f25b8274684a48192e9de464
-
Frank Galligan authored
The old code would start in a mixed state, where all the reference frames were pointing to frame buffer 0, but the reference counts were 0. This is why we needed special code for the first frame. Change-Id: I734961012917654ff8c0c8b317aac00ab75ded1a
-
- 04 Dec, 2013 2 commits
-
-
Dmitry Kovalev authored
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
-
Dmitry Kovalev authored
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
-