summaryrefslogtreecommitdiff
path: root/vpx/vp8cx.h
AgeCommit message (Collapse)Author
2014-12-03Various updates to vp8.Marco
Change-Id: Icc7a816491897107764e4c936288e9000e6319b8
2014-11-10Vidyo: Support for one-pass rc-enabled SVC encoderDeb Mukherjee
Adds support for one-pass rc-enabled SVC encoder with callbacks for getting per-layer packets. - the callback function registration is implemented as an encoder control function. - if the callback function is not registered, the old way of aggregating packets with superframe will take effect. - one more control function “VP9E_GET_SVC_LAYER_ID” has been implemented to get the temporal/spatial id from the encoder within the callback. This can be used to get the ids to put on RTP packet. Change-Id: I1a90e00135dde65da128b758e6c00b57299a111a
2014-10-27Add a new control of golden frame boost in CBR modeYaowu Xu
0 means that golden boost is off, and uses average frame target rate, a non-zero number means the percentage of boost over average frame bitrate is given initially to golden frames in CBR mode. Change-Id: If4334fe2cc424b65ae0cce27f71b5561bf1e577d
2014-10-24Add a new control of max bitrate for inter frameYaowu Xu
Change-Id: I205de3611622cff7f751ea8baf9f82784581730a
2014-09-18[spatial svc] Remove vpx_svc_parameters_t and the loop that sets it for each ↵Minghai Shang
layer vpx_svc_parameters_t contains id, resolution and min/max qp for each spatial layer. In this change we will use extra config to send min/max qp and scaling factors, then calculate layer resolution inside encoder. Change-Id: Ib673303266605fe803c3b067284aae5f7a25514a
2014-09-12Merge "Change the control function of VP9 denoiser."JackyChen
2014-09-12Change the control function of VP9 denoiser.JackyChen
Change from VP8E_SET_NOISE_SENSITIVITY to VP9E_SET_NOISE_SENSITIVITY Change-Id: Ia210a7029b26924e30973f0f9798a338e0412407
2014-09-12[spatial svc] Remove useless APIs and variablesMinghai Shang
Change-Id: If8cd3879aa2a498a2b1b97cedb88b2b3bd97f0ba
2014-08-05Add a codec control option to tune for screen content.Alex Converse
Change-Id: I12b0b0a06750cb9a5f1bdc3368deb44137acc9a3
2014-07-14[spatial svc]Implement alt reference framesMinghai Shang
All changes are for spatial svc only. 1. Enable encoding hidden frames in each layer and use alt reference idex to reference the hidden frame in each layer 2. Use golden reference idx for spatial reference 3. For those layers that don't have hidden frames (caused by lack of frame buffers), reference a hidden frame in lower layers 4. Add "auto-alt-refs" in svc options Change-Id: Idf27d1fd2fb5f3ffd9e86d2119235e3dad36c178
2014-05-05Mark VP8E_SET_ARNR_TYPE as being deprecatedAdrian Grange
In a future release we plan to remove the option of setting the ARNR filter type. This patch marks this control as being deprecated as advance warning that it will be removed from the API at some point. Change-Id: I5dcca804b44c7c93b1a10da7d69d19ba6061869c
2014-04-29Revert "Force ARNR filtering to be centered on the ARF frame"Adrian Grange
This reverts commit 59e733ca81b707780901340686ecd7419077eb54. Hold off removing arnr_type to give users the opportunity to change their script files to handle its deprecation. A follow-up patch will mark the control for setting arnr_type as deprecated and it will be removed completely in a later revision of the code. Change-Id: I8b817c744e144d3714234a4cd4309816d0c7e3e8
2014-04-03Add codec control function for enabling frame_periodic_boost.Marco Paniconi
Change-Id: I6371ef7301c6bc3138552bd349e9bd154dee3e08
2014-02-20vp8cx.h: add brief desc. for VP9E_SET_SVC_LAYER_IDJames Zern
fixes doxygen warning related to vpx_svc_layer_id Change-Id: I365688133c1598182488501158de6af4b0f4c546
2014-02-18Add comments to portion of SVC interface.Marco Paniconi
Fixes issue #705. Change-Id: I60d45ee28fb34f401a440015bfe7bd3837b51de1
2014-02-06Layer based rate control for CBR mode.Marco Paniconi
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
2014-02-03Revert "Layer based rate control for CBR mode."Marco Paniconi
This reverts commit 6be2b750b8968a0b19180a6474864c0b6a41db13 Change-Id: Ic52acd98b37c3ba49d4999b463389eb564f49c4b
2014-02-02Layer based rate control for CBR mode.Marco Paniconi
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
2013-12-27Removing vpx_codec_vp9x_cx and internal experimental flag.Dmitry Kovalev
vpx_codec_vp9x_cx is not used internally. Experimental flag from vp9_extracfg is also not really used. YUV 4:4:4 just works after these changes (you have to specify --profile=1 for the encoder). Change-Id: Ib1c8461d0d19d159827e005efe868f891eea0140
2013-12-16vpx: normalize include guardsJames Zern
Change-Id: Iee670353cffa1f9e97976ac507ad9519e5dda7f7
2013-12-16Include files in the same directory directlyJohann
Change-Id: I56706a8326d9356a6735d13eb5e0832d04221c91
2013-11-15vpxenc: add --aq-mode flag to control adaptive quantizationGuillaume Martres
Change-Id: I57e1ad4bed3487df12893ced77c49093f8755706
2013-11-06Merge "Move SVC per-frame loop from sample app into libvpx proper"Ivan Maltz
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-29Resolved Doxygen warnings.Adrian Grange
Added comments to make the codebase build cleanly in Doxygen. Change-Id: I01e000ceac57dbafa04342858c8f1be250ba20d1
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-30Removing vpx_codec_impl_{top, bottom}.h files.Dmitry Kovalev
It doesn't seem reasonable to have these files as our API part. Just inlining them in the source. Change-Id: Iff970bb25e72e49e7ac21990824dbf4ef8bfd2e2
2013-09-09API extensions and sample app for spacial scalable encoderIvan Maltz
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
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 g_frame_parallel_decoding to control interfaceJohn Koleszar
Restore ABI compatibility with the master branch. Change-Id: Ic57e7e1de09ab33bd37990e52a63ba7c8f1432a4
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
2012-11-15support building vp8 and vp9 into a single libJohn Koleszar
Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
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-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
2011-07-30Merge remote branch 'origin/master' into experimentalJohn Koleszar
Change-Id: I473166452c0ed5a4219b5e7d96a91a6641b11b9d
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-06-29Merge remote branch 'origin/master' into experimentalJohn Koleszar
Change-Id: I68e604e4a731f6703fdec7eff2c2c9b9e36879ea
2011-06-28use relative include pathJohann
Files are already in vpx/ Change-Id: I67dcbb5d5b6cb55e91b4e4927ab842a1e2c9e284
2011-04-13Merge remote branch 'origin/master' into experimentalJohn Koleszar
Change-Id: I231e4dd65adcf4f5c158e3749880a18b8c36cbe4
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-05Merge remote branch 'origin/master' into experimentalJohn Koleszar
Change-Id: I70ac5a4f8388a7bfa058178c0ae53f6bdb0bb6e5
2011-02-25Merge remote branch 'origin/master' into experimentalJohn Koleszar
Change-Id: I52f21ff6f9a1dca7099a8459657f6f288c5bfe40
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