summaryrefslogtreecommitdiff
path: root/vpx/src
AgeCommit message (Collapse)Author
2013-12-18Fix to overflow in asan test (for vp8 encoder).Marco Paniconi
Change-Id: Ie67339ab3a16ce7669b5366a743812df93c52711
2013-12-15Add support to pass in external frame buffers.Frank Galligan
VP9 decoder can now use frame buffers passed in by the application. Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-12-05Fix bug with put slice cb function.Frank Galligan
Change-Id: Idfbd87d0a4bebdce7dd587c8446e7fa75b030d91
2013-12-04Modified spatial scalable encoder & unit testsAdrian Grange
Modifications to the spatial scalable encoder to match changes made to the scaling code in the decoder. In particular, the use of a dummy first frame was removed now that the decoder is able to handle a smaller first frame. SvcTest.FirstFrameHasLayers unit test re-enabled. Change-Id: Ic2e91fbe4eadf95895569947670d36d68abaf458
2013-11-06Move SVC per-frame loop from sample app into libvpx properIvan Maltz
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
2013-10-22Revert "Merge "SVC improvements""James Zern
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
2013-10-21SVC improvementsIvan Maltz
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
2013-09-17Modified resize unit test to output test vectorAdrian Grange
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
2013-07-11vp[89]_dx_iface: factorize vp8_mmap_*()James Zern
s/vp8/vpx/ -> vpx_codec_internal.h / vpx_codec.c Change-Id: If4192b40206276a761b01d44e334fe15bcb81128
2012-11-15Pack invisible frames without lengthsJohn Koleszar
Modify the decoder to return the ending position of the bool decoder and use that as the starting position for the next frame. The constant-space algorithm for parsing the appended frame lengths is O(n^2), which is a potential DoS concern if n is unbounded. Revisit the appended lengths for use as partition lengths when multipartition support is added. In addition, this allows decoding of raw streams outside of a container without additional framing information, though it's insufficient to be able to remux said stream into a container. Change-Id: I71e801a9c3e37abe559a56a597635b0cbae1934b
2012-11-09Merge "Packing Altref along with succeeding frame and length encoding ↵John Koleszar
frames" into experimental
2012-11-09Packing Altref along with succeeding frame and length encoding framesVignesh Venkatasubramanian
The altref frame is packed along with the next P frame. So that outside of the codec there are now only two types of frames P and I. Also, now it is one frame in and one frame out with respect to the codec. Apart from that, all the frames are length encoded with the length of each frame appended to the frame itself. There are two categories of frames and each of them will look as follows: - Packed frames (an altref along with the succeeding p frame) - altref_frame_data | altref_lenngth | frame_data | length - Unpacked frames (all frames other than the above) - frame_data | length Change-Id: If1eabf5c473f7d46b3f2d026bd30c803588c5330
2012-11-06vpx: merge with masterJohn Koleszar
Change-Id: I44b3ad780cef6f448fa17ff8e28fea87ef9cd518
2012-07-17Restyle codeJohn Koleszar
Approximate the Google style guide[1] so that that there's a written document to follow and tools to check compliance[2]. [1]: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml [2]: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py Change-Id: Idf40e3d8dddcc72150f6af127b13e5dab838685f
2012-03-15WebM Experimental Codec Branch SnapshotYaowu Xu
This is a code snapshot of experimental work currently ongoing for a next-generation codec. The codebase has been cut down considerably from the libvpx baseline. For example, we are currently only supporting VBR 2-pass rate control and have removed most of the code relating to coding speed, threading, error resilience, partitions and various other features. This is in part to make the codebase easier to work on and experiment with, but also because we want to have an open discussion about how the bitstream will be structured and partitioned and not have that conversation constrained by past work. Our basic working pattern has been to initially encapsulate experiments using configure options linked to #IF CONFIG_XXX statements in the code. Once experiments have matured and we are reasonably happy that they give benefit and can be merged without breaking other experiments, we remove the conditional compile statements and merge them in. Current changes include: * Temporal coding experiment for segments (though still only 4 max, it will likely be increased). * Segment feature experiment - to allow various bits of information to be coded at the segment level. Features tested so far include mode and reference frame information, limiting end of block offset and transform size, alongside Q and loop filter parameters, but this set is very fluid. * Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used in MBs using 16x16 prediction modes within inter frames. * Compound prediction (combination of signals from existing predictors to create a new predictor). * 8 tap interpolation filters and 1/8th pel motion vectors. * Loop filter modifications. * Various entropy modifications and changes to how entropy contexts and updates are handled. * Extended quantizer range matched to transform precision improvements. There are also ongoing further experiments that we hope to merge in the near future: For example, coding of motion and other aspects of the prediction signal to better support larger image formats, use of larger block sizes (e.g. 32x32 and up) and lossless non-transform based coding options (especially for key frames). It is our hope that we will be able to make regular updates and we will warmly welcome community contributions. Please be warned that, at this stage, the codebase is currently slower than VP8 stable branch as most new code has not been optimized, and even the 'C' has been deliberately written to be simple and obvious, not fast. The following graphs have the initial test results, numbers in the tables measure the compression improvement in terms of percentage. The build has the following optional experiments configured: --enable-experimental --enable-enhanced_interp --enable-uvintra --enable-high_precision_mv --enable-sixteenth_subpel_uv CIF Size clips: http://getwebm.org/tmp/cif/ HD size clips: http://getwebm.org/tmp/hd/ (stable_20120309 represents encoding results of WebM master branch build as of commit#7a15907) They were encoded using the following encode parameters: --good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63 --end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999 --kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50 --minsection-pct=0 --maxsection-pct=800 --sharpness=0 --arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF) --arnr-type=3 Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
2011-06-28Proposing an extension to the encoder and decoder interfaces.Stefan Holmer
Adding capabilities with which the encoder can output frames partition by partition, and the decoder can get input data partition by partition. Change-Id: Ieae0801480b8de8cd43c3c57dd3bab2e4c346fe0
2011-05-19Adding error-concealment to the decoder.Stefan Holmer
The error-concealer is plugged in after any motion vectors have been decoded. It tries to estimate any missing motion vectors from the motion vectors of the previous frame. Intra blocks with missing residual are replaced with inter blocks with estimated motion vectors. This feature was developed in a separate sandbox (sandbox/holmer/error-concealment). Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
2011-04-28bug fix 32 bit matches 64 bitJames Berry
included vpx_config.h in vpx_encoder.c to properly define FLOATING_POINT_INIT() Change-Id: Ie518bf5c087622658e37fca90aa4ddfe79d053f6
2011-03-21vpx_codec_dec_init: check that the iface is a decoderJohn Koleszar
Make sure the given interface is actually a decoder interface before initializing it. Change-Id: Ie48d737f2956cc2f0891666de5ea87251e96bc49
2011-02-16documentation: minor cosmeticsJames Zern
- correct spelling - remove explicit file name w/\file (unnecessary when contained in the same file and prone to desync) Change-Id: I68a3960ac5ab84d0f2e5c9b2e29799f26dfccf23
2011-02-02Avoid using an anonymous union.Gaute Strokkenes
Change-Id: I5744269a35e2d696ecf40c1665efd572bfc9b6cb
2011-01-19Implement error tracking in the decoderHenrik Lundin
A new vpx_codec_control called VP8D_GET_FRAME_CORRUPTED. The output from the function is non-zero if the last decoded frame contains corruption due to packet losses. The decoder is also modified to accept encoded frames of zero length. A zero length frame indicates to the decoder that one or more frames have been completely lost. This will mark the last decoded reference buffer as corrupted. The data pointer can be NULL if the length is zero. Change-Id: Ic5902c785a281c6e05329deea958554b7a6c75ce
2010-10-27Eliminate more warnings.Timothy B. Terriberry
This eliminates a large set of warnings exposed by the Mozilla build system (Use of C++ comments in ISO C90 source, commas at the end of enum lists, a couple incomplete initializers, and signed/unsigned comparisons). It also eliminates many (but not all) of the warnings expose by newer GCC versions and _FORTIFY_SOURCE (e.g., calling fread and fwrite without checking the return values). There are a few spurious warnings left on my system: ../vp8/encoder/encodemb.c:274:9: warning: 'sz' may be used uninitialized in this function gcc seems to be unable to figure out that the value shortcut doesn't change between the two if blocks that test it here. ../vp8/encoder/onyx_if.c:5314:5: warning: comparison of unsigned expression >= 0 is always true ../vp8/encoder/onyx_if.c:5319:5: warning: comparison of unsigned expression >= 0 is always true This is true, so far as it goes, but it's comparing against an enum, and the C standard does not mandate that enums be unsigned, so the checks can't be removed. Change-Id: Iaf689ae3e3d0ddc5ade00faa474debe73b8d3395
2010-09-09Use WebM in copyright notice for consistencyJohn Koleszar
Changes 'The VP8 project' to 'The WebM project', for consistency with other webmproject.org repositories. Fixes issue #97. Change-Id: I37c13ed5fbdb9d334ceef71c6350e9febed9bbba
2010-06-18cosmetics: trim trailing whitespaceJohn Koleszar
When the license headers were updated, they accidentally contained trailing whitespace, so unfortunately we have to touch all the files again. Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
2010-06-14Remove useless 500 frame limitFabio Pedretti
Change-Id: Ib82de60cf32cf08844c3e2d88d7c587396f3892c
2010-06-04LICENSE: update with latest textJohn Koleszar
Change-Id: Ieebea089095d9073b3a94932791099f614ce120c
2010-05-26Conditionally build enc/dec specific API sourcesJames Zern
vpx_codec.mk: Select required sources based on CONFIG_{EN,DE}CODERS. Relocate _dec_init_ver to vpx_decoder.c to match vpx_encoder. Change-Id: I6a171bc497499040912b2fb17786fba21a8ebc56
2010-05-24vpx_image: add VPX_ prefix to PLANE_*John Koleszar
The PLANE_{PACKED,Y,U,V,ALPHA} macros should be renamed to be within the VPX_ namespace. Fixes #27
2010-05-24install includes in DIST_DIR/include/vpx, move vpx_codec/ to vpx/John Koleszar
This renames the vpx_codec/ directory to vpx/, to allow applications to more consistently reference these includes with the vpx/ prefix. This allows the includes to be installed in /usr/local/include/vpx rather than polluting the system includes directory with an excessive number of includes. Change-Id: I7b0652a20543d93f38f421c60b0bbccde4d61b4f