- 14 Apr, 2014 1 commit
-
-
Adrian Grange authored
Added command line flags "resize-width" & "resize-height" to allow the user to specify the frame size to encode at. These two flags are ignored if the "resize-allowed" switch is not set to 1. All frames in the clip are then encoded at this size, which must be smaller than the raw frame size. Change-Id: I3d64bd9303d5c0bd678461a866a1ea621700d744
-
- 19 Mar, 2014 1 commit
-
-
Minghai Shang authored
1. Save stats for each spatial layer 2. Add frame buffer management for svc first pass rc 3. Set default spatial layer to 1 4. Flush encoder at the end of stream in test app This only supports spatial svc. Change-Id: Ia89cfa87bb6394e6c0405b921d86c426d0a0c9ae
-
- 26 Feb, 2014 1 commit
-
-
Minghai Shang authored
Change-Id: Ia7677fb436667bc4f76db71f65e4784f433f7826
-
- 06 Feb, 2014 1 commit
-
-
Marco Paniconi authored
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: I8900a854288b9354d9c697cfeb0243a9fd6790b1
-
- 03 Feb, 2014 1 commit
-
-
Marco Paniconi authored
This reverts commit 6be2b750 Change-Id: Ic52acd98b37c3ba49d4999b463389eb564f49c4b
-
- 02 Feb, 2014 1 commit
-
-
Marco Paniconi authored
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
-
- 17 Dec, 2013 1 commit
-
-
James Zern authored
Change-Id: Iee670353cffa1f9e97976ac507ad9519e5dda7f7
-
- 16 Dec, 2013 1 commit
-
-
Johann authored
Change-Id: I56706a8326d9356a6735d13eb5e0832d04221c91
-
- 29 Oct, 2013 1 commit
-
-
Adrian Grange authored
Added comments to make the codebase build cleanly in Doxygen. Change-Id: I01e000ceac57dbafa04342858c8f1be250ba20d1
-
- 09 Sep, 2013 1 commit
-
-
Ivan Maltz authored
Sample app: vp9_spatial_scalable_encoder vpx_codec_control extensions: VP9E_SET_SVC VP9E_SET_WIDTH, VP9E_SET_HEIGHT, VP9E_SET_LAYER VP9E_SET_MIN_Q, VP9E_SET_MAX_Q expanded buffer size for vp9_convolve modified setting of initial width in vp9_onyx_if.c so that layer size can be set prior to initial encode Default number of layers set to 3 (VPX_SS_DEFAULT_LAYERS) Number of layers set explicitly in vpx_codec_enc_cfg.ss_number_layers Change-Id: I2c7a6fe6d665113671337032f7ad032430ac4197
-
- 06 Sep, 2013 1 commit
-
-
Deb Mukherjee authored
Adds a new end-usage option for constant quality encoding in vpx. This first version implemented for VP9, encodes all regular inter frames using the quality specified in the --cq-level= option, while encoding all key frames and golden/altref frames at a quality better than that. The current performance on derfraw300 is +0.910% up from bitrate control, but achieved without multiple recode loops per frame. The decision for qp for each altref/golden/key frame will be improved in subsequent patches based on better use of stats from the first pass. Further, the qp for regular inter frames may also be varied around the provided cq-level. Change-Id: I6c4a2a68563679d60e0616ebcb11698578615fb3
-
- 27 Mar, 2013 1 commit
-
-
John Koleszar authored
Restore ABI compatibility with the master branch. Change-Id: Ic57e7e1de09ab33bd37990e52a63ba7c8f1432a4
-
- 26 Jan, 2013 1 commit
-
-
Deb Mukherjee authored
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
-
- 06 Nov, 2012 1 commit
-
-
John Koleszar authored
Change-Id: I44b3ad780cef6f448fa17ff8e28fea87ef9cd518
-
- 17 Jul, 2012 1 commit
-
-
John Koleszar authored
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
-
- 29 Jun, 2012 1 commit
-
-
Hui Su authored
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
-
- 15 Jun, 2012 1 commit
-
-
John Koleszar authored
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
-
- 03 May, 2012 1 commit
-
-
John Koleszar authored
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
-
- 02 May, 2012 2 commits
-
-
John Koleszar authored
Preserved the prior names for compatibility, will remove in the future. Change-Id: I8773f959ebce72f60168a2972f7a8ffe6642b9b2
-
Attila Nagy authored
Fix code for following warnings: -Wimplicit-function-declaration -Wuninitialized -Wunused-but-set-variable -Wunused-variable Change-Id: I2be434f22fdecb903198e8b0711255b4c1a2947a
-
- 20 Apr, 2012 1 commit
-
-
John Koleszar authored
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
-
- 03 Feb, 2012 1 commit
-
-
Yunqing Wang authored
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
-
- 05 Dec, 2011 1 commit
-
-
Yunqing Wang authored
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
-
- 11 Oct, 2011 2 commits
-
-
John Koleszar authored
Commit 217591fd modified the encoder ABI without incrementing the version number. Change-Id: I74de01597dadcdcd96f6b817e4ec69d9ab535e4c
-
Adrian Grange authored
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
-
- 28 Jul, 2011 1 commit
-
-
John Koleszar authored
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
-
- 28 Jun, 2011 3 commits
-
-
Stefan Holmer authored
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
-
Stefan Holmer authored
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
-
Stefan Holmer authored
Adding support in the encoder for generating independent residual partitions by forcing equal probabilities over the prev coef entropy contexts. Change-Id: I402f5c353255f3ca20eae2620af739f6a498cd21
-
- 25 Apr, 2011 1 commit
-
-
John Koleszar authored
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
-
- 13 Apr, 2011 1 commit
-
-
John Koleszar authored
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
-
- 17 Feb, 2011 1 commit
-
-
James Zern authored
- correct spelling - remove explicit file name w/\file (unnecessary when contained in the same file and prone to desync) Change-Id: I68a3960ac5ab84d0f2e5c9b2e29799f26dfccf23
-
- 07 Jan, 2011 1 commit
-
-
Paul Wilkins authored
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
-
- 28 Oct, 2010 2 commits
-
-
Timothy B. Terriberry authored
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: Iead6cd561a2afaa3d801fd63f1d8d58953da7426
-
Timothy B. Terriberry authored
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
-
- 09 Sep, 2010 1 commit
-
-
John Koleszar authored
Changes 'The VP8 project' to 'The WebM project', for consistency with other webmproject.org repositories. Fixes issue #97. Change-Id: I37c13ed5fbdb9d334ceef71c6350e9febed9bbba
-
- 18 Jun, 2010 1 commit
-
-
John Koleszar authored
When the license headers were updated, they accidentally contained trailing whitespace, so unfortunately we have to touch all the files again. Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
-
- 04 Jun, 2010 1 commit
-
-
John Koleszar authored
Change-Id: Ieebea089095d9073b3a94932791099f614ce120c
-
- 25 May, 2010 1 commit
-
-
John Koleszar authored
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
-
- 18 May, 2010 1 commit
-
-
John Koleszar authored
-