summaryrefslogtreecommitdiff
path: root/vpx
AgeCommit message (Collapse)Author
2013-07-11vp[89]_dx_iface: factorize vp8_mmap_*()James Zern
s/vp8/vpx/ -> vpx_codec_internal.h / vpx_codec.c Change-Id: If4192b40206276a761b01d44e334fe15bcb81128
2013-07-11small update to peek_si/get_si documentationJames Zern
correct a doxygen and function reference Change-Id: I525371d64969aa60c464d0f6a133bc29895d7991
2013-06-17Fixing compilation error on Mac OS.Dmitry Kovalev
The error happened because of vp8_decrypt_cb typedef redefinition in both treereader.h and vp8dx.h. Removing typedef from vp8dx.h in favor of raw function pointer declaration. Change-Id: I0266eb341ce433d40caf0abf8748694d505ee786
2013-06-17Change the encryption feature to use a callback for decryption.Jeff Petkau
This allows code calling the library can choose an arbitrary encryption algorithm. Decoder control parameter VP8_SET_DECRYPT_KEY is renamed to VP8D_SET_DECRYPTOR, and now takes an small config struct instead of just a byte array. Change-Id: I0462b3388d8d45057e4f79a6b6777fe713dc546e
2013-05-06Y4M input support for 4:2:2, 4:4:4, 4:4:4:4John Koleszar
Adds a new experiment CONFIG_NON420 that allows other chroma subsamplings to be passed to the codec. This commit allows the data to be passed from a y4m input file through vpxenc to the codec, where they're currently rejected. Later commits will finish support for this inside the codec. Change-Id: Ib3aac604d8cad9e24cef395fa1067f16ba7e8e43
2013-04-24Extension of segmentation to 8 segments.Paul Wilkins
Also some further simplification following removal of top node code. There is an issue in regards to the shared file vp8cx.h in regard to the roi_map as this interface assumes that there are only 4 segments. I have left the value here as 4 for now meaning that the roi_map interface is broken for VP9. Note that this change would have been easier if I hadn't had to search for hard wire instances of the number 4 and <= 3. Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
2013-03-27Convert inv_tile_order to control interfaceJohn Koleszar
Restore ABI compatibility with the master branch. Change-Id: Ie9f6fdf536662bd87dfcf114d16f003422670763
2013-03-27Convert g_frame_parallel_decoding to control interfaceJohn Koleszar
Restore ABI compatibility with the master branch. Change-Id: Ic57e7e1de09ab33bd37990e52a63ba7c8f1432a4
2013-03-27Merge branch 'master' into experimentalJohn Koleszar
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
2013-03-15Basic encryption feature for libvpx.Dmitry Kovalev
New decoder control paramter VP8_SET_DECRYPT_KEY to set the decryption key. Change-Id: I6fc1f44d41f74f3b3f702778af1a6f8f5cc9439f
2013-03-13Add VP9_GET_REFERENCE controlJohn Koleszar
This is like VP8_COPY_REFERENCE, but returns a pointer to the reference frame rather than a copy of it. This is useful when the application doesn't know what the size of the reference is, as is the case when scaling is in effect. Change-Id: I63667109f65510364d0e397ebe56217140772085
2013-03-01Merge master branch into experimentalJohn Koleszar
Picks up some build system changes, compiler warning fixes, etc. Change-Id: I2712f99e653502818a101a72696ad54018152d4e
2013-02-13Add support for tile rows.Ronald S. Bultje
These allow sending partial bitstream packets over the network before encoding a complete frame is completed, thus lowering end-to-end latency. The tile-rows are not independent. Change-Id: I99986595cbcbff9153e2a14f49b4aa7dee4768e2
2013-02-12Add tile column size limits (256 pixels min, 4096 pixels max).Ronald S. Bultje
This is after discussion with the hardware team. Update the unit test to take these sizes into account. Split out some duplicate code into a separate file so it can be shared. Change-Id: I8311d11b0191d8bb37e8eb4ac962beb217e1bff5
2013-02-05[WIP] Add column-based tiling.Ronald S. Bultje
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
2013-02-04Added INT16_MIN and INT16_MAX for MSVC buildsYaowu Xu
These macros were not defined in earlier version of MSVC Change-Id: I8270a3abb7c6e9ead1931a653d7e41f877a1017b
2013-01-30WIP: Multiple decoder instances supportScott LaVarnway
Started adding support for multiple internal decoder instances. Also added code to limit the vp8 config options available when using frame-based multithreading. Change-Id: I0f1ee7abcfcff59204f50162e28254b8dd6972eb
2013-01-25Adding a frame parallel decoding modeDeb Mukherjee
Adds a flag to disable features that would inhibit frame parallel decoding. This includes backward adaptation and MV sorting based on search in ref frame buffer. Also includes some minor clean-ups. Change-Id: I434846717a47b7bcb244b37ea670c5cdf776f14d
2013-01-14Use INT64_MAX instead of LLONG_MAXJohn Koleszar
These variables have the type int64_t, not long long. long long could be a larger type than 64 bits. Emulate INT64_MAX for older versions of MSVC, and remove the unreferenced vpx_ports/vpxtypes.h Change-Id: Ideaca71838fcd3849d816d5ab17aa347c97d03b0
2012-12-27Merge branch 'vp9-preview' of review:webm/libvpxJohn Koleszar
Merge the vp9-preview branch into master. Change-Id: If700b9054676f24bed9deb59050af546c1ca5296
2012-11-27avoid redefining DECLSPEC_DEPRECATEDJames Zern
fixes, e.g.: In file included from ../vpx/internal/../vpx_decoder.h:33:0, from ../vpx/internal/vpx_codec_internal.h:46, from ../vp8/common/onyx.h:21, from ../vp8/encoder/block.h:15, from ../test/subtract_test.cc:18: ../vpx/internal/../vpx_codec.h:52:0: warning: "DECLSPEC_DEPRECATED" redefined /usr/x86_64-w64-mingw32/sys-root/mingw/include/winnt.h:164:0: note: this is the location of the previous definition Change-Id: Iddc9318451d3e4e4a78b4d706518083fffff5c61
2012-11-16Move documentation file list to relevant make fileJohann
Change-Id: I2fe3095c4eb60233f00830d4124583ce7a64caa4
2012-11-15Each make file is responsible for its own directoryJohann
Change-Id: Ia8a59ce79045af209e49c68810bae44616422db5
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-15support building vp8 and vp9 into a single libJohn Koleszar
Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
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-07Rough merge of master into experimentalJohn Koleszar
Creates a merge between the master and experimental branches. Fixes a number of conflicts in the build system to allow *either* VP8 or VP9 to be built. Specifically either: $ configure --disable-vp9 $ configure --disable-vp8 --disable-unit-tests VP9 still exports its symbols and files as VP8, so that will be resolved in the next commit. Unit tests are broken in VP9, but this isn't a new issue. They are fixed upstream on origin/experimental as of this writing, but rebasing this merge proved difficult, so will tackle that in a second merge commit. Change-Id: I2b7d852c18efd58d1ebc621b8041fe0260442c21
2012-11-06vpx: merge with masterJohn Koleszar
Change-Id: I44b3ad780cef6f448fa17ff8e28fea87ef9cd518
2012-11-01Rename vp8/ codec directory to vp9/.Ronald S. Bultje
Change-Id: Ic084c475844b24092a433ab88138cf58af3abbe4
2012-08-14Shut up warnings added by -WundefDaniel Kang
Change-Id: I9c7ef4a75c37aa0e10df75e165e3066614c955ef
2012-07-24Added unit test of vp8_set_roimap()Paul Wilkins
Change-Id: I99937cbdd6bfe52b7c8ae42f05526dfc06a602f4
2012-07-23Dll build of libvpxJim Bankoski
Change-Id: I74e50b4dfbe73eb98e1dce1695a9973f637220c0
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-07-13multi-res: add parameter validity checkingYunqing Wang
Added validity checking in multi-res encoder. Disable spatial resampling and frame dropping before we have those supports. Also, deallocate the memory for all resolution levels once error occurs. Change-Id: Ia5d65a645381cad1a49940ab3a19bb5696c39c09
2012-07-13Remove unused parameter in encoder interface codeYunqing Wang
Removed encoding_mode, which is not used anymore. Change-Id: I569b2d4afe4d2f57bda8248615108c7cfc40134c
2012-06-29Build unit test driver from the default targetJohn Koleszar
We need an easy way to build the unit test driver without running the tests. This enables passing options like --gtest_filter to the executable, which can't be done very cleanly when running under `make test`. Fixed a number of compiler errors/warnings when building the tests in various configurations by Jenkins. Change-Id: I9198122600bcf02520688e5f052ab379f963b77b
2012-06-28Add lossless compression mode.Hui Su
This commit adds lossless compression capability to the experimental branch. The lossless experiment can be enabled using --enable-lossless in configure. When the experiment is enabled, the encoder will use lossless compression mode by command line option --lossless, and the decoder automatically recognizes a losslessly encoded clip and decodes accordingly. To achieve the lossless coding, this commit has changed the following: 1. To encode at lossless mode, encoder forces the use of unit quantizer, i.e, Q 0, where effective quantization is 1. Encoder also disables the usage of 8x8 transform and allows only 4x4 transform; 2. At Q 0, the first order 4x4 DCT/IDCT have been switched over to a pair of forward and inverse Walsh-Hadamard Transform (http://goo.gl/EIsfy), with proper scaling applied to match the range of the original 4x4 DCT/IDCT pair; 3. At Q 0, the second order remains to use the previous walsh-hadamard transform pair. However, to maintain the reversibility in second order transform at Q 0, scaling down is applied to first order DC coefficients prior to forward transform, and scaling up is applied to the second order output prior to quantization. Symmetric upscaling and downscaling are added around inverse second order transform; 4. At lossless mode, encoder also disables a number of minor features to ensure no loss is introduced, these features includes: a. Trellis quantization optimization b. Loop filtering c. Aggressive zero-binning, rounding and zero-bin boosting d. Mode based zero-bin boosting Lossless coding test was performed on all clips within the derf set, to verify that the commit has achieved lossless compression for all clips. The average compression ratio is around 2.57 to 1. (http://goo.gl/dEShs) Change-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34
2012-06-23Alter comment on range of delta_q and delta_lfPaul Wilkins
Update the comment that defines the allowed ranges for delta_q and delta_lf that can be used with segmentation. Change-Id: Ie56ad6f946704259e03ffd49921a4cfb7e1e2f1f
2012-06-15Remove threading dependencies with --disable-multithreadJohn Koleszar
Avoid a pthreads dependency via pthread_once() when compiled with --disable-multithread. In addition, this synchronization is disabled for Win32 as well, even though we can be sure that the required primatives exist, so that the requirements on the application when built with --disable-multithread are consistent across platforms. Users using libvpx built with --disable-multithread in a multithreaded context should provide their own synchronization. Updated the documentation to vpx_codec_enc_init_ver() and vpx_codec_dec_init_ver() to note this requirement. Moved the RTCD initialization call to match this description, as previously it didn't happen until the first frame. Change-Id: Id576f6bce2758362188278d3085051c218a56d4a
2012-05-22Merge "multi-res: force Key frame sychronization"Yunqing Wang
2012-05-16multi-res: force Key frame sychronizationYunqing Wang
In multi-resolution encoding, frame_type decision for each frame is made by the lowest-resolution encoder. For all other higher- resolution encoders, kf_mode is always set to VPX_KF_DISABLED, and they are forced to use the same frame_type picked by the lowest-resolution encoder. Change-Id: Ic4d52ec65bbc012ca9c2d236210e28a295591eaf
2012-05-04remove deprecated pre-v0.9.0 APIJohn Koleszar
Remove a bunch of compatibility code dating back to before the initial libvpx release. Change-Id: Ie50b81e7d665955bec3d692cd6521c9583e85ca3
2012-05-03Merge "Add VPX_TS_ prefix to MAX_LAYERS, MAX_PERIODICITY" into eiderJohn Koleszar
2012-05-02multi-res: restore v1.0.0 APIJohn Koleszar
Move the notion of 0 bitrate implying skip deeper into the codec, rather than doing it at the multi-encoder API level. This preserves v1.0.0 ABI compatibility, rather than forcing a bump to v2.0.0 over a minor change. Also, this allows the case where the application can selectively enable and disable the larger resolution(s) without having to reinitialize the codec instace (for instance, if no target is receiving the full resolution stream). It's not clear how deep to push this check. It may be valuable to allow the framerate adaptation code to run, for example. Currently put the check as early as possible for simplicity, should reevaluate this as this feature gains real use. Change-Id: I371709b8c6b52185a1c71a166a131ecc244582f0
2012-05-02Merge "Fix compiler warnings" into eiderJohn Koleszar
2012-05-02Add VPX_TS_ prefix to MAX_LAYERS, MAX_PERIODICITYJohn Koleszar
Preserved the prior names for compatibility, will remove in the future. Change-Id: I8773f959ebce72f60168a2972f7a8ffe6642b9b2
2012-05-02Fix trailing commas in enums.Timothy B. Terriberry
These are warnings in most builds, but show up as compile errors on some platforms when these headers are included from C++ code. Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
2012-05-02Fix trailing commas in enums.Timothy B. Terriberry
These are warnings in most builds, but show up as compile errors on some platforms when these headers are included from C++ code. Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
2012-05-02Fix compiler warningsAttila Nagy
Fix code for following warnings: -Wimplicit-function-declaration -Wuninitialized -Wunused-but-set-variable -Wunused-variable Change-Id: I2be434f22fdecb903198e8b0711255b4c1a2947a