summaryrefslogtreecommitdiff
path: root/vp8/encoder/onyx_if.c
AgeCommit message (Collapse)Author
2011-04-14Merge "Refactor lookahead ring buffer"John Koleszar
2011-04-13Use consistent delimiters.Fritz Koenig
opsnr.stt file was using \t for delimiters on everything except between VPXSSIM and Time. Change-Id: I6284c4e40c05ff642bf4b0170dca062c279a42df
2011-04-13Refactor lookahead ring bufferJohn Koleszar
This patch cleans up the source buffer storage and copy mechanism to allow access through a standard push/pop/peek interface. This approach also avoids an extra copy in the case where the source is not a multiple of 16, fixing issue #102. Change-Id: I05808c39f5743625cb4c7af54cc841b9b10fdbd9
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-04-04Merge "Use full-pixel MV in mvsadcost calculation"Yunqing Wang
2011-04-01Use full-pixel MV in mvsadcost calculationYunqing Wang
MV sad cost error is only used in full-pixel motion search, which only need full-pixel resolution instead of quarter-pixel resolution. This change reduced mvsadcost table size, and removed unneccessary pamameter passing since this table is constant once it is generated. Change-Id: I9f931e55f6abc3c99011321f1dfb2f3562e6f6b0
2011-03-30Fix: lpf semaphore was signaled in single threaded runAttila Nagy
After picking filter level, post the loopfilter semaphore just when multiple threads are in use. Change-Id: If7bfb64601d906adef703f454dafc25e978b93c6
2011-03-17Increase static linkage, remove unused functionsJohn Koleszar
A large number of functions were defined with external linkage, even though they were only used from within one file. This patch changes their linkage to static and removes the vp8_ prefix from their names, which should make it more obvious to the reader that the function is contained within the current translation unit. Functions that were not referenced were removed. These symbols were identified by: $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \ | sort | grep '^ *1 ' Change-Id: I59609f58ab65312012c047036ae1e0634f795779
2011-03-11Clean up of vp8_init_config()Paul Wilkins
Clean up vp8_init_config() a bit and remove null pointer case, as this code can't be called any more and is not an adequate trap anyway, as a null pointer would cause exceptions before hitting the test. Change-Id: I937c00167cc039b3aa3f645f29c319d58ae8d3ee
2011-03-11Merge "1 Pass CQ and VBR bug fixes"John Koleszar
2011-03-111 Pass CQ and VBR bug fixesPaul Wilkins
Issue 291 highlighted the fact that CQ mode was not working as expected in 1 pass mode, This commit fixes that specific problem but in so doing I also uncovered an overflow issue in the VBR code for 1 pass and some data values not being correctly initialized. For some clips (particularly short clips), the resulting improvement is dramatic. Change-Id: Ieefd6c6e4776eb8f1b0550dbfdfb72f86b33c960
2011-03-11Merge "vp8cx - psnr converted to call assemblerized sse"John Koleszar
2011-03-11Merge "vp8cx- alternate ssim function with optimizations"John Koleszar
2011-03-11vp8cx - psnr converted to call assemblerized sseJim Bankoski
Change-Id: Ie388d4618c44b131f96b9fe526618b457f020dfa
2011-03-11vp8cx- alternate ssim function with optimizationsJim Bankoski
Change-Id: I91921b0a90dbaddc7010380b038955be347964b3
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-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-03Configuration updates:Making a clear distinction between Init and ChangeMikhal Shemer
Change-Id: I7b2fb326e1aabc08b032177a7b914a5b8bb7376f
2011-03-03Fixing divide by zeroMikhal Shemer
Change-Id: I9d8a98a2f7ed1e3116d0bae35164618c41998bac
2011-02-28Merge "Avoid double copying of key frames into alt and golden buffer"Scott LaVarnway
2011-02-25Merge "Remove a second check for invalid ptr in vp8_get_compressed_data"Johann
2011-02-25Avoid double copying of key frames into alt and golden bufferAttila Nagy
Change-Id: I726976a297a593a35ed6cba3c660e372562f7b27
2011-02-25Remove a second check for invalid ptr in vp8_get_compressed_dataAttila Nagy
Check is done first when function si entered. Change-Id: Ief0d0cbd4860aaf492b78728f8d22f24029b1174
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 "clean up unused files"John Koleszar
2011-02-18clean up unused filesJohn Koleszar
Removed a number of files that were unused or little-used. Change-Id: If9ae5e5b11390077581a9a879e8a0defe709f5da
2011-02-18cosmetic: remove unnecessary scopeJohn Koleszar
Clean up some unnecessary scoping around pick_filter_level. Change-Id: Ic57fa33e3fcae37fe6beae977e5743783399d5af
2011-02-18Merge "Dont pick encoder filter level when loopfilter is disabled."John Koleszar
2011-02-18Reinitialize quantizer only when any delta is changingAttila Nagy
No need to reinitialize for base Q changes. Change-Id: Ie76ec21dd3c5582d5183dbed75ed73a1eed3e291
2011-02-18Dont pick encoder filter level when loopfilter is disabled.Attila Nagy
Change-Id: I58154faf4f3ece24f9927a5c3ab7e830e0887fb6
2011-02-17Merge "Fix relative include paths"John Koleszar
2011-02-16Merge "Allocate source buffers to be multiples of 16"Yunqing Wang
2011-02-16Allocate source buffers to be multiples of 16Yunqing Wang
Currently, when the video frame width is not multiples of 16, the source buffer has a stride of non-multiples of 16, which forces an unaligned load in SAD function and hurts the performance. To avoid that, this change allocates source buffers to be multiples of 16. Change-Id: Ib7506e3eb2cea06657d56be5a899f38dfe3eeb39
2011-02-15Remove redundant ptr checks in calls to vpx_freeJames Zern
vpx_free if used contains this check. If replaced, well behaved free will behave similarly. Change-Id: I25483aaa8b39255b9a8cf388d6e5eaa20a908ae1
2011-02-14mem leak fix for cpi->tplistJames Berry
checks added to make sure that cpi->tplist is freed correctly in vp8_dealloc_compressor_data and vp8_alloc_compressor_data. Change-Id: I66149dbbd25c958800ad94f4379d723191d9680d
2011-02-11Merge "Add improved_mv_pred flag in real-time mode"Yunqing Wang
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-10Merge "Redefining good quality speed settings"Yaowu Xu
2011-02-10Merge "Improve motion search in real-time mode"Yunqing Wang
2011-02-10Fix relative include pathsJohn Koleszar
Allow compiling without adding vp8/{common,encoder,decoder} to the include paths. Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
2011-02-10Improve motion search in real-time modeYunqing Wang
Applied better MV prediction in real-time mode, which improves the encoding quality. Used quarter-pixel search instead of iterative sub-pixel search for speed >=5 to improve encoding performance. Tests on the test set showed: 1. For speed=-5, quality improvement: 1.7% on AvgPSNR and 2.1% on SSIM, performance improvement: 3.6% (This counts in the performance lose caused by MV prediction calculation in "Improve MV prediction in vp8_pick_inter_mode() for speed>3"). 2. For speed=-8, quality improvement: 2.1% on AvgPSNR and 2.5% on SSIM. but, 6.9% performance decrease because of MV prediction calculation. This should be improved later. Change-Id: I349a96c452bd691081d8c8e3e54419e7f477bebd
2011-02-09Redefining good quality speed settingsScott LaVarnway
Created a new speed 1 which is in the middle of the old speed 0 and speed 1. (for both quality and performance) Change-Id: I4802133cdb43f359ca787646c090899679dd5d84
2011-02-09Put more code under #if CONFIG_MULTITHREAD.Gaute Strokkenes
Change-Id: Icf4b692099d7d249fe3553852b1022b027b28e4b
2011-02-04correct quantizer initializationJohn Koleszar
The encoder was not correctly catching transitions in the quantizer deltas. If a delta_q was set, then the quantizer would be reinitialized on every frame, but if they transitioned to 0, the quantizer would not be reinitialized, leading to a encode-decode mismatch. This bug was triggered by commit 999e155, which sets a Y2 delta Q for very low base Q levels. Change-Id: Ia6733464a55ee4ff2edbb82c0873980d345446f5
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-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-27Merge "Removed unused members from VP8_COMP"Scott LaVarnway