Age | Commit message (Collapse) | Author |
|
|
|
SVC multiple layer per frame encoding is invoked with vpx_svc_init and
vpx_svc_encode. These interfaces are designed to be invoked from ffmpeg.
Additional improvements:
- make dummy frame handling a bit more explicit
- fixed bug with single layer encodes
- track individual frame sizes and psnrs instead of averages
- parameterized quantizer, 16th scalefactors, more logging,
- enabled single layer encodes to generate baseline
- include new mode for 3 layer I frame with 5 total layers
Change-Id: I46cfa600d102e208c6af8acd6132e0cc25cda8d4
|
|
1920x1080
vp90-2-08-tile_1x2_frame_parallel.webm
vp90-2-08-tile_1x2.webm
vp90-2-08-tile_1x4_frame_parallel.webm
vp90-2-08-tile_1x4.webm
vpxenc blue_sky_1080p25.y4m \
--codec=vp9 -p 2 \
--frame-parallel=${fpm} \
--tile-columns=${tc} \
--limit=10 \
--auto-alt-ref=1 \
--lag-in-frames=5 \
--target-bitrate=2500
Change-Id: Id9c94b722cc553a6865d443a94e8482c78b038bb
|
|
This reverts commit a82001b1cfd688601bbda9b08b3d20e9b46b14d4, reversing
changes made to f6d870f7ae6f968bdbc342af80c8f71fa98f2ac2.
This commit breaks windows builds and needs some work to fix those and
some additional comments.
Change-Id: Ic0b0228e36704b127e5e399ce59db26182cfffe7
|
|
These changes were originally made in the Stratacaster team-review repository
commit e114bffcd82ad74c3696ec58e13c0ac895d6c82d
Author: Charles 'Buck' Krasic <ckrasic@google.com>
Date: Mon Oct 14 16:52:13 2013 -0700
Make dummy frame handling a bit more explicit, fixing bug
with single layer encodes.
Squashed commit of the following:
commit 1ebbfd976c0fadb02bf1ea562a2d0e3f0206daad
Merge: ac468dd 54e88b7
Author: Ivan Maltz <ivanmaltz@google.com>
Date: Fri Oct 11 17:29:58 2013 -0700
Move SVC code from vp9_spatial_scalable_encoder to libvpx module accessible from ffmpeg
commit 54e88b78b160becc9569fc3c6cb6b0a8c95dc357
Author: Ivan Maltz <ivanmaltz@google.com>
Date: Tue Oct 8 09:08:40 2013 -0700
common svc encoding code for sample app and ffmpeg
added svc_encodeframe.c, svc_context.h, svc_test.cc
vp9_spatial_scalable_encoder uses vpx_svc_encode
commit 5616ec8e2e3d3e8d277333d8a9242f6c70151162
Merge: 4528014 e29137d
Author: Ivan Maltz <ivanmaltz@google.com>
Date: Tue Oct 8 08:47:58 2013 -0700
Merge branch 'master' into stratacaster
commit 45280148450b1f3d61e390df8aadedf85cd5bce1
Merge: bb2b675 1ab60f7
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Fri Oct 4 10:22:31 2013 -0700
Merge branch 'master' into stratacaster
commit bb2b675e595dc9bfc8551e963edf56800c3aea61
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Wed Oct 2 12:37:26 2013 -0700
Track individual frame sizes and psnrs instead of averages.
commit c6d303b714795c81e7ceb4173967115c9f8ff5b7
Merge: fa87df9 3583087
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Fri Sep 27 10:05:35 2013 -0700
Merge branch 'master' into stratacaster
commit fa87df94fba923d9f7aeb8ae20c6e15f777e00b5
Merge: bf22d71 3c465af
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Thu Sep 26 16:10:31 2013 -0700
Merge branch 'master' into stratacaster
commit bf22d7144895a82e0c348ac177c8a261b9e2b88e
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Thu Sep 26 11:10:34 2013 -0700
Parameterized quantizer, 16th scalefactors, more logging, enabled single layer encodes to generate baseline.
commit ceffd7e6025b765f9886b5ea0f324248aa37e327
Author: Sujeevan Rajayogam <sujee@google.com>
Date: Thu Sep 19 10:04:49 2013 -0700
- Include new mode for 3 layer I frame with 5 total layers.
- Refactor svc api.
Change-Id: Ie4d775e21e006fa597d884c59488dc999478e9b5
|
|
vp90-2-07-frame_parallel.webm:
vpxenc stefan_sif.y4m \
--codec=vp9 -p 2 \
--frame-parallel=1 \
--limit=10 \
--auto-alt-ref=1 \
--lag-in-frames=5
Change-Id: I7381a69aaaec238b309169a51b34cb6bf29a9c50
|
|
Adding appropriate test vector vp90-2-06-bilinear.webm.
Change-Id: Ia3bbf57318e0cc61a1b724fe751e3f9c7e11b337
|
|
Modified the resize unit test so that it optionally
writes the encoded bitstream to file. The macro
WRITE_COMPRESSED_STREAM should be set to 1 to enable
output of the test bitstream; it is set to 0 by default.
Change-Id: I7d436b1942f935da97db6d84574a98d379f57fb1
|
|
Added the resize_test unit test to the VP9 set.
Set g_in_frames = 0 to avoid a problem when the total
number of frames being encoded is smaller than
g_in_frames. In this case the test will not have
access to the encoded frames and will not be able to
compare them for testing for encoder/decoder mismatch.
Change-Id: I0d2ff8ef058de7002c5faa894ed6ea794d5f900b
|
|
This is a bitstream change but no currently produces videos should
be affected. https://code.google.com/p/webm/issues/detail?id=610
Change-Id: Ic85a6477df6c201cdf7f70f6bd84607b71f4593c
|
|
This adds a test vector for 444 color space.
Change-Id: I1e2ac3883211989a062cfafc0e58151b14d294b8
|
|
vp9/decoder/vp9_thread.[hc]
Original source:
http://git.chromium.org/webm/libwebp.git
100644 blob b1615d0fb8d311666b2fa4561076c62d72c2e3ff src/utils/thread.c
100644 blob 13a61a4c84194c3374080cbf03d881d3cd6af40d src/utils/thread.h
Local modifications:
- s/WebP/VP9/g
- camelcase functions -> lower with _'s
Change-Id: Ib6932640ee34f8b4782c6fbd15864a59d5d4c5fe
|
|
Adding missed parenthesis around boolean expressions. Bitstream is changed.
Regenerating test vectors.
Change-Id: I4cc00b761e9473f92f180a9fc3a0c607f0aaae56
|
|
It does encodings with min and max q set at 0, and check to make sure
output PSNR at MAX_PSNR (100).
Change-Id: Ia2418353cccf6e487204ea4ff874a7e71e55cb3e
|
|
|
|
In the rare case were 4x4 interior filtering was called for but no
8x8 or larger filtering takes place, the previous code was skipping
the filtering. This patch fixes the issue by including the interior
mask in the overall mask for the filter application loops.
Change-Id: I4a0b65056c64f97478827c2ff41e0914fc7779d0
|
|
Tests q0 ( lossless), very high bitrate and low bitrates at cpu speed
0, 1 and 2.
Change-Id: I0c5cdca00acd8d01e7b13f124b3b08d4b1ae9f6d
|
|
For cases where there's no transform set in bit 0 (the left edge of
the SB) but bit 0 of mask_4x4_int is set (the edge 4 pixels from the
left edge needs filtering), it was incorrectly being skipped before.
This situation only happens on the leftmost edge of the image, as
the edge at column 0 is intentionally skipped since there aren't
pixels to the left to read.
Change-Id: Ib2fbbcb40166e90af31b1a0e13b85b68c226cbd3
|
|
|
|
3% faster overall (3min35.0 to 3min28.5).
Change-Id: I5ff8a5c2c91586b6632ca5009ad1ea51ce94af5e
|
|
Tests resolutions of 8, 10, 16, 18, 32, 34, 64, 66 to exercise the
border conditions, as well as non-SB aligned sizes.
Change-Id: Ie7c2b7860ac3727e23202042f2e86792652912f8
|
|
add ClearSystemState() to reset MMX registers avoiding corrupting
subsequent tests.
Change-Id: I668deb09aa7aa467709776e5819f936910698bc0
|
|
These files can stand in until we get proper syntax vectors. They
should provide some additional assurance against inadvertant
bitstream changes.
Change-Id: I12f6c9a5f054e30df40a7ff1f33145abf7e1d59d
|
|
This avoids encoding tokens for blocks that are entirely
in the UMV border. This changes the bitstream.
Change-Id: I32b4df46ac8a990d0c37cee92fd34f8ddd4fb6c9
|
|
Pick up VP8 encryption, quantization changes, and some fixes to vpxenc
Conflicts:
test/decode_test_driver.cc
test/decode_test_driver.h
test/encode_test_driver.cc
vp8/vp8cx.mk
vpxdec.c
vpxenc.c
Change-Id: I9fbcc64808ead47e22f1f22501965cc7f0c4791c
|
|
New decoder control paramter VP8_SET_DECRYPT_KEY to set the decryption key.
Change-Id: I6fc1f44d41f74f3b3f702778af1a6f8f5cc9439f
|
|
The commit changed the name of files and function to remove obselete
reference to LLM and x8.
Change-Id: I973b20fc1a55149ed68b5408b3874768e6f88516
|
|
A 'superframe' is a group of frames that share the same PTS, but have a
defined decoding order. This commit adds the ability to append an index
to such a group of frames, allowing for random access to the constituent
frames. This could be useful for frame-level parallelism or partial
decoding in a multilayer scenario.
Decoding the stream serially without such an index should work as a
fallback, and VP9/TestSuperframeIndexIsOptional verifies that.
Change-Id: Idff83b7560e1a7077d8fb067bfbc45b567e78b1c
|
|
Change-Id: I06b5ba5c457944cfa4cd9f53c3bd8cda132439c2
|
|
Picks up some build system changes, compiler warning fixes, etc.
Change-Id: I2712f99e653502818a101a72696ad54018152d4e
|
|
Also
1. Removed the test code for fDCT from the iDCT test.
2. changed the criteria of round trip error to be below 1/block, this
is quite strict comparing to smaller transforms when size differences
are accounted for.
Change-Id: Idb46a6380b04c93fc8e2845c75f5a850366b0090
|
|
This commit added pre/post scaling for first half of fDCT16x16 to
reduce error, by simulation of 100,000 blocks for random inputs,
the average sse reduced from 2.1/block to 0.0498/block.
also enabled tests for 16x16 fDCT and iDCT
Change-Id: Id2a95f0464c6dd4118797d456237ae90274c0f02
|
|
The commit added a final rounding choice for 8x8 forward dct to get
rid of a sign bias at DC position and improve the accuracry in term
of round trip error for 8x8 fDCT/iDCT.
This commit also enabled forward 8x8 dct test.
Change-Id: Ib67f99b0a24d513e230c7812bc04569d472fdc50
|
|
Change-Id: I4e94ee2c4e2360d6a11a454c323f2899c1bb6f72
|
|
1. changed 4x4 test name to Vp9Fdct4x4Test to be consistent
2. remove forward 8x8 dct test code from idct8x8_test.cc
3. temporarily disable other forward dct tests to allow fdct work in
progress
Change-Id: I566aeed9c7c34da5a206190aa7d0e847a4008b36
|
|
* changes:
Restore SSSE3 subpixel filters in new convolve framework
Convert subpixel filters to use convolve framework
Add 8-tap generic convolver
|
|
This patch adds column-based tiling. The idea is to make each tile
independently decodable (after reading the common frame header) and
also independendly encodable (minus within-frame cost adjustments in
the RD loop) to speed-up hardware & software en/decoders if they used
multi-threading. Column-based tiling has the added advantage (over
other tiling methods) that it minimizes realtime use-case latency,
since all threads can start encoding data as soon as the first SB-row
worth of data is available to the encoder.
There is some test code that does random tile ordering in the decoder,
to confirm that each tile is indeed independently decodable from other
tiles in the same frame. At tile edges, all contexts assume default
values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode),
and motion vector search and ordering do not cross tiles in the same
frame.
t log
Tile independence is not maintained between frames ATM, i.e. tile 0 of
frame 1 is free to use motion vectors that point into any tile of frame
0. We support 1 (i.e. no tiling), 2 or 4 column-tiles.
The loopfilter crosses tile boundaries. I discussed this briefly with Aki
and he says that's OK. An in-loop loopfilter would need to do some sync
between tile threads, but that shouldn't be a big issue.
Resuls: with tiling disabled, we go up slightly because of improved edge
use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf,
~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5%
on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is
concentrated in the low-bitrate end of clips, and most of it is because
of the loss of edges at tile boundaries and the resulting loss of intra
predictors.
TODO:
- more tiles (perhaps allow row-based tiling also, and max. 8 tiles)?
- maybe optionally (for EC purposes), motion vectors themselves
should not cross tile edges, or we should emulate such borders as
if they were off-frame, to limit error propagation to within one
tile only. This doesn't have to be the default behaviour but could
be an optional bitstream flag.
Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
|
|
This commit introduces a new convolution function which will be used to
replace the existing subpixel interpolation functions. It is much the
same as the existing functions, but allows for changing the filter
kernel on a per-pixel basis, and doesn't bake in knowledge of the
filter to be applied or the size of the resulting block into the
function name.
Replacing the existing subpel filters will come in a later commit.
Change-Id: Ic9a5615f2f456cb77f96741856fc650d6d78bb91
|
|
test for forward transform will be enabled later after re-do forward
transform
Change-Id: Ie7c7cf88baf7ecbebbe52fe027e1c3b33d3b9d49
|
|
Adds an error-resilient mode where frames can be continued
to be decoded even when there are errors (due to network losses)
on a prior frame. Specifically, backward updates are turned off
and probabilities of various symbols are reset to defaults at
the beginning of each frame. Further, the last frame's mvs are
not used for the mv reference list, and the sorting of the
initial list based on search on previous frames is turned off
as well.
Also adds a test where an arbitrary set of frames are skipped
from decoding to simulate errors. The test verifies (1) that if
the error frames are droppable - i.e. frame buffer updates have
been turned off - there are no mismatch errors for the remaining
frames after the error frames; and (2) if the error-frames are non
droppable, there are not only no decoding errors but the mismatch
PSNR between the decoder's version of the post-error frames and the
encoder's version is at least 20 dB.
Change-Id: Ie6e2bcd436b1e8643270356d3a930e8989ff52a5
|
|
This commit starts to convert the tests to a system where the codec
to be used is provided by a factory object. Currently no tests are
instantiated for VP9 since they all fail for various reasons, but it
was verified that they're called and the correct codec is
instantiated.
Change-Id: Ia7506df2ca3a7651218ba3ca560634f08c9fbdeb
|
|
Change-Id: I615651e4c7b09e576a341ad425cf80c393637833
|
|
Incorportate vp9-preview changes by merging master branch into experimental.
Conflicts:
test/test.mk
vp9/common/vp9_filter.c
vp9/common/vp9_idctllm.c
vp9/common/vp9_invtrans.h
vp9/common/vp9_mbpitch.c
vp9/common/vp9_rtcd_defs.sh
vp9/common/vp9_systemdependent.h
vp9/common/vp9_type_aliases.h
vp9/common/x86/vp9_asm_stubs.c
vp9/common/x86/vp9_subpixel_mmx.asm
vp9/decoder/vp9_decodframe.c
vp9/decoder/vp9_dequantize.c
vp9/decoder/vp9_dequantize.h
vp9/decoder/vp9_onyxd_int.h
vp9/encoder/vp9_bitstream.c
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_rdopt.c
Change-Id: I17f51c3666d1b59cf1a699f87607cbc5d30a87c5
|
|
Merge the vp9-preview branch into master.
Change-Id: If700b9054676f24bed9deb59050af546c1ca5296
|
|
Various fixups to resolve issues when building vp9-preview under the more stringent
checks placed on the experimental branch.
Change-Id: I21749de83552e1e75c799003f849e6a0f1a35b07
|
|
This adds Debargha's DCT/DWT hybrid and a regular 32x32 DCT, and adds
code all over the place to wrap that in the bitstream/encoder/decoder/RD.
Some implementation notes (these probably need careful review):
- token range is extended by 1 bit, since the value range out of this
transform is [-16384,16383].
- the coefficients coming out of the FDCT are manually scaled back by
1 bit, or else they won't fit in int16_t (they are 17 bits). Because
of this, the RD error scoring does not right-shift the MSE score by
two (unlike for 4x4/8x8/16x16).
- to compensate for this loss in precision, the quantizer is halved
also. This is currently a little hacky.
- FDCT and IDCT is double-only right now. Needs a fixed-point impl.
- There are no default probabilities for the 32x32 transform yet; I'm
simply using the 16x16 luma ones. A future commit will add newly
generated probabilities for all transforms.
- No ADST version. I don't think we'll add one for this level; if an
ADST is desired, transform-size selection can scale back to 16x16
or lower, and use an ADST at that level.
Additional notes specific to Debargha's DWT/DCT hybrid:
- coefficient scale is different for the top/left 16x16 (DCT-over-DWT)
block than for the rest (DWT pixel differences) of the block. Therefore,
RD error scoring isn't easily scalable between coefficient and pixel
domain. Thus, unfortunately, we need to compute the RD distortion in
the pixel domain until we figure out how to scale these appropriately.
Change-Id: I00386f20f35d7fabb19aba94c8162f8aee64ef2b
|
|
Change-Id: I69d00bfd1b10c03581838b15cd9a6dd66f4fa416
|
|
This reverts commit b72373de79800e801ce730d24cb115daf78ae660.
Change-Id: Ic1601160e11df1a018ef12da25967cfb5eebd5ba
|
|
Rather than building an object file directory heirarchy matching the
source tree's layout, rename the object files so that the object
file name contains the path in the source file tree. The intent here
is to allow two files in different parts of the source tree to have
the same name and still not collide when put into an ar archive.
Change-Id: Id627737dc95ffc65b738501215f34a995148c5a2
|
|
Include upstream changes (variance fixes) into the merged code base.
Change-Id: I4182654c1411c1b15cd23235d3822702613abce1
|