Age | Commit message (Collapse) | Author |
|
Change-Id: I252f5f8a5d5ada65da08699774a7bb1eb2bd5b2e
|
|
Change-Id: I82834550503a43ff7ec8422342dc65136453b287
|
|
these are only used in the encoder.
frames_since_golden / frames_till_alt_ref_frame -> VP[89]_COMP
Change-Id: Ie14a6f46987bced685ddb449b85dc261caba6dfe
|
|
s/frame_rate/framerate/g
Change-Id: I6fc3e088e419c5f46e3a9390dd8a2cad2677a2fc
|
|
Use a separate counter for resetting the pattern upon
a change in temporal layers, and set/initialize the
layer context parameters for the new temporal layer state.
Also moved the setting of layer configuation in init_config()
to a separate function.
Change-Id: Ic7fc023a1e5490020509e107004645098f4c00f0
|
|
This eliminates a tsan warning.
Change-Id: I204d109b12adb4e347762e63d12859244f28d1a9
|
|
|
|
Remove dependency of this function on asm_offsets. ssse3/sse4 next.
Change quant_shift calculation so it be done using SIMD. Pre-calculate
as much as possible to simplify EOB selection.
Take advantage of qcoeff being zero'd by tying the if statements
together.
Speed parity with previous implementation with gcc x86_64 linux
Change-Id: Ife97556a1eca3a74b09def1a3d04084974dff1fb
|
|
avoids signed integer overflow; matches kf_group_bits
Change-Id: I193145cdc4fa53e70fba0a1731a03eb1a574931d
|
|
Change-Id: Ic9956ddf1c2ddffcf7be7fdfc23ad9a2426fc47a
WIP: Fixing unsafe threading in VP8 encoder.
|
|
Fixing unsafe threading in VP8 encoder.
Change-Id: Ibf4c89a2043654834747811bc11eb283de0bb830
|
|
Change-Id: I76fe20ade099573997404b8733cf7f79e82fb21e
WIP: Fixing unsafe threading in VP8 encoder.
|
|
and various unused members in VP8_COMP along with other
code cleanups.
Change-Id: I56c6c0a77a51f5ac5cbd6071017bcbfd2623b7df
|
|
Change-Id: Ifa78c0a953fab3e5dd7af0446924846c7022cd09
|
|
|
|
Change-Id: I44e4e3869f231ae270cca98c9565f23c512e3ddf
|
|
|
|
Change-Id: I650a593162280ab40e71e527ec6518303e2d5723
|
|
Not used.
Change-Id: I07ba929e3ff82b4b0c86f731769cdf5434c7a816
|
|
Change-Id: I28ac1519d1594801fef9a623cb64598d3d751eb0
|
|
Change-Id: Ie22841d096f3c86694b95bd06fc3a8ce1f032a10
|
|
Change-Id: Ib73c7b2bee4cb2eb2528fa6b381fffe9503079a0
|
|
Change-Id: Ie9a26be7c9baa54a0e43a63ed6c77f2746477a9c
|
|
Change-Id: I289564a5a27f0d03ddc6f19c7838542ff22719be
|
|
For videos with big static background(such as video conferencing
clips), the mode decision was biased to ZEROMV in order to
obtain a stable background. The percentage of ZEROMV on last
frame was used to predict if there is static area in current frame,
and checking already-encoded neighboring macroblocks' motion
vectors to make sure the local area has low motion.
Change-Id: I05b3241d3a56a0bda88b6681e5646c1c8baf2e57
|
|
Change-Id: Iaa947e640f27e6f6eaf7d845f243536bca2df513
|
|
Added drop_frame support in multi-resolution encoder.
If one frame is dropped at a lower-resolution level, the next
upper-resolution level encoder needs to encode that frame
independently without any lower-resolution level motion
information.
Another issue is that if one frame is dropped at some but not all
resolution levels, a frame after that one may use different set
of reference frames at different resolution levels. This reference
frame asynchronization could degrade motion search precision in
upper-resolution level encoding, which uses lower-resolution level
motion result. This change compares the lower-resolution and upper-
resolution level's reference frames. If they are not the same, the
upper-resolution level encoder can not use lower-resolution level
motion result.
Change-Id: I61afa4f313630e75b7cbdd5742e230e8724a988a
|
|
|
|
goldfreq can be replaced by DEFAULT_GF_INTERVAL.
Change-Id: I3659a9e7b9a6be9cb1952a1838e02c20d656e369
|
|
Allows building the library with the gcc -pedantic option, for improved
portabilty. In particular, this commit removes usage of C99/C++ style
single-line comments and dynamic struct initializers. This is a
continuation of the work done in commit 97b766a46, which removed most
of these warnings for decode only builds.
Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
|
|
Removed unused parameters and code related to drop_frame.
Change-Id: I594e050d49b1805c6f72abf06005ef624256bb57
|
|
VP8_REFFRAME is the same as vpx_ref_frame_type
Change-Id: I63c2ddfb39f6ec87d1e5eb6a8852846464552b1b
|
|
Conflicts:
vp8/common/entropymode.c
vp8/common/entropymode.h
vp8/encoder/encodeframe.c
vp8/vp8_cx_iface.c
Change-Id: I708b0f30449b9502b382e47b745d56f5ed2ce265
|
|
Change If4321cc5 fixed a bug caused by forward declarations not being
kept in sync across C files, resulting in a function call with the
wrong arguments. The commit moves the affected function declarations
into a header file, along with the other symbols from encodeframe.c
that were being sloppily shared.
Change-Id: I76a7b4c66d4fe175f9cbef7e52148655e4bb9ba1
|
|
|
|
Preserved the prior names for compatibility, will remove in the future.
Change-Id: I8773f959ebce72f60168a2972f7a8ffe6642b9b2
|
|
These are warnings in most builds, but show up as compile errors on
some platforms when these headers are included from C++ code.
Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
|
|
These are warnings in most builds, but show up as compile errors on
some platforms when these headers are included from C++ code.
Change-Id: I6c523b4dbbc699075fe73830442b51922e5a61d5
|
|
RD costs were local to MACROBLOCK data and had to be copied all the
time to each thread's MACROBLOCK data. Tables moved to a common place
and only pointers are setup for each encoding thread.
vp8_cost_tokens() generates 'int' costs so changed all types to be
int (i.e. removed unsigned).
NOTE: Could do some more cleaning in vp8cx_init_mbrthread_data().
Change-Id: Ifa4de4c6286dffaca7ed3082041fe5af1345ddc0
|
|
Look for changes in the codec's configured w/h instead of its active
w/h when forcing keyframes. Otherwise calls to vp8_change_config()
will force a keyframe when spatial resampling is active.
Change-Id: Ie0d20e70507004e714ad40b640aa5b434251eb32
|
|
This change added a motion search skipping mechanism similar
to what we did in second pass. For a macroblock that is very
similar to the macroblock at same location on last frame,
we can set its mv to be zero, and skip motion search. This
improves first-pass performance for slide shows and video
conferencing clips with a slight PSNR loss.
Change-Id: Ic73f9ef5604270ddd6d433170091d20361dfe229
|
|
|
|
Some refactoring in rdopt.c and pickinter.c.
Change-Id: I4f50020eb3313c37f4d441d708fedcaf219d3038
|
|
The MFQE function of the postprocessor depends on these
Change-Id: I256a37c6de079fe92ce744b1f11e16526d06b50a
|
|
Produce the token partitions on-the-fly, while processing each MB.
Context is updated at the beginning of each frame based on the
previoud frame's counters. Optimally encoder outputs partitions in
separate buffers. For frame based output, partitions are concatenated
internally.
Limitations:
- enabled just in combination with realtime-only mode
- number of encoding threads has to be equal or less than the
number of token partitions. For this reason, by default the encoder
will do 8 token partitions.
- vpxenc supports partition output (-P) just in combination with
IVF output format (--ivf)
Performance:
- Realtime encoder can be up to 13% faster (ARM) depending on the number
of threads and bitrate settings. Constant gain over the 5-16 speed
range.
- Token buffer reduced from one frame to 8 MBs
Quality:
- quality is affected by the delayed context updates. This again
dependents on input material, speed and bitrate settings. For VC
style input the loss seen is up to 0.2dB. If error-resilient=2
mode is used than the effect of this change is negligible.
Example:
./configure --enable-realtime-only --enable-onthefly-bitpacking
./vpxenc --rt --end-usage=1 --fps=30000/1000 -w 640 -h 480
--target-bitrate=1000 --token-parts=3 --static-thresh=2000
--ivf -P -t 4 -o strm.ivf tanya_640x480.yuv
Change-Id: I127295cb85b835fc287e1c0201a67e378d025d76
|
|
* changes:
Consolidate C version of token packing functions
Multithreaded encoder, late sync loopfilter
|
|
mode_info_context->mbmi.mb_skip_coeff has to always reflect the
existence or not of coeffs for a certain MB. The loopfilter needs this
info.
mb_skip_coeff is either set by the vp8_tokenize_mb or has to be set to
1 when the MB is skipped by mode selection. This has to be done
regardless of the mb_no_coeff_skip value.
prob_skip_false is needed just when mb_no_coeff_skip is 1. No need to
keep count of both skip_false and skip_true as they are complementary
(skip_true+skip_false = total_mbs)
Change-Id: I3c74c9a0ee37bec10de7bb796e408f3e77006813
|
|
Second shot at this...
Sync with loopfilter thread as late as possible, usually just at the
beginning of next frame encoding. This returns control to application
faster and allows a better multicore scaling.
When PSNR packets are generated the final filtered frame is needed
imediatly so we cannot delay the sync. Same has to be done when
internal frame is previewed.
Change-Id: I64e110c8b224dd967faefffd9c93dd8dbad4a5b5
|
|
This commit continues the process of converting to the new RTCD
system. It removes the last of the VP8_ENCODER_RTCD struct references.
Change-Id: I2a44f52d7cccf5177e1ca98a028ead570d045395
|
|
This commit continues the process of converting to the new RTCD
system.
Change-Id: Ia5828b7ecc80db55b21916704aa3d54cbb98f625
|