Alex Converse [Mon, 3 Feb 2014 20:12:01 +0000 (12:12 -0800)]
INLINE and reimplement get_unsigned_bits().
The new implementation disagrees when the argument is equal to 2**n but
that is never called in practice and based on how it is used the new
implementation is correct in that case.
Change-Id: Ifbac4ad87d459fe6bd2fd0f400c0340f96617342
Alex Converse [Mon, 3 Feb 2014 19:14:46 +0000 (11:14 -0800)]
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
Dmitry Kovalev [Mon, 3 Feb 2014 18:53:21 +0000 (10:53 -0800)]
Merge "Cleaning up vp9_mcomp.{c, h}."
Marco Paniconi [Sun, 2 Feb 2014 22:30:43 +0000 (14:30 -0800)]
Layer based rate control for CBR mode.
This patch adds a buffer-based rate control for temporal layers,
under CBR mode.
Added vpx_temporal_scalable_patters.c encoder for testing temporal
layers, for both vp9 and vp8 (replaces the old vp8_scalable_patterns).
Updated datarate unittest with tests for temporal layer rate-targeting.
Change-Id: I9cb6cce2494390ae6096ee17774af7fb9308bde7
Jim Bankoski [Sat, 1 Feb 2014 04:16:37 +0000 (20:16 -0800)]
Merge "static function convert to inline or global vp9_blockd.h"
Yaowu Xu [Sat, 1 Feb 2014 03:59:32 +0000 (19:59 -0800)]
Merge "Set proper rtc interp_filter at block level"
Adrian Grange [Sat, 1 Feb 2014 03:51:44 +0000 (19:51 -0800)]
Merge "Typo & comment corrections"
Jim Bankoski [Sat, 1 Feb 2014 01:35:53 +0000 (17:35 -0800)]
static function convert to inline or global vp9_blockd.h
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
James Zern [Sat, 1 Feb 2014 03:29:06 +0000 (19:29 -0800)]
Merge "libmkv: remove unused variable."
James Zern [Sat, 1 Feb 2014 02:48:36 +0000 (18:48 -0800)]
Merge "libmkv: Remove spurious declaration."
Yunqing Wang [Sat, 1 Feb 2014 02:33:33 +0000 (18:33 -0800)]
Merge "Rename a loopfilter parameter"
Dmitry Kovalev [Sat, 1 Feb 2014 02:15:33 +0000 (18:15 -0800)]
Merge "Cleaning up vp9_get_second_pass_params() function."
Dmitry Kovalev [Sat, 1 Feb 2014 02:11:41 +0000 (18:11 -0800)]
Cleaning up vp9_mcomp.{c, h}.
Change-Id: Ib71d9ed3f98e9468ad951bdc24c9ab565216eb38
Dmitry Kovalev [Sat, 1 Feb 2014 01:33:40 +0000 (17:33 -0800)]
Merge "Cleaning up motion compensation code."
James Zern [Sat, 1 Feb 2014 01:28:17 +0000 (17:28 -0800)]
Merge "remove duplicate const from vpx_codec_iface_t use"
Dmitry Kovalev [Sat, 1 Feb 2014 00:49:33 +0000 (16:49 -0800)]
Cleaning up vp9_get_second_pass_params() function.
Change-Id: Ie7b295190d8def447408e575ea0f3fa3c7eb7dd2
James Zern [Sat, 1 Feb 2014 00:32:42 +0000 (16:32 -0800)]
remove duplicate const from vpx_codec_iface_t use
the public typedef already includes a const, quiets
'same type qualifier used more than once' warnings
Change-Id: Ib118b3b116fba59d4c6ead84d85b26e5d3ed363d
Yaowu Xu [Sat, 1 Feb 2014 00:32:19 +0000 (16:32 -0800)]
Set proper rtc interp_filter at block level
Based on frame level settings.
Change-Id: I922c09c195ab055585eaa4f544c51aceb1203a7a
Yunqing Wang [Sat, 1 Feb 2014 00:09:28 +0000 (16:09 -0800)]
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
Jim Bankoski [Sat, 1 Feb 2014 00:21:13 +0000 (16:21 -0800)]
Merge "bsize problem 360p"
Adrian Grange [Thu, 30 Jan 2014 23:04:32 +0000 (15:04 -0800)]
Typo & comment corrections
Change-Id: I64569afe61a2679afdd263d3e226a89b9f73cc61
Ralph Giles [Sat, 1 Feb 2014 00:01:14 +0000 (16:01 -0800)]
libmkv: remove unused variable.
Fixes a warning.
Change-Id: I7f98ea7847cf8e776a4bbd65d273036280bfb5dd
Dmitry Kovalev [Fri, 31 Jan 2014 23:55:04 +0000 (15:55 -0800)]
Merge "Combining fb_idx_ref_cnt[] and yv12_fb[] arrays."
Dmitry Kovalev [Fri, 31 Jan 2014 23:52:35 +0000 (15:52 -0800)]
Merge "Renaming "mbskip" to "skip"."
Ralph Giles [Fri, 31 Jan 2014 23:47:26 +0000 (15:47 -0800)]
libmkv: Remove spurious declaration.
Change-Id: I5a83f6651a42df8387aa8996f9353a20e60483df
Yaowu Xu [Fri, 31 Jan 2014 23:44:00 +0000 (15:44 -0800)]
Merge "Only allow interp_filter change in SWITCHABLE mode"
Yaowu Xu [Fri, 31 Jan 2014 23:33:22 +0000 (15:33 -0800)]
Merge "fix IOCs"
Yaowu Xu [Fri, 31 Jan 2014 23:31:33 +0000 (15:31 -0800)]
Merge "Properly merge two different real time modes"
Jim Bankoski [Fri, 31 Jan 2014 23:14:02 +0000 (15:14 -0800)]
bsize problem 360p
Fixes an assert that crashed for 360p..
Change-Id: I2faf15c93cbdb0e62a27a3b663f0d09ba62774a8
Yaowu Xu [Fri, 31 Jan 2014 19:08:27 +0000 (11:08 -0800)]
Only allow interp_filter change in SWITCHABLE mode
This commit added a logic to prevent the inter_filter type from being
changed if the default interp_filter mode is not switchable. Also, it
sets the default interp_filter to BILINEAR at very and super fast rtc
encoding modes
Change-Id: Ic41e6d31de29795a4ce536ec79afb01cab6daad3
Yaowu Xu [Fri, 31 Jan 2014 23:06:31 +0000 (15:06 -0800)]
fix IOCs
Left shift of negative values caused IOC warnings.
Change-Id: I6f41b020ca0ff51f7861719d41393e9460b75d4e
Yaowu Xu [Fri, 31 Jan 2014 02:33:26 +0000 (18:33 -0800)]
Properly merge two different real time modes
--rt --cpu-used=-5 uses the progressive rtc mode
--rt --cpu-used=-6 uses the new super fast rtc mode
Change-Id: Id6469ca996100cdf794a0e42d76430161f22f976
Yunqing Wang [Fri, 27 Dec 2013 23:25:54 +0000 (15:25 -0800)]
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
Alex Converse [Fri, 31 Jan 2014 19:06:14 +0000 (11:06 -0800)]
Cleanup block_rd_txfm.
* Avoid unnecessary type erasure
* Prune unused/duplicate fields from struct rdcost_block_args
* Make struct rdcost_block_args a local
Change-Id: I4f1fd4837ccd028bbfe727191ee8d69f0463b7e5
Adrian Grange [Fri, 31 Jan 2014 19:10:04 +0000 (11:10 -0800)]
Merge "Add constant to represent minimum KF boost"
Adrian Grange [Thu, 23 Jan 2014 17:26:19 +0000 (09:26 -0800)]
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
Jim Bankoski [Fri, 31 Jan 2014 15:55:19 +0000 (07:55 -0800)]
remove confusing compressor_speed
use mode instead
Change-Id: I419d7a2dc4b0714ca6ff723c5e824521c150c460
Adrian Grange [Thu, 23 Jan 2014 17:02:29 +0000 (09:02 -0800)]
Add constant to represent minimum KF boost
Added a constant to represent the minimum KF boost
rather than using the magic number 2000 in the code.
Change-Id: I9428b61f47d26312caff81c6f9ae8587df004791
Yaowu Xu [Thu, 30 Jan 2014 20:05:09 +0000 (12:05 -0800)]
Merge "Replace inline with INLINE"
James Zern [Thu, 30 Jan 2014 20:03:36 +0000 (12:03 -0800)]
Merge "tests: fix a few msvc warnings"
Yaowu Xu [Thu, 30 Jan 2014 19:48:16 +0000 (11:48 -0800)]
Replace inline with INLINE
So x86_64-win64-vs11 can build successfully.
Change-Id: If354c2ea3921fac8c9b413ed39223e70bc20c535
Alex Converse [Thu, 30 Jan 2014 19:01:53 +0000 (11:01 -0800)]
Merge "Enforce the use of profile 1 for non-420 content."
Yaowu Xu [Thu, 30 Jan 2014 17:34:18 +0000 (09:34 -0800)]
Merge "Fixing out of bounds access in frame_refs[] array."
Yaowu Xu [Thu, 30 Jan 2014 17:33:24 +0000 (09:33 -0800)]
Merge "Fix some automerge artifacts"
Yaowu Xu [Thu, 30 Jan 2014 17:33:20 +0000 (09:33 -0800)]
Merge "Fix a build issue for --enable-intern-stats"
Yaowu Xu [Thu, 30 Jan 2014 03:03:07 +0000 (19:03 -0800)]
Fix some automerge artifacts
Some changes in 1ca1186 were mistakenly reverted by a later merge,
this commit re-instated the chanages from values to enums.
Change-Id: Ia6b01c31da584a1f612996e6432612c1295b9eaf
Yaowu Xu [Thu, 30 Jan 2014 02:15:37 +0000 (18:15 -0800)]
Fix a build issue for --enable-intern-stats
Change-Id: Iea7c9fa0726dbf9792eea79e6a05eb8a3c718d45
Dmitry Kovalev [Thu, 30 Jan 2014 06:07:17 +0000 (22:07 -0800)]
Merge "Changing ivf_write_frame_header() function signature."
Dmitry Kovalev [Thu, 30 Jan 2014 06:02:24 +0000 (22:02 -0800)]
Fixing out of bounds access in frame_refs[] array.
Change-Id: I08f45573e0b2195c09fb6aecacb4c57431a711ea
James Zern [Thu, 30 Jan 2014 04:23:10 +0000 (20:23 -0800)]
Merge "obj_int_extract (msvs): add missing project dep"
Dmitry Kovalev [Thu, 30 Jan 2014 01:57:21 +0000 (17:57 -0800)]
Changing ivf_write_frame_header() function signature.
Replacing vpx_codec_cx_pkt argument with two separate pts and frame_size.
Change-Id: I7b37e379ee71342520cf08f03acfb4b499b2cbe4
James Zern [Thu, 30 Jan 2014 01:26:02 +0000 (17:26 -0800)]
obj_int_extract (msvs): add missing project dep
obj_int_extract.bat
this project and target still need some work to allow for concurrent
builds to succeed from the command line.
Change-Id: Ieb3bddc54636e77519083c48573909616257eb23
Yaowu Xu [Thu, 30 Jan 2014 00:36:20 +0000 (16:36 -0800)]
Merge "create super fast rtc mode"
Yaowu Xu [Thu, 30 Jan 2014 00:36:06 +0000 (16:36 -0800)]
Merge "Add a strict mode for auto_min_max_partition_size feature"
James Zern [Thu, 19 Dec 2013 01:00:40 +0000 (17:00 -0800)]
tests: fix a few msvc warnings
Change-Id: I7ee89d6fc2afc20563d1784598ce83e29c0e6651
Yaowu Xu [Wed, 29 Jan 2014 18:03:07 +0000 (10:03 -0800)]
Add a strict mode for auto_min_max_partition_size feature
In this new mode, the size range is strictly determined by the min
and max partition size in neighborhood blocks.
Niklas720 encoding time at cpu-used -5 goes from 56250ms to 50676ms,
a 10% reduction.
Change-Id: I316b0e2ac967ff3fad57b28d69c0ec80b7d8b34e
Dmitry Kovalev [Wed, 29 Jan 2014 22:48:42 +0000 (14:48 -0800)]
Renaming "mbskip" to "skip".
Change-Id: I27a30b43eae026a77f92958e2238d02d9cdf7832
Dmitry Kovalev [Wed, 29 Jan 2014 22:02:26 +0000 (14:02 -0800)]
Merge "Moving RATE_CONTROL struct to vp9_ratectrl.h."
Dmitry Kovalev [Wed, 29 Jan 2014 22:00:25 +0000 (14:00 -0800)]
Merge "Removing ONEPASS_FRAMESTATS struct."
Deb Mukherjee [Wed, 29 Jan 2014 21:37:30 +0000 (13:37 -0800)]
Merge "Enables alt-ref frames in one pass mode"
Dmitry Kovalev [Wed, 29 Jan 2014 20:54:21 +0000 (12:54 -0800)]
Merge "Finally removing vp9_setup_interp_filters() function."
Dmitry Kovalev [Wed, 29 Jan 2014 20:50:26 +0000 (12:50 -0800)]
Merge "Cleaning up vp9_firstpass.c."
Dmitry Kovalev [Wed, 29 Jan 2014 20:48:01 +0000 (12:48 -0800)]
Combining fb_idx_ref_cnt[] and yv12_fb[] arrays.
Adding new RefCntBuffer struct which contains reference counter and image
buffer.
Change-Id: I71c1f532faa13442c32c43fc03ec45b6f88fb844
Dmitry Kovalev [Wed, 29 Jan 2014 20:47:12 +0000 (12:47 -0800)]
Merge "vpxenc: Relocate rate/quantizer histogram code."
Yunqing Wang [Wed, 29 Jan 2014 20:45:49 +0000 (12:45 -0800)]
Merge "Add macros for convolve functions"
Dmitry Kovalev [Wed, 29 Jan 2014 20:28:29 +0000 (12:28 -0800)]
vpxenc: Relocate rate/quantizer histogram code.
Adding rate_hist.{h, c} files.
Change-Id: Iaa28af6b25ec8982966a7296a073d6017b3a7f96
Dmitry Kovalev [Mon, 27 Jan 2014 22:20:39 +0000 (14:20 -0800)]
Finally removing vp9_setup_interp_filters() function.
Change-Id: If446225afbb49f6033c2a4516a37c377de6f70f7
Dmitry Kovalev [Wed, 29 Jan 2014 19:26:09 +0000 (11:26 -0800)]
Cleaning up vp9_firstpass.c.
Change-Id: Ic2ff6405f01fd43d07c5ee3b5e374909401115cc
Dmitry Kovalev [Wed, 29 Jan 2014 19:21:08 +0000 (11:21 -0800)]
Merge "Adapting decode_with_drops example to use new file reading API."
Deb Mukherjee [Thu, 23 Jan 2014 02:00:08 +0000 (18:00 -0800)]
Enables alt-ref frames in one pass mode
Includes a few fixes and clean-ups that adds the ability
to use alt-ref frames in one-pass mode.
Whether alt-refs are actually used or not is controlled by a
macro USE_ALTREF_FOR_ONE_PASS in vp9_firstpass.c.
This first cut seems to improve derf by 15+% in 1-pass mode.
But further experiments with parameters are underway.
Change-Id: I78254421435478003367c788c7930d2dc4ee2816
Dmitry Kovalev [Tue, 28 Jan 2014 19:25:24 +0000 (11:25 -0800)]
Adapting decode_with_drops example to use new file reading API.
Change-Id: Idd1acfcf8bb16a2ddb9c6c1c841a7741e90589d9
Dmitry Kovalev [Tue, 28 Jan 2014 19:27:30 +0000 (11:27 -0800)]
Adapting postproc example to use new file reading API.
Change-Id: Ib3747c81db8cc89b5d7012db557411a3b49712aa
Jim Bankoski [Wed, 29 Jan 2014 16:39:39 +0000 (08:39 -0800)]
create super fast rtc mode
This patch only works if the video is a width and height that are both
a multiple of 32.. It sets every partition to 16x16, and does INTRADC
only on the first frame and ZEROMV on every other frame. It always does
does the largest possible transform, and loop filter level is set to 4.
Was ~20% faster than speed -5 of vp8
Now 20% slower but adds motion search ( every block ), nearest, near
and zeromv
The SVC test was changed because - while this realtime mode produces
bad quality albeit quickly, it isn't obeying all the rules it should
about which frames are available.
Change-Id: I235c0b22573957986d41497dfb84568ec1dec8c7
Paul Wilkins [Wed, 29 Jan 2014 14:59:04 +0000 (14:59 +0000)]
Trap divide by 0.
Trap divide by 0 that could occur with a 0 rate target
in aq mode COMPLEXITY_AQ.
Change-Id: I034514f512b2a0db470ae8d37ea395278bf473cf
Yunqing Wang [Wed, 29 Jan 2014 01:29:52 +0000 (17:29 -0800)]
Add macros for convolve functions
Added macros to reduce the code duplication.
Change-Id: I1916aa5a386ea07d961d4ec439ab09bb8c45487d
Johann [Tue, 28 Jan 2014 23:57:33 +0000 (15:57 -0800)]
Correct OUTPUT_C_HEADER
OUTPUT_FMT_C_HEADER
Change-Id: Ic1a583352ead8268efc39f1b89257e9c622e1613
Jim Bankoski [Tue, 28 Jan 2014 23:12:03 +0000 (15:12 -0800)]
Merge "Reintroduce modelling for some speeds"
Jim Bankoski [Tue, 28 Jan 2014 21:51:06 +0000 (13:51 -0800)]
Reintroduce modelling for some speeds
Change-Id: Ia8fa3961eec34545465018281dc022bc6f73869a
Dmitry Kovalev [Tue, 28 Jan 2014 20:57:49 +0000 (12:57 -0800)]
Moving RATE_CONTROL struct to vp9_ratectrl.h.
Change-Id: I0c286e3d68a4a4ecf6df02e6fd9990327b0ceb22
Dmitry Kovalev [Tue, 28 Jan 2014 20:48:19 +0000 (12:48 -0800)]
Removing ONEPASS_FRAMESTATS struct.
It seems we don't use it and not going to.
Change-Id: Ie76cd04dafc79b0a5911f8957d4253ca2d787f0c
Dmitry Kovalev [Tue, 28 Jan 2014 20:30:27 +0000 (12:30 -0800)]
Merge "vpxdec: restoring old md5 behavior for y4m files."
Dmitry Kovalev [Tue, 28 Jan 2014 19:12:58 +0000 (11:12 -0800)]
vpxdec: restoring old md5 behavior for y4m files.
Fix of https://code.google.com/p/webm/issues/detail?id=698 issue.
Change-Id: I7a92d91481dbbae28d8953f146e9faafdcd7a310
Dmitry Kovalev [Tue, 28 Jan 2014 18:37:58 +0000 (10:37 -0800)]
Merge "Decoupling set_ref_ptrs() and vp9_setup_interp_filters()."
Dmitry Kovalev [Tue, 28 Jan 2014 18:37:26 +0000 (10:37 -0800)]
Merge "Removing _1d suffix from transform names."
Yaowu Xu [Tue, 28 Jan 2014 18:28:54 +0000 (10:28 -0800)]
Merge "Added a speed feature"
hkuang [Tue, 28 Jan 2014 17:57:08 +0000 (09:57 -0800)]
Merge "Add vp9_tm_predictor_32x32 neon implementation which is 7.8 times faster than C."
Dmitry Kovalev [Tue, 28 Jan 2014 00:15:36 +0000 (16:15 -0800)]
Removing _1d suffix from transform names.
It is enough to specify (e.g.) idct16, it is obviously different from
idct16x16.
Change-Id: I6b408a37a945de3162429380b59a775b03b95db0
hkuang [Mon, 27 Jan 2014 22:03:06 +0000 (14:03 -0800)]
Add vp9_tm_predictor_32x32 neon implementation
which is 7.8 times faster than C.
Change-Id: I858ef4ec09202a07d445da8db702783d6d9d7321
Dmitry Kovalev [Tue, 28 Jan 2014 00:00:20 +0000 (16:00 -0800)]
Decoupling set_ref_ptrs() and vp9_setup_interp_filters().
Change-Id: I8d17867a4772554cbba2bd113cc5b4c99d50146d
Dmitry Kovalev [Mon, 27 Jan 2014 22:22:15 +0000 (14:22 -0800)]
Merge "Adapting simple_decoder to use new file reading API."
Dmitry Kovalev [Mon, 27 Jan 2014 21:40:29 +0000 (13:40 -0800)]
Adapting simple_decoder to use new file reading API.
Change-Id: I374a0c4bb4a66c0d3dc874c6e57fdee9d1ab72df
Johann [Mon, 27 Jan 2014 20:13:59 +0000 (12:13 -0800)]
Merge "Ouput symbols as c header file."
Dmitry Kovalev [Mon, 27 Jan 2014 19:46:41 +0000 (11:46 -0800)]
Merge "Adding get_bsize() function to vp9_firstpass.c."
Alex Converse [Mon, 27 Jan 2014 19:23:08 +0000 (11:23 -0800)]
Enforce the use of profile 1 for non-420 content.
Change-Id: I297954b16bce9e23931331520eadfb47540ff660
Tao Bai [Mon, 27 Jan 2014 18:56:04 +0000 (10:56 -0800)]
Ouput symbols as c header file.
This is required by webrtc.
Change-Id: I32983597eb0f6797aeb0d93b65d8911989ba98ea
Dmitry Kovalev [Mon, 27 Jan 2014 18:42:42 +0000 (10:42 -0800)]
Merge "Removing subpix_fn_table struct."
Alex Converse [Mon, 27 Jan 2014 18:25:35 +0000 (10:25 -0800)]
Merge "Cache loop filter errors."
Alex Converse [Mon, 27 Jan 2014 18:25:12 +0000 (10:25 -0800)]
Merge "Refactor loop filter level search."
hkuang [Sun, 26 Jan 2014 18:37:06 +0000 (10:37 -0800)]
Fix the vp9_tm_predictor_8x8_neon.
Change-Id: I832cf83871044bfee7b7e57dbd31bae05cbd53e9
Deb Mukherjee [Thu, 23 Jan 2014 22:53:53 +0000 (14:53 -0800)]
Adds a stand-alone resize utility for testing
Adds a stand-alone resize_util app for testing. The app
will not be built in the shared library configurations
so as not to require the APIs to be exposed.
Change-Id: I4718c8bff1abf4e57c2ab2d84be8738fc0048200