Yaowu Xu [Mon, 14 Feb 2011 19:29:22 +0000 (11:29 -0800)]
Merge "mem leak fix for cpi->tplist"
James Berry [Mon, 14 Feb 2011 19:02:52 +0000 (14:02 -0500)]
mem leak fix for cpi->tplist
checks added to make sure that cpi->tplist
is freed correctly in vp8_dealloc_compressor_data
and vp8_alloc_compressor_data.
Change-Id: I66149dbbd25c958800ad94f4379d723191d9680d
Scott LaVarnway [Mon, 14 Feb 2011 18:32:58 +0000 (13:32 -0500)]
Improved rd_pick_intra4x4block
Eliminated unnecessary calculations. Improved performance
by 10% on keyframes and 1.6% overall for the test clip used.
Change-Id: I87671b26af5e2cc439e81d0fee3b15c7cd2a3309
Johann [Mon, 14 Feb 2011 13:10:16 +0000 (05:10 -0800)]
Merge "remove assembly detokenizer"
Johann [Fri, 11 Feb 2011 16:09:00 +0000 (11:09 -0500)]
remove assembly detokenizer
hasn't been kept up to date. remove it to avoid confusion.
Change-Id: I52ffde19b59fec5c7a381299ca2e85cb38330be7
Yunqing Wang [Fri, 11 Feb 2011 15:20:17 +0000 (07:20 -0800)]
Merge "Add improved_mv_pred flag in real-time mode"
Yunqing Wang [Fri, 11 Feb 2011 14:43:37 +0000 (09:43 -0500)]
Add improved_mv_pred flag in real-time mode
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
Yaowu Xu [Fri, 11 Feb 2011 05:38:19 +0000 (21:38 -0800)]
Merge "Redefining good quality speed settings"
Yunqing Wang [Thu, 10 Feb 2011 20:42:44 +0000 (12:42 -0800)]
Merge "Improve motion search in real-time mode"
Yunqing Wang [Tue, 8 Feb 2011 00:16:15 +0000 (19:16 -0500)]
Improve motion search in real-time mode
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
Johann [Thu, 10 Feb 2011 14:06:46 +0000 (06:06 -0800)]
Merge "Adds armv6 optimized variance calculation"
Scott LaVarnway [Wed, 9 Feb 2011 22:18:28 +0000 (17:18 -0500)]
Redefining good quality speed settings
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
James Berry [Wed, 9 Feb 2011 21:55:39 +0000 (16:55 -0500)]
fixed stride in vp8_temporal_filter_predictors_mb_c
stride would not be calculated correctly for material
with odd sized frame widths.
Change-Id: I1710f6aef9ebb93d36249c9239c68c5baa9791f8
John Koleszar [Wed, 9 Feb 2011 19:20:12 +0000 (11:20 -0800)]
Merge "correct cost for implicit bit in mvs"
John Koleszar [Wed, 9 Feb 2011 17:50:17 +0000 (12:50 -0500)]
correct cost for implicit bit in mvs
Use 0xFFF0 vice 240 (0xF0) for determining whether the sometimes
implicit bit 3 will be transmitted. This is consistent with the decoder
and encode_mvcomponent().
Change-Id: Ic1304d0ab56844bed8236edd1c5243a6767fc6b1
John Koleszar [Wed, 9 Feb 2011 16:31:36 +0000 (08:31 -0800)]
Merge "Put more code under #if CONFIG_MULTITHREAD."
Gaute Strokkenes [Sat, 5 Feb 2011 05:29:25 +0000 (05:29 +0000)]
Put more code under #if CONFIG_MULTITHREAD.
Change-Id: Icf4b692099d7d249fe3553852b1022b027b28e4b
Scott LaVarnway [Wed, 9 Feb 2011 15:55:04 +0000 (07:55 -0800)]
Merge "Added early breakout for vp8_rd_pick_intra4x4mby_modes"
John Koleszar [Wed, 9 Feb 2011 15:41:40 +0000 (07:41 -0800)]
Merge "vp8e_get_preview fixed for resized frames"
Tero Rintaluoma [Wed, 9 Feb 2011 14:34:56 +0000 (09:34 -0500)]
Adds armv6 optimized variance calculation
Adds vp8_sub_pixel_variance16x16_armv6 function to encoder. Integrates
ARMv6 optimized bilinear interpolations from vp8/common/arm/armv6
and adds new assembly file for variance16x16 calculation.
- vp8_filter_block2d_bil_first_pass_armv6 (integrated)
- vp8_filter_block2d_bil_second_pass_armv6 (integrated)
- vp8_variance16x16_armv6 (new)
- bilinearfilter_arm.h (new)
Change-Id: I18a8331ce7d031ceedd6cd415ecacb0c8f3392db
Johann [Tue, 8 Feb 2011 18:54:22 +0000 (13:54 -0500)]
clean up bilinear filter
make reference version of bilinear_filters short.
use reference versions of bilinear_filters and sub_pel_filters when
possible.
recognize that Width was being passed into
filter_block2d_bil_first_pass multiple times. ARM version had already
fixed this. propegate to C.
change references to src_pixels_per_line to src_pitch and standardize on
src/dst (instead of input/output).
recognize that first_pass is only run in the verticle and second_pass
only horizontal. ARM version had already fixed this. propegate to C
Change-Id: I292d376d239a9a7ca37ec2bf03cc0720606983e2
Fritz Koenig [Tue, 8 Feb 2011 21:59:12 +0000 (13:59 -0800)]
Merge "build: Change to iOS SDK 4.2"
Scott LaVarnway [Tue, 8 Feb 2011 21:50:43 +0000 (16:50 -0500)]
Added early breakout for vp8_rd_pick_intra4x4mby_modes
Improved performance of good quality, speed 0 (3% average)
with no average quality loss.
Change-Id: Ica34473f99bd74260eaebde6b132185e09e3c09d
Johann [Fri, 4 Feb 2011 22:44:31 +0000 (17:44 -0500)]
clarify *_offsets.asm differences
it's difficult to mux the *_offsets.c files because of header conflicts.
make three instead, name them consistently and partititon the contents
to allow building them as required.
Change-Id: I8f9768c09279f934f44b6c5b0ec363f7943bb796
Fritz Koenig [Tue, 8 Feb 2011 19:46:27 +0000 (14:46 -0500)]
build: Change to iOS SDK 4.2
Brings configure/build system inline with current iOS SDK.
Change-Id: If391693a80cab371f75708214f3882424ead9e96
James Berry [Tue, 8 Feb 2011 19:23:18 +0000 (14:23 -0500)]
vp8e_get_preview fixed for resized frames
preview_img d_w and d_h along with w and h
would not be updated for resized frames.
now uses sd.y_width and sd.y_height
Change-Id: I52241de4cc1de5e73f865e668bd70a7cbd954390
Johann [Fri, 4 Feb 2011 21:38:40 +0000 (16:38 -0500)]
move one of the offset files
common/arm/vpx_asm_offsets moves up a level. prepare for muxing with
encoder/arm/vpx_vp8_enc_asm_offsets
Change-Id: I89a04a5235447e66571995c9d9b4b6edcb038e24
John Koleszar [Mon, 7 Feb 2011 14:21:56 +0000 (06:21 -0800)]
Merge "Translates -g from LDFLAGS as --debug in armlink_adapter.sh"
John Koleszar [Mon, 7 Feb 2011 13:36:26 +0000 (05:36 -0800)]
Merge "remove unused dboolhuff code"
Yunqing Wang [Mon, 7 Feb 2011 13:21:14 +0000 (08:21 -0500)]
Fix link error in real-time mode
make vp8_mv_pred() and vp8_cal_sad() available in real-time mode.
Change-Id: I71dbae241b486ba943458dcbae552ec4a51689d3
Attila Nagy [Fri, 4 Feb 2011 08:21:43 +0000 (10:21 +0200)]
Translates -g from LDFLAGS as --debug in armlink_adapter.sh
Change-Id: I23ad88db2149ab788ff39aed8624a7ef0e97da2e
Johann [Fri, 4 Feb 2011 21:00:00 +0000 (16:00 -0500)]
remove unused dboolhuff code
we were holding on to this "just in case." purge it instead
Change-Id: I77a367b36d0821d731019f2566ecfffdae1d4b8a
Yunqing Wang [Fri, 4 Feb 2011 18:10:15 +0000 (10:10 -0800)]
Merge "Improve MV prediction in vp8_pick_inter_mode() for speed>3"
John Koleszar [Fri, 4 Feb 2011 16:36:04 +0000 (11:36 -0500)]
correct quantizer initialization
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
John Koleszar [Fri, 4 Feb 2011 15:07:45 +0000 (07:07 -0800)]
Merge "Remove duplicate loopfilter parameters."
Gaute Strokkenes [Fri, 4 Feb 2011 02:09:59 +0000 (02:09 +0000)]
Remove duplicate loopfilter parameters.
Change-Id: I0d41415e3961c2c9492d342290c1999f9d02e6d8
John Koleszar [Fri, 4 Feb 2011 13:16:15 +0000 (05:16 -0800)]
Merge "Delay auto key frame insertion in realtime configuration"
Gaute Strokkenes [Thu, 3 Feb 2011 19:03:49 +0000 (19:03 +0000)]
Make vp8_adjust_mb_lf_value return the updated value rather than
manipulating it in situ via a pointer.
Change-Id: If4a87a4eccd84f39577c0e91e171245f4954c5cf
John Koleszar [Thu, 3 Feb 2011 17:08:50 +0000 (09:08 -0800)]
Merge "Avoid using an anonymous union."
Scott LaVarnway [Thu, 3 Feb 2011 15:16:52 +0000 (07:16 -0800)]
Merge "Zero out block mv when an intra mode is selected"
Yunqing Wang [Thu, 3 Feb 2011 13:44:57 +0000 (05:44 -0800)]
Merge "Improved encoder threading"
Gaute Strokkenes [Wed, 2 Feb 2011 15:22:51 +0000 (15:22 +0000)]
Avoid using an anonymous union.
Change-Id: I5744269a35e2d696ecf40c1665efd572bfc9b6cb
Attila Nagy [Wed, 2 Feb 2011 11:10:27 +0000 (13:10 +0200)]
Delay auto key frame insertion in realtime configuration
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
Scott LaVarnway [Tue, 1 Feb 2011 17:55:51 +0000 (12:55 -0500)]
Zero out block mv when an intra mode is selected
instead of each time mode is tested.
Change-Id: Ief0f5586dafde54cc14d348dcecdacb182e7c1d5
Scott LaVarnway [Tue, 1 Feb 2011 16:35:08 +0000 (11:35 -0500)]
Removed unnecessary B_MODE_INFO memset.
Change-Id: I2bcef6a8e47f88542861fd1356631ca934e2a0e7
Scott LaVarnway [Tue, 1 Feb 2011 16:26:04 +0000 (11:26 -0500)]
Moved rd calculation into vp8_pick_intra4x4mby_modes
Then removed unnecessary code.
Change-Id: I142658815d843c9396b07881dbdd8d387c43c90e
Scott LaVarnway [Tue, 1 Feb 2011 15:05:35 +0000 (10:05 -0500)]
Removed intra_modes from vp8cx_encode_intra_macro_block
Restructured function in order to eliminate the prediction
modes save/restore. Code cleanup also.
Change-Id: I816e3b910de64d0f0f0ddc2398805c63263191e8
Attila Nagy [Wed, 26 Jan 2011 08:29:46 +0000 (10:29 +0200)]
Improved encoder threading
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
Scott LaVarnway [Tue, 1 Feb 2011 00:53:02 +0000 (19:53 -0500)]
Removed prediction_error accumulation
from vp8cx_encode_intra_macro_block. prediction_error is used when
deciding if a frame should be a keyframe. After reviewing this with
Yaowu, it was pointed out that vp8cx_encode_intra_macro_block
is only called for keyframes, so the accumulation is unnecessary.
Change-Id: Id79dc81b80d4f5d124f3a0dba1b923887e2e1ec8
Scott LaVarnway [Tue, 1 Feb 2011 00:41:09 +0000 (19:41 -0500)]
Removed last_auto_filter_prediction_error
last_auto_filter_prediction_error is not really used.
Change-Id: Ic6e56c4076bbd250ef783ee1be46964c85f62864
Scott LaVarnway [Mon, 31 Jan 2011 22:43:18 +0000 (17:43 -0500)]
Possible bug in vp8cx_encode_intra_macro_block
vp8_pick_intra4x4mby_modes uses the passed in distortion
for an early breakout. The best distortion was never saved
and the distortion for TM_PRED was always used.
Change-Id: Idbaf73027408a4bba26601713725191a5d7b325e
Scott LaVarnway [Mon, 31 Jan 2011 21:02:23 +0000 (13:02 -0800)]
Merge "Performance improvement of first pass"
Yaowu Xu [Mon, 31 Jan 2011 19:00:46 +0000 (11:00 -0800)]
Merge "change the threshold of DC check for encode breakout"
John Koleszar [Mon, 31 Jan 2011 15:33:55 +0000 (07:33 -0800)]
Merge "validate min_q against max_q"
John Koleszar [Fri, 28 Jan 2011 16:56:18 +0000 (11:56 -0500)]
validate min_q against max_q
min_q is required to be <= max_q.
Change-Id: I28eccf96df3b52a94913762b54c4fbe0d021ce5e
Adrian Grange [Mon, 31 Jan 2011 10:18:40 +0000 (02:18 -0800)]
Merge "Changed condition for using RD in Intra Mode"
Yaowu Xu [Thu, 20 Jan 2011 00:21:01 +0000 (16:21 -0800)]
change the threshold of DC check for encode breakout
Previously, the DC check is to make sure there is no code-able
DC shift for quantizer Q0, which has been verified rather
conservative. This commit changes the criteria to have two
components, DC and AC, to address the conservativeness. First,
it checks if all AC energy is enough to contribute a single
non-zero quantized AC coefficient. Second, for DC, the decision
to skip further considers two possible scenarios: 1. There is
no code-able 2nd order DC coefficient at all; 2 The residue is
relatively flat, but the uniform DC change is very small, i.e.
less than 1/2 gray level per pixel.
Comparing to previous criteria, the new criteria is about 10%
to 15% faster in encoding time with a very small quality loss.
(threshold ~1000 and quality range 33db-45db)
It should be noted that this commit enables "automatic" static
threshold for encodebreakout if a non-zero small value is passed
in to encoder.
Change-Id: I0f77719a1ac2c2dfddbd950d84920df374515ce3
Johann [Fri, 28 Jan 2011 17:03:58 +0000 (09:03 -0800)]
Merge "Adds "armvX-none-rvct" targets"
Yunqing Wang [Fri, 28 Jan 2011 15:00:20 +0000 (10:00 -0500)]
Improve MV prediction in vp8_pick_inter_mode() for speed>3
Applied same method used in vp8_rd_pick_inter_mode() to improve
the accuracy of MV prediction.
Change-Id: Ia50ae26208b18482695601f32febd99fe89fbc17
Adrian Grange [Fri, 28 Jan 2011 14:47:36 +0000 (14:47 +0000)]
Changed condition for using RD in Intra Mode
The condition for using RD when selecting the intra coding mode
for a MB is that the RD flag is set AND we're not in real-time
mode.
Previously the code used RD if either the RD flag was set OR
we were not using real-time mode.
Change-Id: Ic711151298468a3f99babad39ba8375f66d55a08
Paul Wilkins [Fri, 28 Jan 2011 13:13:30 +0000 (13:13 +0000)]
Inconsistent distortion metric in vp8_rd_pick_intra_mbuv_mode
This function was using a variance metric compared to and SSE metric in
other places (eg. vp8_rd_inter_uv)
Change-Id: I9109fcc5a13bca9db1d7ead500fe14999ab233eb
Tero Rintaluoma [Mon, 24 Jan 2011 09:21:40 +0000 (11:21 +0200)]
Adds "armvX-none-rvct" targets
Adds following targets to configure script to support RVCT compilation
without operating system support (for Profiler or bare metal images).
- armv5te-none-rvct
- armv6-none-rvct
- armv7-none-rvct
To strip OS specific parts from the code "os_support"-config was added
to script and CONFIG_OS_SUPPORT flag is used in the code to exclude OS
specific parts such as OS specific includes and function calls for
timers and threads etc. This was done to enable RVCT compilation for
profiling purposes or running the image on bare metal target with
Lauterbach.
Removed separate AREA directives for READONLY data in armv6 and neon
assembly files to fix the RVCT compilation. Otherwise
"ldr <reg>, =label" syntax would have been needed to prevent linker
errors. This syntax is not supported by older gnu assemblers.
Change-Id: I14f4c68529e8c27397502fbc3010a54e505ddb43
Johann [Thu, 27 Jan 2011 16:50:29 +0000 (11:50 -0500)]
warning: pointer targets differ in signedness
vp8/encoder/rdopt.c:728: warning: pointer targets in passing argument 3
of 'macro_block_yrd' differ in signedness
vp8/encoder/rdopt.c:541: note: expected 'int *' but argument is of type
'unsigned int *'
distortion is signed when calling macro_block_yrd is both other cases,
as well as for RDCOST
Change-Id: I5e22358b7da76a116f498793253aac8099cb3461
Johann [Thu, 27 Jan 2011 16:31:59 +0000 (11:31 -0500)]
clean up implicit declaration warnings for neon
Change-Id: I6ca2d89f355839c4c770773c09fc69dcea7c1406
warning: implicit declaration of function
'vp8_variance_halfpixvar16x16_[h|v|hv]_neon'
'vp8_sub_pixel_variance16x16_neon_func'
Scott LaVarnway [Thu, 27 Jan 2011 16:12:22 +0000 (08:12 -0800)]
Merge "Removed unused members from VP8_COMP"
Yunqing Wang [Thu, 27 Jan 2011 16:11:26 +0000 (08:11 -0800)]
Merge "Remove copies of same functions"
Yunqing Wang [Thu, 27 Jan 2011 16:10:53 +0000 (08:10 -0800)]
Merge "Refine motion vector prediction for NEWMV mode"
Scott LaVarnway [Wed, 26 Jan 2011 21:42:56 +0000 (16:42 -0500)]
Performance improvement of first pass
Improved the performance of the first pass only
(~6% on 720p test clip) by making use of LUT instead of the
float calculations. Might try a SIMD version later.
Also started to make use of int_mv instead of
MV.
Change-Id: If2a217c7d6b59cd2c25c5553e0ca7e0502403af8
Yunqing Wang [Wed, 26 Jan 2011 17:03:13 +0000 (12:03 -0500)]
Remove copies of same functions
Reduce the code size.
Change-Id: I2e1998557a3c8776e262c442fd758c25e17aff7a
Scott LaVarnway [Mon, 24 Jan 2011 19:19:14 +0000 (14:19 -0500)]
Removed unused members from VP8_COMP
Change-Id: I8f3f2642b02975fbdb14982984a29821f80d30d3
Paul Wilkins [Wed, 26 Jan 2011 18:46:34 +0000 (18:46 +0000)]
Rationalize vp8_rd_pick_intra16x16mby_mode()
Use the function macro_block_yrd() to calculate error and distortion
in keeping with what is done for inter frames.
The old code was using a variance metric for once case and an
SSE function for measuring distortion in the other case.
The function vp8_encode_intra16x16mbyrd() is no longer used.
Change-Id: Ic228cb00a78ff637f4365b43f58fbe5a9273d36f
Paul Wilkins [Wed, 26 Jan 2011 17:33:48 +0000 (09:33 -0800)]
Merge "Correction to buffer update for non-viewable frames."
Yaowu Xu [Wed, 26 Jan 2011 17:27:11 +0000 (09:27 -0800)]
Merge "cap the best quantizer for 2nd order DC"
John Koleszar [Wed, 26 Jan 2011 15:29:19 +0000 (07:29 -0800)]
Merge "Adds vpx_vp8_enc_asm_offsets.c.o to OBJS-yes list"
Attila Nagy [Wed, 26 Jan 2011 15:06:09 +0000 (17:06 +0200)]
Adds vpx_vp8_enc_asm_offsets.c.o to OBJS-yes list
Change-Id: Ibd6e3bc82471839904b1086b499efc55f7c5cbaf
Paul Wilkins [Wed, 26 Jan 2011 12:52:31 +0000 (12:52 +0000)]
Correction to buffer update for non-viewable frames.
The code previously tested cpi->common.refresh_alt_ref_frame
but there are situations where this flag may be set for viewable frames.
The correct test should be !cm->show_frame.
Change-Id: Ia1a600622992a4a68fe1d38ac23bf6b34b133688
Paul Wilkins [Wed, 26 Jan 2011 09:53:53 +0000 (01:53 -0800)]
Merge "Fix for incorrect variable declaration."
Yaowu Xu [Wed, 26 Jan 2011 06:24:22 +0000 (22:24 -0800)]
cap the best quantizer for 2nd order DC
This commit also removes artificial RDMULT cap for low quantizers.
The intention is to address some abnormal behavior of mode selections
at the low quantizer end, where many macroblocks were coded with
SPLITMV with all partitions using same motion vector including (0,0).
This change improves the compression quality substantially for high
quality encodings in both PSNR and SSIM terms. Overall effect on
mid/low rate range is also positive for all metrics, but smaller
in magnitude.
Change-Id: I864b29c4bd9ff610d2545fa94a19cc7e80c02667
Fritz Koenig [Tue, 25 Jan 2011 23:41:41 +0000 (15:41 -0800)]
Fix for incorrect variable declaration.
Commit
336aa0b7da8a35ba57400ce92fc016fc7fb35233 incorrectly
declared current_pos as and int, when it should have been
a FIRSTPASS_STATS pointer.
Change-Id: I0a51c7a86ebba8546c95dd5d9d1c1143d4613e40
Johann [Tue, 25 Jan 2011 21:40:28 +0000 (13:40 -0800)]
Merge "update sse2 regular quantizer"
Johann [Tue, 25 Jan 2011 21:09:05 +0000 (13:09 -0800)]
Merge "move new neon subpixel function"
Yunqing Wang [Tue, 25 Jan 2011 20:54:34 +0000 (15:54 -0500)]
Refine motion vector prediction for NEWMV mode
Adjust checking points in motion vector prediction to better cover
possible movements, and get a better prediction. Tests on test
clips showed a 0.1% improvement in SSIM, and no change in PSNR
and performance.
Change-Id: Ifdab05d35e10faea1445c61bb73debf888c9d2f8
Johann [Tue, 25 Jan 2011 20:49:52 +0000 (12:49 -0800)]
Merge "Fix issue 262, vp8cx_pack_tokens_into_partitions_armv5"
Johann [Tue, 25 Jan 2011 20:11:39 +0000 (15:11 -0500)]
move new neon subpixel function
previously wasn't guarded with ifdef ARMV7, causing a link error with
ARMV6
Change-Id: I0526858be0b5f49b2bf11e9090180b2a6c48926d
Yunqing Wang [Tue, 25 Jan 2011 17:54:23 +0000 (09:54 -0800)]
Merge "Modify calling of NEON code in sub-pixel search"
Attila Nagy [Mon, 17 Jan 2011 11:00:08 +0000 (13:00 +0200)]
Fix issue 262, vp8cx_pack_tokens_into_partitions_armv5
http://code.google.com/p/webm/issues/detail?id=262
Function was asuming that partitions have equal amount of mb_rows,
which is not always true.
Change-Id: I59ed40117fd408392a85c633beeb5340ed2f4b25
Paul Wilkins [Tue, 25 Jan 2011 13:32:26 +0000 (05:32 -0800)]
Merge "Incorrect bit allocation in forced KF groups."
Paul Wilkins [Tue, 25 Jan 2011 12:29:06 +0000 (12:29 +0000)]
Incorrect bit allocation in forced KF groups.
The old 2 pass code estimated error distribution when coding a
forced (by interval) key frame. The result of this was that in some
cases, when allocating bits at the GF group level within a KF
group there was either a glut of bits or starvation of bits at the end
of the KF group.
Added code to rescan and get the correct data once the position of
a forced key frame has been determined.
Change-Id: I0c811675ef3f9e4109d14bd049d7641682ffcf11
James Berry [Mon, 24 Jan 2011 21:48:21 +0000 (16:48 -0500)]
configure.sh fix for visual studio
-For targets with external build systems like visual
studio CC is not set so check_add_cflags will fail.
Only call this function if extra_cflags is set.
Change-Id: I3531bad69e9b6a59c5be1b0e8b6053ccccbc332c
Scott LaVarnway [Wed, 29 Dec 2010 19:30:57 +0000 (14:30 -0500)]
Added vp8_update_zbin_extra
vp8cx_mb_init_quantizer was being called for every mode checked
in vp8_rd_pick_inter_mode. zbin_extra is the only value that
really needs to be recalculated. This calculation is disabled
when using the fast quantizer for mode selection.
This gave a small performance boost (~.5% to 1%).
Note: This needs to be verified with segmentation_enabled.
Change-Id: I62716a870b3c82b4a998bdf95130ff0b02106f1e
Yunqing Wang [Fri, 21 Jan 2011 19:07:17 +0000 (11:07 -0800)]
Merge "Modify sub-pixel filters to eliminate unnecessary calculations"
Yunqing Wang [Thu, 20 Jan 2011 18:01:30 +0000 (13:01 -0500)]
Modify sub-pixel filters to eliminate unnecessary calculations
In sub-pixel calculation, xoffset and yoffset mostly take some
specific values. Modified sub-pixel filter functions according to
these possible values to improve performance.
Change-Id: I83083570af8b00ff65093467914fbb97a4e9ea21
Paul Wilkins [Fri, 21 Jan 2011 17:52:00 +0000 (17:52 +0000)]
Modified static scene check.
Added code to scan ahead a few frames when we see what
we think is a static scene in the two pass GF loop to see if the
conditions persist.
Moved calculation of decay rate out into a fuunction.
Change-Id: I6e9c67e01ec9f555144deafc8ae67ef25bffb449
Paul Wilkins [Thu, 20 Jan 2011 18:01:20 +0000 (18:01 +0000)]
Further work to reduce pulsing.
These changes are specifically targeted at fade transitions to
static scenes. Here we want to place a GF/ARF immediately
after the fade and prevent an ARF just before the fade.
Also some code lines and comment lines shortened to 80 chars
while I was there.
Change-Id: Iefdc09a4fa7b265048fc017246b73e138693950f
Attila Nagy [Thu, 20 Jan 2011 12:46:57 +0000 (14:46 +0200)]
Update configure scripts
Add --extra-cflags as config parameter for user defined extra CFLAGS.
Add -g to asflags when debug enabled for arm targets.
Change-Id: Ibdde7cfdda6736c1c1db45e6466bd08504a51f15
Adrian Grange [Thu, 20 Jan 2011 13:13:33 +0000 (13:13 +0000)]
Fixed use of motion percentage in KF/GF group calc
In both vp8_find_next_key_frame and define_gf_group,
motion_pct was initialised at the top of the loop before
next_frame stats had been read in.
This fix sets motion_pct after next_frame stats have
been read.
Change-Id: I8c0bebf372ef8aa97b97fd35b42973d1d831ee73
Paul Wilkins [Wed, 19 Jan 2011 16:33:34 +0000 (08:33 -0800)]
Merge "First pass loop bug."
Paul Wilkins [Wed, 19 Jan 2011 15:50:22 +0000 (15:50 +0000)]
First pass loop bug.
Incorrect value loop_decay_rate used in GF loop.
The intent was to test the cumulative value decay_accumulator.
Change-Id: I62928c63eb09f4f6936a45ebd1c23784d1c9681b
John Koleszar [Wed, 19 Jan 2011 13:51:00 +0000 (05:51 -0800)]
Merge "Implement error tracking in the decoder"
Henrik Lundin [Thu, 16 Dec 2010 15:46:31 +0000 (16:46 +0100)]
Implement error tracking in the decoder
A new vpx_codec_control called VP8D_GET_FRAME_CORRUPTED. The output
from the function is non-zero if the last decoded frame contains
corruption due to packet losses.
The decoder is also modified to accept encoded frames of zero length.
A zero length frame indicates to the decoder that one or more frames
have been completely lost. This will mark the last decoded reference
buffer as corrupted. The data pointer can be NULL if the length is
zero.
Change-Id: Ic5902c785a281c6e05329deea958554b7a6c75ce