Commit Graph

11440 Commits

Author SHA1 Message Date
Dmitry Kovalev
e0503b9ca7 Merge "vp8_multi_resolution_encoder: Huge cleanup." 2014-08-28 12:13:29 -07:00
James Zern
bdb8c261d2 Merge "test/vp8_multi_resolution_encoder.sh: Add missing devnull redirect." 2014-08-28 11:59:30 -07:00
Dmitry Kovalev
c0383912df Merge "Removing unused debug code under WRITE_RECON_BUFFER." 2014-08-28 11:46:45 -07:00
Dmitry Kovalev
57e0b2baf3 Merge "Converting configure_skippable_frame() to is_skippable_frame()." 2014-08-28 11:45:32 -07:00
Dmitry Kovalev
1b0870233f Merge "Renaming vpxenc option from frame_boost to frame-boost." 2014-08-28 11:42:23 -07:00
Dmitry Kovalev
80e735af42 Merge "Adding several vpxenc parameter ranges to help output." 2014-08-28 11:42:04 -07:00
Yunqing Wang
4d2c376923 Early termination in encoding partition search
In the partition search, the encoder checks all possible
partitionings in the superblock's partition search tree.
This patch proposed a set of criteria for partition search
early termination, which effectively decided whether or
not to terminate the search in current branch based on the
"skippable" result of the quantized transform coefficients.
The "skippable" information was gathered during the
partition mode search, and no overhead calculations were
introduced.

This patch gives significant encoding speed gains without
sacrificing the quality.

Borg test results:
1. At speed 1,
   stdhd set: psnr: +0.074%, ssim: +0.093%;
   derf set:  psnr: -0.024%, ssim: +0.011%;
2. At speed 2,
   stdhd set: psnr: +0.033%, ssim: +0.100%;
   derf set:  psnr: -0.062%, ssim: +0.003%;
3. At speed 3,
   stdhd set: psnr: +0.060%, ssim: +0.190%;
   derf set:  psnr: -0.064%, ssim: -0.002%;
4. At speed 4,
   stdhd set: psnr: +0.070%, ssim: +0.143%;
   derf set:  psnr: -0.104%, ssim: +0.039%;

The speedup ranges from several percent to 60+%.
                 speed1    speed2    speed3    speed4
(1080p, 100f):
old_town_cross:  48.2%     23.9%     20.8%     16.5%
park_joy:        11.4%     17.8%     29.4%     18.2%
pedestrian_area: 10.7%      4.0%      4.2%      2.4%
(720p, 200f):
mobcal:          68.1%     36.3%     34.4%     17.7%
parkrun:         15.8%     24.2%     37.1%     16.8%
shields:         45.1%     32.8%     30.1%      9.6%
(cif, 300f)
bus:              3.7%     10.4%     14.0%      7.9%
deadline:        13.6%     14.8%     12.6%     10.9%
mobile:           5.3%     11.5%     14.7%     10.7%

Change-Id: I246c38fb952ad762ce5e365711235b605f470a66
2014-08-28 11:27:28 -07:00
Dmitry Kovalev
0c1b9c7999 vp8_multi_resolution_encoder: Huge cleanup.
Change-Id: I65b2c1fbed5a306949843315999d10368a100431
2014-08-28 11:10:28 -07:00
Tom Finegan
6b5b4bf235 test/vp8_multi_resolution_encoder.sh: Add missing devnull redirect.
Change-Id: Id60ae8178191e30603a5c8665793ace7eb9c8533
2014-08-28 10:49:33 -07:00
Dmitry Kovalev
f4eb3a2bae Adding several vpxenc parameter ranges to help output.
Change-Id: Iec1a00203930a539ed584961aed4b2bfd7488255
2014-08-28 10:25:40 -07:00
Deb Mukherjee
bb2a9abb1e Merge "Updates vp9_pattern search to return integer sads" 2014-08-28 09:38:56 -07:00
Dmitry Kovalev
c4c0b2e765 Merge "Replacing int_mv with MV." 2014-08-28 09:18:11 -07:00
Deb Mukherjee
04b100b23e Updates vp9_pattern search to return integer sads
Updates the vp9_pattern_search function to return integer one-away
neighbors' sad values, for subsequent use in speeding up the
sub-pel search. Also, removes code for the do_refine option
which is not being used currently.
Updates the integer and subpel functions to pass in a 5-element
sad list for output or input.

A new pruned sub-pel search algorithm is implemented that uses
the sad returned from the integer pel search. But it is not
deployed yet.

Change-Id: Ifa9f5ad024b5b660570366d2bd900343e1891520
2014-08-28 06:49:58 -07:00
Jingning Han
143be253b6 Merge "Re-work RD modeling based on inter frame prediction residual" 2014-08-27 18:48:49 -07:00
Jingning Han
34675e6631 Merge "Re-use switchable rate value in handle_inter_mode" 2014-08-27 18:48:41 -07:00
Jingning Han
4e4f4ba868 Merge "Add an early termination check in handle_inter_mode" 2014-08-27 18:48:32 -07:00
Jingning Han
6924fddb08 Merge "Use max txfm size unit in rate-distortion cost modeling" 2014-08-27 18:48:24 -07:00
James Zern
db8b1b7bf1 vp9: skip loopfilter when the frame is corrupt
this change is proactive: the loop filter expects valid input and may
produce undefined results / crash in other cases.

Change-Id: I6cc1e966062a91cbc6db981c87cd03d9129fc8fe
2014-08-27 17:04:48 -07:00
James Zern
cde790c36d vp9: fix crash in inline loopfilter w/corrupt file
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-27 16:55:31 -07:00
Tom Finegan
3b0934cf39 Add test for vp8_multi_resolution_encoder.
Change-Id: I94667a23046e3cf17c421ac97ca66ea57f846b5c
2014-08-27 16:16:55 -07:00
Jingning Han
993ef8bd4c Re-work RD modeling based on inter frame prediction residual
This commit re-work the operation flow related to prediction
residual generation and the rate-distortion modeling. It saves one
call for model_rd_for_sb.

Change-Id: Icaf96c0ff09c903637ed5283448afe01d798195f
2014-08-27 15:03:32 -07:00
Jingning Han
4db022c368 Re-use switchable rate value in handle_inter_mode
The value of switchable rate has been stored in a local variable.
This change skips the second call to vp9_get_switchable_rate() by
reusing the local variable.

Change-Id: Ib7d3fef7621cc4bde94c6d6e6b3a71f1fd4559f2
2014-08-27 15:03:16 -07:00
Jingning Han
cd228fcdb8 Add an early termination check in handle_inter_mode
Check the mode and motion vector cost. If it is already above
the existing best rate-distortion cost, skip the rest check process
on this mode.

Change-Id: Ie065cebdfda2a3be3be18b8e8b43dc29aaa8c179
2014-08-27 14:59:52 -07:00
Jingning Han
ec7ce316d2 Use max txfm size unit in rate-distortion cost modeling
This commit makes the rate distortion modeling run in the unit of
maximum transform block size. No compression/speed change observed.
It is for the use of later fast forward transform purpose.

Change-Id: Ibaaedb69c765e8d0c5d5012f0ec07f36fd9f68fd
2014-08-27 14:59:02 -07:00
James Zern
4f27202df7 vp9: fix crash in mt loopfilter w/corrupt file
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-27 14:21:14 -07:00
Marco
503792ffef Add a separate datarate test for denoiser enabled.
Change-Id: Ibc91a46d11ad9c58e340b4346ed813a1be9b404a
2014-08-27 11:31:56 -07:00
Yaowu Xu
bcfb1ffb9d Merge "add a new interp filter search strategy." 2014-08-26 17:30:42 -07:00
Marco
5b61172c27 Merge "Enable denoiser for vp8 datarate tests." 2014-08-26 17:04:37 -07:00
Marco
16e52fc155 Enable denoiser for vp8 datarate tests.
Keep one test, BasicBufferModel, with denoiser set off.

Change-Id: I762c2004b3adca24f677535cfa5b991108f31f01
2014-08-26 15:46:24 -07:00
Dmitry Kovalev
bc9204a90e Adding get_frame_pkt_flags() function.
Change-Id: Icfacc695a711ec325b1d8f2b5d927a720e2bd6b4
2014-08-26 14:32:51 -07:00
James Zern
30c8cdf374 Merge "gen_msvs_(vcx)proj.sh: set yasm format explicitly" 2014-08-26 12:53:53 -07:00
Marco
08db5f9542 Merge "vp8 fix: deallocate denoiser->yv12_last_source" 2014-08-26 11:16:27 -07:00
Dmitry Kovalev
668d3cf402 Replacing int_mv with MV.
Change-Id: I483a2fefc5f9ea4533dfd64448f3b6b426dd9eed
2014-08-26 10:53:05 -07:00
Deb Mukherjee
270a05a315 Merge "Set scaled img format correctly in vpxdec" 2014-08-26 10:36:47 -07:00
Dmitry Kovalev
95ac8fa74e Merge "twopass_encoder: Flush encoder." 2014-08-26 10:35:54 -07:00
Tom Finegan
28eaa5f4d8 Merge "vpxenc.sh: Move some frequently used params into functions." 2014-08-26 10:18:58 -07:00
Marco
f010b7727a vp8 fix: deallocate denoiser->yv12_last_source
Change-Id: I7f3bc292b1b411e10586f0975143ae996ea78d1d
2014-08-26 10:15:35 -07:00
Yaowu Xu
1144fee3d5 add a new interp filter search strategy.
This commit addes a new strategy to reduce the search for optimal
interpolation filter type. The encoder counts and store how many each
filter type is selected and used for each of the reference frames.
A filter type that is rarely used for all three reference frames is
masked out to avoid computation.

The impact on compression is neglectible:
-0.02% on derf
+0.02% on stdhd

Encoding time is seen to reduce by 2~3%.

Change-Id: Ibafa92291b51185de40da513716222db4b230383
2014-08-26 09:05:04 -07:00
Dmitry Kovalev
33f4e5707c Removing unused arnr_type from VP9EncoderConfig and vp9_extracfg.
Change-Id: Icab9a4399c5687453f4bec14b8cb5000464335e5
2014-08-25 23:48:52 -07:00
Dmitry Kovalev
a00278c6dc Removing 'frames' field from VP9_COMP.
Using local variable instead.

Change-Id: If592d73ba2b04972cdae938751155c183a6db25a
2014-08-25 23:27:08 -07:00
Dmitry Kovalev
1e82bdec92 twopass_encoder: Flush encoder.
Change-Id: Ib04a545b43f3a36c6df7eaf3ed2d802cf41119bb
2014-08-25 19:17:07 -07:00
Dmitry Kovalev
e735b57634 Merge "Removing non-executable code from encoder_encode()." 2014-08-25 18:59:17 -07:00
Dmitry Kovalev
0586975912 Merge "Removing tx_stepdown_count from VP9_COMP." 2014-08-25 18:37:40 -07:00
Dmitry Kovalev
48edc8df31 Merge "Adding oxcf temp variable." 2014-08-25 18:37:33 -07:00
Dmitry Kovalev
0082727cb7 Merge "Adding is_keyframe temp var." 2014-08-25 18:36:59 -07:00
Dmitry Kovalev
4eb6763b65 Renaming vpxenc option from frame_boost to frame-boost.
We use dashes, no underscores. 

Change-Id: I423eee946d10731856e15591eb6e9e4628e3ee6c
2014-08-25 18:34:20 -07:00
Dmitry Kovalev
3efb0363ed Removing non-executable code from encoder_encode().
We don't output invisible frames with VP9.

Change-Id: I7b874d3ac454c1b2966d5d7d72e12a864b49afae
2014-08-25 17:57:32 -07:00
Dmitry Kovalev
d0e384e320 Merge "Passing const cfg pointer to vpx_codec_{dec,enc}_init_ver()." 2014-08-25 15:17:46 -07:00
Tom Finegan
efb0fd1ba4 vpxenc.sh: Move some frequently used params into functions.
Echo args back from new util functions to decrease the repetition
in this file.

Change-Id: Id4d7c02bf81cf2c5261f58b560e033869a346677
2014-08-25 15:00:16 -07:00
Dmitry Kovalev
4478553efc Removing tx_stepdown_count from VP9_COMP.
The variable is never read.

Change-Id: I94141c1667fa5d10604cd6f83c5f64df107dee94
2014-08-25 14:42:05 -07:00