ffmpeg.git
2 years agoMerge commit '33a2b73b98374de4781ae0497cf74b2ce07a9615'
Clément Bœsch [Sat, 8 Apr 2017 12:58:06 +0000 (14:58 +0200)]
Merge commit '33a2b73b98374de4781ae0497cf74b2ce07a9615'

* commit '33a2b73b98374de4781ae0497cf74b2ce07a9615':
  mpeg4audio: correctly propagate meaningful error values

This commit is a noop, see 50b14539158bd6d179afebb795b38be108359c4a

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'd82d5379caca21005d8906829b35361c4a65408e'
Clément Bœsch [Sat, 8 Apr 2017 12:52:30 +0000 (14:52 +0200)]
Merge commit 'd82d5379caca21005d8906829b35361c4a65408e'

* commit 'd82d5379caca21005d8906829b35361c4a65408e':
  mmaldec: initialize refcount using atomic_init()

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '518a22471e40604a158180a0660aabeeec65e07f'
Clément Bœsch [Sat, 8 Apr 2017 12:51:56 +0000 (14:51 +0200)]
Merge commit '518a22471e40604a158180a0660aabeeec65e07f'

* commit '518a22471e40604a158180a0660aabeeec65e07f':
  configure: Be more helpful when requiring options set

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'a91f1023bc06091ef84dce0f1e12b72d7f3ba3ca'
Clément Bœsch [Sat, 8 Apr 2017 12:51:27 +0000 (14:51 +0200)]
Merge commit 'a91f1023bc06091ef84dce0f1e12b72d7f3ba3ca'

* commit 'a91f1023bc06091ef84dce0f1e12b72d7f3ba3ca':
  examples: fix a typo in an error message

This commit is a noop, see 3aa1ff30f3f44a2ee980556a9bd6c0bc7d9087ac

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '706af9227b58657c73e3a4df3689da734f010500'
Clément Bœsch [Sat, 8 Apr 2017 12:50:12 +0000 (14:50 +0200)]
Merge commit '706af9227b58657c73e3a4df3689da734f010500'

* commit '706af9227b58657c73e3a4df3689da734f010500':
  lavu: Document the color properties enumeration values origin

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '5168026a05258537f1c48ca95c1776b1554997f4'
Clément Bœsch [Sat, 8 Apr 2017 12:46:05 +0000 (14:46 +0200)]
Merge commit '5168026a05258537f1c48ca95c1776b1554997f4'

* commit '5168026a05258537f1c48ca95c1776b1554997f4':
  options_table: Do not rely on enum size as option bound

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'ff9db5cfd14558df9cfcc54d6c062bc34bf1f341'
Clément Bœsch [Sat, 8 Apr 2017 12:41:10 +0000 (14:41 +0200)]
Merge commit 'ff9db5cfd14558df9cfcc54d6c062bc34bf1f341'

* commit 'ff9db5cfd14558df9cfcc54d6c062bc34bf1f341':
  lavc: Use a stricter check for the color properties values

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '0a35f128f3c6e0ae9a0a2236c557602c108da269'
Clément Bœsch [Sat, 8 Apr 2017 12:30:13 +0000 (14:30 +0200)]
Merge commit '0a35f128f3c6e0ae9a0a2236c557602c108da269'

* commit '0a35f128f3c6e0ae9a0a2236c557602c108da269':
  cabac: x86: Give optimizations header a more meaningful name

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'cad42fadcd2c2ae1b3676bb398844a1f521a2d7b'
Clément Bœsch [Sat, 8 Apr 2017 12:29:06 +0000 (14:29 +0200)]
Merge commit 'cad42fadcd2c2ae1b3676bb398844a1f521a2d7b'

* commit 'cad42fadcd2c2ae1b3676bb398844a1f521a2d7b':
  aarch64: vp9itxfm: Skip empty slices in the first pass of idct_idct 16x16 and 32x32

This commit is a noop, see 8b11a89c06b94632d545f67ca508bd9c05c435ac

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '9c8bc74c2b40537b0997f646c87c008042d788c2'
Clément Bœsch [Sat, 8 Apr 2017 12:28:25 +0000 (14:28 +0200)]
Merge commit '9c8bc74c2b40537b0997f646c87c008042d788c2'

* commit '9c8bc74c2b40537b0997f646c87c008042d788c2':
  arm: vp9itxfm: Skip empty slices in the first pass of idct_idct 16x16 and 32x32

This commit is a noop, see 388f6e6715ff6f84efc858f69530867a235fe909

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '3c87039a404c5659ae9bf7454a04e186532eb40b'
Clément Bœsch [Sat, 8 Apr 2017 12:27:45 +0000 (14:27 +0200)]
Merge commit '3c87039a404c5659ae9bf7454a04e186532eb40b'

* commit '3c87039a404c5659ae9bf7454a04e186532eb40b':
  arm: vp9itxfm: Only reload the idct coeffs for the iadst_idct combination

This commit is a noop, see ecd343aa1ffbbfddac937b708d111c88159ee5f9

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'c4c5f5386c83bb8d66f8d67cd8533c8697f06d04'
Clément Bœsch [Sat, 8 Apr 2017 12:24:40 +0000 (14:24 +0200)]
Merge commit 'c4c5f5386c83bb8d66f8d67cd8533c8697f06d04'

* commit 'c4c5f5386c83bb8d66f8d67cd8533c8697f06d04':
  vp9dsp: add DC only versions for idct/idct.

This commit is a noop, see 64821f5a7cc85f8d7cfc69b5caaa8d766faedc2e

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'e4382a4ab48138d43a19ea0da96f536a5e49b50c'
Clément Bœsch [Sat, 8 Apr 2017 12:20:56 +0000 (14:20 +0200)]
Merge commit 'e4382a4ab48138d43a19ea0da96f536a5e49b50c'

* commit 'e4382a4ab48138d43a19ea0da96f536a5e49b50c':
  hevc: Eliminate pointless variable indirection

This commit is a noop, the code is different in FFmpeg.

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '5c89022542ce8521d89ef58858342a7bc1c3cd0d'
Clément Bœsch [Sat, 8 Apr 2017 12:18:03 +0000 (14:18 +0200)]
Merge commit '5c89022542ce8521d89ef58858342a7bc1c3cd0d'

* commit '5c89022542ce8521d89ef58858342a7bc1c3cd0d':
  hevc: Drop pointless av_unused attribute

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '0983f9117f31521643162cb85380672495a9de1b'
Clément Bœsch [Sat, 8 Apr 2017 12:16:06 +0000 (14:16 +0200)]
Merge commit '0983f9117f31521643162cb85380672495a9de1b'

* commit '0983f9117f31521643162cb85380672495a9de1b':
  metasound: Drop unused tables

This commit is mostly a noop, see
276a8666d2d990335314752f8f8bdfdaac69e410
e8319f602e94af9b8454ed68d8323908ceaf944d

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'c21d78a903da378af48c9e5f971fe989592ddb65'
Clément Bœsch [Sat, 8 Apr 2017 12:13:43 +0000 (14:13 +0200)]
Merge commit 'c21d78a903da378af48c9e5f971fe989592ddb65'

* commit 'c21d78a903da378af48c9e5f971fe989592ddb65':
  configure: Integrate X11 checks into vaapi/vdpau checks

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '8b56dbe7435d8cfe3964f447fc45fe98db5d9042'
Clément Bœsch [Sat, 8 Apr 2017 12:11:21 +0000 (14:11 +0200)]
Merge commit '8b56dbe7435d8cfe3964f447fc45fe98db5d9042'

* commit '8b56dbe7435d8cfe3964f447fc45fe98db5d9042':
  configure: Do not add newlines in filter()/filter_out() functions

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '9254344e11f9b016088ec6250724f74377f5d7a0'
Clément Bœsch [Sat, 8 Apr 2017 12:06:48 +0000 (14:06 +0200)]
Merge commit '9254344e11f9b016088ec6250724f74377f5d7a0'

* commit '9254344e11f9b016088ec6250724f74377f5d7a0':
  configure: Move hardware-accelerated codec deps out of hwaccel section

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit 'd4f2a681cb6d4e913f1c879ad376313255d6cf4c'
Clément Bœsch [Sat, 8 Apr 2017 11:51:57 +0000 (13:51 +0200)]
Merge commit 'd4f2a681cb6d4e913f1c879ad376313255d6cf4c'

* commit 'd4f2a681cb6d4e913f1c879ad376313255d6cf4c':
  configure: MMAL-related decoders should depend on, not select, mmal

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoffmpeg: use av_stream_new_side_data() in init_output_stream
James Almer [Sat, 8 Apr 2017 04:12:57 +0000 (01:12 -0300)]
ffmpeg: use av_stream_new_side_data() in init_output_stream

2 years agoopusenc: switch between intra/inter mode for coarse energy
Rostislav Pehlivanov [Fri, 7 Apr 2017 23:53:31 +0000 (00:53 +0100)]
opusenc: switch between intra/inter mode for coarse energy

Saves around 5kbps.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoopusenc: do not signal digital silence
Rostislav Pehlivanov [Fri, 7 Apr 2017 23:48:28 +0000 (00:48 +0100)]
opusenc: do not signal digital silence

Apparently its only use is to enable comfort noise/error recovery.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoopusenc: minor style changes
Rostislav Pehlivanov [Fri, 7 Apr 2017 23:29:03 +0000 (00:29 +0100)]
opusenc: minor style changes

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoopusenc: remove unused header entries and simplify normalization
Rostislav Pehlivanov [Mon, 3 Apr 2017 12:13:14 +0000 (13:13 +0100)]
opusenc: remove unused header entries and simplify normalization

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoopus_rc: add macros for checkpoint rollback
Rostislav Pehlivanov [Sun, 2 Apr 2017 19:55:30 +0000 (20:55 +0100)]
opus_rc: add macros for checkpoint rollback

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agoopus_celt: fix some style issues
Rostislav Pehlivanov [Sun, 2 Apr 2017 19:55:11 +0000 (20:55 +0100)]
opus_celt: fix some style issues

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agomdct15: use existing complex multiplication macros
Rostislav Pehlivanov [Sat, 1 Apr 2017 18:41:52 +0000 (19:41 +0100)]
mdct15: use existing complex multiplication macros

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agovf_pad: center image on padded area if negative x/y
Ricardo Constantino [Mon, 3 Apr 2017 18:34:09 +0000 (19:34 +0100)]
vf_pad: center image on padded area if negative x/y

or if x/y go beyond padded area.

This is mostly useful when paired with the aspect option.
Defaults aren't changed.

Idea for this was taken from mpv's soon-to-be-removed expand vf.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
2 years agodoc/libav-merge: remove line about extract_extradata_bsf usage
James Almer [Fri, 7 Apr 2017 20:31:13 +0000 (17:31 -0300)]
doc/libav-merge: remove line about extract_extradata_bsf usage

It was addressed in b8f26779d615dfb466e90627323b1a4e40639f76

2 years agoavcodec/hevc_parse: ignore all non parameter set NAL units in extradata
James Almer [Sun, 2 Apr 2017 17:35:03 +0000 (14:35 -0300)]
avcodec/hevc_parse: ignore all non parameter set NAL units in extradata

While they shouldn't be present, they are harmless if they are.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2 years agolavf: use the new bitstream filter for extracting extradata
James Almer [Fri, 24 Mar 2017 21:42:19 +0000 (18:42 -0300)]
lavf: use the new bitstream filter for extracting extradata

This merges commits 8e2ea691351c5079cdab245ff7bfa5c0f3e3bfe4 and
096a8effa3f8f3455292c958c3ed07e798def7bd by Anton Khirnov, with the
following change:

- extract_extradata_check() is added to know if the codec is supported
by the bsf before trying to initialize it. This behaviour is similar to
the old AVCodecParser.split checks.

The FATE reference changes are due to the filtered out NAL units that
the old AVCodecParser.split implementation left alone.
Decoding is unchanged as the functions that parse extradata simply
ignored said unnecessary NAL units.

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agoffmpeg: use av_stream_new_side_data()
James Almer [Mon, 26 Dec 2016 21:33:06 +0000 (18:33 -0300)]
ffmpeg: use av_stream_new_side_data()

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agoavcodec/utvideodec: add support for gradient prediction
Paul B Mahol [Fri, 7 Apr 2017 18:09:22 +0000 (20:09 +0200)]
avcodec/utvideodec: add support for gradient prediction

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2 years agopthread_frame: make accesses to debug field be protected by owner lock.
Ronald S. Bultje [Thu, 6 Apr 2017 17:58:59 +0000 (13:58 -0400)]
pthread_frame: make accesses to debug field be protected by owner lock.

The av_log() is done outside the lock, but this way the accesses to the
field (reads and writes) are always protected by a mutex. The av_log()
is not run inside the lock context because it may involve user callbacks
and doing that in performance-sensitive code is probably not a good idea.

This should fix occasional tsan warnings when running fate-h264, like:

WARNING: ThreadSanitizer: data race (pid=10916)
  Write of size 4 at 0x7d64000174fc by main thread (mutexes: write M2313):
    #0 update_context_from_user src/libavcodec/pthread_frame.c:335 (ffmpeg+0x000000df7b06)
[..]
  Previous read of size 4 at 0x7d64000174fc by thread T1 (mutexes: write M2311):
    #0 ff_thread_await_progress src/libavcodec/pthread_frame.c:592 (ffmpeg+0x000000df8b3e)

2 years agoh264: don't re-call ff_h264_direct_ref_list_init() w/ frame-mt.
Ronald S. Bultje [Thu, 6 Apr 2017 15:47:03 +0000 (11:47 -0400)]
h264: don't re-call ff_h264_direct_ref_list_init() w/ frame-mt.

I'm hoping that this will address the remaining tsan fate-h264 issues:

WARNING: ThreadSanitizer: data race (pid=24478)
  Read of size 8 at 0x7dbc0001c828 by main thread (mutexes: write M3243):
    #0 ff_h264_ref_picture src/libavcodec/h264_picture.c:107 (ffmpeg+0x0000013b78d8)
[..]
  Previous write of size 1 at 0x7dbc0001c82e by thread T2 (mutexes: write M3245):
    #0 ff_h264_direct_ref_list_init src/libavcodec/h264_direct.c:137 (ffmpeg+0x000001382c93)

But I'm not sure because I haven't been able to reproduce locally.

2 years agolavc/mjpegdec: allow failure while decoding APP
Clément Bœsch [Fri, 7 Apr 2017 15:50:44 +0000 (17:50 +0200)]
lavc/mjpegdec: allow failure while decoding APP

Fix decoding frame.jpg from ticket #267

Regression since 9c7ee3749 / 212c6a1d7

2 years agoavcodec/tta: Don't try to read more than MIN_CACHE_BITS bits
James Almer [Fri, 7 Apr 2017 15:48:31 +0000 (12:48 -0300)]
avcodec/tta: Don't try to read more than MIN_CACHE_BITS bits

This fixes assertion failures introduced in 4fbb56acbe.

Reviewed-by: michaelni
Reviewed-by: durandal_1707
2 years agoavcodec/h264: Check weight values to be within the specs limits.
Michael Niedermayer [Tue, 21 Mar 2017 22:46:14 +0000 (23:46 +0100)]
avcodec/h264: Check weight values to be within the specs limits.

Fixes: integer overflows
Fixes: 911/clusterfuzz-testcase-5415105606975488

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoMerge commit '212c6a1d70df011b6f2a2aa02f7677503287bd00'
Clément Bœsch [Fri, 7 Apr 2017 08:17:53 +0000 (10:17 +0200)]
Merge commit '212c6a1d70df011b6f2a2aa02f7677503287bd00'

* commit '212c6a1d70df011b6f2a2aa02f7677503287bd00':
  mjpegdec: Check return values of functions that may fail

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3'
Clément Bœsch [Fri, 7 Apr 2017 08:08:53 +0000 (10:08 +0200)]
Merge commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3'

* commit '3ee5f25d37315b27f0e2d47aa69fc445545ee2e3':
  dxva2: Adjust printf length modifiers where appropriate

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '239d02eff3ffe9f7d40caa21dde50fb4a0e94c24'
Clément Bœsch [Fri, 7 Apr 2017 08:07:43 +0000 (10:07 +0200)]
Merge commit '239d02eff3ffe9f7d40caa21dde50fb4a0e94c24'

* commit '239d02eff3ffe9f7d40caa21dde50fb4a0e94c24':
  avisynth: Cast to the right type when loading avisynth library functions

This commit is a noop, we are using dlsym() instead of GetProcAdress().

Merged-by: Clément Bœsch <u@pkh.me>
2 years agoMerge commit '3fe2a01df7f2c193805809f57b61d79607572351'
James Almer [Fri, 7 Apr 2017 04:19:56 +0000 (01:19 -0300)]
Merge commit '3fe2a01df7f2c193805809f57b61d79607572351'

* commit '3fe2a01df7f2c193805809f57b61d79607572351':
  lavc: move decoding-related code from utils.c to a new file

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '328cd2b599bc2d0d38f3c12606fa2a66eeec016e'
James Almer [Fri, 7 Apr 2017 03:42:38 +0000 (00:42 -0300)]
Merge commit '328cd2b599bc2d0d38f3c12606fa2a66eeec016e'

* commit '328cd2b599bc2d0d38f3c12606fa2a66eeec016e':
  lavc: move encoding-related code from utils.c to a new file

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '45d199d5b0b7f09eb9baa29929a3bd07ed46223b'
James Almer [Fri, 7 Apr 2017 03:31:19 +0000 (00:31 -0300)]
Merge commit '45d199d5b0b7f09eb9baa29929a3bd07ed46223b'

* commit '45d199d5b0b7f09eb9baa29929a3bd07ed46223b':
  aac_adtstoasc_bsf: validate and forward extradata if the stream is already ASC

This commit is a noop, see 6e1902bab4349a79c45807af18ebf5b50f7b436b

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '1762a39e09a3edc27d1ef7bc50070f496b893aa4'
James Almer [Fri, 7 Apr 2017 03:29:19 +0000 (00:29 -0300)]
Merge commit '1762a39e09a3edc27d1ef7bc50070f496b893aa4'

* commit '1762a39e09a3edc27d1ef7bc50070f496b893aa4':
  mss2: only use error correction for matching block counts

This commit is a noop, see 2566ad98b01538ea589e5ee07b69fc566aadc348

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'd0c84c41d33ffd270d5f9fe0290e08341397fdee'
James Almer [Fri, 7 Apr 2017 03:28:14 +0000 (00:28 -0300)]
Merge commit 'd0c84c41d33ffd270d5f9fe0290e08341397fdee'

* commit 'd0c84c41d33ffd270d5f9fe0290e08341397fdee':
  avconv: Fix the audio next dts computation

This commit is a noop.

Merged-by: James Almer <jamrial@gmail.com>
2 years agoac3enc: Avoid unnecessary macro indirections
Diego Biurrun [Mon, 4 Jan 2016 10:59:00 +0000 (11:59 +0100)]
ac3enc: Avoid unnecessary macro indirections

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'eb135516e6f61481877163bfc55a3161d4544092'
James Almer [Fri, 7 Apr 2017 03:22:04 +0000 (00:22 -0300)]
Merge commit 'eb135516e6f61481877163bfc55a3161d4544092'

* commit 'eb135516e6f61481877163bfc55a3161d4544092':
  ac3enc: Avoid unnecessary macro indirections

This commit is a noop.

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'f0d3e43bd77b3194a28d75884cf83083b188bf30'
James Almer [Fri, 7 Apr 2017 03:14:52 +0000 (00:14 -0300)]
Merge commit 'f0d3e43bd77b3194a28d75884cf83083b188bf30'

* commit 'f0d3e43bd77b3194a28d75884cf83083b188bf30':
  ac3enc: Reshuffle functions to avoid forward declarations

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'e22c63ac74b2968075be8bf0d2deb1ee63b28976'
James Almer [Fri, 7 Apr 2017 03:04:37 +0000 (00:04 -0300)]
Merge commit 'e22c63ac74b2968075be8bf0d2deb1ee63b28976'

* commit 'e22c63ac74b2968075be8bf0d2deb1ee63b28976':
  ac3enc: Reshuffle some float/fixed-mode ifdefs to avoid a dummy function

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'd30719e62de68975cbc7ffd318df03a183037563'
James Almer [Fri, 7 Apr 2017 03:01:00 +0000 (00:01 -0300)]
Merge commit 'd30719e62de68975cbc7ffd318df03a183037563'

* commit 'd30719e62de68975cbc7ffd318df03a183037563':
  hwcontext_vaapi: Don't abort on failing to allocate from a fixed-size pool

This commit is a noop, see 2b8151c80690a71db2cf8009855b4ae1a6abdd4c

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '4adbb44ad154cec05e87de60bb827a13c0fe87df'
James Almer [Fri, 7 Apr 2017 02:45:20 +0000 (23:45 -0300)]
Merge commit '4adbb44ad154cec05e87de60bb827a13c0fe87df'

* commit '4adbb44ad154cec05e87de60bb827a13c0fe87df':
  tta: avoid undefined shifts

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'dc4b62502876c0ebeeba317233cd1348c5b0b2b7'
James Almer [Fri, 7 Apr 2017 02:43:56 +0000 (23:43 -0300)]
Merge commit 'dc4b62502876c0ebeeba317233cd1348c5b0b2b7'

* commit 'dc4b62502876c0ebeeba317233cd1348c5b0b2b7':
  tta: use get_unary() instead of a custom implementation

This commit is a noop, see 58b36959dd095c38ffd181e2b1f647b6df61773c

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'e122b12c88487ac8766ff4eb071856b0666f0134'
James Almer [Fri, 7 Apr 2017 02:36:16 +0000 (23:36 -0300)]
Merge commit 'e122b12c88487ac8766ff4eb071856b0666f0134'

* commit 'e122b12c88487ac8766ff4eb071856b0666f0134':
  build: Drop gcrypt support

This commit is a noop. GCrypt support is exposed in configure as a
command line option, and it's independent of GnuTLS.

Merged-by: James Almer <jamrial@gmail.com>
2 years agoavcodec/dvdsubdec: Fixes 2 runtime error: left shift of 170 by 24 places cannot be...
Michael Niedermayer [Fri, 7 Apr 2017 01:36:17 +0000 (03:36 +0200)]
avcodec/dvdsubdec: Fixes 2 runtime error: left shift of 170 by 24 places cannot be represented in type 'int'

Fixes: 619/clusterfuzz-testcase-5803914534322176

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavcodec/bitpacked: Fix mixed declarations and statement
Michael Niedermayer [Thu, 6 Apr 2017 22:43:46 +0000 (00:43 +0200)]
avcodec/bitpacked: Fix mixed declarations and statement

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoffmpeg: Change duration to int64_t
Michael Niedermayer [Thu, 6 Apr 2017 20:46:47 +0000 (22:46 +0200)]
ffmpeg: Change duration to int64_t

It is assigned from 64bit input in some branches and used with 64bit timestamps
This thus fixes a potential integer truncation

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agopthread_frame: don't return stale error codes after flush
wm4 [Thu, 6 Apr 2017 15:35:32 +0000 (17:35 +0200)]
pthread_frame: don't return stale error codes after flush

Consider the following sequence of events:

- open a codec without AV_CODEC_CAP_DELAY
- decode call fails with an error
- ff_thread_flush() is called
- drain packet is sent

Then the last step would make ff_thread_decode_frame() return an error,
because p->result can still be set to an error value. This is because
submit_packet returns immediately if AV_CODEC_CAP_DELAY is not set, and
no worker thread gets the chance to reset p->result, yet its value is
trusted by ff_thread_decode_frame().

Fix this by clearing the error fields on flush.

2 years agoavcodec: fix containts typo
James Almer [Thu, 6 Apr 2017 14:45:58 +0000 (11:45 -0300)]
avcodec: fix containts typo

2 years agoavformat/dump : Display Content Light Level metadata
Steve Lhomme [Sun, 2 Apr 2017 08:08:25 +0000 (10:08 +0200)]
avformat/dump : Display Content Light Level metadata

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agolavc: Add Content Light Level side metadata found in HEVC
Steve Lhomme [Mon, 3 Apr 2017 07:29:46 +0000 (09:29 +0200)]
lavc: Add Content Light Level side metadata found in HEVC

These data are necessary when transmitting HDR over HDMI.

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agolavu: add support for Content Light Level side metadata
Steve Lhomme [Mon, 3 Apr 2017 07:29:45 +0000 (09:29 +0200)]
lavu: add support for Content Light Level side metadata

As found in HEVC.

Signed-off-by: James Almer <jamrial@gmail.com>
2 years agobuild fix for mips
Shivraj Patil [Tue, 4 Apr 2017 13:26:01 +0000 (18:56 +0530)]
build fix for mips

Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2 years agovp8: make mv_min/max thread-local if using partition threading.
Ronald S. Bultje [Wed, 5 Apr 2017 20:19:55 +0000 (16:19 -0400)]
vp8: make mv_min/max thread-local if using partition threading.

Fixes tsan warnings like this in fate-vp8-test-vector-007:

WARNING: ThreadSanitizer: data race (pid=65909)
  Write of size 4 at 0x7d8c0000e088 by thread T1:
    #0 vp8_decode_mb_row_sliced vp8.c:2519 (ffmpeg:x86_64+0x100995ede)
[..]
  Previous write of size 4 at 0x7d8c0000e088 by thread T2:
    #0 vp8_decode_mb_row_sliced vp8.c:2519 (ffmpeg:x86_64+0x100995ede)

2 years agovp8: make wait/thread_mb_pos atomic.
Ronald S. Bultje [Wed, 5 Apr 2017 20:18:54 +0000 (16:18 -0400)]
vp8: make wait/thread_mb_pos atomic.

Fixes tsan warnings like this in fate-vp8-test-vector-007:

WARNING: ThreadSanitizer: data race (pid=3590)
  Write of size 4 at 0x7d8c0000e07c by thread T2:
    #0 decode_mb_row_no_filter src/libavcodec/vp8.c:2330 (ffmpeg+0x000000ffb59e)
[..]
  Previous write of size 4 at 0x7d8c0000e07c by thread T1:
    #0 decode_mb_row_no_filter src/libavcodec/vp8.c:2330 (ffmpeg+0x000000ffb59e)

2 years agox86/idctdsp_init: reindent.
Ronald S. Bultje [Wed, 5 Apr 2017 11:49:14 +0000 (07:49 -0400)]
x86/idctdsp_init: reindent.

2 years agojrev/xvid: hardcode use of C put/add_pixels_clamped.
Ronald S. Bultje [Tue, 4 Apr 2017 16:45:51 +0000 (12:45 -0400)]
jrev/xvid: hardcode use of C put/add_pixels_clamped.

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)

2 years agox86/simple_idct: add explicit sse2 simple_idct_put/add versions.
Ronald S. Bultje [Tue, 4 Apr 2017 16:42:58 +0000 (12:42 -0400)]
x86/simple_idct: add explicit sse2 simple_idct_put/add versions.

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.

2 years agocavs: add a sse2 idct implementation.
Ronald S. Bultje [Tue, 4 Apr 2017 16:17:08 +0000 (12:17 -0400)]
cavs: add a sse2 idct implementation.

This makes using the function pointer ff_add_pixels_clamped() unnecessary,
since we always know what the best implementation is at compile-time.

2 years agocavs: convert idct from inline asm to yasm.
Ronald S. Bultje [Tue, 4 Apr 2017 15:55:16 +0000 (11:55 -0400)]
cavs: convert idct from inline asm to yasm.

2 years agox86/xvididct: remove use of ff_put/add_pixels_clamped function pointer.
Ronald S. Bultje [Tue, 4 Apr 2017 15:21:43 +0000 (11:21 -0400)]
x86/xvididct: remove use of ff_put/add_pixels_clamped function pointer.

Since there's separate SSE2 implementations of xvid_idct_put/add, this
patch has no practical impact on performance.

2 years agoidct_arm: remove use of ff_put/add_pixels_clamped function pointer.
Ronald S. Bultje [Tue, 4 Apr 2017 15:20:39 +0000 (11:20 -0400)]
idct_arm: remove use of ff_put/add_pixels_clamped function pointer.

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.

2 years agopthread_frame: allow per-field ThreadFrame owners.
Ronald S. Bultje [Mon, 3 Apr 2017 14:24:05 +0000 (10:24 -0400)]
pthread_frame: allow per-field ThreadFrame owners.

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)

2 years agolibavformat/mov: Fix memory leak, need to free the chapter tracks array
Thierry Foucu [Wed, 5 Apr 2017 20:23:31 +0000 (13:23 -0700)]
libavformat/mov: Fix memory leak, need to free the chapter tracks array

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agoavformat/ftp: Solve a crash bug when network occur a exception
tiejun.peng@foxmail.com [Tue, 4 Apr 2017 14:12:19 +0000 (22:12 +0800)]
avformat/ftp: Solve a crash bug when network occur a exception

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>
2 years agoavcodec/dvbsubdec: Replace fprintf(stderr) by av_log()
Michael Niedermayer [Mon, 3 Apr 2017 20:18:14 +0000 (22:18 +0200)]
avcodec/dvbsubdec: Replace fprintf(stderr) by av_log()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2 years agobitpacked: fix potential overflow
Rostislav Pehlivanov [Wed, 5 Apr 2017 19:51:13 +0000 (20:51 +0100)]
bitpacked: fix potential overflow

Fixes: CID1404842

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2 years agohuffyuv: assign correct per-thread avctx pointer to HYuvContext::avctx.
Ronald S. Bultje [Tue, 4 Apr 2017 02:28:22 +0000 (22:28 -0400)]
huffyuv: assign correct per-thread avctx pointer to HYuvContext::avctx.

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)

2 years agoavfilter/af_loudnorm: do not upsample during second-pass linear normalization
Kyle Swanson [Wed, 5 Apr 2017 16:43:12 +0000 (11:43 -0500)]
avfilter/af_loudnorm: do not upsample during second-pass linear normalization

Signed-off-by: Kyle Swanson <k@ylo.ph>
2 years agodoc/general: fix project name after 2b1a6b1ae
Clément Bœsch [Wed, 5 Apr 2017 16:38:33 +0000 (18:38 +0200)]
doc/general: fix project name after 2b1a6b1ae

2 years agortp: rfc4175: add handler for YCbCr-4:2:2
Damien Riegel [Fri, 31 Mar 2017 15:36:16 +0000 (11:36 -0400)]
rtp: rfc4175: add handler for YCbCr-4:2:2

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>
2 years agocodec: bitpacked: add decoder
Damien Riegel [Fri, 31 Mar 2017 15:36:15 +0000 (11:36 -0400)]
codec: bitpacked: add decoder

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>
2 years agoMerge commit 'bf2f748fc74fff5272075e1fe1c07b4152421526'
James Almer [Tue, 4 Apr 2017 19:16:57 +0000 (16:16 -0300)]
Merge commit 'bf2f748fc74fff5272075e1fe1c07b4152421526'

* commit 'bf2f748fc74fff5272075e1fe1c07b4152421526':
  configure: Use correct libm linker flag during math function checks

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'ce6f780bc6656ad3895f81a988b239ad3c8af4b8'
James Almer [Tue, 4 Apr 2017 19:15:02 +0000 (16:15 -0300)]
Merge commit 'ce6f780bc6656ad3895f81a988b239ad3c8af4b8'

* commit 'ce6f780bc6656ad3895f81a988b239ad3c8af4b8':
  configure: Add missing asyncts filter, movie filter, and output example deps

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '04698d528cac334b6b5cabd3384f01406a766285'
James Almer [Tue, 4 Apr 2017 19:08:21 +0000 (16:08 -0300)]
Merge commit '04698d528cac334b6b5cabd3384f01406a766285'

* commit '04698d528cac334b6b5cabd3384f01406a766285':
  configure: Use correct variable name in libsnappy test

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '30f0d1b997f15d667c05feab0b54f0b2814ba7a9'
James Almer [Tue, 4 Apr 2017 19:06:02 +0000 (16:06 -0300)]
Merge commit '30f0d1b997f15d667c05feab0b54f0b2814ba7a9'

* commit '30f0d1b997f15d667c05feab0b54f0b2814ba7a9':
  configure: Remove old avisynth support leftover

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '6a1ea4ec932f4fc9fdc00ec51ee070b298ddb35f'
James Almer [Tue, 4 Apr 2017 19:04:29 +0000 (16:04 -0300)]
Merge commit '6a1ea4ec932f4fc9fdc00ec51ee070b298ddb35f'

* commit '6a1ea4ec932f4fc9fdc00ec51ee070b298ddb35f':
  arm: warn/error on movrelx usage problematic with PIC on ELF

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '5bcc6f76f180d0f88269018727c92fc562fb8abb'
James Almer [Tue, 4 Apr 2017 19:03:05 +0000 (16:03 -0300)]
Merge commit '5bcc6f76f180d0f88269018727c92fc562fb8abb'

* commit '5bcc6f76f180d0f88269018727c92fc562fb8abb':
  configure: Disable warning C4703 with MSVC

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'bd9cd04626a98a752c5771d057a6b86779359904'
James Almer [Tue, 4 Apr 2017 18:59:56 +0000 (15:59 -0300)]
Merge commit 'bd9cd04626a98a752c5771d057a6b86779359904'

* commit 'bd9cd04626a98a752c5771d057a6b86779359904':
  w32pthreads: Fix function pointer casts

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '233d50b275dd7cf6cc0656851e670e1b2dfba56f'
James Almer [Tue, 4 Apr 2017 18:58:11 +0000 (15:58 -0300)]
Merge commit '233d50b275dd7cf6cc0656851e670e1b2dfba56f'

* commit '233d50b275dd7cf6cc0656851e670e1b2dfba56f':
  qt-faststart: Do not try to use fancy 64-bit seeking functions on mingw32ce

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '537b5b773b317af79d3a5b576ee9683e15ed84f6'
James Almer [Tue, 4 Apr 2017 18:56:36 +0000 (15:56 -0300)]
Merge commit '537b5b773b317af79d3a5b576ee9683e15ed84f6'

* commit '537b5b773b317af79d3a5b576ee9683e15ed84f6':
  rtmpdh: Do global initialization before running the test

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '2f99117f6ff24ce5be2abb9e014cb8b86c2aa0e0'
James Almer [Tue, 4 Apr 2017 18:53:58 +0000 (15:53 -0300)]
Merge commit '2f99117f6ff24ce5be2abb9e014cb8b86c2aa0e0'

* commit '2f99117f6ff24ce5be2abb9e014cb8b86c2aa0e0':
  aarch64: vp9itxfm: Don't repeatedly set x9 when nothing overwrites it

This commit is a noop, see 37cb224e3e65b92eb6d77f1a788d882fbee972c3

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '2dbe2aa2c2d4f02d2669feae45dee4fc45414813'
James Almer [Tue, 4 Apr 2017 18:51:14 +0000 (15:51 -0300)]
Merge commit '2dbe2aa2c2d4f02d2669feae45dee4fc45414813'

* 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>
2 years agoMerge commit '79566ec8c77969d5f9be533de04b1349834cca62'
James Almer [Tue, 4 Apr 2017 18:42:18 +0000 (15:42 -0300)]
Merge commit '79566ec8c77969d5f9be533de04b1349834cca62'

* commit '79566ec8c77969d5f9be533de04b1349834cca62':
  arm: vp9itxfm: Rename a macro parameter to fit better

This commit is a noop, see f69dd26df55539072dc2fa340384f808b5b3d3e1

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '721bc37522c5c1d6a8c3cea5e9c3fcde8d256c05'
James Almer [Tue, 4 Apr 2017 18:38:15 +0000 (15:38 -0300)]
Merge commit '721bc37522c5c1d6a8c3cea5e9c3fcde8d256c05'

* commit '721bc37522c5c1d6a8c3cea5e9c3fcde8d256c05':
  arm/aarch64: vp9itxfm: Fix indentation of macro arguments

This commit is a noop.

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '06fec74cacbb0ef7f3e5ea0e6c9ced1b6fd7565d'
James Almer [Tue, 4 Apr 2017 18:28:56 +0000 (15:28 -0300)]
Merge commit '06fec74cacbb0ef7f3e5ea0e6c9ced1b6fd7565d'

* commit '06fec74cacbb0ef7f3e5ea0e6c9ced1b6fd7565d':
  checkasm: vp9dsp: benchmark all sub-IDCTs (but not WHT or ADST).

This commit is a noop, see 1c8fbd7b90469f69fe3a3f78ba7886195d97c34f

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'effc1430b2fe5997d9d55bf28dc507c27125eb27'
James Almer [Tue, 4 Apr 2017 18:26:18 +0000 (15:26 -0300)]
Merge commit 'effc1430b2fe5997d9d55bf28dc507c27125eb27'

* commit 'effc1430b2fe5997d9d55bf28dc507c27125eb27':
  Revert "checkasm: vp9dsp: Benchmark the dc-only version of idct_idct separately"

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '12ab667e219e7fbf8e9aef3731039b75c822df25'
James Almer [Tue, 4 Apr 2017 18:07:57 +0000 (15:07 -0300)]
Merge commit '12ab667e219e7fbf8e9aef3731039b75c822df25'

* 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
2ab50647ff653ab45d9d78203b6a671124609991
77f033eb98d0d7d05f3aa238409d87fb1f6096b3
2343f23e4d7e0d0f6adfd83d7d769a7a115dbd17

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit '286ab878bd39b56008035638227b3ecb8ec5bbb7'
James Almer [Tue, 4 Apr 2017 18:03:34 +0000 (15:03 -0300)]
Merge commit '286ab878bd39b56008035638227b3ecb8ec5bbb7'

* commit '286ab878bd39b56008035638227b3ecb8ec5bbb7':
  fate.sh: Allow setting other make flags for running tests

Merged-by: James Almer <jamrial@gmail.com>
2 years agoMerge commit 'aa498c3183236a93206b4a0e8225b9db0660b50d'
James Almer [Tue, 4 Apr 2017 17:51:46 +0000 (14:51 -0300)]
Merge commit 'aa498c3183236a93206b4a0e8225b9db0660b50d'

* commit 'aa498c3183236a93206b4a0e8225b9db0660b50d':
  avpacket: fix leak on realloc in av_packet_add_side_data()

This commit is a noop, see 574929d8b6de32ae712fcca7ab09f01a3e4616be

Merged-by: James Almer <jamrial@gmail.com>