summaryrefslogtreecommitdiff
path: root/vpx
AgeCommit message (Collapse)Author
2012-04-02Allow disabling disabled codecsJohann
When using 'make dist' after --disable-vp8[encoder|decoder] it would fail to recognize the option. This would only occur when also specifying --enable-install-docs and --enable-install-srcs but not --enable-codec-srcs Including vpx/ fixes builds with --enable-codec-srcs vpx_timer.h is also required for vpxenc.c Change-Id: Ie3e28b2f7ec7ee6d5961d3843f9eab869f79c35b
2012-03-15doxy: fix conditional usage, ref warningsJames Zern
doxygen < 1.7.? seems to have been more tolerant of single line \if/\endif This change fixes warnings such as: mainpage.dox:13: warning: unable to resolve reference to `vp8_encoder-' for \ref command vpx_decoder.h:193: warning: explicit link request to 'n' could not be resolved Change-Id: If3d04af5ede1b0d1e2c63021d0e4ac8f98db20b2
2012-02-03Allow to skip highest-resolution encoding in multi-resolution encoderYunqing Wang
Sometimes, a user doesn't have enough bandwidth to send high-resolution (i.e. HD) video even though the camera catches HD video. This change allowed users to skip highest-resolution encoding by setting that level's target bit rate to 0. To test it, modify the following line in vp8_multi_resolution_encoder.c. unsigned int target_bitrate[NUM_ENCODERS]={1400, 500, 100}; To skip the highest-resolution level, change it to unsigned int target_bitrate[NUM_ENCODERS]={0, 500, 100}; To skip the first and second highest resolution levels, change it to unsigned int target_bitrate[NUM_ENCODERS]={0, 0, 100}; This change also fixed a small problem in mapping, which slightly helped quality and performance. Change-Id: I977bae9a9fbfba85c8be4bd5af01539f2b84bc81
2012-01-10vp8d - function to check if a reference frame is used.Jim Bankoski
Change-Id: Id683b4d7f46ffa99145fc4b824c7232ab4182f21
2012-01-05Multiframe quality enhancement postprocessingDeb Mukherjee
Adds a multiframe postprocessing module to enhance the quality of certain frames that are coded at lower quality than preceding frames. The module can be invoked from the commandline by use of the --mfqe option, and will be most beneficial for enhancing the quality of frames decoded using scalable patterns. Uses the vp8_variance_var16x16 and vp8_variance_sad16x16 function pointers to compute SAD and Variance of blocks. Change-Id: Id73d2a6e3572d07f9f8e36bbce00a4fc5ffd8961
2011-12-13Merge "vpx_integer.h: fix incorrect type emulation"John Koleszar
2011-12-13Align image buffer in multiple-resolution encoderYunqing Wang
Aligned the image buffer and stride to 32 bytes. This enables calling of optimized scaler function in libyuv, and improves the performance. Tested libyuv scaler(x86 optimization) on Linux and Windows, including: Linux 32/64bit, visual studio 32/64bit, Cygwin, and MinGW32. Also, fixed a wrong pointer in vpx_codec_encode(). Change-Id: Ibe97d7a0a745f82c43852fa4ed719be5a4db6abc
2011-12-09vpx_integer.h: fix incorrect type emulationJohn Koleszar
The previous definition of uintptr_t was incorrect on x64 with MSVC. Also, the ARMV6 version of int_fast16_t was defined as unsigned for some reason. Since the fast types are currently unused, just remove them. Change-Id: Idd73f77a989c77feedcb4a6802ae6bd37324ed40
2011-12-06Merge "Allow aligning the raw image buffer"Yunqing Wang
2011-12-06Allow aligning the raw image bufferYunqing Wang
Added code to allocate aligned image buffer in vpx_img_alloc(). The alignment of the buffer and stride is determined by the parameter align. Change-Id: Idc866978484be3558551c56df39130ab7f74ddd4
2011-12-05Multiple-resolution encoderYunqing Wang
The example encoder down-samples the input video frames a number of times with a down-sampling factor, and then encodes and outputs bitstreams with different resolutions. Support arbitrary down-sampling factor, and down-sampling factor can be different for each encoding level. For example, the encoder can be tested as follows. 1. Configure with multi-resolution encoding enabled: ../libvpx/configure --target=x86-linux-gcc --disable-codecs --enable-vp8 --enable-runtime_cpu_detect --enable-debug --disable-install-docs --enable-error-concealment --enable-multi-res-encoding 2. Run make 3. Encode: If input video is 1280x720, run: ./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1 (output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180). The last parameter is set to 1/0 to show/not show PSNR.) 4. Decode: ./simple_decoder 1.ivf 1.yuv ./simple_decoder 2.ivf 2.yuv ./simple_decoder 3.ivf 3.yuv 5. View video: mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30 mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30 mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30 The encoding parameters can be modified in vp8_multi_resolution_encoder.c, for example, target bitrate, frame rate... Modified API. John helped a lot with that. Thanks! Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
2011-11-01Changing decoder input partition API to input fragments.Stefan Holmer
Adding support for several partitions within one input fragment. This is necessary to fully support all possible packetization combinations in the VP8 RTP profile. Several partitions can be transmitted in the same packet, and they can only be split by reading the partition lengths from the bitstream. Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
2011-10-11Bump ABI version number for temporal scalabilityJohn Koleszar
Commit 217591f modified the encoder ABI without incrementing the version number. Change-Id: I74de01597dadcdcd96f6b817e4ec69d9ab535e4c
2011-10-11Added rate-targeted temporal scalabilityAdrian Grange
Added the ability to create rate-targeted, temporally scalable, VP8 compatible bitstreams. The application vp8_scalable_patterns.c demonstrates how to use this capability. Users can create output bitstreams containing upto 5 temporally separable streams encoded as a single VP8 bitstream. (previously abandoned as: I92d1483e887adb274d07ce9e567e4d0314881b0a) Change-Id: I156250a3fe930be57c069d508c41b6a7a4ea8d6a
2011-07-28Convert rc_max_intra_bitrate_pct to controlJohn Koleszar
Since this is the only ABI incompatible change since the last release, convert it to use the control interface instead. The member of the configuration struct is replaced with the VP8E_SET_MAX_INTRA_BITRATE_PCT control. More significant API changes were expected to be forthcoming when this control was first introduced, and while they continue to be expected, it's not worth breaking compatibility for only this change. Change-Id: I799d8dbe24c8bc9c241e0b7743b2b64f81327d59
2011-07-19Revert "Disable __longjmp_chk protection"John Koleszar
This reverts commit b73a3693e581583e9ec676f4396d0c3d173e2462. This version of the check doesn't work with generic-gnu, and figuring out the correct symbol version at configure time is probably more work than this is worth. May revisit in the future. Change-Id: I6c75e88bd3bd82a4b21e09a25780fe53aacb7d70
2011-07-13Disable __longjmp_chk protectionJohn Koleszar
glibc implements some checking on longjmp() calls by replacing it with an internal function __longjmp_chk(), when FORTIFY_SOURCE is defined. This can be problematic when compiling the library under one version of glibc and running it under another. Work around this issue for the one symbol affected for now, before taking out the undef hammer. Fixes http://code.google.com/p/webm/issues/detail?id=166 Change-Id: Ifc5e25cdec17915e394711f2185b3e9214572d10
2011-06-28use relative include pathJohann
Files are already in vpx/ Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
2011-06-28New ways of passing encoded data between encoder and decoder.Stefan Holmer
With this commit frames can be received partition-by-partition from the encoder and passed partition-by-partition to the decoder. At the encoder-side this makes it easier to split encoded frames at partition boundaries, useful when packetizing frames. When VPX_CODEC_USE_OUTPUT_PARTITION is enabled, several VPX_CODEC_CX_FRAME_PKT packets will be returned from vpx_codec_get_cx_data(), containing one partition each. The partition_id (starting at 0) specifies the decoding order of the partitions. All partitions but the last has the VPX_FRAME_IS_FRAGMENT flag set. At the decoder this opens up the possibility of decoding partition N even though partition N-1 was lost (given that independent partitioning has been enabled in the encoder) if more info about the missing parts of the stream is available through external signaling. Each partition is passed to the decoder through the vpx_codec_decode() function, with the data pointer pointing to the start of the partition, and with data_sz equal to the size of the partition. Missing partitions can be signaled to the decoder by setting data != NULL and data_sz = 0. When all partitions have been given to the decoder "end of data" should be signaled by calling vpx_codec_decode() with data = NULL and data_sz = 0. The first partition is the first partition according to the VP8 bitstream + the uncompressed data chunk + DCT address offsets if multiple residual partitions are used. Change-Id: I5bc0682b9e4112e0db77904755c694c3c7ac6e74
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-06-28Adding support for independent partitionsStefan Holmer
Adding support in the encoder for generating independent residual partitions by forcing equal probabilities over the prev coef entropy contexts. Change-Id: I402f5c353255f3ca20eae2620af739f6a498cd21
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-05-10Merge "Use stdint.h for VS2010"John Koleszar
2011-05-06Use stdint.h for VS2010John Koleszar
VS2010 has included stdint.h, but not inttypes.h. Prefer the compiler's version of these types. Fixes issue 327. Change-Id: Ica71600e06b8e94e3bbb4f12988b4a9817d5e5e4
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-04-25Merge "Change rc undershoot/overshoot semantics"John Koleszar
2011-04-25Add rc_max_intra_bitrate_pct controlJohn Koleszar
Adds a control to limit the maximum size of a keyframe, as a function of the per-frame bitrate. See this thread[1] for more detailed discussion: [1]: http://groups.google.com/a/webmproject.org/group/codec-devel/browse_thread/thread/271b944a5e47ca38 Change-Id: I7337707642eb8041d1e593efc2edfdf66db02a94
2011-04-12Change rc undershoot/overshoot semanticsJohn Koleszar
This patch changes the rc_undershoot_pct and rc_overshoot_pct controls to set the "aggressiveness" of rate adaptation, by limiting the amount of difference between the target buffer level and the actual buffer level which is applied to the target frame rate for this frame. This patch was initially provided by arosenberg at logitech.com as an attachment to issue #270. It was modified to separate these controls from the other unrelated modifications in that patch, as well as to use the pre-existing variables rather than introducing new ones. Change-Id: Id542e3f5667dd92d857d5eabf29878f2fd730a62
2011-04-11Set cpu_used range to [-16, 16] in real-time modeYunqing Wang
Remove encoding speed limitation in real-time mode. Change-Id: Ib5e35d8bb522b2a25f3e4ad5cfe2788ebebb3617
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-03-15Avoid misspelling "dependent".Gaute Strokkenes
Change-Id: Ib0c280e1fcfd977e11e4390807b2c8077a87500c
2011-03-14Improve grammar in a comment.Ralph Giles
Change-Id: I18bfda6d420626f2718e096e338c1d0bf0ba029d
2011-03-04cosmetic: clean up comments for new vp8dx controlsJohn Koleszar
Rename the common control id enum vp8_{dec,com}_control_id, move VP8_DECODER_CTRL_ID_START to common, wrap long lines. Change-Id: I659abc62f10aa389d496f7f43950775db0ef2f9f
2011-02-24documentation: minor updates to vp8 (en|de)coderJames Zern
Group algorithm interfaces to avoid undocumented warning from doxygen and provide basic documentation for CQ level & cpuused. Change-Id: I11095061be962cbc998741de9c8c3019d415e137
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-19Merge "Implement error tracking in the decoder"John Koleszar
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
2011-01-07CQ ModePaul Wilkins
The merge includes hooks to for CQ mode and other code changes merged from the test branch. CQ mode attempts to maintain a more stable quantizer within a clip whilst also trying to adhere to a guidline maximum bitrate. The existing target data rate parameter is used to specify the guideline maximum bitrate. A new parameter allows the user to specify a target CQ level. For normal (non kf/gf/arf) frames, the quantizer will not drop BELOW the user specified value (0-63). However, in some cases the encoder may choose to impose a target CQ that is above that specified by the user, if it estimates that consistent use of the target value is not compatible with guideline maximum bitrate. Change-Id: I2221f9eecae8cc3c431d36caf83503941b25e4c1
2010-12-20Merge "Add psnr/ssim tuning option"Jim Bankoski
2010-12-17Add psnr/ssim tuning optionJohn Koleszar
Add a new encoder control, VP8E_SET_TUNING, to allow the application to inform the encoder that the material will benefit from certain tuning. Expose this control as the --tune option to vpxenc. The args helper is expanded to support enumerated arguments by name or value. Two tunings are provided by this patch, PSNR (default) and SSIM. Activity masking is made dependent on setting --tune=ssim, as the current implementation hurts speed (10%) and PSNR (2.7% avg, 10% peak) too much for it to be a default yet. Change-Id: I110d969381c4805347ff5a0ffaf1a14ca1965257
2010-12-17Inform caller of decoder about updated referencesHenrik Lundin
Inform the caller of the decoder if a decoded frame updated last, golden, or altref frames, required for realtime communication proposed in document VP8 RTP payload format. Added a new vpx_codec_control called VP8D_GET_LAST_REF_UPDATES, to be called after vpx_codec_decode. The control will indicate which of the reference frames that were updated by setting the 3 LSBs in the input int (pointer). Change-Id: Iac9db60dac414356c7ffa0b0fede88cb91e11bd7
2010-11-10postproc : Re-work posproc calling to allow more flags.Fritz Koenig
Debugging in postproc needs more flags to allow for specific block types to be turned on or off in the visualizations. Must be enabled with --enable-postproc-visualizer during configuration time. Change-Id: Ia74f357ddc3ad4fb8082afd3a64f62384e4fcb2d
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-23Add getter functions for the interface data symbolsJohn Koleszar
Having these symbols be available as functions rather than data is occasionally more convenient. Implemented this way rather than a get-codec-by-id style to avoid creating a link-time dependency between the encoder and the decoder. Fixes issue #169 Change-Id: I319f281277033a5e7e3ee3b092b9a87cce2f463d
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-07-07Fix misspelled "paramter" in vpx_codec_internal.h" to "parameter".Michael Kohler
Signed-off-by: Michael Kohler <michaelkohler@live.com>
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-05shared library support (.so)John Koleszar
This patch adds support for building shared libraries when configured with the --enable-shared switch. Building DLLs would require more invasive changes to the sample utilities than I want to make in this patch, since on Windows you can't use the address of an imported symbol in a static initializer. The best way to work around this is proably to build the codec interface mapping table with an init() function, but dll support is of questionable value anyway, since most windows users will probably use a media framework lib like webmdshow, which links this library in staticly. Change-Id: Iafb48900549b0c6b67f4a05d3b790b2643d026f4