Refer to "checkasm: use perf API on Linux ARM*" commit for the
rationale.
The implementation is somehow duplicated with checkasm, but so is the
current usage of AV_READ_TIME(). Until these implementations and
heuristics are made consistent, I don't see a way of sharing that code.
Note: when using libavutil/timer.h, it is now important to include
before any other include due to the _GNU_SOURCE requirement.
On ARM platforms, accessing the PMU registers requires special user
access permissions. Since there is no other way to get accurate timers,
the current implementation of timers in FFmpeg rely on these registers.
Unfortunately, enabling user access to these registers on Linux is not
trivial, and generally involve compiling a random and unreliable github
kernel module, or patching somehow your kernel.
Such module is very unlikely to reach the upstream anytime soon. Quoting
Robin Murphin from ARM:
> Say you do give userspace direct access to the PMU; now run two or more
> programs at once that believe they can use the counters for their own
> "minimal-overhead" profiling. Have fun interpreting those results...
>
> And that's not even getting into the implications of scheduling across
> different CPUs, CPUidle, etc. where the PMU state is completely beyond
> userspace's control. In general, the plan to provide userspace with
> something which might happen to just about work in a few corner cases,
> but is meaningless, misleading or downright broken in all others, is to
> never do so.
As a result, the alternative is to use the Performance Monitoring Linux
API which makes use of these registers internally (assuming the PMU of
your ARM board is supported in the kernel, which is definitely not a
given...).
While the Linux API is obviously cross platform, it does have a
significant overhead which needs to be taken into account. As a result,
that mode is only weakly enabled on ARM platforms exclusively.
Note on the non flexibility of the implementation: the timers (native
FFmpeg vs Linux API) are selected at compilation time to prevent the
need of function calls, which would result in a negative impact on the
cycle counters.
This simplifies incoming SDL related changes by removing potential
mismatching states of sdl and sdl2 variables. Since a component can have
all kind of states (such as unset, enabled, disabled or requested),
keeping these variables in sync manually in random places is not robust.
This commit switches off forced correct nesting of tags and only keeps
it for font tags. See long explanations in the code for the rationale.
This results in various FATE changes which I'll explain here:
- various swapping in font attributes, this is mostly noise due to the
old reverse stack way of printing them. The new one is more correct as
the last attribute takes over the previous ones.
- unrecognized tags disappears
- invalid tags that were previously displayed aren't anymore (instead,
we have a warning). This is better for the end user
The main benefit of this commit is to be more tolerant to error, leading
to a better handling of badly nested tags or random wrong formatting for
the end user.
The code originally pre-multiply by 2 the steps, causing the running sum
of the h factors to drift away due to the lack of precision. It quickly
causes an inaccuracy > 0.01.
I tried diverse approaches such as multiply by 2.0 (instead of adding
the value itself) without success.
I'm unable to bench the impact of this change, feel free to compare.
This commit fixes the incoming aacpsdsp tests.
Following is an alternative simplified function (matching the incoming
AArch64 code) that may be used:
function ff_ps_stereo_interpolate_neon, export=1
vld1.32 {q0}, [r2]
vld1.32 {q1}, [r3]
ldr r12, [sp]
vmov.f32 q8, q0
vmov.f32 q9, q1
vzip.32 q8, q0
vzip.32 q9, q1
1:
vld1.32 {d4}, [r0,:64]
vld1.32 {d6}, [r1,:64]
vadd.f32 q8, q8, q9
vadd.f32 q0, q0, q1
vmov.f32 d5, d4
vmov.f32 d7, d6
vmul.f32 q2, q2, q8
vmla.f32 q2, q3, q0
vst1.32 {d4}, [r0,:64]!
vst1.32 {d5}, [r1,:64]!
subs r12, r12, #1
bgt 1b
bx lr
endfunc
If the source is using a custom IO, setting this flag causes heavy leaks
since the segments will not have their avio context closed.
Regression since f5da453b06.
* commit '1920382aa9f21d7ed1a3c2214990da8d2b067a92':
dashenc: add option to provide UTC timing source
Also use E instead of AV_OPT_FLAG_ENCODING_PARAM to be consistent with
the other AVOption.
Merged-by: Clément Bœsch <u@pkh.me>
* commit '78489822074096e3ae0f3c3b70accace955086f6':
configure: Place all temporary files in one separate directory
Merged-by: Clément Bœsch <u@pkh.me>
* commit '11e225db31dcad57e2219ad8dfae2ac027af53d6':
rtmp: Account for bytes_read wraparound
This commit is a noop, see 0849a0ebb2
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'ca6ae3b77a7e6600e517723b90e57527a47809de':
vaapi_encode: Add MPEG-2 support
This commit is a noop, see 3b95c7c17d
Merged-by: Clément Bœsch <u@pkh.me>
* commit '95f1004bdfdf2d26c330c1d4b7c4ac9352d60b18':
dashenc: add mandatory id to AdaptationSet and Period in manifest
Merged-by: Clément Bœsch <u@pkh.me>
* commit '2bbb5abd877104fa9bc342c521bb49bc1aad50ce':
build: Map -Wall compiler flag to -W3 for MSVC and -Wextra to -W4
Merged-by: Clément Bœsch <u@pkh.me>
* commit '6151e9128ce2a84a443c82b78f5b5cb364ba2ab4':
build: Detect blocks C language extension and add it as VDA dependency
Merged-by: Clément Bœsch <u@pkh.me>
* commit '562ef82d6a7f96f6b9da1219a5aaf7d9d7056f1b':
fifo: Return the correct AVERROR value
This commit is a noop, see 2e81bb5e92
Merged-by: Clément Bœsch <u@pkh.me>
* commit '381a4e31a6b801a046e38b0e2b08fb61499157a7':
tak: Convert to the new bitstream reader
magicyuv: Convert to the new bitstream reader
truemotion2rt: Convert to the new bitstream reader
wavpack: Convert to the new bitstream reader
mpc: Convert to the new bitstream reader
This merge is a noop, see
http://ffmpeg.org/pipermail/ffmpeg-devel/2017-April/209609.html
Merged-by: Clément Bœsch <u@pkh.me>
* commit '5c0e2b13eb79b455b15355d64f7993b0f66ea9ec':
swscale-test: const correctness for pointer variable
This commit is a noop, see b36745339d
Merged-by: Clément Bœsch <u@pkh.me>
* commit '00b775dda2b3f78ae60ff3278d3b3d6545883a83':
hevc: Mark as having threadsafe init
This commit is a noop, see 14b9060160
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'fb59f87ce72035b940c3f5045884098b9324e1b2':
nvenc: Explicitly push the cuda context on encoding
This commit is a noop, see be74ba648c
Merged-by: Clément Bœsch <u@pkh.me>
* commit '4795e4f61f993940c5384044caff56cc15078698':
alac: Convert to the new bitstream reader
rtp: Convert to the new bitstream reader
mov: Convert to the new bitstream reader
This merge is a noop, see
http://ffmpeg.org/pipermail/ffmpeg-devel/2017-April/209609.html
Merged-by: Clément Bœsch <u@pkh.me>
* commit '44129e38047b6a27291e487c2084894958c6f399':
avconv: Do not pass NULL to avio_tell
This commit is a noop. The FFmpeg code handle cases where total_size is
an AVERROR (which avio_tell(NULL) will return) later in the function.
Note: the original commit refers to the null *muxer*. `ffmpeg -lavfi
testsrc -f null -` can be used as a test case.
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'ac3c3ee678e51b05a2a7c30ce79465db46ba01fa':
dxva2: allow an empty array of ID3D11VideoDecoderOutputView
This commit is a noop, see 8fb4865901
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit 'f67235a28cef44fcd97ae74ad53bbbc0d7f63d60':
dxva2: get the slice number directly from the surface in D3D11VA
This commit is a noop, see 153b36fc62
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '2a2889e130fee6d3c11e506328388afb317626ed':
build: Remove stray duplicate conditional variable declaration
This commit is a noop, there is no duplicate in FFmpeg. we have the
tools rules kept in the root Makefile though (see
802d94c36e)
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '89725a8512721fffd190021ded2d3f5b42e20e2a':
vaapi_h264: Scale log2_max_pic_order_cnt_lsb with max_b_frames
This commit is a noop, see eefa4b76ee
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit 'a3c3a5eac20a51d402c332cdf5220fff40a7943f':
vaapi_encode: Support forcing IDR frames via AVFrame.pict_type
This commit is a noop, see c667c0979c
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '37fab0661a760b2a9d727939d72e629acee1a6ef':
vaapi_encode: Fix GOP sizing
This commit is a noop, see 760f1a7727
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit 'bd6496fa07e32fd09ceb79404f9af43df959bcb2':
interplayvideo: Convert to the new bitstream reader
adx: Convert to the new bitstream reader
dvbsubdec: Convert to the new bitstream reader
motionpixels: Convert to the new bitstream reader
This merge is a noop, see
http://ffmpeg.org/pipermail/ffmpeg-devel/2017-April/209609.html
Merged-by: Clément Bœsch <u@pkh.me>
* commit 'e435beb1ea5380a90774dbf51fdc8c941e486551':
crypto: consistently use size_t as type for length parameters
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit 'e7de05f98f630b5b3a5e441c8fa763e6d89b8851':
h264dec: drop a redundant check
This commit is a noop, see 4cc1ce4a91
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '3cba1ad76d362c994fa98fb686e04e20826fb579':
x86inc: Avoid using eax/rax for storing the stack pointer
This commit is a noop, see cd09e3b349
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '4e62b57ee03928c12a3119dcaf78ffa1f4d6985f':
fate: Skip the checkasm test if CONFIG_STATIC is disabled
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '2835e9a9fd2b355e7936d1024ff1bf5fe454e428':
hevcdec: add P010 support for D3D11VA
This commit is a noop, see ccb94789e2
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '0ac2d86c4758e1419934905b6c092910296aa16a':
dxva2: Factorize DXVA context validity test into a single macro
This commit is (mostly) a noop, see 77742c75c5
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit 'f8a42d4f260db3eae4399fa8bd8c8c2c1d38f23a':
dxva2: Make ff_dxva2_get_surface() static and drop its name prefix
This commit is a noop, see fd0716b364
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '9026ec8aaf5fa19cb4fb266c16f608af0d863b2b':
matroskadec: make sure not to leave EbmlBin in an inconsistent state
This commit is a noop, see 5e1bacf2d4
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '9b1db2d33883c6ff3f8c7b2453146501ba14ca20':
vaapi_h264: Fix POC on IDR frames
This commit is a noop, see e72662e131
Merged-by: Clément Bœsch <cboesch@gopro.com>