hkuang
1fe6496b17
Merge "Refactor calling loopfilter code."
2014-05-15 10:51:10 -07:00
hkuang
bf8c58be5a
Refactor calling loopfilter code.
...
This change is mainly for a follow CL that will refactor the
decode_tiles.
Change-Id: I52de6f8dbada75a64d9a94ebb5975136ed0960b4
2014-05-15 10:21:18 -07:00
Dmitry Kovalev
39015ea200
Making vp9_initialize_dec() static.
...
Change-Id: I831fe91dfadf4e89f5bbba6ab7a9917d8dd2ed55
2014-05-14 16:33:00 -07:00
Yaowu Xu
ed09580777
vp9_decodeframe.c: cleanup -wextra warnings
...
Change-Id: I0315cea6a5e58182bc2556e9825ec2ef0b1480c3
2014-05-14 09:46:11 -07:00
Dmitry Kovalev
d31b836193
Deadline is not supported in VP9 decoder, removing it completely.
...
Change-Id: I7675f23150404913f4b457add69fb846f6921997
2014-05-13 17:35:46 -07:00
Dmitry Kovalev
eecc750b33
Merge "Moving loopfilter call to vp9_decode_frame()."
2014-05-13 17:20:26 -07:00
Dmitry Kovalev
ae7d3ef39f
Moving loopfilter call to vp9_decode_frame().
...
Inline loopfilter has been already handled in vp9_decode_frame().
Collecting all similar code in one place now.
Change-Id: I358a0280fc7c2b27cca520bc1e8c16c4eb6491dd
2014-05-12 16:19:19 -07:00
Dmitry Kovalev
ccfb4b920a
Adding get_tile_buffers() function.
...
Change-Id: I910c437b80af90c50831e1fbff75842d4276a027
2014-05-12 12:49:29 -07:00
Adrian Grange
3305909bc2
Merge "Fix check of debug counts for corrupt frame"
2014-05-11 09:13:55 -07:00
Adrian Grange
99892e85d5
Fix check of debug counts for corrupt frame
...
Fixes the idecoder in the case where:
cm->error_resilient_mode == 0, and
cm->frame_parallel_decoding_mode == 0, but
new_fb->corrupted == 1.
The assert in debug_check_frame_counts fails to
take into account the case of a corrupt frame.
Change-Id: Idf318a68458cc88d65d6f3f408a10d8ffe87e43f
2014-05-09 10:12:23 -07:00
Dmitry Kovalev
0dacecaf20
Removing VP9DecoderConfig.
...
We only used two members from that struct: max_threads and inv_tile_order.
Moving them directly to VP9Decoder struct.
Change-Id: If696a4e5b5b41868a55f3cc971e1d7c1dd9d5f69
2014-05-08 16:24:36 -07:00
Dmitry Kovalev
25110038f7
Merge "Using crop_{width, height} instead of {width, height}."
2014-04-30 15:01:26 -07:00
Jim Bankoski
29af017fc0
corrupted frames shouldn't affect stats
...
Don't update the stats if we have a corrupted frame.
Change-Id: I65a13adc50e0389b4201d3b671f0225195dfaff4
TODO: Test case that shows this problem.
2014-04-30 10:13:29 -07:00
Dmitry Kovalev
49d8bdc29b
Using crop_{width, height} instead of {width, height}.
...
Change-Id: I6dc9741cdcd700f5c4a387f58da7feb58dd4bbda
2014-04-29 16:12:44 -07:00
Dmitry Kovalev
571c70e554
Removing WRITE_RECON_BUFFER related code.
...
That code is not used, we could easily return it back using vpx_img_write()
function.
Change-Id: Id107875c6feab6ad245a518f6b437b6ed4b1246d
2014-04-25 16:43:58 -07:00
Joey Parrish
18c08607e0
Add VPXD_SET_DECRYPTOR support to the VP9 decoder.
...
Change-Id: I88f86c8ff9af34e0b6531028b691921b54c2fc48
2014-04-23 16:11:54 -07:00
Dmitry Kovalev
e608418899
Renaming MB_PREDICTION_MODE to PREDICTION_MODE.
...
Actually, it would be great to have two separate enums INTRA_MODES and
INTER_MODES in future.
Change-Id: I6c4147cf0002853da9c1e03fe9514eab876f01c8
2014-04-22 17:48:31 -07:00
Yaowu Xu
bae205fd6a
Remove an unused function
...
Change-Id: I0f2592ecfc5197dfb94975260cb2f862315e7895
2014-04-20 14:50:35 -07:00
Dmitry Kovalev
ab3d8e6fc5
Renaming VP9D_CONFIG to VP9DecoderConfig.
...
Change-Id: I9677aab1c7bb0ca9e989cb21348a3a2c926d8f5a
2014-04-11 14:50:11 -07:00
Dmitry Kovalev
59fd74229e
Merge "Removing unused initial_{width, height} from VP9Decoder."
2014-04-11 10:23:35 -07:00
Dmitry Kovalev
b5bf64668e
Merge "Cleaning up vp9_dthread.{c, h}."
2014-04-10 21:44:33 -07:00
Dmitry Kovalev
69c6671ead
Cleaning up vp9_dthread.{c, h}.
...
Change-Id: If33087462293605f79d9281af133091fff33a876
2014-04-10 16:17:49 -07:00
Dmitry Kovalev
65e650e0c0
Merge "Revert "Converting set_prev_mi() to get_prev_mi().""
2014-04-09 20:44:30 -07:00
Dmitry Kovalev
46a20d67cb
Removing unused initial_{width, height} from VP9Decoder.
...
Change-Id: I039474b34863bc3db9c6cda82485c32826a1b5d1
2014-04-09 16:18:29 -07:00
Dmitry Kovalev
60def47f21
Revert "Converting set_prev_mi() to get_prev_mi()."
...
This reverts commit 22a3e30790
Change-Id: I460d905edf5fb2006da58c18fbe02c04d0c631bb
2014-04-09 15:23:16 -07:00
James Zern
db8af0b0b3
Merge "Fix TODO typo"
2014-04-09 11:29:44 -07:00
Dmitry Kovalev
5ed83c3220
Merge "Converting set_prev_mi() to get_prev_mi()."
2014-04-09 10:27:05 -07:00
Frank Galligan
bbf8971a28
Fix TODO typo
...
Change-Id: I7a5230852cb24ce22bfe85ea2608cdb4619b5200
2014-04-09 08:48:44 -07:00
Deb Mukherjee
0cca5dd8d7
Merge "High-level hooks for Profile 2 (10/12 bit)"
2014-04-08 22:19:38 -07:00
Frank Galligan
9893fb9859
Merge "Fix decoder resolution change with tiles"
2014-04-08 17:13:33 -07:00
Deb Mukherjee
d35df2d8ea
High-level hooks for Profile 2 (10/12 bit)
...
Adds some high-level hooks for profile 2 before further
progress on the implementation.
According to the definitiion in this patch:
1. Profile 2 only supports 10 or 12 bit color but not 8
2. Profile 2 supports all color sampling modes: 444, 422 and 420,
and alpha plane.
3. Profile 3 is currently undefined.
Please consider the definition carefully and suggest modifications
to the definition as needed.
Change-Id: I5b284fc679e54ac5aee171af72fa7994cfd28995
2014-04-08 16:18:34 -07:00
Frank Galligan
6ae58931d6
Fix decoder resolution change with tiles
...
There was a bug with the decoder that if you started the decoder
with more threads than the first frame had tile columns. Afterwards
tried to decode a frame with more tile columns than the first frame,
the decoder would hang. E.g. run vpxdec --threads=4. The first frame
had two tile columns, then the next key frame had 4 tile columns, the
decoder would hang. If you started with 4 tiles and switched to 2
tiles the decoder would be fine. The issue is that the worker the thread
loop is using is stale.
I added a test vector "vp90-2-14-resize-848x480-1280x720.webm" that
exhibited the bug.
Change-Id: I7bdd47241a52ac0fe1c693a609bc779257e94229
2014-04-08 15:16:11 -07:00
Dmitry Kovalev
56c2f41ccb
Renaming VP9D_COMP & VP9Decompressor to VP9Decoder.
...
Change-Id: Ieb9b455b8aaef9884391021b7f640ef24c554687
2014-04-08 11:41:12 -07:00
Dmitry Kovalev
22a3e30790
Converting set_prev_mi() to get_prev_mi().
...
Change-Id: Iad4002d7aecaae0e25d88e286bacde7e6cd7264f
2014-04-07 16:01:34 -07:00
Dmitry Kovalev
b5e12dda52
Cleaning up vp9_{cx, dx}_iface.c files.
...
Change-Id: Ib4e31ba74c4b882bd93942ef743f4a189892738d
2014-04-07 10:38:51 -07:00
hkuang
0678104164
Merge "Code clean up."
2014-04-04 15:32:14 -07:00
hkuang
272e030f70
Code clean up.
...
No need to check pbi->common.frame_to_show again.
Change-Id: I572ea4afd0d8b6000c0bb7575b7023d75cad5a4e
2014-04-03 16:20:26 -07:00
Dmitry Kovalev
a9f324fa7f
Removing interp_kernel from MACROBLOCKD.
...
Now interp_kernel is obtained when it is really required (based on
mbmi->interp_filter value).
Change-Id: I4c7a93c179d1045eba16e7526c293d02c9b8b47e
2014-04-03 15:28:42 -07:00
Dmitry Kovalev
5f8dd6c9ec
Adding return value to set_offsets() function.
...
Change-Id: I88e018442c527cf21eac791f0768e805dda244f1
2014-04-01 20:06:47 -07:00
Dmitry Kovalev
86f44a91f4
Renaming two members in MACROBLOCKD struct.
...
Renames:
mi_8x8 -> mi
mode_info_stride -> mi_stride
Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-04-01 17:46:40 -07:00
Dmitry Kovalev
d42976c515
Common configuration for MACROBLOCKD struct.
...
Change-Id: Ie2ea9dd8bd338cc9fe12ca9033df64f7644c68b3
2014-04-01 10:57:59 -07:00
Dmitry Kovalev
03349d2ba2
Moving dqcoeff array to MACROBLOCKD in decoder.
...
Change-Id: I3e20c0cdb9d2437bddf21afb255855f2dead8e02
2014-03-28 10:36:16 -07:00
Dmitry Kovalev
63f86c149a
Removing prev_mi_8x8 from MACROBLOCKD.
...
Change-Id: I32beb5f18c10b5771146c55933b5555487f53633
2014-03-26 10:50:34 -07:00
Dmitry Kovalev
6f139773a2
Merge "Removing redundant references to VP9D_COMP struct."
2014-03-25 16:56:33 -07:00
Dmitry Kovalev
9366624cc4
Removing redundant references to VP9D_COMP struct.
...
Change-Id: I4c4772c0e6aca2c7d7085a72412ac8dba8874a3d
2014-03-25 14:21:26 -07:00
Dmitry Kovalev
72d431b69f
Removing redundant vpx_free() call.
...
above_seg_context is alreaded freed during vp9_remove_common() call.
Change-Id: I16b72c710e71d2f143df2d47e876d220c8d374e0
2014-03-25 14:07:49 -07:00
Dmitry Kovalev
ed39c40a2e
Moving above_context to VP9_COMMON.
...
Change-Id: I713af99d1e17e05a20eab20df51d74ebfd1a68d2
2014-03-25 10:40:08 -07:00
Yaowu Xu
ebb4a26202
Merge "Align threading LFWorkerData to 32 bytes."
2014-03-24 17:19:48 -07:00
Dmitry Kovalev
0e84fb08e9
Merge "Making c++ compiler happier."
2014-03-24 17:17:57 -07:00
Dmitry Kovalev
79c51573c1
Merge "Initialization code cleanup."
2014-03-24 16:12:42 -07:00
Dmitry Kovalev
a5d51fbdf3
Merge "General cleanup in vp9_decoder.{h, c}."
2014-03-24 15:56:25 -07:00
Yaowu Xu
bc2761d3cb
Align threading LFWorkerData to 32 bytes.
...
This is to silent a number misalignment warning reported by valgrind.
Change-Id: Ia47a06010b28d7a88dde21f3e4ccb9308fc6f8cf
2014-03-24 12:48:27 -07:00
Dmitry Kovalev
5b8c834c1a
Initialization code cleanup.
...
Change-Id: I47a8b4bf9a6cc0063d1a6785eaaad641d0659e24
2014-03-24 12:21:22 -07:00
Dmitry Kovalev
c9a8c32bce
Merge "Removing unused members from VP9D_CONFIG struct."
2014-03-24 09:27:06 -07:00
Dmitry Kovalev
9347e55f12
Making c++ compiler happier.
...
Change-Id: Ie224e968589bdb0774dc112e6f6df56cc0447465
2014-03-21 14:37:01 -07:00
Dmitry Kovalev
b09cbae0dd
General cleanup in vp9_decoder.{h, c}.
...
Change-Id: I68819558a9c5ac6ea85fe62260712af6f4cc46b7
2014-03-21 14:20:13 -07:00
Dmitry Kovalev
89ec46e6b8
Removing unused members from VP9D_CONFIG struct.
...
Change-Id: I83a201ab4dcf2f00131f2030f382c6dbfcb39d7e
2014-03-21 14:08:19 -07:00
Dmitry Kovalev
4cb37bff96
Removing redundant {above, left}_seg_context manipulation code.
...
Change-Id: Ib3c1746e61220c629cbd971b2458aa686b5c9e36
2014-03-21 12:12:55 -07:00
Dmitry Kovalev
a57de9da03
Merge "Reusing {above, left}_seg_context vars in both encoder and decoder."
2014-03-21 12:02:42 -07:00
Dmitry Kovalev
d82766155c
Merge "Removing source & source_sz from VP9Decompressor struct."
2014-03-21 12:01:25 -07:00
Yaowu Xu
46c71e5eba
Merge "Remove duplicate declaration"
2014-03-21 08:44:04 -07:00
Dmitry Kovalev
7ad40117f1
Reusing {above, left}_seg_context vars in both encoder and decoder.
...
Change-Id: Id1fa36c92cb007b73a450cc8552e810cedad38b9
2014-03-20 16:15:57 -07:00
Dmitry Kovalev
88a10abe7c
Removing source & source_sz from VP9Decompressor struct.
...
Change-Id: If4c1a48c60e8b27dd021a83170289ccc5467c6de
2014-03-20 15:01:37 -07:00
Yaowu Xu
7ef16efca1
Remove duplicate declaration
...
Change-Id: Ic8e52a89e0df816c38cd8ff1b7c53862b9a6dff2
2014-03-19 12:23:32 -07:00
Dmitry Kovalev
8ccfcb765f
Removing mi_stream.
...
Change-Id: If674140e30c223c88894b983fd22a583efb99dcf
2014-03-19 10:47:32 -07:00
Dmitry Kovalev
b8bc2d337a
Fixing warnings/errors from c++ compiler.
...
Change-Id: Ia561dda53f2dd10e3a10a2df2adb8027ab19397a
2014-03-18 10:47:51 -07:00
Dmitry Kovalev
e65c564c78
Adding vp9_swap_mi_and_prev_mi() function.
...
Change-Id: I18b3939f0b51085cdd25c9182c3a9c7536ca7e3e
2014-03-13 13:55:33 -07:00
Dmitry Kovalev
aa7ec14c9a
Merge "Speeding up reading of intra block modes."
2014-03-13 13:45:32 -07:00
Dmitry Kovalev
90fed85ce0
Renaming decode_modes_{b, sb}.
...
decode_modes_b => decode_block
decode_modes_sb => decode_partition
Change-Id: I2a208f5f7bcaa1105f6a2244e37c53b8958c5d76
2014-03-12 15:11:07 -07:00
Dmitry Kovalev
ba54a886c3
Speeding up reading of intra block modes.
...
Reimplementing sub8x8-reading of intra block modes in
read_intra_frame_mode_info() and read_intra_block_mode_info(). Code looks
more readable as well.
Change-Id: Ia42fc7d0dad708bc0c7a8bff1f8b37809b843f40
2014-03-12 12:32:09 -07:00
Dmitry Kovalev
c909b43e3c
Merge "Moving mi_streams from VP9Decompressor to VP9Common."
2014-03-12 12:20:18 -07:00
Dmitry Kovalev
dff81e6c7a
Moving mi_streams from VP9Decompressor to VP9Common.
...
Change-Id: I7ad79c061ad4efbc4914ac49723b48183fdbdd47
2014-03-10 16:12:45 -07:00
Dmitry Kovalev
ff935ff781
Removing last_mi from MACROBLOCKD struct.
...
Change-Id: Ied12b39c55667b26fd3bf90eb331e601c53a10f6
2014-03-10 16:02:03 -07:00
Dmitry Kovalev
32866fd80a
Merge "Renaming vp9_onyxd.h and vp9_onyxd_if.c to vp9_decoder.{h, c}."
2014-03-10 12:11:09 -07:00
Dmitry Kovalev
f8f8c6d44c
Adding reusable get_y_mode_prob() function.
...
Change-Id: Iebd182d7aeebc0f8964b6fd35057449bb25b00c1
2014-03-10 10:50:16 -07:00
Jim Bankoski
04e7607bd0
Merge "vp9_read_bit_buffer.h convert header statics to global functions"
2014-03-10 07:36:24 -07:00
Jim Bankoski
622f06eb59
Merge "vp9_reconinter.h static functions in header converted to global"
2014-03-10 07:36:05 -07:00
Dmitry Kovalev
5233e10a84
Renaming vp9_onyxd.h and vp9_onyxd_if.c to vp9_decoder.{h, c}.
...
Change-Id: Ibd0892be1ddadd93b8a22fa2c2e2053001f2948f
2014-03-06 12:08:20 -08:00
Dmitry Kovalev
8c2d3c6ee7
Merge "Removing vp9_onyxd_int.h file."
2014-03-05 21:40:31 -08:00
Dmitry Kovalev
ea88da7492
Removing vp9_onyxd_int.h file.
...
Moving VP9Decompressor struct from vp9_onyxd_int.h to vp9_onyxd.h.
Change-Id: Ic86c15e44130541a7f692db43ef9109293f99ae8
2014-03-05 10:39:29 -08:00
Dmitry Kovalev
d31fc628a7
Renaming NMV_UPDATE_PROB to MV_UPDATE_PROB.
...
Change-Id: I7f3bcca103f0b1f6b3c064b61472543de9a8288a
2014-03-05 10:37:52 -08:00
Jim Bankoski
a1fbe1e15f
vp9_read_bit_buffer.h convert header statics to global functions
...
Change-Id: Ibea71b22de898832320d9e49a711a0cb0092901b
2014-03-03 15:21:22 -08:00
Jim Bankoski
e5e9b05d68
vp9_reconinter.h static functions in header converted to global
...
Change-Id: I916944950deb22f4c2301d83a803b732bf3ecd77
2014-03-03 14:58:43 -08:00
Dmitry Kovalev
46af01d719
Adding get_tx_type() instead of get_tx_type_{8x8, 16x16}.
...
Change-Id: I4a54b12e5229705222c5a101258b9d1f81e2948d
2014-03-03 12:20:51 -08:00
Dmitry Kovalev
cf123f40ee
Merge "Removing VP9D_PTR."
2014-03-03 09:18:28 -08:00
Yaowu Xu
501fce7270
vp9_decodeframe.c: remove unused params
...
Change-Id: Ie83e18802234199491dbb6e90886739814558f96
2014-03-02 14:34:50 -08:00
Yaowu Xu
2f4eb5f096
Remove vp9_create_common()
...
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-03-01 10:59:24 -08:00
Yaowu Xu
0fa4d89042
Fix unused parameters in vp9_extend_frame_borders
...
Change-Id: I7255b3bc47d760333f58ac4878becbcc8ad30967
2014-02-28 15:50:32 -08:00
Dmitry Kovalev
e4159100bc
Merge "Adding get_y_mode() function."
2014-02-28 11:12:22 -08:00
Dmitry Kovalev
af62e09684
Removing VP9D_PTR.
...
Change-Id: I17276e25db4592ffeff0961dd9eeaabe4bde110c
2014-02-27 19:08:10 -08:00
Dmitry Kovalev
bb65be98bb
Reusing existing mem_{get, put}_be32() functions.
...
Change-Id: Iba128039534e16a6e0a8cfe7e58306c4655e9f0d
2014-02-27 17:40:30 -08:00
Dmitry Kovalev
1ae91f7784
Adding get_y_mode() function.
...
Change-Id: Iaac57b24f79cd205a8c62bc1177412d22f5787a8
2014-02-27 16:05:50 -08:00
Dmitry Kovalev
8fc8583a4c
Merge "Consistent names for reference_mode functions."
2014-02-25 11:04:37 -08:00
Adrian Grange
709fecac83
Trap request to display non-existant frame
...
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-24 10:19:31 -08:00
Dmitry Kovalev
69fd030dc8
Consistent names for reference_mode functions.
...
Change-Id: I48c9e5e4ca21e11740c750ca2eabf7e8a51c52d2
2014-02-19 15:33:59 +01:00
Dmitry Kovalev
9b75f381cf
Adding is_mv_valid() function.
...
Change-Id: I9d036244b558765b252d8c6681b22721cb2e51bb
2014-02-19 13:57:18 +01:00
Yaowu Xu
8d646becb6
Merge "Removed the reset of mode_info from previous frame"
2014-02-13 17:03:50 -08:00
Yaowu Xu
896d79a57e
Removed the reset of mode_info from previous frame
...
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-13 12:48:08 -08:00
Dmitry Kovalev
004c8c636e
Renaming skip_coeff to skip for consistency.
...
Change-Id: I036e815ca63d00cba71202ae09ba0f6ef745dcb8
2014-02-12 17:44:12 -08:00
Frank Galligan
1604ad2149
Fix frames that have no references to them.
...
BasicRateTargeting3TemporalLayers found an error with
the get/release frame buffer management.
Change-Id: Iccff25cba1d2f276f2a0d0fb7b20cf99b4405549
2014-02-11 18:34:21 -08:00
Frank Galligan
d51ca0db00
Merge "Add get release decoder frame buffer functions."
2014-02-11 08:19:37 -08:00
Frank Galligan
e8e152799b
Add get release decoder frame buffer functions.
...
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-10 14:08:11 -08:00
James Zern
4e44457b4d
vp9_dthread: interleave mutex/cond alloc+init
...
this ensures both are properly initialized when calling _dealloc().
+ check the arrays before access
Change-Id: I789af39b41c271b5cb3c029526581b4d9903b895
2014-02-06 12:39:24 -08:00
Alex Converse
41d3c989fd
Propgate constants through subexp routines.
...
This avoids calls to get_unsigned_bits() with constants and
replaces hard to trace loops with simpler structures.
Change-Id: Ic1afc5a17d7df5bcfc85b76efda316b0bf118467
2014-02-03 11:55:46 -08:00
Jim Bankoski
9dec7712ab
static function convert to inline or global vp9_blockd.h
...
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
2014-01-31 19:50:40 -08:00
Yunqing Wang
11a9366e3b
Rename a loopfilter parameter
...
As pointed out by Dmitry and James, "partial" is a Microsoft-
specific c++ keyword, and it is renamed.
Change-Id: Ia0fc11ceb89e54b3195287f89f7e26edbbe9beb8
2014-01-31 16:30:04 -08:00
Dmitry Kovalev
88340b173b
Merge "Combining fb_idx_ref_cnt[] and yv12_fb[] arrays."
2014-01-31 15:55:04 -08:00
Dmitry Kovalev
a8a2f22958
Merge "Renaming "mbskip" to "skip"."
2014-01-31 15:52:35 -08:00
Yunqing Wang
903801f1ef
vp9 decoder: row-based multi-threaded loopfilter
...
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-31 14:44:53 -08:00
Adrian Grange
64e2597465
Disable update of last_show_frame for existing frame
...
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-31 08:55:01 -08:00
Dmitry Kovalev
b107f2c470
Renaming "mbskip" to "skip".
...
Change-Id: I27a30b43eae026a77f92958e2238d02d9cdf7832
2014-01-29 14:48:42 -08:00
Dmitry Kovalev
6332063475
Combining fb_idx_ref_cnt[] and yv12_fb[] arrays.
...
Adding new RefCntBuffer struct which contains reference counter and image
buffer.
Change-Id: I71c1f532faa13442c32c43fc03ec45b6f88fb844
2014-01-29 12:48:01 -08:00
Dmitry Kovalev
8691565441
Removing subpix_fn_table struct.
...
We don't use different filter kernels for x and y, it is always one kernel
for both directions.
Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
2014-01-24 17:06:26 -08:00
Dmitry Kovalev
4264c93844
Renaming INTERPOLATION_TYPE to INTERP_FILTER.
...
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-24 15:57:28 -08:00
Frank Galligan
c6d537155c
Merge "Revert external frame buffer code."
2014-01-24 11:31:23 -08:00
James Zern
26c88ec14e
Merge changes 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-24 10:47:00 -08:00
Frank Galligan
b1c72b633e
Revert external frame buffer code.
...
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 9e41d569d7
.
Revert "Add external constants."
This reverts commit bbf53047b0
.
Revert "Add frame buffer lru cache."
This reverts commit fbada948fa
.
Conflicts:
vpxdec.c
Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005
Revert "Add support to pass in external frame buffers."
This reverts commit 10f891696b
.
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-24 10:10:20 -08:00
James Zern
40aa910c19
vp9/decoder: add extern "C" to headers
...
Change-Id: I0e6aa00f220280e22d30d098545265835d0c1079
2014-01-23 16:21:24 -08:00
Yaowu Xu
10b0813a9c
Changed to prevent decoder crash
...
The change prevent a decoder crash for invalid stream with negative
size.
Change-Id: I7411765f3524c783058fa3d436549be4e75d8969
2014-01-23 15:43:08 -08:00
hkuang
7f30a6f877
Merge "Seperate the border size for encoder and decoder."
2014-01-22 10:59:31 -08:00
Adrian Grange
c77c5413e0
Merge "Force show_frame=1 when show_existing_frame=1"
2014-01-22 08:34:48 -08:00
hkuang
437004c710
Seperate the border size for encoder and decoder.
...
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-21 15:28:41 -08:00
Adrian Grange
3246692ebc
Force show_frame=1 when show_existing_frame=1
...
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-21 10:39:39 -08:00
Jingning Han
318e177f4a
Deprecate the use of best_mv in decoding process
...
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-16 18:04:58 -08:00
Dmitry Kovalev
bbb25e6a39
Merge "Adding RefBuffer struct."
2014-01-06 14:19:44 -08:00
Dmitry Kovalev
5771276fda
Moving get_scan() call out of decode_coeffs() function.
...
Change-Id: I5db2e5a6c36e6c503dea2e07d9d2e0daf4ac9d89
2014-01-03 18:18:39 -08:00
Dmitry Kovalev
ba41e9d459
Adding RefBuffer struct.
...
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-03 15:21:55 -08:00
Yaowu Xu
8458c8c450
Merge "Fix show existing frame"
2014-01-02 09:27:28 -08:00
Dmitry Kovalev
1e8b5bf4ac
Merge "Removing vp9_findnearmv.{h, c} files."
2013-12-26 13:38:38 -08:00
Dmitry Kovalev
f69b5609ff
Renaming vp9_dboolhuff.{h, c} to vp9_reader.{h, c}.
...
Change-Id: I50c009ff8108bda1c57427f23d63a79c04f7e776
2013-12-20 12:53:03 -08:00
Dmitry Kovalev
987810ad95
Removing vp9_findnearmv.{h, c} files.
...
Moving all code from that files to vp9_mvref_common.{h, c}.
Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
2013-12-19 17:39:57 -08:00
Dmitry Kovalev
a3fbcc88bb
Using single struct to represent scale factors.
...
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-19 16:06:33 -08:00
Dmitry Kovalev
c67ee5ea24
Merge "Converting vp9_treecoder.h to vp9_prob.{h, c}"
2013-12-19 11:03:30 -08:00
Johann
dc2c62eba8
Cast away Windows warning
...
Subtracting the pointers promoted to a signed type.
Change-Id: Ied0e822a1756ed7b2f514efafcb6dce4efb9b9d6
2013-12-18 15:52:51 -08:00
Johann
85770264ac
Fix incorrect size reading
...
Guard against incorrect size values moving *data past data_end.
Check read length against the difference of the buffers.
Change-Id: Ie0b54e2db517fd41a0f3ceb23402ee44839a4739
2013-12-17 18:48:55 -08:00
Johann
83baed0b6b
Merge "Add const to match declaration"
2013-12-16 19:17:43 -08:00
Johann
5894e7ef50
Add const to match declaration
...
The definition fell out of sync in
I7d2fda72de5fc27e86c6589543b41fa044681dbf
Change-Id: I3ce3f6ba96bb121f51efaa08f64a69ad9f731a9e
2013-12-16 15:46:11 -08:00
hkuang
fb53409d2a
Merge "Remove border extension in intra frame prediction."
2013-12-16 14:48:54 -08:00
hkuang
25e5552630
Remove border extension in intra frame prediction.
...
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
2013-12-16 14:05:58 -08:00
Dmitry Kovalev
b5c9261832
Converting vp9_treecoder.h to vp9_prob.{h, c}
...
Moving vp9_norm probability table from vp9_entropy.c to vp9_prob.c
Change-Id: Ie757b73860c6f43130790c332b292e2a1a81b788
2013-12-16 12:53:09 -08:00
Frank Galligan
d0ee1fd797
Merge "Add support to pass in external frame buffers."
2013-12-15 19:18:25 -08:00
Frank Galligan
10f891696b
Add support to pass in external frame buffers.
...
VP9 decoder can now use frame buffers passed in by the application.
Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-12-15 18:45:46 -08:00
Dmitry Kovalev
f54b515797
Merge "Cleaning up vp9_append_sub8x8_mvs_for_idx()."
2013-12-13 15:38:53 -08:00
James Zern
3aa75bcef6
Merge "vp9 asserts: fix compile warning"
2013-12-13 12:41:31 -08:00
Dmitry Kovalev
e121bf4c1d
Moving mi configuration loop from vp9_read_mode_info to set_offsets.
...
set_offsets() is a right place to configure all mi-related pointers.
Change-Id: I7d2fda72de5fc27e86c6589543b41fa044681dbf
2013-12-12 19:56:30 -08:00
James Zern
178db94cd6
vp9 asserts: fix compile warning
...
string literal to int within an assert
Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
2013-12-12 19:49:19 -08:00
James Zern
345fbfef06
vp9 mt decode: reorder tile decode
...
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
2013-12-10 18:33:27 -08:00
Dmitry Kovalev
098d13ba10
Cleaning up vp9_append_sub8x8_mvs_for_idx().
...
Replacing if-else with switch statement, reordering function arguments.
Change-Id: I4825d2ef311ba8999b6d4ceb0eef003587a13434
2013-12-10 17:56:53 -08:00
Dmitry Kovalev
1048a7e314
Merge "Cleaning up skip context calculation."
2013-12-10 15:00:22 -08:00
Dmitry Kovalev
bcee73f7ae
Merge "Cleaning up read_inter_block_mode_info() function."
2013-12-10 14:59:36 -08:00