summaryrefslogtreecommitdiff
path: root/vp8/encoder/onyx_int.h
AgeCommit message (Collapse)Author
2011-03-14Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/encoder/onyx_if.c Change-Id: Ieef9a58a2effdc68cf52bc5f14d90c31a1dbc13a
2011-03-11Merge "Encoder loopfilter running in its own thread"Yunqing Wang
2011-03-11Encoder loopfilter running in its own threadAttila Nagy
In multithreaded mode the loopfilter is running in its own thread (filter level calculation and frame filtering). Filtering is mostly done in parallel with the bitstream packing. Before starting the packing the loopfilter level has to be calculated. Also any needed reference frame copying is done in the filter thread. Currently the encoder will create n+1 threads, where n > 1 is the number of threads specified by application and 1 is the extra filter thread. With n = 1 the encoder runs in single thread mode. There will never be more than n threads running concurrently. Change-Id: I4fb29b559a40275d6d3babb8727245c40fba931b
2011-03-11Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-03-10Removed firstpass motion mapAdrian Grange
The firstpass motion map consists of an 8-bit flag for each MB indicating how strongly the firstpass code believes it should be filtered during the second pass ARNR filtering. For long or large format material the motion map can become extremely large and hamper the operation of the encoding process. This change removes the motion map altogether, leaving the second pass to rely on the magnitude of the motion compensated error to determine the filter weight to use for the MB during ARNR filtering. Tests on the derf set indicate that the effect of this change is neutral, with some small wins and losses. The motion map has therefore been removed based on a cost/benefit evaluation. Change-Id: I53e07d236f5ce09a6f0c54e7c4ffbb490fb870f6
2011-03-09Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-03-07Improved key frame detection.Paul Wilkins
In some cases where clips have been encoded with borders (eg. some wide-screen content where there is a border top and bottom and slide shows containing portrait format photographs (border left and right)) key frames were not being correctly detected. The new code looks to measure cases where a portion of the image can be coded equally easily using intra or inter modes and where the resulting error score is also very low. These "neutral" areas are then discounted in the key frame detection code. Change-Id: I00c3e8230772b8213cdc08020e1990cf83b780d8
2011-03-03Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/vp8_cx_iface.c Change-Id: Iecfd4532ab1c722d10ecce8a5ec473e96093cf3b
2011-02-22Remove temporal alt ref from realtime only buildAttila Nagy
It is not used in realtime mode. Reduces memory footprint. Change-Id: I7f163225762368df5457cfd413050161d3704a3f
2011-02-18Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-02-17Merge "Fix relative include paths"John Koleszar
2011-02-12Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-02-11Add improved_mv_pred flag in real-time modeYunqing Wang
As mentioned in check-in "Improve motion search in real-time mode", MV prediction calculation causes speed loss for speed 7 and above. This change added a flag to turn off this calculation for speed>6 in real-time mode. Change-Id: I9f4ae5a8bf449222d1784b54e7d315fc8347b2d1
2011-02-10Fix relative include pathsJohn Koleszar
Allow compiling without adding vp8/{common,encoder,decoder} to the include paths. Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
2011-02-10Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/decoder/onyxd_int.h Change-Id: Id9aa577f03e37b4f406ba3b593c3c4330812a49e
2011-02-09Put more code under #if CONFIG_MULTITHREAD.Gaute Strokkenes
Change-Id: Icf4b692099d7d249fe3553852b1022b027b28e4b
2011-02-07Merge remote branch 'internal/upstream-experimental' into HEADJohn Koleszar
Conflicts: vp8/encoder/encodeframe.c vp8/encoder/ethreading.c vp8/encoder/onyx_int.h Change-Id: I1c562d2fe6e42c0d1d86f68c77c0e899066e02bd
2011-02-04Merge "Delay auto key frame insertion in realtime configuration"John Koleszar
2011-02-03Merge "Improved encoder threading"Yunqing Wang
2011-02-02Delay auto key frame insertion in realtime configurationAttila Nagy
Whe auto keyframe insertion is enabled and conditions are right (scene change) the encoder can decide to insert a key frame and does a re-encoding. This can introduce extra latency. In RT mode we do not do the re-encoding of the current frame but force the next frame to key frame. Change-Id: I15c175fa845ac4c1a1f18bea3676e154669522a7
2011-02-02Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-02-01Improved encoder threadingAttila Nagy
Reduce the number of sync points by letting each thread continue imediatly with a new MB row. Better multicore scaling, improves performance by 5-20% on ARM multicore. Change-Id: Ic97e4d1c4886a842c85dd3539a93cb217188ed1b
2011-01-31Removed last_auto_filter_prediction_errorScott LaVarnway
last_auto_filter_prediction_error is not really used. Change-Id: Ic6e56c4076bbd250ef783ee1be46964c85f62864
2011-01-28Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/encoder/rdopt.c Change-Id: I68d04397a12f565b9f1bd35d4e50f1cc9afb76ff
2011-01-27Merge "Removed unused members from VP8_COMP"Scott LaVarnway
2011-01-26Remove copies of same functionsYunqing Wang
Reduce the code size. Change-Id: I2e1998557a3c8776e262c442fd758c25e17aff7a
2011-01-26Removed unused members from VP8_COMPScott LaVarnway
Change-Id: I8f3f2642b02975fbdb14982984a29821f80d30d3
2011-01-19Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-01-18Further CQ, Key frame and ARF changesPaul Wilkins
This code fixes a bug in the calculation of the minimum Q for alt ref frames. It also allows an extended gf/arf interval for sections of clips that completely static (or nearly so). Change-Id: I1a21aaa16d4f0578e5f99b13bebd78d59403c73b
2011-01-18Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-01-17Fix CQ range and experimental KF sizing changes.Paul Wilkins
The CQ level was not using the q_trans[] array to convert to a 0-127 range as per min and maxq Experimental change to try and match the reconstruction error for forced key frames approximately to that of the previous frame by means of the recode loop. Though this may cause extra recodes and the recode behavior has not been optimized, it can only happen on forced key frames. Change-Id: I1f7e42d526f1b1cb556dd461eff1a692bd1b5b2f
2011-01-13Merge remote branch 'internal/upstream-experimental' into HEADJohn Koleszar
2011-01-12Limit key frame quantizer for forced key frames.Paul Wilkins
Where a key frame occurs because of a minimum interval selected by the user, then these forced key frames ideally need to be more closely matched in quality to the surrounding frame. Change-Id: Ia55b1f047e77dc7fbd78379c45869554f25b3df7
2011-01-11Add no_skip_block4x4_search flag in SPLITMV modeYunqing Wang
Add a flag to always enable block4x4 search for speed=0 (good quality) to guarantee no quality loss for speed0. Change-Id: Ie04bbc25f7e6a33a7bfa30e05775d33148731c81
2011-01-10Merge remote branch 'internal/upstream-experimental' into HEADJohn Koleszar
2011-01-07Merge "CQ Mode"Paul Wilkins
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
2011-01-07Merge "Limit Q variability in two pass."Paul Wilkins
2011-01-07Limit Q variability in two pass.Paul Wilkins
In two pass encoding each frame is given an active Q range to work with. This change limits how much this Q range can be altered over time from the initial estimate made for the clip as a whole. There is some danger this could lead to overshoot or undershoot in some corner cases but it helps considerably in regard to clips where either there is a glut or famine of bits in some sections, particularly near the end of a clip. Change-Id: I34fcd1af31d2ee3d5444f93e334645254043026e
2011-01-07Merge "Removed cpi->target_bits_per_mb"Scott LaVarnway
2011-01-07Removed cpi->target_bits_per_mbScott LaVarnway
cpi->target_bits_per_mb is currently not being used, so delete it. Also removed other unused code in rdopt.c. Change-Id: I98449f9030bcd2f15451d9b7a3b9b93dd1409923
2011-01-05Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-01-04Adjustment to boost calculation in two pass.Paul Wilkins
Calculate a minimum intra value to be used in determining the IIratio scores used in two pass, second pass. This is to make sure sections that are low complexity" in the intra domain are still boosted appropriately for KF/GF/ARF. For now I have commented out the Q based adjustment of KF boost. Change-Id: I15deb09c5bd9b53180a2ddd3e5f575b2aba244b3
2010-12-29Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2010-12-28Use the fast quantizer for inter mode selectionScott LaVarnway
Use the fast quantizer for inter mode selection and the regular quantizer for the rest of the encode for good quality, speed 1. Both performance and quality were improved. The quality gains will make up for the quality loss mentioned in I9dc089007ca08129fb6c11fe7692777ebb8647b0. Change-Id: Ia90bc9cf326a7c65d60d31fa32f6465ab6984d21
2010-12-24Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2010-12-22abstract apply_temporal_filterJohann
allow for optimized versions of apply_temporal_filter (now vp8_apply_temporal_filter_c) the function was previously declared as static and appears to have been inlined. with this change, that's no longer possible. performance takes a small hit. the declaration for vp8_cx_temp_filter_c was moved to onyx_if.c because of a circular dependency. for rtcd, temporal_filter.h holds the definition for the rtcd table, so it needs to be included by onyx_int.h. however, onyx_int.h holds the definition for VP8_COMP which is needed for the function prototype. blah. Change-Id: I499c055fdc652ac4659c21c5a55fe10ceb7e95e3
2010-12-14Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2010-12-13remove unused temporal preproc codeJohn Koleszar
This code is unused, as the current preproc implementation uses the same spatial filter that postproc uses. Change-Id: Ia06d5664917d67283f279e2480016bebed602ea7
2010-12-07Merge remote branch 'internal/upstream' into HEADJohn Koleszar