Age | Commit message (Collapse) | Author |
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: I3f9c07db65eb206f6363d21bdb80e871570da767
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: Ie5c1aa480637e98dc3918fb562ff45c37a66c538
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: I6c519ab61e4f4e0ebcc796f2df061f945c48cefe
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: If54eb5cb5d1b0cac6c4c0633a9e99c93ca860ba2
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: I9bfcf9bef65c3d4ba0fb9a3e1532bad1463a10d6
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: I03c4dbf30dfd3558b0e256ff9d3ff4c012aadc80
|
|
This is a proof of concept RTCD implementation to replace the current
system of nested includes, prototypes, INVOKE macros, etc. Currently
only the decoder specific functions are implemented in the new system.
Additional functions will be added in subsequent commits.
Overview:
RTCD "functions" are implemented as either a global function pointer
or a macro (when only one eligible specialization available).
Functions which have RTCD specializations are listed using a simple
DSL identifying the function's base name, its prototype, and the
architecture extensions that specializations are available for.
Advantages over the old system:
- No INVOKE macros. A call to an RTCD function looks like an ordinary
function call.
- No need to pass vtables around.
- If there is only one eligible function to call, the function is
called directly, rather than indirecting through a function pointer.
- Supports the notion of "required" extensions, so in combination with
the above, on x86_64 if the best function available is sse2 or lower
it will be called directly, since all x86_64 platforms implement
sse2.
- Elides all references to functions which will never be called, which
could reduce binary size. For example if sse2 is required and there
are both mmx and sse2 implementations of a certain function, the
code will have no link time references to the mmx code.
- Significantly easier to add a new function, just one file to edit.
Disadvantages:
- Requires global writable data (though this is not a new requirement)
- 1 new generated source file.
Change-Id: Iae6edab65315f79c168485c96872641c5aa09d55
|
|
* changes:
Correct clamping in use of vp8_find_near_mvs()
Revert "Multithreaded encoder, late sync loopfilter"
|
|
Commit e06c242ba introduced a change to call vp8_find_near_mvs() only
once instead of once per reference frame by observing that the only
effect that the frame had was on the bias applied to the motion
vector. By keeping track of the sign_bias value, the mv to use could
be flip-flopped by multiplying its components by -1.
This behavior was subtley wrong in the case when clamping was applied
to the motion vectors found by vp8_find_near_mvs(). A motion vector
could be in-bounds with one sign bias, but out of bounds after
inverting the sign, or vice versa. The clamping must match that done
by the decoder.
This change modifies vp8_find_near_mvs() to remove the clamping from
that function. The vp8_pick_inter_mode() and vp8_rd_pick_inter_mode()
functions instead track the correctly clamped values for both bias
values, switching between them by simple assignment. The common
clamping and inversion code is in vp8_find_near_mvs_bias()
Change-Id: I17e1a348d1643497eca0be232e2fbe2acf8478e1
|
|
This commit is incomplete, as it does not synchronize the loop filter
before returning a handle to the reconstructed frame in
vpx_codec_get_preview_frame(), which can cause (false?) failures
when running the test_reconstruct_buffer test.
This may be related to a bug that does cause visible artifacts, which
is also under investigation.
This reverts commit 380d64ecb19984a1466e727244a41445ae919060.
Change-Id: Iad710941e7731d44fc2bde63bc63d6763cc4629e
|
|
A processor with ARMv7 instructions does not
necessarily have NEON dsp extensions. This CL
has the added side effect of allowing the ability
to enable/disable the dsp extensions cleanly.
Change-Id: Ie1e879b8fe131885bc3d4138a0acc9ffe73a36df
|
|
|
|
|
|
The prior commit accidentally used the u plane where it should have
used the v plane.
Change-Id: Ib6c8443b99061536389f05ac25b8e0a307ace637
|
|
Separated a double assignment that looked suspiciously like an
assignment and equality typo.
Change-Id: I7813979e9d7ea2539afb3c8ae6074f9df5ebdf52
|
|
* changes:
rdopt/pickinter: factor out some common setup
rdopt: remove unused frame_lf_or_gf
|
|
When running multi-layer (ML) encodes and dynamically
changing coding parameters on the fly (e.g. frame
duration/rate, bandwidths allocated to each layer)
the encoder would not produce sensible output.
In certain cases the rate targeting would be
hideously inaccurate.
These fixes make it possible to change these coding
parameters correctly and to maintain accurate control
of the rate targeting.
I also added the specification of the input timebase
into the test program, vp8_scalable_patterns.c.
Patch 2: Moved declaration to appease MS compiler)
Change-Id: Ic8bb5a16daa924bb64974e740696e040d07ae363
|
|
Add new get_predictor_pointers() and get_reference_search_order()
functions for code shared between the two implementations.
Change-Id: I1ebe76aa8f168b1f5cfabc00d05d8f19a0d4d207
|
|
This flag was set but unused.
Change-Id: Ia079b52b88ffbe3b16fdbde4b84e2b87304eaa13
|
|
|
|
This patch removes the local copies of the dequantize
constants and implements John's idea as described
in "Make a local copy of the dequantized data" commit.
Change-Id: Ic6b7d681f00bf63263f71ff1e39ab2f80729e8b2
|
|
|
|
|
|
|
|
Simplified the EOB calculation in the function.
Change-Id: I7422f18be40ae270358f5cb0811d66e64436b56f
|
|
Change-Id: Ie2dc0d72363ff38e0f71b59f6e2d1a2d70c5266b
|
|
Change-Id: I72ed49ce14ca0124dd0d31bfcf4c7630a4681587
|
|
Except zrun_zbin_boost, 15 AC values are the same for all other
parameters. Removed unneccessary calculation.
Change-Id: I6101c0fe8080bd2b4387c3b04d7ddedbf6010409
|
|
|
|
|
|
|
|
|
|
The code had a number of constructs like (condition)?1:0,
which is redundant with C's semantics. In the cases where a boolean
operator was used in the condition, simply remove the ternary part.
Otherwise adjust the surrounding expression to remove the condition
(eg, for rounding up. See pickinter.c and rdopt.c)
Change-Id: Icb2372defa3783cf31857d90b2630d06b2c7e1be
|
|
Remove BOOL, INTn, UINTn, etc, in favor of C99-style fixed width
types.
Change-Id: I396636212fb5edd6b347d43cc940186d8cd1e7b5
|
|
Mostly cosmetic. Trying for a more compact representation of speed
selection thresholds.
Change-Id: I339e7840049b91ad569aabbdc9c702a496110d3b
|
|
Mostly cosmetic. Trying for a more compact representation of speed
selection thresholds.
Change-Id: Icaebea632c7bb71ca8e07b4def04a046d4515e27
|
|
This file declared a bunch of nonexistent, unreferenced global
function pointers.
Change-Id: Ic26bb8c7712deba754c49fc01f383b53afc9e728
|
|
Change-Id: Ifc64cf990ae04d77934da3324d0afb3993f061e7
|
|
|
|
|
|
Use an opaque struct rather than typecasting through VP8_PTR, an int*.
Change-Id: I5ed4d9238ba2e8d51bfa07a8da87a2eb4c8fa43a
|
|
Make bilinearfilter_arm.c compiled only when HAVE_ARMV6, as its definitions
are v6 only. This is normally not a problem for static builds as the file
is elided at link time, but this was not being done properly for the
--enable-shared --enable-pic build.
Change-Id: Ic800a7cde751f74f22555c5b247f99f9df5e550d
|
|
|
|
|
|
Merged multi-resolution motion estimation with regular motion
estimation function in order to remove duplicated part. This
caused slight changes in multi-resulotion encoder quality &
performance.
Change-Id: Ib4ecc7acfebfe5eea959b5b91febae6db7b95fd1
|
|
increase size of ss_err by one to make
sure there is room for 64 elements.
Change-Id: I355cb8c499aa7da3b9675f2326a8d25a74bb88d2
|
|
The total_stats, this_frame_stats, and total_left_stats structures
were previously create by a heap allocation, despite being of fixed
size. These structures were allocated and deallocated during
{de,}allocate_compressor_data, which is reinvoked whenever the frame
size changes. Unfortunately, this clobbers the total_stats and
total_left_stats data.
Historically, these were variable size at one time, due to the first
pass motion map, which necessitated their being created by a unique
heap allocation. However, this bug with the total_stats being
clobbered has probably been present since that initial implementation.
These structures are instead moved to be stored within the struct
twopass_rc directly, rather than being heap allocated separately.
Change-Id: I7f9e519e25c58b92969071f0e99fa80307e0682b
|
|
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
|
|
|
|
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
|