Scott LaVarnway [Thu, 15 Dec 2011 19:23:36 +0000 (14:23 -0500)]
Moved dequant idct into common
These functions are now used by the encoder.
This is WIP with the goal of creating a common idct/add for
the encoder and decoder. A boost of 1.8% was seen for
the HD rt test clip used.
[Tero] Added needed changes to ARM side.
Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
Yunqing Wang [Thu, 15 Dec 2011 17:53:25 +0000 (09:53 -0800)]
Merge "Only call vp8_find_near_mvs() once for each macroblock"
Yunqing Wang [Wed, 14 Dec 2011 20:35:04 +0000 (15:35 -0500)]
Only call vp8_find_near_mvs() once for each macroblock
While doing motion search on a macroblock, we usually call
vp8_find_near_mvs once per reference frame. Actually, for
different reference frames, the only difference in calculating
these near_mvs is they may have different sign_bias, which
causes a sign change in resulting near_mvs. In this change, we
only do find_near_mvs for the first reference frame. For other
reference frames, only need to adjust the near_mvs according to
that reference frame's sign_bias value.
Change-Id: I661394b49c6ad79fed7d0f2eb2be239b9c56f149
Yunqing Wang [Thu, 15 Dec 2011 13:38:57 +0000 (05:38 -0800)]
Merge "Force realtime version 1 streams to only use simple loopfilter"
John Koleszar [Thu, 15 Dec 2011 00:28:13 +0000 (16:28 -0800)]
Merge "Avoid multiple test for same lvl in auto filter lvl pick"
John Koleszar [Wed, 14 Dec 2011 20:10:06 +0000 (12:10 -0800)]
Merge "add check to ensure that cq_level falls within min and max q"
Johann [Wed, 14 Dec 2011 19:54:22 +0000 (11:54 -0800)]
Merge "Use xcode 4.2"
Johann [Wed, 14 Dec 2011 19:44:21 +0000 (11:44 -0800)]
Merge "Fix iOS conversion script"
John Koleszar [Wed, 14 Dec 2011 19:22:00 +0000 (11:22 -0800)]
Merge "fix: active_worst_quality could be set above 127"
Johann [Wed, 14 Dec 2011 19:11:03 +0000 (11:11 -0800)]
Use xcode 4.2
Allow targeting darwin11 / 10.7
Update arm paths for iPhoneOS 5.0
Change-Id: I057156349311ec66a163c4c1cea60dc5aeaaa492
James Berry [Wed, 7 Dec 2011 20:48:00 +0000 (15:48 -0500)]
add check to ensure that cq_level falls within min and max q
Add the notion of deferred validation of parameters. We don't want to
validate the cq_level at initialization time, because it won't have
been set via set_param() yet.
Change-Id: Ia1308395e8c10e0b1dc4e9af3a09b2bd6744cc30
Attila Nagy [Fri, 9 Dec 2011 12:54:41 +0000 (14:54 +0200)]
Avoid multiple test for same lvl in auto filter lvl pick
Sometimes same level is tested 2-3 times; store and reuse the
calculated error value.
Change-Id: Ia1c04a2568232edf9a5a62c4e2d8e8a50d85e00e
Attila Nagy [Thu, 8 Dec 2011 08:54:39 +0000 (10:54 +0200)]
Force realtime version 1 streams to only use simple loopfilter
...regardless of the speed settings.
Change-Id: I4b91ac7a7208efd690dfc69e175f8eb769b6ce03
John Koleszar [Tue, 13 Dec 2011 20:55:46 +0000 (12:55 -0800)]
Merge "vpx_integer.h: fix incorrect type emulation"
James Berry [Tue, 6 Dec 2011 18:08:44 +0000 (13:08 -0500)]
fix: active_worst_quality could be set above 127
add check to set active_worst_quality to 127 if it
is set above 127
Change-Id: I7db353d5c1b1c8516a116542b6ed21c0110bb512
Johann [Tue, 13 Dec 2011 18:42:02 +0000 (10:42 -0800)]
Merge "Fix incorrect PROC/ENDP match"
Johann [Tue, 13 Dec 2011 01:17:07 +0000 (17:17 -0800)]
Fix incorrect PROC/ENDP match
The conversion script was incorrectly matching
CONFIG_POSTPROC[_VISUALIZER] and generating an
incorrect vpx_config.asm
Match both PROC and ENDP on word boundaries
Change-Id: Ic2788c3b522d4ee0afc5223b72e1b09fb52645be
Yunqing Wang [Tue, 13 Dec 2011 18:39:44 +0000 (10:39 -0800)]
Merge "Align image buffer in multiple-resolution encoder"
Yunqing Wang [Thu, 8 Dec 2011 17:31:01 +0000 (12:31 -0500)]
Align image buffer in multiple-resolution encoder
Aligned the image buffer and stride to 32 bytes. This enables
calling of optimized scaler function in libyuv, and improves
the performance.
Tested libyuv scaler(x86 optimization) on Linux and Windows,
including: Linux 32/64bit, visual studio 32/64bit, Cygwin, and
MinGW32.
Also, fixed a wrong pointer in vpx_codec_encode().
Change-Id: Ibe97d7a0a745f82c43852fa4ed719be5a4db6abc
Johann [Tue, 13 Dec 2011 01:14:03 +0000 (17:14 -0800)]
Fix iOS conversion script
Mach-O prefixes function calls with _
Change-Id: I778c2ab91266887731a6a0316b42af7641826da4
Jim Bankoski [Mon, 12 Dec 2011 17:08:34 +0000 (09:08 -0800)]
Merge "vp8e - entropy stats per frame type"
Scott LaVarnway [Mon, 12 Dec 2011 14:40:28 +0000 (06:40 -0800)]
Merge "Improved mmx/sse2 versions of iwalsh"
Jim Bankoski [Sat, 10 Dec 2011 00:56:18 +0000 (16:56 -0800)]
vp8e - entropy stats per frame type
Change-Id: I4168eb6ea22ae541471738a7a3453e7d52059275
John Koleszar [Fri, 9 Dec 2011 19:54:36 +0000 (11:54 -0800)]
vpx_integer.h: fix incorrect type emulation
The previous definition of uintptr_t was incorrect on x64 with MSVC.
Also, the ARMV6 version of int_fast16_t was defined as unsigned for
some reason. Since the fast types are currently unused, just remove
them.
Change-Id: Idd73f77a989c77feedcb4a6802ae6bd37324ed40
Scott LaVarnway [Thu, 8 Dec 2011 19:37:59 +0000 (14:37 -0500)]
Improved mmx/sse2 versions of iwalsh
Removed unnecessary transposes.
Change-Id: I029fbaf8afafee34d54a4f3333c22023c15003c3
Johann [Wed, 7 Dec 2011 18:41:00 +0000 (10:41 -0800)]
Merge "Reduce mem copies in encoder loopfilter level picking"
Attila Nagy [Tue, 29 Nov 2011 11:48:02 +0000 (13:48 +0200)]
Reduce mem copies in encoder loopfilter level picking
Do the test filtering in the existing backup frame buffer instead of
the original. Copy the original data into extra buffer before doing
the filtering. This way there is no need to restore the original
unfiltered frame at the end of level picking process.
This came up in some discussions with Johann. Thanks!
Change-Id: I495f4301d983854673276c34ec0ddf9a9d622122
Yunqing Wang [Tue, 6 Dec 2011 18:21:28 +0000 (10:21 -0800)]
Merge "Allow aligning the raw image buffer"
Yunqing Wang [Mon, 5 Dec 2011 18:25:09 +0000 (13:25 -0500)]
Allow aligning the raw image buffer
Added code to allocate aligned image buffer in vpx_img_alloc(). The
alignment of the buffer and stride is determined by the parameter
align.
Change-Id: Idc866978484be3558551c56df39130ab7f74ddd4
Yunqing Wang [Tue, 25 Oct 2011 19:14:16 +0000 (15:14 -0400)]
Multiple-resolution encoder
The example encoder down-samples the input video frames a number of
times with a down-sampling factor, and then encodes and outputs
bitstreams with different resolutions.
Support arbitrary down-sampling factor, and down-sampling factor
can be different for each encoding level.
For example, the encoder can be tested as follows.
1. Configure with multi-resolution encoding enabled:
../libvpx/configure --target=x86-linux-gcc --disable-codecs
--enable-vp8 --enable-runtime_cpu_detect --enable-debug
--disable-install-docs --enable-error-concealment
--enable-multi-res-encoding
2. Run make
3. Encode:
If input video is 1280x720, run:
./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1
(output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180).
The last parameter is set to 1/0 to show/not show PSNR.)
4. Decode:
./simple_decoder 1.ivf 1.yuv
./simple_decoder 2.ivf 2.yuv
./simple_decoder 3.ivf 3.yuv
5. View video:
mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30
mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30
mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30
The encoding parameters can be modified in vp8_multi_resolution_encoder.c,
for example, target bitrate, frame rate...
Modified API. John helped a lot with that. Thanks!
Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
John Koleszar [Mon, 5 Dec 2011 22:36:54 +0000 (14:36 -0800)]
Merge "Speed selection support for disabled reference frames"
John Koleszar [Tue, 29 Nov 2011 16:54:31 +0000 (08:54 -0800)]
Merge "bugfix: all vpxenc arguments were not parsed under all conditions"
James Berry [Mon, 28 Nov 2011 19:09:35 +0000 (14:09 -0500)]
bugfix: all vpxenc arguments were not parsed under all conditions
dynamicly assign ARG_CTRL_CNT_MAX and
add check to make sure argument instance
doesnt already exist before creating a duplicate
Change-Id: I4f78a9c5346cda8e812cd89c077afe8996493508
Yunqing Wang [Mon, 28 Nov 2011 19:43:25 +0000 (14:43 -0500)]
Populate q_index in multi-thread encoding
This value needs to be copied to each thread's data structure.
This fixed artifact problem in multi-thread encoder.
Change-Id: Iab6d9745a1d44846aa503184705376f63a505597
Scott LaVarnway [Mon, 28 Nov 2011 18:06:13 +0000 (13:06 -0500)]
Added vp8_dequant_idct_add_y_block_sse2 setup
In Change I83202ffd, I deleted one too many lines.
Change-Id: If05d7c8988eb5c00898dc7c833ad7d99b5eb23e7
Scott LaVarnway [Mon, 28 Nov 2011 15:26:06 +0000 (07:26 -0800)]
Merge "Modified the inverse walsh to output directly"
Scott LaVarnway [Thu, 17 Nov 2011 17:54:42 +0000 (12:54 -0500)]
Modified the inverse walsh to output directly
to the dqcoeff or qcoeff buffer. The encoder would
populate the dc coeffs of the y blocks as a separate
stage (recon_dcblock) and the decoder would use a special
version of the idct. This change eliminates the extra copy
and reduces the code footprint.
[Tero] Added needed changes to armv6 and NEON assembly.
Change-Id: I83202ffdbaf83f6e5dd69f4ba2519fcf0b13b3ba
Johann [Wed, 23 Nov 2011 19:20:54 +0000 (11:20 -0800)]
Merge "Move shared data to shared location"
Johann [Wed, 23 Nov 2011 16:44:21 +0000 (08:44 -0800)]
Merge "Fix encoder partitioned output on ARM"
Attila Nagy [Thu, 10 Nov 2011 11:07:37 +0000 (13:07 +0200)]
Fix encoder partitioned output on ARM
API was not returning correct partition sizes on arm targets.
The armv5 token packing functions were not storing the information to the
partition size table.
As a fix, have one boolcoder instance allocated for each partition so
that partition sizes are internally available after all partitions
were encoded. This will also allow more flexibility in producing
several partitions in parallel.
Use buffer validation (overflow check) in all ARM bitpacking
functions.
Change-Id: I31c8a11d8a7613676f0ff50928cb2a2ab14fd169
John Koleszar [Wed, 23 Nov 2011 01:12:06 +0000 (17:12 -0800)]
Merge "Decoder fixes to better support reference picture selection."
Johann [Wed, 23 Nov 2011 00:21:47 +0000 (16:21 -0800)]
Merge "Validate encoder buffer writes for single token partition"
Stefan Holmer [Fri, 18 Nov 2011 14:44:17 +0000 (15:44 +0100)]
Decoder fixes to better support reference picture selection.
Change-Id: Id3388985d754706b9fd1f079c47121e79a63efdf
Johann [Fri, 18 Nov 2011 19:50:13 +0000 (11:50 -0800)]
Move shared data to shared location
Storing vp8_bilinear_filters_mmx in an mmx file and using it in an sse2
file is bad
Moving towards allowing --disable-mmx
Change-Id: I20493b35bdedcdcfc0915e6f05fdbe6c81a4a742
John Koleszar [Fri, 18 Nov 2011 20:47:16 +0000 (12:47 -0800)]
Speed selection support for disabled reference frames
There was an implicit reference frame test order (typically LAST,
GOLD, ARF) in the mode selection logic, but this doesn't provide the
expected results when some reference frames are disabled. For
instance, in real-time mode, the speed selection logic often disables
the ARF modes. So if the user disables the LAST and GOLD frames, the
encoder was always choosing INTRA, when in reality searching the ARF
in this case has the same speed penalty as searching LAST would have
had.
Instead, introduce the notion of a reference frame search order. This
patch preserves the former priorities, so if a frame is disabled, the
other frames bump up a slot to take its place. This patch lays the
groundwork for doing something smarter in the frame test order, for
example considering temporal distance or looking at the frames used by
nearby blocks.
Change-Id: I1199149f8662a408537c653d2c021c7f1d29a700
Attila Nagy [Wed, 9 Nov 2011 12:44:31 +0000 (14:44 +0200)]
Validate encoder buffer writes for single token partition
Extend buffer write validation (overflow check) to single token
partition packing, both mb and row based functions.
Change-Id: I36e19b7d37fc43712d05c70e3ad223d3eb5b973d
Attila Nagy [Fri, 18 Nov 2011 10:28:43 +0000 (12:28 +0200)]
ads2gas translates PRESERVE8, REQUIRE8 and ARM directives
Change-Id: I22c547af80e0bce0c7b5f6054ad0aa61f37d717b
Scott LaVarnway [Thu, 17 Nov 2011 18:17:53 +0000 (10:17 -0800)]
Merge "Added predictor stride argument(s) to subtract functions"
Johann [Wed, 16 Nov 2011 23:32:44 +0000 (15:32 -0800)]
Merge "avoid resetting framerate during vpx_codec_enc_config_set()"
Scott LaVarnway [Tue, 15 Nov 2011 17:53:01 +0000 (12:53 -0500)]
Added predictor stride argument(s) to subtract functions
Patch set 2: 64 bit build fix
Patch set 3: 64 bit crash fix
[Tero]
Patch set 4: Updated ARMv6 and NEON assembly.
Added also minor NEON optimizations to subtract
functions.
Patch set 5: x86 stride bug fix
Change-Id: I1fcca93e90c89b89ddc204e1c18f208682675c15
Rafaël Carré [Sat, 12 Nov 2011 03:45:44 +0000 (22:45 -0500)]
Add x86_64-win64-gcc to supported targets
libvpx builds and runs correctly when built with x86_64-w64-mingw32-gcc
Version tested: 4.6.1
Change-Id: I9aa953d615551ca4834c9a5f8b68778d032a6cf5
John Koleszar [Fri, 4 Nov 2011 22:43:11 +0000 (15:43 -0700)]
Update LICENSE to reflect WebM authors
This code is Copyright The WebM Project Authors, not only Google.
Change-Id: Ib5a9dec4ba3177ccb2b06dcfe9605d2b3a3a3d8b
John Koleszar [Fri, 11 Nov 2011 18:47:20 +0000 (10:47 -0800)]
avoid resetting framerate during vpx_codec_enc_config_set()
The calculated frame_rate is a state variable in the codec, and
shouldn't be maintained in the configuration struct. Move it to the
main part of cpi so that it isn't clobbered when the configuration
struct is updated. The initial framerate estimate is moved from the
vp8_cx_iface.c wrapper into the body of init_config() in onyx_if.c, so
that it is only called once and not reset on every call to
vp8_change_config().
Change-Id: I8d9a3d1283330d1ee297d07e9d78d1f2875f2465
Johann [Thu, 10 Nov 2011 17:43:12 +0000 (09:43 -0800)]
Merge "vpxdec: avoid redefining fileno() on mingw"
James Zern [Thu, 10 Nov 2011 00:02:55 +0000 (16:02 -0800)]
vpxdec: avoid redefining fileno() on mingw
Correct ifdef check for Visual Studio's compiler, mingw builds can use
unistd.h.
Change-Id: I25c5ee46ef75ffbff03f560293dfb3d6bed55f70
James Zern [Tue, 6 Sep 2011 19:21:19 +0000 (12:21 -0700)]
vpxenc: use off64_t for mingw
fixes fseek errors on large files resulting in corrupt/truncated output
(issue #364).
Change-Id: If0e189a1591d0e95d7d237332e0bea1cf2ec5aa1
Scott LaVarnway [Wed, 9 Nov 2011 18:17:43 +0000 (10:17 -0800)]
Merge "Relocated idct/add calls for encoder"
Johann [Wed, 9 Nov 2011 17:36:33 +0000 (09:36 -0800)]
Merge "ARMv6 optimized Intra4x4 prediction"
John Koleszar [Wed, 9 Nov 2011 17:35:08 +0000 (09:35 -0800)]
Merge "Reset FPU state after calc_plane_error()"
John Koleszar [Wed, 9 Nov 2011 17:34:50 +0000 (09:34 -0800)]
Merge "Compiler warning fix for const array."
John Koleszar [Wed, 9 Nov 2011 17:31:23 +0000 (09:31 -0800)]
Merge "Remove unused file recon.c"
Scott LaVarnway [Wed, 9 Nov 2011 15:41:05 +0000 (10:41 -0500)]
Relocated idct/add calls for encoder
Call the idct/add after the tokenize. This is WIP with
the goal of creating a common idct/add for the encoder and
decoder. This move is necessary because the decoder's version
of the idct clobbers qcoeff, which is used by the tokenize.
Change-Id: I6b08d8e8397cd873647fa4fb9469884e3c876756
Tero Rintaluoma [Mon, 7 Nov 2011 11:40:01 +0000 (13:40 +0200)]
ARMv6 optimized Intra4x4 prediction
Added ARM optimized intra 4x4 prediction
- 2x faster on Profiler compared to C-code compiled with -O3
- Function interface changed a little to improve BLOCKD structure
access
Change-Id: I9bc2b723155943fe0cf03dd9ca5f1760f7a81f54
James Zern [Wed, 9 Nov 2011 02:50:45 +0000 (18:50 -0800)]
threading: avoid defining _WIN32_WINNT
The referenced function (SignalObjectAndWait) isn't used. Reduces the
warnings with mingw32-w64 which defines this.
Change-Id: I4ce592879ec9372bf196dac640204c4d370bd210
John Koleszar [Tue, 8 Nov 2011 23:54:56 +0000 (15:54 -0800)]
Remove unused file recon.c
File not referenced from anywhere and no longer compiles.
Change-Id: I38b11bd60db615c2c2c9d7ad35caba3a1adf1750
Yunqing Wang [Tue, 8 Nov 2011 17:11:48 +0000 (12:11 -0500)]
Fix checks in MB quantizer initialization
vp8cx_mb_init_quantizer() needs to be called at least once to get
all values calculated. This change added one check to decide if
we could skip initialization or not.
Change-Id: I3f65eb548be57580a61444328336bc18c25c085b
Adrian Grange [Tue, 8 Nov 2011 16:00:31 +0000 (08:00 -0800)]
Merge "Third set of checks of buffer level against maximum buffer size"
Adrian Grange [Tue, 8 Nov 2011 16:00:12 +0000 (08:00 -0800)]
Merge "Additional clipping of buffer level to maximum buffer size"
Johann [Tue, 8 Nov 2011 01:50:08 +0000 (17:50 -0800)]
Merge "win64: use -f x64 in asflags instead of -f win64"
Adrian Grange [Tue, 8 Nov 2011 01:15:28 +0000 (17:15 -0800)]
Third set of checks of buffer level against maximum buffer size
Additional check of buffer level to ensure it doesn't exceed the
maximum buffer size.
Change-Id: I1ba4f8b09bbec89646885040ff47470196af521e
Adrian Grange [Tue, 8 Nov 2011 00:54:40 +0000 (16:54 -0800)]
Additional clipping of buffer level to maximum buffer size
Added additional check of buffer level against maximum
buffer size.
Change-Id: Iaf1fbaf008601161e402b43ce82c3dbc129bf740
Rafaël Carré [Tue, 8 Nov 2011 00:45:34 +0000 (19:45 -0500)]
win64: use -f x64 in asflags instead of -f win64
Change-Id: Id1be1a91c7f0fd286c403489ff447837029ba17f
Adrian Grange [Tue, 8 Nov 2011 00:28:13 +0000 (16:28 -0800)]
Added check to make sure maximum buffer size not exceeded
Added code to clip the buffer level to the maximum buffer
size. Without this the buffer level would increase
unchecked.
This bug was found when encoding an essentially static
scene at 2Mb/s. The encoder is unable to generate frames
consistent with the high data-rate because Q bottoms out
at Qmin.
As frames generated are consistently undersized the buffer
level increases and does not get checked against the
maximum size specified by the user (or default).
Change-Id: Id8a3c6323d3246da50f7cb53ddbf78b5528032c6
James Zern [Sat, 5 Nov 2011 01:50:35 +0000 (18:50 -0700)]
fix file permissions
all of googletest import (
0ab00a22) was marked executable
Change-Id: Id7b7ee03efc21ab998bb03349bd91644e8af25da
Fritz Koenig [Fri, 4 Nov 2011 22:35:42 +0000 (15:35 -0700)]
Compiler warning fix for const array.
Fix compiler warning for passing a non const array
to a function expecting a const array by using an
intermediary pointer and casting.
Change-Id: I9bdd358ebdc926223993fb8fb2098ffedd2f3fc7
James Berry [Fri, 4 Nov 2011 15:48:30 +0000 (11:48 -0400)]
Add unit test support via google test
Change-Id: I0ab00a22fbea1f38c96ef92ef7eaeda782c0c8d3
Yunqing Wang [Fri, 4 Nov 2011 18:52:27 +0000 (11:52 -0700)]
Merge "Add checks in MB quantizer initialization"
Scott LaVarnway [Fri, 4 Nov 2011 18:31:17 +0000 (11:31 -0700)]
Merge "Fix issue 374: eob read incorrectly"
John Koleszar [Fri, 4 Nov 2011 16:36:27 +0000 (09:36 -0700)]
Merge "Changing decoder input partition API to input fragments."
Tero Rintaluoma [Fri, 4 Nov 2011 07:36:49 +0000 (09:36 +0200)]
Fix issue 374: eob read incorrectly
Updated eob changes to check_reset_2nd_coeffs function.
Change-Id: Id1b21c91c7f0fd286640b487ffe47867009b717d
Scott LaVarnway [Thu, 3 Nov 2011 15:06:06 +0000 (08:06 -0700)]
Merge "Change use of eob in the encoder"
Tero Rintaluoma [Tue, 25 Oct 2011 11:25:11 +0000 (14:25 +0300)]
Change use of eob in the encoder
Changed 'int eob' to 'char *eob' in BLOCKD so that both encoder and
decoder will use eobs[25] array from MACROBLOCKD structure. In future,
this will enable use of the decoder side IDCT in the encoder.
Change-Id: I6e1c011628cb8864fd4a0b80f0279ce16a5ca978
Yaowu Xu [Wed, 2 Nov 2011 15:22:58 +0000 (08:22 -0700)]
Merge "added code to clear 2nd order block when appropriate"
John Koleszar [Tue, 1 Nov 2011 22:25:47 +0000 (15:25 -0700)]
Merge "Fix: Increase default cx_data_size"
John Koleszar [Tue, 1 Nov 2011 21:49:23 +0000 (14:49 -0700)]
Merge "vpxenc: fix crash w/empty input file"
Stefan Holmer [Thu, 29 Sep 2011 07:17:09 +0000 (09:17 +0200)]
Changing decoder input partition API to input fragments.
Adding support for several partitions within one input fragment.
This is necessary to fully support all possible packetization
combinations in the VP8 RTP profile. Several partitions can
be transmitted in the same packet, and they can only be split
by reading the partition lengths from the bitstream.
Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
Yunqing Wang [Tue, 1 Nov 2011 20:20:00 +0000 (16:20 -0400)]
Add checks in MB quantizer initialization
In some situations (f.g. error-resilient is turned on), vp8cx_mb
_init_quantizer() was called once per macroblock. Added checks
to avoid calculations when there is no change.
Change-Id: Ie4f0a5ade2202041254990a4e9d5b03bd1ac5aea
James Zern [Tue, 1 Nov 2011 20:44:00 +0000 (13:44 -0700)]
vpxenc: fix crash w/empty input file
Fixes issue #362.
Change-Id: Iba6d7e49ed610b44c8a4c0f3d6330a93feb0373d
John Koleszar [Mon, 31 Oct 2011 21:42:51 +0000 (14:42 -0700)]
Correct SPLITMV clamping
Prior to this fix, the clamping state of the last subblock partition
dominated, whereas the correct behavior is to clamp if any partition
needs clamping. This bug was introduced by v0.9.6-232-g6b25501
See also:
[1]: http://code.google.com/p/webm/issues/detail?id=371
[2]: https://bugzilla.mozilla.org/show_bug.cgi?id=696390
Change-Id: I444db492b4c4f05f039c7da6f4216da8207dc138
Yaowu Xu [Thu, 20 Oct 2011 19:32:34 +0000 (15:32 -0400)]
added code to clear 2nd order block when appropriate
It is discovered that in rare situations the 2nd order block may
produce a few small magnitude coefficients that has no effect on
reconstruction. The situations are a combination of low quantizer
values (high quality) and low energy in residual signals (content
dependent). This commit added code to detect such cases and reset
the 2nd order block to all 0.
Patch 1 to 4 used code to do all-zero-check on idct result buffer,
and tests on derf set showed a consistent gain of .12%-.14% on all
metrics.But due to a recent change Ie31d90b, the idct result buffer
is not longer populated. So patch 5&6 use an alternative method to
detect the situations. Tests on derf set now shows a consistent
quality gain of .16%-.20%.
As suggested by Jim, Patch 7&8 removed the condition of all first
order block not having any coefficient, instead we reset 2nd order
coefficients to all 0 if sum of absolute value of the coefficients
is small. So it does slightly more than just detecting the oddity
as discussed above, but tests on derf set now show a consistent
gain of .20%-.23% on all metrics.
It is worth noting here that this change does not have any effect
on mid/high quantizer range, it only affects the quantizer value
18 or blow. Within this range, the change helps compression by up
to 2.5% on clips in the derf set.
Change-Id: I718e19cf59a4fc2462cb7070832759beb9f7e7dd
Scott LaVarnway [Fri, 28 Oct 2011 16:27:17 +0000 (09:27 -0700)]
Merge "Improved decode_split_mv()"
Johann [Thu, 27 Oct 2011 18:17:54 +0000 (11:17 -0700)]
Merge "Fix ARM build problem introduced by CL I3fab6f2b"
Scott LaVarnway [Thu, 27 Oct 2011 15:26:30 +0000 (11:26 -0400)]
Improved decode_split_mv()
Tests showed ~1.2% performance boost on the HD clip used.
Performance will vary based on material.
Change-Id: Icbcf1a828750d5b4ae5252bf596b3ef594042e8a
Scott LaVarnway [Thu, 27 Oct 2011 13:14:00 +0000 (06:14 -0700)]
Merge "Improved mv_bias"
Attila Nagy [Thu, 27 Oct 2011 06:06:45 +0000 (09:06 +0300)]
Fix ARM build problem introduced by CL I3fab6f2b
Update ARM asm implementation of vp8_start_encode to new definition.
Change-Id: Ic44791c969e351082331ba6146c3384c01a0dfad
Johann [Wed, 26 Oct 2011 18:33:14 +0000 (11:33 -0700)]
Merge "Reduce partial frame copy in encoder's pick_filter_level_fast"
Scott LaVarnway [Wed, 26 Oct 2011 15:46:10 +0000 (11:46 -0400)]
Improved mv_bias
Small performance gains.
Change-Id: I709b9390a8a27a70f5f23574313b8db85ac7f23d
Scott LaVarnway [Wed, 26 Oct 2011 15:26:30 +0000 (08:26 -0700)]
Merge "Improved read_mb_modes_mv()"
Scott LaVarnway [Wed, 26 Oct 2011 14:46:36 +0000 (10:46 -0400)]
Improved read_mb_modes_mv()
Interleaved vp8_find_near_mvs and vp8_mv_ref_probs.
2.5% to 4% performance improvement for the HD clips used.
Change-Id: Id888b667cf5ae2f0e19da18743140f055ff7de8d
Attila Nagy [Tue, 18 Oct 2011 06:48:50 +0000 (09:48 +0300)]
Reduce partial frame copy in encoder's pick_filter_level_fast
The partial frame copy function used to copy an extra 8 lines above
and below. The partial frame filtering can only modify 3 pixel rows
above the partial frame. Reduce copy to bare minimum needed, which is
4 lines, so that partial filtering on copied frame is possible.
Define the "magic" fraction number for partial filtering in
loopfilter.h .
Change-Id: I4791ffc541b6884b12759a0d0714a8faf16147ec