summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.c
AgeCommit message (Collapse)Author
2015-07-06Merge "remove vp9_get_interp_kernel()"James Zern
2015-07-06remove vp9_get_interp_kernel()James Zern
expose filter_kernels[] and do the table lookup directly Change-Id: I0b10bff0327c3e01a723736141a9ffd377cd3d20
2015-07-02Merge "Use vpx prefix for codec independent threading functions"Jingning Han
2015-07-02Use vpx prefix for codec independent threading functionsJingning Han
Replace vp9_ prefix with vpx_ for common multi-threading functions. Change-Id: I941a5ead9bfe8213fdad345511d2061b07797b55
2015-06-29VP9: Move ref_mvs[][] and mode_context[] from MB_MODE_INFOScott LaVarnway
to MB_MODE_INFO_EXT. This saves 36 bytes per 8x8 area for both the decoder and encoder. (encoder has two MODE_INFO buffers) Change-Id: If006abb2224acaf326df3c2be09e77e967662107
2015-06-19Merge changes I2552d810,I51952c0a,Ib82e4247,I9c8d16cbJames Zern
* changes: vp9_mcomp: make search_step_table static vp9_encodeframe: delete auto_partition_range() vp9_mcomp: don't mark setup_center_error() inline vp9_encoder: hide adjust_image_stat()
2015-06-18Add dynamic resize logic for 1 pass CBR.Marco
Decision to scale down/up is based on buffer state and average QP over previous time window. Limit the total amount of down-scaling to be at most one scale down for now. Reset certain quantities after resize (buffer level, cyclic refresh, rate correction factor). Feature is enable via the setting rc_resize_allowed = 1. Change-Id: I9b1a53024e1e1e953fb8a1e1f75d21d160280dc7
2015-06-16Remove duplicate calls for set_frame_size in 1 pass mode.Marco
set_frame_size() is being called twice, once before entering encode_encode_frame_to_data_rate(), and once again in that function. No need to call it twice for one-pass mode. Change-Id: I5fabaf0a90482d4f42cd89ef7ae1402c31aec600
2015-06-12vp9_encoder: hide adjust_image_stat()James Zern
this function is only needed with CONFIG_INTERNAL_STATS Change-Id: I9c8d16cb9069dd8370f8b30329933c0d97f6d0aa
2015-06-09Enable more split modes for animated content.Paul Wilkins
For content that is identified as likely to contain some animation or graphics content, increase the availability of split modes for good quality speeds 1-3. On a problem test animation clip this improves metrics results by about 0.25 db and makes a noticeable difference visually. It also causes a small drop in file size (~0.5%) but a rise in encode time of about 5-6% at speed 2. For more normal content it should have no effect. Change-Id: Ic4cd9a8de065af9f9402f4477a17442aebf0e439
2015-06-03Duplicate reference variance codeJohann
Some places are using the unoptimized variance function. This was never intended and does not fit into the optimization framework. Change-Id: Id96238407aad03b0ffd4a46cd183555a026daedc
2015-06-02Vidyo patch: Rate control for SVC, 1 pass CBR mode.Marco
-Make Rate control work for SVC 1 pass CBR mode. -Added temporal layering mode. -Fixed bug in non-rd variance partition. -Modified/updated the sample encoders (vp9_spatial_svc_encoder, vpx_temporal_svc_encoder). -Added datarate unittest(s) for 1 pass CBR SVC. Change-Id: Ie94b1b68a56ea1267b5087c625e5df04def2ee48
2015-06-01Merge "Fast feedback of bits on undershoot."paulwilkins
2015-05-28Merge "[svc] Disable tiles for spatial svc case"Minghai Shang
2015-05-28Merge "Add error handling when running out of free frame buffers."hkuang
2015-05-27Add error handling when running out of free frame buffers.hkuang
Change-Id: If28b59b9521204a6e3aecedcf75932d76a752567
2015-05-27Merge "Refactor set_vbp_thresholds."Marco
2015-05-27Merge "[svc] Make size of empty frame to be 16x16 all the time"Minghai Shang
2015-05-27Refactor set_vbp_thresholds.Marco
Break out the setting of the block variance split thresholds, since they are locally modified, e.g., based on local/segment qp. No change in performance. Change-Id: I0a3238e6dab05140657539fc4bd27ac5ff7a554e
2015-05-26[svc] Make size of empty frame to be 16x16 all the timeMinghai Shang
Change-Id: Ibab09aa0e8c69cf5efea2f0ec035e5da9cc894b0
2015-05-26Merge "Move variance functions to vpx_dsp"Johann
2015-05-26Move variance functions to vpx_dspJohann
subpel functions will be moved in another patch. Change-Id: Idb2e049bad0b9b32ac42cc7731cd6903de2826ce
2015-05-26Merge "[svc] Turn on frame_parallel_decoding_mode"Minghai Shang
2015-05-20[svc] Disable tiles for spatial svc caseMinghai Shang
Change-Id: I8655a6760ab61947c09f337ddd9f4c1baf803a56
2015-05-20[svc] Turn on frame_parallel_decoding_modeMinghai Shang
Change-Id: I33b0384ee87f83950e03be6c999bc5f193055fd3
2015-05-20Fast feedback of bits on undershoot.paulwilkins
This patch provides a partial rapid feedback of bits resulting from extreme undershoot. Some improvement on some problem animated material but in its current form only a small impact on the metrics results of our standard test sets. Change-Id: Ie03036ea8123bc2553437cb8c8c9e7a9fc5dac5d
2015-05-20Fix issues with mixed ARF and GF groups.paulwilkins
This patch addresses two issues that can occur when the encoder chooses to use a mixture of ARF and GF groups. The first issue relates to a failure to reset the "ARF active" flag correctly when transitioning from coding ARF groups to coding GF groups. This caused some golden frames to be encoded with an incorrect bit rate target as if they were ARF overlay frames. The second issue relates to the encoding of a single short GF group just before a key frame. Where the last group before a key frame is an ARF group we expect the final frame before the key frame to be an low data rate overlay frame. However, when the last group is a GF group, the final frame before the key frame should be a normal frame with a normal bit allocation. This issue had the potential to cause a single poorly coded frame just before a key frame. If that key frame were a forced key frame rather than a real scene cut, this might cause pulsing. Change-Id: Idf1eb5eaf63a231495a74de7899236e1ead9fb00
2015-05-15vp9/encoder: make some functions staticJames Zern
silences missing prototype warnings Change-Id: I3338fcaa67b5dcdf6bf237e8b374db3befd18753
2015-05-15Merge "Revert "Skip the last frame update for some frame repeats.""paulwilkins
2015-05-14Revert "Skip the last frame update for some frame repeats."paulwilkins
Testing on another rate control patch reveals that in some situations, where the encoder is flipping in and out of arf mode, we get an encoder decoder mismatch. Whilst it is still not clear why, skipping the last buffer update seems to trigger the problem. Until I can establish why, or if there is another underlying cause, I am reverting this change. This reverts commit e5112b3ae3352c4c55fb31235305f3f80f4b8f7e. Change-Id: I315c5200414de89458015823344b7367e9dd75ba
2015-05-13Merge "Relocate memory operations for common code"Johann
2015-05-13Relocate memory operations for common codeJohann
With the sad functions, and hopefully the variance functions soon, moving to the vpx_dsp location, place the defines used in the reference C code in a common location. Change-Id: I4c8ce7778eb38a0a3ee674d2f1c488eda01cfeca
2015-05-12Merge "Protect new metric computation with use_highbitdepth flag"Yaowu Xu
2015-05-12Protect new metric computation with use_highbitdepth flagYaowu Xu
The computation of new metrics is not supported yet in highbitdepth mode. This commit adds protection to make sure the computation is done only when highbitdepth is not on. This protection shall be revised when support of highbitdpeth computation is added. This resolves the encoder crash when configured with both --enable-internal-stats --enable-vp9-highbitdepth Change-Id: Id9f4bcc4fa26d9ca0e9eabade83f3f88a5b212e6
2015-05-11Recompute tile params on frame resizeAdrian Grange
When the frame size changes we must recompute details of the tile dimensions. Change-Id: Ie519bd6da47b5cd43933c0bcfc0f2429bcb01986
2015-05-08Skip the last frame update for some frame repeats.paulwilkins
Where a frame appears to be a repeat of an earlier frame or frame buffer, but the first pass code does not anticipate this (usually because it is matching the GF or ARF buffer not the last frame buffer), do not update the last frame buffer. This helps ensure that the content of the last frame buffer is kept "different" where possible, and not updated to match the GF or ARF. This is particularly helpful in some animated sequences where there are groups of repeating frames. Here it has quite a big impact. However, in most of our standard test clips it has little or no impact. Change-Id: I77332ee1a69f9ffc0c6080bfeb811c43fd8828e6
2015-05-06Move shared SAD code to vpx_dspJohann
Create a new component, vpx_dsp, for code that can be shared between codecs. Move the SAD code into the component. This reduces the size of vpxenc/dec by 36k on x86_64 builds. Change-Id: I73f837ddaecac6b350bf757af0cfe19c4ab9327a
2015-04-28vpx_mem: remove vpx_memsetJames Zern
vestigial. replace instances with memset() which they already were being defined to. Change-Id: Ie030cfaaa3e890dd92cf1a995fcb1927ba175201
2015-04-28vpx_mem: remove vpx_memcpyJames Zern
vestigial. replace instances with memcpy() which they already were being defined to. Change-Id: Icfd1b0bc5d95b70efab91b9ae777ace1e81d2d7c
2015-04-22Adds worst frame metrics for a bunch of metrics.Jim Bankoski
Change-Id: Ieaccc36ed1bee024bb644a9cfaafdaaa65d31772
2015-04-21Merge "Adds a new temporal consistency metric to libvpx."Jim Bankoski
2015-04-21Revert "Remove mi_grid_* structures."Scott LaVarnway
(see I3a05cf1610679fed26e0b2eadd315a9ae91afdd6) For the test clip used, the decoder performance improved by ~2%. This is also an intermediate step towards adding back the mode_info streams. Change-Id: Idddc4a3f46e4180fbebddc156c4bbf177d5c2e0d
2015-04-21Adds a new temporal consistency metric to libvpx.Jim Bankoski
Change-Id: Id61699ebf57ae4f8af96a468740c852b2f45f8e1
2015-04-17Merge "Adds a blockiness metric to internal stats."Jim Bankoski
2015-04-17Merge "adds psnrhvs to internal stats."Jim Bankoski
2015-04-17Merge "Adds a fastssim metric to VPX internal stats."Jim Bankoski
2015-04-17Adds a blockiness metric to internal stats.Jim Bankoski
Change-Id: Iedceeb020492050063acf3fd2326f96c29db9ae5
2015-04-17adds psnrhvs to internal stats.Jim Bankoski
PSNR HVS is a human visual system weighted version of SNR that's gained some popularity from academia and apparently better matches MOS testing. This code is borrowed from the Daala Project but uses our FDCT code. Change-Id: Idd10fbc93129f7f4734946f6009f87d0f44cd2d7
2015-04-17Adds a fastssim metric to VPX internal stats.Jim Bankoski
This code appeared in the Daala project first and was originally committed by Nathan Egge. Change-Id: Iadce416a091929c51b46637ebdec984cddcaf18c
2015-04-16Merge "[svc] Fix syntax error when encoding multiple tiles."Minghai Shang