This removes the last use of the ff_put/add_pixels_clamped global
function pointers, and as such they are removed.
This patch has a negative effect on performance on MIPS, since there's
a SIMD-optimized put/add_pixels_clamped, but no xvid or jrev. From a
code maintenance point of view, that is probably acceptable.
Because the global function pointers are removed, this fixes the following
tsan warnings when running e.g. fate-dnxhr-parse:
WARNING: ThreadSanitizer: data race (pid=29917)
Write of size 8 at 0x0000025b12d8 by thread T2 (mutexes: write M1543):
#0 ff_idctdsp_init src/libavcodec/idctdsp.c:313 (ffmpeg+0x00000044b68e)
[..]
Previous write of size 8 at 0x0000025b12d8 by thread T1 (mutexes: write M1541):
#0 ff_idctdsp_init src/libavcodec/idctdsp.c:313 (ffmpeg+0x00000044b68e)
These use the mmx IDCT, but sse2 put/add_pixels_clamped implementations.
This way we don't need to use the ff_put/add_pixels_clamped function
pointers.
Instead, hardcode the use of the _arm implementation of add_pixels,
and use the C version for put_pixels (as no arm-optimized version
exists). Since there's separate implementations of idct{,_put,_add}
for neon, this has no practical impact on performance.
This tries to handle cases where separate invocations of decode_frame()
(each running in separate threads) write to respective fields in the
same AVFrame->data[]. Having per-field owners makes interaction between
readers (the referencing thread) and writers (the decoding thread)
slightly more optimal if both accesses are field-based, since they will
use the respective producer's thread objects (mutex/cond) instead of
sharing the thread objects of the first field's producer.
In practice, this fixes the following tsan-warning in fate-h264:
WARNING: ThreadSanitizer: data race (pid=21615)
Read of size 4 at 0x7d640000d9fc by thread T2 (mutexes: write M1006):
#0 ff_thread_report_progress pthread_frame.c:569 (ffmpeg:x86_64+0x100f7cf54)
[..]
Previous write of size 4 at 0x7d640000d9fc by main thread (mutexes: write M1004):
#0 update_context_from_user pthread_frame.c:335 (ffmpeg:x86_64+0x100f81abb)
This fixes a proble where ffmpeg would cause crash to do a seek when the network disconnect.
The log like this:
01-01 10:53:03.441 6580 6580 F DEBUG : backtrace:
01-01 10:53:03.441 6580 6580 F DEBUG : #00 pc 0002942e /system/lib/libavformat.so (ffurl_write+9)
Signed-off-by: tiejun.peng <tiejun.peng@foxmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Fixes the following tsan warning when running fate-vsynth_lena-ffvhuff:
WARNING: ThreadSanitizer: data race (pid=6484)
Write of size 8 at 0x7d64000154b8 by main thread (mutexes: write M1331):
#0 update_context_from_user src/libavcodec/pthread_frame.c:331 (ffmpeg+0x000000dca887)
[..]
Previous read of size 8 at 0x7d64000154b8 by thread T2 (mutexes: write M1334):
#0 draw_slice src/libavcodec/huffyuvdec.c:857 (ffmpeg+0x000000bcc86f)
This adds partial support for the RFC 4175 (raw video over RTP). The
only supported formats are the YCbCr-4:2:2 8 bit because it's natively
supported by FFmpeg with pixel format UYVY, and 10 bit which requires
the vrawdepay codec to convert the payload in a format handled by
FFmpeg.
Signed-off-by: Damien Riegel <damien.riegel@savoirfairelinux.com>
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Add a codec capable of decoding some formats of the RFC4175. For now
it's only capable of handling YCbCr-4:2:2 with 8-bit or 10-bit depth.
For 8-bit it's a simple pass-through, for 10-bit it depacks the stream
in the AV_PIX_FMT_YUV422P10 pixel format.
Signed-off-by: Damien Riegel <damien.riegel@savoirfairelinux.com>
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* commit 'bf2f748fc74fff5272075e1fe1c07b4152421526':
configure: Use correct libm linker flag during math function checks
Merged-by: James Almer <jamrial@gmail.com>
* commit 'ce6f780bc6656ad3895f81a988b239ad3c8af4b8':
configure: Add missing asyncts filter, movie filter, and output example deps
Merged-by: James Almer <jamrial@gmail.com>
* commit '6a1ea4ec932f4fc9fdc00ec51ee070b298ddb35f':
arm: warn/error on movrelx usage problematic with PIC on ELF
Merged-by: James Almer <jamrial@gmail.com>
* commit '233d50b275dd7cf6cc0656851e670e1b2dfba56f':
qt-faststart: Do not try to use fancy 64-bit seeking functions on mingw32ce
Merged-by: James Almer <jamrial@gmail.com>
* commit '537b5b773b317af79d3a5b576ee9683e15ed84f6':
rtmpdh: Do global initialization before running the test
Merged-by: James Almer <jamrial@gmail.com>
* commit '2f99117f6ff24ce5be2abb9e014cb8b86c2aa0e0':
aarch64: vp9itxfm: Don't repeatedly set x9 when nothing overwrites it
This commit is a noop, see 37cb224e3e
Merged-by: James Almer <jamrial@gmail.com>
* commit '2dbe2aa2c2d4f02d2669feae45dee4fc45414813':
rdt: Convert to the new bitstream reader
ogg: Convert to the new bitstream reader
mpegts: Convert to the new bitstream reader
xsubdec: Convert to the new bitstream reader
xan: Convert to the new bitstream reader
wnv1: Convert to the new bitstream reader
vima: Convert to the new bitstream reader
vble: Convert to the new bitstream reader
utvideodec: Convert to the new bitstream reader
twinvq: Convert to the new bitstream reader
tscc2: Convert to the new bitstream reader
truespeech: Convert to the new bitstream reader
tiertex: Convert to the new bitstream reader
truemotion2: Convert to the new bitstream reader
svq1dec: Convert to the new bitstream reader
smacker: Convert to the new bitstream reader
sipr: Convert to the new bitstream reader
rtjpeg: Convert to the new bitstream reader
ra288: Convert to the new bitstream reader
ra144: Convert to the new bitstream reader
This merge is a noop, see
http://ffmpeg.org/pipermail/ffmpeg-devel/2017-April/209609.html
Merged-by: James Almer <jamrial@gmail.com>
* commit '79566ec8c77969d5f9be533de04b1349834cca62':
arm: vp9itxfm: Rename a macro parameter to fit better
This commit is a noop, see f69dd26df5
Merged-by: James Almer <jamrial@gmail.com>
* commit '721bc37522c5c1d6a8c3cea5e9c3fcde8d256c05':
arm/aarch64: vp9itxfm: Fix indentation of macro arguments
This commit is a noop.
Merged-by: James Almer <jamrial@gmail.com>
* commit '06fec74cacbb0ef7f3e5ea0e6c9ced1b6fd7565d':
checkasm: vp9dsp: benchmark all sub-IDCTs (but not WHT or ADST).
This commit is a noop, see 1c8fbd7b90
Merged-by: James Almer <jamrial@gmail.com>
* commit 'effc1430b2fe5997d9d55bf28dc507c27125eb27':
Revert "checkasm: vp9dsp: Benchmark the dc-only version of idct_idct separately"
Merged-by: James Almer <jamrial@gmail.com>
* commit '12ab667e219e7fbf8e9aef3731039b75c822df25':
matroska: use av_stream_add_side_data() for stereo3d side data
mov: Use av_stream_add_side_data() for displaymatrix side data
utils: Add av_stream_add_side_data()
This is a noop, see
2ab50647ff77f033eb982343f23e4d
Merged-by: James Almer <jamrial@gmail.com>
* commit '286ab878bd39b56008035638227b3ecb8ec5bbb7':
fate.sh: Allow setting other make flags for running tests
Merged-by: James Almer <jamrial@gmail.com>
* commit 'aa498c3183236a93206b4a0e8225b9db0660b50d':
avpacket: fix leak on realloc in av_packet_add_side_data()
This commit is a noop, see 574929d8b6
Merged-by: James Almer <jamrial@gmail.com>
* commit 'f78d360bba6dcfb585847a49a84e89c25950fbdb':
examples/decode_video: use a parser for splitting the input
Merged-by: James Almer <jamrial@gmail.com>
* commit '5f102a9559099429826e84758b8b5182244c52db':
examples/encode_video: switch to the new encoding API
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '45a1ce2ff7688656aacd53c27de5815a7ec13afe':
examples/decode_audio: handle planar audio now produced by the MP2 decoder
This commit is a noop, we use a simpler and more generic method to write
the samples.
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '3d66717f7cb5555257244be8f5bce172ed3af7ac':
examples/decode_audio: use the new audio decoding API
Merged-by: Clément Bœsch <cboesch@gopro.com>
* commit '0946c754d99c05413e813ee515039adcf0f9232a':
examples/decode_audio: use a parser for splitting the input
Merged-by: Clément Bœsch <cboesch@gopro.com>