summaryrefslogtreecommitdiff
path: root/vpxenc.c
AgeCommit message (Collapse)Author
2014-02-21Stop gating non420 features with a configure flag.Alex Converse
Change-Id: I8cc38fdef6a2a0968af8dfe15e7c2b3c46c531ea
2014-02-21Require an --experimental-bitstream flag at runtime for encoding profile 1.Alex Converse
Change-Id: I73865bbbf6ea74434f15b73783ae97b4d273be80
2014-02-13In realtime mode enforce one pass with 0 lagDeb Mukherjee
vpxenc level changes to enforce one pass encoding with 0 lag_in_frames when --rt mode is on. Change-Id: I3e71719e87c9f66566cb4d944cf5705904f9a5b8
2014-02-11Adding API to get vpx encoder/decoder interface.Dmitry Kovalev
Change-Id: I137e5e6585356792913e1e84da6c0a439c5153a5
2014-02-11vpxenc: Silence MSVC warnings.Tom Finegan
Change-Id: I7dd8532052f0b2d4077f579e78db3987b58e3d2a
2014-02-03Merge changes Ic362b088,I1c65c2aaJames Zern
* changes: vpxenc: find_mismatch/compare_img: normalize types vpxenc: cosmetics
2014-01-31remove duplicate const from vpx_codec_iface_t useJames Zern
the public typedef already includes a const, quiets 'same type qualifier used more than once' warnings Change-Id: Ib118b3b116fba59d4c6ead84d85b26e5d3ed363d
2014-01-31vpxenc: find_mismatch/compare_img: normalize typesJames Zern
use uint32_t where appropriate, silences a few warnings Change-Id: Ic362b08868b00f4828982757a7bcee081d50308d
2014-01-31vpxenc: cosmeticsJames Zern
find_mismatch() / compare_img(): const, whitespace Change-Id: I1c65c2aac378535001720aca31e7437ee5492739
2014-01-29Changing ivf_write_frame_header() function signature.Dmitry Kovalev
Replacing vpx_codec_cx_pkt argument with two separate pts and frame_size. Change-Id: I7b37e379ee71342520cf08f03acfb4b499b2cbe4
2014-01-29vpxenc: Relocate rate/quantizer histogram code.Dmitry Kovalev
Adding rate_hist.{h, c} files. Change-Id: Iaa28af6b25ec8982966a7296a073d6017b3a7f96
2014-01-22Fix the vpxenc mismatch problem due to seperatehkuang
the boarder size for encoder and decoder. Change-Id: I7291a9e06035d1533202d7a75ab40abfc1131342
2014-01-15Merge "vpxenc: remove some warnings w/--disable-(vp8|vp9)"James Zern
2014-01-14vpxenc: remove some warnings w/--disable-(vp8|vp9)James Zern
group vp8/vp9 only options under CONFIG_*_ENCODER Change-Id: I331bb154df019b398780be6451355de50657a33e
2014-01-13Removing pass number check from ivf_write_file_header().Dmitry Kovalev
Putting appropriate check to open_output_file() and close_output_file(). Before that the output file has been opened twice during two-pass encoding. Change-Id: I290cecf00513d6a31ca3f45bc20fef7efcb10190
2014-01-06Fix encoding Raw yv12 and i420 from a pipe.Alex Converse
rewind() does not work on pipes. https://code.google.com/p/webm/issues/detail?id=678 Change-Id: I057f1e25c3f5662012d6e33ff4c97c88f50df357
2013-11-25vpxenc: Move config check code into its own source files.Tom Finegan
- Add command line args that allow display of warnings without prompting for user input. - Extend warning code to make it somewhat scalable. Change-Id: I2bad8f9315f6eed120c2e1bbe0a2a5ede15fbf35
2013-11-25In frame Q adjustment experiment.Paul Wilkins
The idea here is to allow "in frame" adjustment of the final Q value used to encode each SB64, using segmentation. There is also adjustment of the rd mult in regions of overspend. Activated using aq_mode=2 Change-Id: I2f140cd898c9f877c32cd6d2e667f5e11ada4b1c
2013-11-21vpxenc: Add vpxenc.h and move/rename the global_config structTom Finegan
- Rename the struct to VpxEncoderConfig. - The idea behind this is to enable checking the global settings against stream specific settings in source files other than vpxenc.c. Change-Id: Ic736cbb714845b9466acb34671780d65b83ad1a8
2013-11-20vpxenc: Warn users about incorrect quantizer settings.Tom Finegan
Also, clean up stylistically questionable code near my changes. Change-Id: I92c96a274cb339b7b74174a608f94ae86aba8354
2013-11-20Merge "vpxenc: add --aq-mode flag to control adaptive quantization"Guillaume Martres
2013-11-15vpxenc: add --aq-mode flag to control adaptive quantizationGuillaume Martres
Change-Id: I57e1ad4bed3487df12893ced77c49093f8755706
2013-11-15vpx[dec|enc]: Extract IVF support from the apps.Tom Finegan
- Move IVF reading support into ivfdec.c and ivfdec.h - Move IVF writing support into ivfenc.c and ivfenc.h - Removed IVF writing code from the SVC example in favor of ivfenc. Change-Id: I70adf6240d0320fdd232d8546ed573f0f68dd793
2013-11-11vpxenc: clean up; move stats code out of vpxenc.cTom Finegan
Change-Id: I6b245ef5017c49373ba33e30f8fbf3d1b97409b5
2013-11-11Merge "vpx[dec|enc]: Clean up target OS based IO focused preproc abuse."Tom Finegan
2013-11-11vpx[dec|enc]: Clean up target OS based IO focused preproc abuse.Tom Finegan
Relocate it to tools_common.h so we can stop duping this code everywhere. BUG=https://code.google.com/p/webm/issues/detail?id=660 Change-Id: If8aa49b74d297273cd9fd7006b2767837055a359
2013-11-08vpxenc: Remove support for IVF input.Tom Finegan
Change-Id: Ida0e1b2df89e992b8140672b70517d8623cf9ede
2013-11-06Move WebM writing support out of vpxenc.c.Tom Finegan
This is mainly a clean up patchset. It moves the WebM writing support out of vpxenc and into its own source file. Changes to tools_common and vpxdec result from relocation of shared bits of code. Change-Id: Iee55d3285f56e0a548f791094fb14c5ac5346a26
2013-10-16Prevent first pass from outputing invalid infoYaowu Xu
First pass does not produce compressed data, therefore encode/decode match check is not initialized. Change-Id: I1971a6747337872a850987cc70ba267bd0f1d564
2013-10-07Moving libmkv library to third_party folder.Dmitry Kovalev
Change-Id: Id0bfaedf54ff3f59d4cf361c170a0b5a5711e5f2
2013-09-24vpxenc: Stop writing the WebM FrameRate element.Tom Finegan
The FrameRate element has been deprecated. Change-Id: I68ac496e7b33685a100a45d2772e0ff30eb6a811
2013-09-19Merge "fix vp8-only build"Yaowu Xu
2013-09-19fix integer overflow errorsYaowu Xu
Change-Id: I76f440a917832c02d7a727697b225bac66b99f56
2013-09-17fix vp8-only buildJames Zern
Change-Id: Id9ce44f3364dd57b30ea491d956a2a0d6186be05
2013-09-06Support a constant quality mode in VP9Deb Mukherjee
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
2013-08-21Make "good" quality 2-pass vpxenc encoding defaultDeb Mukherjee
Currently, the best quality mode in VP9 is not very well developed, and unnecessarily makes the encode too slow. Hence the command line default is changed to "good" quality. Also, the number of passes default is changed to 2 passes as well, since 1-pass encoding is not very efficient in VP9. Besides, a number of VP9 defaults are set to the currently recommended settings. With these changes, vpxenc run with --codec=vp9 --kf-max-dist=9999 --cpu-used=0 should work about the same as our borg results. Note when the --cpu-used=0 option is dropped there will be a slight difference in the output, because of a difference in the cpu-used value for the first pass. Specifically, the default when unspecified is to use cpu_used=1 for the first pass and cpu_used=0 for the second pass. But when specified, both passes will use the cpu-used value specified. Note that this also changes the default for VP8 as being "good" but other options stay unchanged. Change-Id: Ib23c1a05ae2f36ee076c0e34403efbda518c5066
2013-08-14vpxenc: open output file after setting pass #James Zern
write_ivf_file_header would incorrectly skip writing the file header in the 2nd pass, causing the initial frame header to be overwritten on close potential causing an overly large frame header to be read and a crash. most likely broken since: 9e50ed7 vpxenc: initial implementation of multistream support fixes issue #585 Change-Id: I7e863e295dd6344c33b3e9c07f9f0394ec496e7b
2013-06-25vpxenc: send usage to stderrJohn Koleszar
Thanks to hiiragikei AT gmail.com for the fix. Change-Id: Iab6c0822593fc5557d86efbb014ff6409ff05b35
2013-06-17Removed hardcoded global->limitScott LaVarnway
Looks like test code. Change-Id: I5deae2bf14ea6fdcbb9b9d993966c9abef95eb2e
2013-06-13Add vp9 test vectors unit testJohn Koleszar
These files can stand in until we get proper syntax vectors. They should provide some additional assurance against inadvertant bitstream changes. Change-Id: I12f6c9a5f054e30df40a7ff1f33145abf7e1d59d
2013-06-11Fix mismatch check outputJohn Koleszar
Fixes a condition where the address of the mismatching pixels was not being found/printed. Change-Id: Ifac5cd3471bc2437448128591eea7c7b87e2d8fe
2013-05-09vpxenc: fix mismatch check for non-4:2:0John Koleszar
Change-Id: Iffe7c2e6c6cb14b637420ffc368a5003f5db42fa
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-08Clamp inferred motion vectors onlyJingning Han
Clamp only the motion vectors inferred from neighboring reference macroblocks. The motion vectors obtained through motion search in NEWMV mode are constrained during the search process, which allows a relatively larger referencing region than the inferred mvs. Hence further clamping the best mv provided by the motion search may affect the efficacy of NEWMV mode. Synchronized the decoding process. The decoded mvs in NEWMV modes should be guaranteed to fit in the effective range. Put a mv range clamping function there for security purpose. This improves the coding performance of high motion sequences, e.g., derf set: foreman 0.233% husky 0.175% icd 0.135% mother_daughter 0.337% pamphlet 0.561% stdhd set: blue_sky 0.408% city 0.455% also saw sunflower goes down by -0.469%. Change-Id: I3fcbba669e56dab779857a8126a91b926e899cb5
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-26Implicit weighted prediction experimentDeb Mukherjee
Adds an experiment to use a weighted prediction of two INTER predictors, where the weight is one of (1/4, 3/4), (3/8, 5/8), (1/2, 1/2), (5/8, 3/8) or (3/4, 1/4), and is chosen implicitly based on consistency of the predictors to the already reconstructed pixels to the top and left of the current macroblock or superblock. Currently the weighting is not applied to SPLITMV modes, which default to the usual (1/2, 1/2) weighting. However the code is in place controlled by a macro. The same weighting is used for Y and UV components, where the weight is derived from analyzing the Y component only. Results (over compound inter-intra experiment) derf: +0.18% yt: +0.34% hd: +0.49% stdhd: +0.23% The experiment suggests bigger benefit for explicitly signaled weights. Change-Id: I5438539ff4485c5752874cd1eb078ff14bf5235a
2013-03-22Fixing fourcc for VP8 and VP9.Dmitry Kovalev
Changing 0x00 ('') fourcc byte to 0x30 ('0'). For VP8 from 0x00385056 to 0x30385056, for VP9 from 0x00395056 to 0x30395056. Change-Id: I26b1b603c20dd41f7aeabf8cd7893dfd5b1c8b59
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-11vpxenc: improve progress indicators with --skipJohn Koleszar
Account for skipped input frames when calculating frame rates, ETA. Fixes https://code.google.com/p/webm/issues/detail?id=556 Change-Id: I9c8b51e02e9ff0ab2cf6f16fc9382fc7f6c77b80