summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2011-03-23Merge "ARMv6 optimized fdct4x4"Johann
2011-03-21Merge "Fix multithreaded encoding for 1 MB wide frame"Yunqing Wang
2011-03-21Remove unused vp8_get4x4sse_cs_mmx declarationJohn Koleszar
This declaration did not match the prototype_sad() prototype, but was unused in this translation unit, so it is removed instead. Fixes issue 290. Change-Id: I168854f88a85f73ca9aaf61d1e5dc0f43fc3fdb3
2011-03-21Merge "Increase static linkage, remove unused functions"John Koleszar
2011-03-21ARMv6 optimized fdct4x4Tero Rintaluoma
Optimized fdct4x4 (8x4) for ARMv6 instruction set. - No interlocks in Cortex-A8 pipeline - One interlock cycle in ARM11 pipeline - About 2.16 times faster than current C-code compiled with -O3 Change-Id: I60484ecd144365da45bb68a960d30196b59952b8
2011-03-18Fix multithreaded encoding for 1 MB wide frameAttila Nagy
Thread synchronization was not correct when frame width was 1 MB. Number of allocated encoding threads is limited by the sync_range. There is no point having more because each thread lags sync_range MBs behind the thread processing the row above. http://code.google.com/p/webm/issues/detail?id=302 Change-Id: Icaf67a883beecc5ebf2f11e9be47b6997fdf6f26
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-17Set bounds from the array when iterating mmaps.Ralph Giles
The mmap allocation code in vp8_dx_iface.c was inconsistent. The static array vp8_mem_req_segs defines two descriptors, but only the first is real. The second is a sentinel and isn't actually allocated, so vpx_codec_alg_priv is declared with mmaps[NELEMENTS(vp8_mem_req_segs)-1]. Some functions use this reduced upper bound when iterating though the mmap array, but these two functions did not. Instead, this commit calls NELEMENTS(...->mmaps) to directly query the bounds of the dereferenced array. This fixes an array-bounds warning from gcc 4.6 on vp8_xma_set_mmap. Change-Id: I918e2721b401d134c1a9764c978912bdb3188be1
2011-03-17Remove commented-out VP6 code from vp8_finalize_mmapsRalph Giles
Change-Id: I48642c380353043bed96026f56de5908fcee270a
2011-03-17Merge "Fix "used uninitialized" warning in vp8_pack_bitstream()"John Koleszar
2011-03-16apple: include proper mach primativesJohn Koleszar
Fixes implicit declaration warning for 'mach_task_self'. This change is an update to Change I9991dedd1ccfddc092eca86705ecbc3b764b799d, which fixed this issue for the decoder but not the encoder. Change-Id: I9df033e81f9520c4f975b7a7cf6c643d12e87c96
2011-03-15Add vp8_variance8x8_armv6 and vp8_sub_pixel_variance8x8_armv6 functionsAttila Nagy
Change-Id: I08edaffc62514907fa5e90e1689269e467c857f5
2011-03-14Merge "Fix an unused variable warning."John Koleszar
2011-03-14Merge "Add vp8_mse16x16_armv6 function"Johann
2011-03-14Add vp8_mse16x16_armv6 functionAttila Nagy
Change-Id: I77e9f2f521a71089228f96e2db72524189364ffb
2011-03-11Merge "Move build_intra_predictors_mby to RTCD framework"Johann
2011-03-11Move build_intra_predictors_mby to RTCD frameworkJohn Koleszar
The vp8_build_intra_predictors_mby and vp8_build_intra_predictors_mby_s functions had global function pointers rather than using the RTCD framework. This can show up as a potential data race with tools such as helgrind. See https://bugzilla.mozilla.org/show_bug.cgi?id=640935 for an example. Change-Id: I29c407f828ac2bddfc039f852f138de5de888534
2011-03-11Merge "ARMv6 optimized quantization"Johann
2011-03-11Merge "Only enable ssim_opt.asm on X86_64"John Koleszar
2011-03-11Only enable ssim_opt.asm on X86_64John Koleszar
Fix compiling on 32 bit x86. Change-Id: I6210573e1d9287ac49acbe3d7e5181e309316107
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 "Fix incorrect macroblock counts in twopass rate control"John Koleszar
2011-03-11Merge "Align SAD output array to be 16-byte aligned"Yunqing Wang
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-11Align SAD output array to be 16-byte alignedYunqing Wang
Use aligned store. Change-Id: Icab4c0c53da811d0c52bb7e8134927f249ba2499
2011-03-11Merge "Encoder loopfilter running in its own thread"Yunqing Wang
2011-03-11Fix "used uninitialized" warning in vp8_pack_bitstream()Attila Nagy
Change-Id: Iadcbdba717439f47a2c24e65fd69a3a1464174b5
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-11ARMv6 optimized quantizationTero Rintaluoma
Adds new ARMv6 optimized function vp8_fast_quantize_b_armv6 to the encoder. Change-Id: I40277ec8f82e8a6cbc453cf295a0cc9b2504b21e
2011-03-10Added missing format specifier in print statementAdrian Grange
Printout of firstpass stats for frame had one fewer format specifiers than arguments. Change-Id: I5a42c85aa79c471e1a70afd75e24a91546b7a1cd
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-10Fix incorrect macroblock counts in twopass rate controlJames Berry
The previous calculation of macroblock count (w*h)/256 is not correct when the width/height are not multiples of 16. Use the precalculated macroblock count from cpi->common instead. This manifested itself as a divide by zero when the number of pixels was less than 256. num_mbs updated in estimate_max_q, estimate_q, estimate_kf_group_q, and estimate_cq Change-Id: I92ff98587864c801b1ee5485cfead964673a9973
2011-03-09Merge "Add vp8_sub_pixel_variance16x8_ssse3 function"Yunqing Wang
2011-03-09Merge branch 'bali'John Koleszar
Change-Id: Icf18b4981afb12ef255fca431d4ba45860dd22c9
2011-03-09Add missing filter.h to build systemJohn Koleszar
Missing file causes 'make dist' to not include a complete copy of the source. Change-Id: I3f55aeb5a86d0e81234e4e4588cb8086ba4cfc4a
2011-03-09Add vp8_sub_pixel_variance16x8_ssse3 functionYunqing Wang
Added SSSE3 function Change-Id: I8c304c92458618d93fda3a2f62bd09ccb63e75ad
2011-03-09Remove unused functionsYunqing Wang
Removed some unused functions Change-Id: Ifdfc27453e53cfc75997b38492901d193a16b245
2011-03-09Merge "Improve SSE2 half-pixel filter funtions"Yunqing Wang
2011-03-09Merge "Configuration updates:Making a clear distinction between Init and Change"John Koleszar
2011-03-08Fix an unused variable warning.Ralph Giles
Move the update of the loopfilter info to the same block where it is used. GCC 4.5 is not able trace the initialization of the local filter_info across the other calls between the two conditionals on pbi->common and issues an uninitialized variable warning. Change-Id: Ie4487b3714a096b3fb21608f6b0c74e745e3c6fc
2011-03-08Improve SSE2 half-pixel filter funtionsYunqing Wang
Rewrote these functions to process 16 pixels once instead of 8. Change-Id: Ic67e80124467a446a3df4cfecfb76a4248602adb
2011-03-08Merge "Add zero offset checking in SSE2 sub-pixel filter function"Yunqing Wang
2011-03-08Add zero offset checking in SSE2 sub-pixel filter functionYunqing Wang
Skip filter at zero offset. Change-Id: I95fc7e211869bc0ab5bcfb7ab2e3259d1c0ccf38
2011-03-08Merge "Write SSSE3 sub-pixel filter function"Yunqing Wang
2011-03-08Write SSSE3 sub-pixel filter functionYunqing Wang
1. Process 16 pixels at one time instead of 8. 2. Add check for both xoffset =0 and yoffset=0, which happens during motion search. This change gave encoder 1%~3% performance gain. Change-Id: Idaa39506b48f4f8b2fbbeb45aae8226fa32afb3e