ffmpeg.git
4 years agoMerge commit '16b0c929621f84983b83b9735ce973acb12723bc'
Hendrik Leppkes [Wed, 14 Oct 2015 12:28:20 +0000 (14:28 +0200)]
Merge commit '16b0c929621f84983b83b9735ce973acb12723bc'

* commit '16b0c929621f84983b83b9735ce973acb12723bc':
  avconv: Add loop option.

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoMerge commit '11c5f438ff83da5040e85bfa6299f56b321d32ef'
Hendrik Leppkes [Wed, 14 Oct 2015 12:01:11 +0000 (14:01 +0200)]
Merge commit '11c5f438ff83da5040e85bfa6299f56b321d32ef'

* commit '11c5f438ff83da5040e85bfa6299f56b321d32ef':
  dict: Change return type of av_dict_copy()

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoMerge commit 'c1aac39eaccd32dc3b74ccfcce701d3d888fbc6b'
Hendrik Leppkes [Wed, 14 Oct 2015 11:54:50 +0000 (13:54 +0200)]
Merge commit 'c1aac39eaccd32dc3b74ccfcce701d3d888fbc6b'

* commit 'c1aac39eaccd32dc3b74ccfcce701d3d888fbc6b':
  build: add Solaris symbol versioning

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoMerge commit 'b9ece15a01782b4f301c0c139d1d7b20f848914c'
Hendrik Leppkes [Wed, 14 Oct 2015 11:48:22 +0000 (13:48 +0200)]
Merge commit 'b9ece15a01782b4f301c0c139d1d7b20f848914c'

* commit 'b9ece15a01782b4f301c0c139d1d7b20f848914c':
  nullenc: Use the wrapped avframe pseudo-encoder

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoMerge commit 'd00a8fd417ad20cecbc7ca17b25f352655148fb1'
Hendrik Leppkes [Wed, 14 Oct 2015 11:44:33 +0000 (13:44 +0200)]
Merge commit 'd00a8fd417ad20cecbc7ca17b25f352655148fb1'

* commit 'd00a8fd417ad20cecbc7ca17b25f352655148fb1':
  yuv4mpeg: Use the wrapped avframe pseudo-encoder

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoMerge commit '00332e0a064dad866812de9162b009cbaba6f5df'
Hendrik Leppkes [Wed, 14 Oct 2015 11:25:25 +0000 (13:25 +0200)]
Merge commit '00332e0a064dad866812de9162b009cbaba6f5df'

* commit '00332e0a064dad866812de9162b009cbaba6f5df':
  wrapped_avframe: Initial implementation

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
4 years agoavformat/mov: fix integer overflow
Ganesh Ajjanagadde [Sat, 10 Oct 2015 17:39:28 +0000 (13:39 -0400)]
avformat/mov: fix integer overflow

Partially fixes Ticket 4727.

-duration is not a safe expression, since duration can be INT_MIN.
One might ask how it can become INT_MIN.
Although it is true that line 2574 is no longer reached with INT_MIN due
to commit 053e80f6eaf8d87521fe58ea96886b6ee0bbe59d (which fixed another
integer overflow issue), mov_update_dts_shift is called on line 3549 as
well, right after a read of untrusted data.
One can do the fix locally there, but that function is already a huge
mess. Changing mov_update_dts_shift is likely better.

This changes duration to INT_MIN + 1 in such cases. This should not make any
practical difference since such streams are anyway fuzzer files.

Tested with FATE.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
4 years agoffserver_config: check for INT_MIN before doing FFABS
Ganesh Ajjanagadde [Fri, 9 Oct 2015 15:25:16 +0000 (11:25 -0400)]
ffserver_config: check for INT_MIN before doing FFABS

FFABS(INT_MIN) is not safe. Alternative of using FFNABS is not as
readable.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
4 years agox86/vp9itxfm: fix register clobbering in ff_vp9_idct_idct_4x4_add_12_sse2
James Almer [Tue, 13 Oct 2015 23:03:52 +0000 (20:03 -0300)]
x86/vp9itxfm: fix register clobbering in ff_vp9_idct_idct_4x4_add_12_sse2

Reviewed-by: Henrik Gramner <henrik@gramner.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 years agodnxhdenc: fix access outside of image
Christophe Gisquet [Tue, 13 Oct 2015 20:02:41 +0000 (22:02 +0200)]
dnxhdenc: fix access outside of image

This is the same test as for the 8bit case.

4 years agox86: simple_idct10_template: use const
Christophe Gisquet [Tue, 13 Oct 2015 19:21:39 +0000 (21:21 +0200)]
x86: simple_idct10_template: use const

This avoid going through constants.c while still sharing them
with proresdsp.asm

Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavutil/fifo: Fix thread saftey of av_fifo_generic_peek()
Michael Niedermayer [Tue, 13 Oct 2015 16:29:04 +0000 (18:29 +0200)]
avutil/fifo: Fix thread saftey of av_fifo_generic_peek()

changing the context state and restoring it is not safe if another
thread writes data into the fifo

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoswscale: fix ticket #4881
Pedro Arthur [Tue, 13 Oct 2015 16:32:07 +0000 (13:32 -0300)]
swscale: fix ticket #4881

When scaling only a slice of a frame the output was written always
in the first lines leaving the rest of the frame black.

4 years agoavcodec/mips/aaccoder_mips: Sync with the generic code
Nedeljko Babic [Tue, 13 Oct 2015 14:14:51 +0000 (16:14 +0200)]
avcodec/mips/aaccoder_mips: Sync with the generic code

This patch fixes build of AAC encoder optimized for mips that was broken due
 to some changes in generic code that were not propagated to the optimized code.

Also, some functions in the optimized code are basically duplicate of functions
 from generic code. Since they do not bring enough improvement to the optimized
 code to justify their existence, they are removed (which improves
 maintainability of the optimized code).

Optimizations disabled in 97437bd are enabled again.

Signed-off-by: Nedeljko Babic <nedeljko.babic@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agovp9: use registers for constant loading where possible.
Ronald S. Bultje [Mon, 12 Oct 2015 13:54:59 +0000 (09:54 -0400)]
vp9: use registers for constant loading where possible.

4 years agovp9: refactor itx coefficients and share between 8 and 10/12bpp.
Ronald S. Bultje [Sun, 11 Oct 2015 00:31:57 +0000 (20:31 -0400)]
vp9: refactor itx coefficients and share between 8 and 10/12bpp.

4 years agovp9: add itxfm_add eob shortcuts to 10/12bpp functions.
Ronald S. Bultje [Sat, 10 Oct 2015 02:35:49 +0000 (22:35 -0400)]
vp9: add itxfm_add eob shortcuts to 10/12bpp functions.

These aren't quite as helpful as the ones in 8bpp, since over there,
we can use pmulhrsw, but here the coefficients have too many bits to
be able to take advantage of pmulhrsw. However, we can still skip
cols for which all coefs are 0, and instead just zero the input data
for the row itx. This helps a few % on overall decoding speed.

4 years agovp9: add 10/12bpp idct_idct_32x32 sse2 SIMD version.
Ronald S. Bultje [Mon, 12 Oct 2015 14:19:05 +0000 (10:19 -0400)]
vp9: add 10/12bpp idct_idct_32x32 sse2 SIMD version.

4 years agovp9: 10/12bpp sse2 SIMD for iadst16.
Ronald S. Bultje [Thu, 8 Oct 2015 20:53:44 +0000 (16:53 -0400)]
vp9: 10/12bpp sse2 SIMD for iadst16.

4 years agovp9: refactor 10/12bpp dc-only code in 4x4/8x8 and add to 16x16.
Ronald S. Bultje [Mon, 12 Oct 2015 14:21:48 +0000 (10:21 -0400)]
vp9: refactor 10/12bpp dc-only code in 4x4/8x8 and add to 16x16.

4 years agovp9: add 10/12bpp sse2 SIMD version for idct_idct_16x16.
Ronald S. Bultje [Thu, 8 Oct 2015 14:16:36 +0000 (10:16 -0400)]
vp9: add 10/12bpp sse2 SIMD version for idct_idct_16x16.

4 years agovp9: add 10/12bpp sse2 SIMD versions of iadst8x8.
Ronald S. Bultje [Wed, 7 Oct 2015 19:42:52 +0000 (15:42 -0400)]
vp9: add 10/12bpp sse2 SIMD versions of iadst8x8.

4 years agovp9: add 10/12bpp sse2 SIMD for idct_idct_8x8.
Ronald S. Bultje [Mon, 12 Oct 2015 14:17:23 +0000 (10:17 -0400)]
vp9: add 10/12bpp sse2 SIMD for idct_idct_8x8.

4 years agovp9: add 12bpp sse2 versions of iadst4.
Ronald S. Bultje [Wed, 7 Oct 2015 01:59:10 +0000 (21:59 -0400)]
vp9: add 12bpp sse2 versions of iadst4.

4 years agovp9: initial attempt at a idct_idct_4x4 12bpp x86 simd (sse2) impl.
Ronald S. Bultje [Mon, 12 Oct 2015 14:16:56 +0000 (10:16 -0400)]
vp9: initial attempt at a idct_idct_4x4 12bpp x86 simd (sse2) impl.

The trouble with this function is that intermediates overflow 31+sign
bits, so I've added some helpers (that will also be used in 10/12bpp
8x8, 16x16 and 32x32) to make that easier, basically emulating a half-
assed pmaddqd using 2xpmaddwd. It's currently sse2-only, if anyone sees
potential in adding ssse3, I'd love to hear it.

4 years agovp9: add x86 simd (sse2/ssse3) for iadst4 10bpp functions.
Ronald S. Bultje [Tue, 6 Oct 2015 15:42:03 +0000 (11:42 -0400)]
vp9: add x86 simd (sse2/ssse3) for iadst4 10bpp functions.

4 years agovp9: add 10bpp simd (mmxext/ssse3) for idct_idct_4x4.
Ronald S. Bultje [Tue, 6 Oct 2015 15:03:45 +0000 (11:03 -0400)]
vp9: add 10bpp simd (mmxext/ssse3) for idct_idct_4x4.

4 years agovp9: add 10/12bpp mmxext-optimized iwht_iwht_4x4 function.
Ronald S. Bultje [Tue, 6 Oct 2015 15:01:48 +0000 (11:01 -0400)]
vp9: add 10/12bpp mmxext-optimized iwht_iwht_4x4 function.

4 years agox86: dct-test: add more idcts
Christophe Gisquet [Mon, 12 Oct 2015 17:37:50 +0000 (19:37 +0200)]
x86: dct-test: add more idcts

In particular for 10 and 12 bits.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavcodec/dct-test: Print failure notice below the failed *dct
Michael Niedermayer [Mon, 12 Oct 2015 21:40:34 +0000 (23:40 +0200)]
avcodec/dct-test: Print failure notice below the failed *dct

This makes it easier to see where a failure happens

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agox86: simple_idct: 12bits versions
Christophe Gisquet [Mon, 12 Oct 2015 17:37:49 +0000 (19:37 +0200)]
x86: simple_idct: 12bits versions

On 12 frames of a 444p 12 bits DNxHR sequence, _put function:
C:         78902 decicycles in idct,  262071 runs,     73 skips
avx:       32478 decicycles in idct,  262045 runs,     99 skips

Difference between the 2:
stddev:    0.39 PSNR:104.47 MAXDIFF:    2

This is unavoidable and due to the scale factors used in the x86
version, which cannot match the C ones.

In addition, the trick of adding an initial bias to the input of a
pass can overflow, as the input coefficients are already 15bits,
which is the maximum this function can handle.

Overall, however, the omse on 12 bits samples goes from 0.16916 to
0.16883. Reducing rowshift by 1 improves to 0.0908, but causes
overflows.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agox86: simple_idct(_put): 10bits versions
Christophe Gisquet [Mon, 12 Oct 2015 17:37:47 +0000 (19:37 +0200)]
x86: simple_idct(_put): 10bits versions

Modeled from the prores version. Clips to [0;1023] and is bitexact.
Bitexactness requires to add offsets in different places compared to
prores or C, and makes the function approximately 2% slower.

For 16 frames of a DNxHD 4:2:2 10bits test sequence:

C:    60861 decicycles in idct, 1048205 runs,    371 skips
sse2: 27567 decicycles in idct, 1048216 runs,    360 skips
avx:  26272 decicycles in idct, 1048171 runs,    405 skips

The add version is not implemented, so the corresponding dsp
function is set to NULL to make it clear in a code executing it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agox86: simple_idct10_template: fix overflow in pass
Christophe Gisquet [Mon, 12 Oct 2015 17:37:46 +0000 (19:37 +0200)]
x86: simple_idct10_template: fix overflow in pass

When the input of a pass has 15 or 16 bits of precision (in particular
the column pass), the addition of a bias to W4 may lead to overflows
in the input to pmaddwd.

This requires postponing the adding of the bias to after the first
butterfly. To do so, the fact that m15, unused although zeroed, is
exploited. In case the pass is safe, an address can be directly used,
and the number of xmm regs can be decreased. Otherwise, the 32bits bias
is loaded into it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavconv: Add loop option.
Alexandra Hájková [Fri, 9 Oct 2015 20:11:56 +0000 (22:11 +0200)]
avconv: Add loop option.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
4 years agoavfilter/af_sidechaincompress: replace FFABS with fabs
Ganesh Ajjanagadde [Tue, 13 Oct 2015 07:37:18 +0000 (09:37 +0200)]
avfilter/af_sidechaincompress: replace FFABS with fabs

4 years agoavfilter/af_astats: replace FFABS with fabs
Ganesh Ajjanagadde [Tue, 13 Oct 2015 07:34:39 +0000 (09:34 +0200)]
avfilter/af_astats: replace FFABS with fabs

4 years agoavfilter/af_agate: replace FFABS with fabs
Ganesh Ajjanagadde [Tue, 13 Oct 2015 07:31:16 +0000 (09:31 +0200)]
avfilter/af_agate: replace FFABS with fabs

4 years agofate: add 10bits YUV4:2:2 dnxhd test
Christophe Gisquet [Mon, 12 Oct 2015 17:37:43 +0000 (19:37 +0200)]
fate: add 10bits YUV4:2:2 dnxhd test

It was useful to (accidentally?) spot an overflow in the column pass
of the x86 simple_idct10 implementation.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavcodec/simple_idct10: improve precision
Christophe Gisquet [Mon, 12 Oct 2015 17:37:45 +0000 (19:37 +0200)]
avcodec/simple_idct10: improve precision

omse goes from 0.03060703 (which fails for dct-test) to 0.01663750.
This also actually improve the error of decoding the sample generated
by fate-vsynth3-dnxhd1080i-10bit using simple_idct10 to FAANI, which
goes (when resampled to yuv422p) from:
stddev:    0.06 PSNR: 72.28 MAXDIFF:    1
to identical.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agox86: prores: templatize 10 bits simple_idct
Christophe Gisquet [Mon, 12 Oct 2015 17:37:44 +0000 (19:37 +0200)]
x86: prores: templatize 10 bits simple_idct

This should be reused for a generic simple_idct10 function.
Requires a bit of trickery to declare common constants in C.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoaacenc: shorten name of ff_aac_adjust_common_prediction
Rostislav Pehlivanov [Mon, 12 Oct 2015 22:33:07 +0000 (23:33 +0100)]
aacenc: shorten name of ff_aac_adjust_common_prediction

To keep it similar to the other functions which are all named *_pred.

4 years agoaacenc: increase size of s->planar_samples[] from 6 to 8
Rostislav Pehlivanov [Mon, 12 Oct 2015 22:25:45 +0000 (23:25 +0100)]
aacenc: increase size of s->planar_samples[] from 6 to 8

Left out of last commit which added support for eight channel audio.

4 years agompegvideo: dnxhdenc: permute 10bits content
Christophe Gisquet [Mon, 12 Oct 2015 17:37:42 +0000 (19:37 +0200)]
mpegvideo: dnxhdenc: permute 10bits content

Dequant or encoding were trying to reverse a scan that hadn't been
applied...

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavcodec/mips/aaccoder_mips: Disable ff_aac_coder_init_mips() to prevent build failure
Michael Niedermayer [Mon, 12 Oct 2015 16:45:31 +0000 (18:45 +0200)]
avcodec/mips/aaccoder_mips: Disable ff_aac_coder_init_mips() to prevent build failure

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavformat/webvttdec: Don't stop parsing on comments
Ricardo Constantino [Sun, 11 Oct 2015 16:11:02 +0000 (17:11 +0100)]
avformat/webvttdec: Don't stop parsing on comments

Signed-off-by: Ricardo Constantino <wiiaboo@gmail.com>
4 years agofate/subtitles: Add a new test for WebVTT
Ricardo Constantino [Sun, 11 Oct 2015 16:11:03 +0000 (17:11 +0100)]
fate/subtitles: Add a new test for WebVTT

Includes escapes that should now be supported and a few features not yet
fully supported, like comments, regions, classes, ruby, and lang.

All were tested with https://quuz.org/webvtt/ for validation, except
regions because the validator doesn't support them yet, and I couldn't
find any other way to validate WebVTT.

Signed-off-by: Ricardo Constantino <wiiaboo@gmail.com>
4 years agoavcodec/webvttdec: Deal with WebVTT escapes
Ricardo Constantino [Sun, 11 Oct 2015 16:11:01 +0000 (17:11 +0100)]
avcodec/webvttdec: Deal with WebVTT escapes

Bare ampersand characters are still accepted, even though out-of-spec.
Also fixes adjacent tags not being parsed.

Fixes trac #4915

Signed-off-by: Ricardo Constantino <wiiaboo@gmail.com>
4 years agodoc/filters: s/nb_inputs/inputs for stack filters
Lou Logan [Mon, 12 Oct 2015 18:09:22 +0000 (10:09 -0800)]
doc/filters: s/nb_inputs/inputs for stack filters

Signed-off-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Paul B Mahol <onemda@gmail.com>
4 years agoavcodec: Don't lock on init for codecs without an init function
Derek Buitenhuis [Mon, 12 Oct 2015 18:25:51 +0000 (15:25 -0300)]
avcodec: Don't lock on init for codecs without an init function

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
4 years agofate: increase fuzz on fate-aac-tns-encode test
Rostislav Pehlivanov [Mon, 12 Oct 2015 16:15:30 +0000 (17:15 +0100)]
fate: increase fuzz on fate-aac-tns-encode test

Fails on SunOS and old GCC (<=4.6 is ancient) versions.

4 years agoaacenc_utils: fit find_form_factor() below 80 chars per line
Rostislav Pehlivanov [Mon, 12 Oct 2015 16:14:50 +0000 (17:14 +0100)]
aacenc_utils: fit find_form_factor() below 80 chars per line

4 years agoaacenc: add support for changing options based on a profile
Rostislav Pehlivanov [Mon, 12 Oct 2015 15:50:10 +0000 (16:50 +0100)]
aacenc: add support for changing options based on a profile

This commit adds the ability for a profile to set the default
options, as well as for the user to override such options
by simply stating them in the command line while still keeping
the same profile, as long as those options are still permitted by
the profile.

Example: setting the profile to aac_low (the default) will turn
PNS and IS on. They can be disabled by -aac_pns 0 and -aac_is 0,
respectively. Turning on -aac_pred 1 will cause the profile to be
elevated to aac_main, as long as no options forbidding aac_main
have been entered (like AAC-LTP, which will be pushed soon).

A useful feature is that by setting the profile to mpeg2_aac_low,
all MPEG4 features will be disabled and if the user tries to enable
them then the program will exit with an error. This profile is
signalled with the same bitstream as aac_low (MPEG4) but some devices
and decoders will fail if any MPEG4 features have been enabled.

4 years agoavfilter/drawtext: allow to format pts with strftime
Alex Agranovsky [Sat, 10 Oct 2015 18:52:34 +0000 (14:52 -0400)]
avfilter/drawtext: allow to format pts with strftime

Signed-off-by: Alex Agranovsky <alex@sighthound.com>
4 years agolavf/tee: allow multiple stream specifiers in select.
Bela Bodecs [Sat, 10 Oct 2015 19:29:12 +0000 (21:29 +0200)]
lavf/tee: allow multiple stream specifiers in select.

It makes possible to put multiple stream specifier into the select
option separated by comma.
eg. select=\'a:0,v\'

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
Signed-off-by: Nicolas George <george@nsup.org>
4 years agoaacenc: add support for encoding 7.1 channel audio
Rostislav Pehlivanov [Mon, 12 Oct 2015 14:53:17 +0000 (15:53 +0100)]
aacenc: add support for encoding 7.1 channel audio

This commit implements support for 7.1 channel audio. There's no
more predefined bitstream channel mappings so going beyond 8 channels
(and 7 channels exactly) will require programmable channel elements,
which is already underway.

4 years agoaacenc_quantization: fix header description
Rostislav Pehlivanov [Mon, 12 Oct 2015 14:41:50 +0000 (15:41 +0100)]
aacenc_quantization: fix header description

Two guesses as to which file was used as boilerplate.

4 years agodict: Change return type of av_dict_copy()
Vittorio Giovara [Sun, 4 Oct 2015 11:27:15 +0000 (13:27 +0200)]
dict: Change return type of av_dict_copy()

av_dict_set() could return an error, so forward it appropriately.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
4 years agoAAC encoder: memoize quantize_band_cost
Claudio Freire [Mon, 12 Oct 2015 06:56:22 +0000 (03:56 -0300)]
AAC encoder: memoize quantize_band_cost

The bulk of calls to quantize_band_cost are replaced
by a call to a version that memoizes, greatly improving
performance, since during coefficient search there is
a great deal of repeat work.

Memoization cannot always be applied, so do this in a
different function, and leave the original as-is.

4 years agoavformat/flvdec: set broken_sizes for "metadatacreator : MEGA"
Michael Niedermayer [Mon, 12 Oct 2015 01:32:54 +0000 (03:32 +0200)]
avformat/flvdec: set broken_sizes for "metadatacreator : MEGA"

The 2nd size value is wrong for the sample file

Fixes: Ticket4903

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoAAC encoder: fix assertion error re SF differences
Claudio Freire [Mon, 12 Oct 2015 02:00:46 +0000 (23:00 -0300)]
AAC encoder: fix assertion error re SF differences

Intermediate results can indeed violate SF delta. Instead of asserting
there, just make the code safe, and assert on the final result.

Also re-clamp SFs more often in short windows (which tend to violate
the restriction when encoding the switch from one window to the other)

4 years agoaaccoder_twoloop.h: simplify and comment ff_pns_bits()
Rostislav Pehlivanov [Mon, 12 Oct 2015 00:42:43 +0000 (01:42 +0100)]
aaccoder_twoloop.h: simplify and comment ff_pns_bits()

4 years agoaacenc_utils: add 'inline' flag to find_form_factor, silence warning
Rostislav Pehlivanov [Mon, 12 Oct 2015 00:12:43 +0000 (01:12 +0100)]
aacenc_utils: add 'inline' flag to find_form_factor, silence warning

Seems it was forgotten.

4 years agox86/vf_w3fdif: use aligned loads in w3fdif_simple_high
James Almer [Sun, 11 Oct 2015 23:07:12 +0000 (20:07 -0300)]
x86/vf_w3fdif: use aligned loads in w3fdif_simple_high

Found-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 years agox86/vf_w3fdif: simplify w3fdif_simple_high
James Almer [Sat, 10 Oct 2015 23:29:56 +0000 (20:29 -0300)]
x86/vf_w3fdif: simplify w3fdif_simple_high

Signed-off-by: James Almer <jamrial@gmail.com>
4 years agoavcodec: remove leftover iff_byterun1 decoder
Andreas Cadhalpun [Sun, 11 Oct 2015 20:31:45 +0000 (22:31 +0200)]
avcodec: remove leftover iff_byterun1 decoder

It was merged with the iff_ilbm decoder in commit
929a24efff9a208a52748605eb412ffb915c1403.

Define AV_CODEC_ID_IFF_BYTERUN1 as AV_CODEC_ID_IFF_ILBM for API
compatibility.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
4 years agoffplay: eliminate stream_component_close forward declaration
Marton Balint [Tue, 6 Oct 2015 23:21:40 +0000 (01:21 +0200)]
ffplay: eliminate stream_component_close forward declaration

No change in fuctionality.

Signed-off-by: Marton Balint <cus@passwd.hu>
4 years agoffplay: close streams and AVFormatContext in the main thread
Marton Balint [Fri, 6 Feb 2015 00:37:53 +0000 (01:37 +0100)]
ffplay: close streams and AVFormatContext in the main thread

To avoid race conditions.

Signed-off-by: Marton Balint <cus@passwd.hu>
4 years agointmath: remove av_ctz.
Ronald S. Bultje [Sun, 11 Oct 2015 21:43:29 +0000 (17:43 -0400)]
intmath: remove av_ctz.

It's a non-installed header and only used in one place (flacenc).
Since ff_ctz is static inline, it's fine to use that instead.

4 years agoAAC encoder tests: increase fuzz for pred test
Claudio Freire [Sun, 11 Oct 2015 21:45:27 +0000 (18:45 -0300)]
AAC encoder tests: increase fuzz for pred test

MIPS needs more fuzz

4 years agoffmpeg: modify tty state when stderr is redirected
Ganesh Ajjanagadde [Fri, 31 Jul 2015 12:36:27 +0000 (08:36 -0400)]
ffmpeg: modify tty state when stderr is redirected

Removes unnecessary isatty(), fixes Ticket2964

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
4 years agoAAC encoder: cosmetics from last commit
Claudio Freire [Sun, 11 Oct 2015 21:06:02 +0000 (18:06 -0300)]
AAC encoder: cosmetics from last commit

Reindent

4 years agoAAC encoder: Extensive improvements
Claudio Freire [Sun, 11 Oct 2015 20:29:50 +0000 (17:29 -0300)]
AAC encoder: Extensive improvements

This finalizes merging of the work in the patches in ticket #2686.

Improvements to twoloop and RC logic are extensive.

The non-exhaustive list of twoloop improvments includes:
 - Tweaks to distortion limits on the RD optimization phase of twoloop
 - Deeper search in twoloop
 - PNS information marking to let twoloop decide when to use it
   (turned out having the decision made separately wasn't working)
 - Tonal band detection and priorization
 - Better band energy conservation rules
 - Strict hole avoidance

For rate control:
 - Use psymodel's bit allocation to allow proper use of the bit
   reservoir. Don't work against the bit reservoir by moving lambda
   in the opposite direction when psymodel decides to allocate more/less
   bits to a frame.
 - Retry the encode if the effective rate lies outside a reasonable
   margin of psymodel's allocation or the selected ABR.
 - Log average lambda at the end. Useful info for everyone, but especially
   for tuning of the various encoder constants that relate to lambda
   feedback.

Psy:
 - Do not apply lowpass with a FIR filter, instead just let the coder
   zero bands above the cutoff. The FIR filter induces group delay,
   and while zeroing bands causes ripple, it's lost in the quantization
   noise.
 - Experimental VBR bit allocation code
 - Tweak automatic lowpass filter threshold to maximize audio bandwidth
   at all bitrates while still providing acceptable, stable quality.

I/S:
 - Phase decision fixes. Unrelated to #2686, but the bugs only surfaced
   when the merge was finalized. Measure I/S band energy accounting for
   phase, and prevent I/S and M/S from being applied both.

PNS:
 - Avoid marking short bands with PNS when they're part of a window
   group in which there's a large variation of energy from one window
   to the next. PNS can't preserve those and the effect is extremely
   noticeable.

M/S:
 - Implement BMLD protection similar to the specified in
   ISO-IEC/13818:7-2003, Appendix C Section 6.1. Since M/S decision
   doesn't conform to section 6.1, a different method had to be
   implemented, but should provide equivalent protection.
 - Move the decision logic closer to the method specified in
   ISO-IEC/13818:7-2003, Appendix C Section 6.1. Specifically,
   make sure M/S needs less bits than dual stereo.
 - Don't apply M/S in bands that are using I/S

Now, this of course needed adjustments in the compare targets and
fuzz factors of the AAC encoder's fate tests, but if wondering why
the targets go up (more distortion), consider the previous coder
was using too many bits on LF content (far more than required by
psy), and thus those signals will now be more distorted, not less.

The extra distortion isn't audible though, I carried extensive
ABX testing to make sure.

A very similar patch was also extensively tested by Kamendo2 in
the context of #2686.

4 years agoavfilter/buffersrc: add av_warn_unused_result attributes
Ganesh Ajjanagadde [Tue, 6 Oct 2015 22:53:47 +0000 (18:53 -0400)]
avfilter/buffersrc: add av_warn_unused_result attributes

This adds av_warn_unused_result whenever it is relevant.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
4 years agoconfigure: fix configure when using gcc
Jean-Yves Avenard [Sun, 11 Oct 2015 13:37:42 +0000 (09:37 -0400)]
configure: fix configure when using gcc

Fixes Ticket4922.

Commit 060102389e572abb2beaed3b9f5e1036aeea43f1 broke configure, since
the inversion ! was missed while converting the grep to a case
statement.

Reviewed-by: Nicolas George <george@nsup.org>
Reviewed-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
4 years agox86/vf_w3fdif: move pxor outside the loop in w3fdif_complex_low
James Almer [Sat, 10 Oct 2015 23:28:11 +0000 (20:28 -0300)]
x86/vf_w3fdif: move pxor outside the loop in w3fdif_complex_low

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 years agoavcodec/sipr: use AVERROR return code instead of -1
Paul B Mahol [Sat, 10 Oct 2015 15:31:12 +0000 (17:31 +0200)]
avcodec/sipr: use AVERROR return code instead of -1

Signed-off-by: Paul B Mahol <onemda@gmail.com>
4 years agoavformat/rsd: support XADP tag
Paul B Mahol [Sun, 11 Oct 2015 16:33:57 +0000 (18:33 +0200)]
avformat/rsd: support XADP tag

It appears that Xbox ADPCM is same as WAV adpcm.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
4 years agoavcodec/pngdec: Use av_malloc_array()
Michael Niedermayer [Sun, 11 Oct 2015 14:39:41 +0000 (16:39 +0200)]
avcodec/pngdec: Use av_malloc_array()

Suggested-by: ubitux
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavcodec/jpeg2000dec: Check that step_x/y are valid before use in JPEG2000_PGOD_PCRL
Michael Niedermayer [Sun, 11 Oct 2015 12:52:39 +0000 (14:52 +0200)]
avcodec/jpeg2000dec: Check that step_x/y are valid before use in JPEG2000_PGOD_PCRL

Fixes: CID1322305 and CID1322304

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agobuild: add Solaris symbol versioning
Sean McGovern [Wed, 7 Oct 2015 21:39:37 +0000 (17:39 -0400)]
build: add Solaris symbol versioning

The versioning facility in the Solaris linker differs from Linux in 3 ways:

1. It does not support globs in linker scripts for
symbol versioning -- this is a GNU extension.

2. The linker argument is '-M', instead of '--version-script'.

3. It is picky about line endings.
Each symbol or directive must be on a line of it's own.

Let's use make_sunver.pl from GCC to generate a version script that works
correctly with the Solaris linker. It's function is to correctly expand the
globs in the original generated version script.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
4 years agoavfilter: add selectivecolor filter
Clément Bœsch [Sun, 7 Jun 2015 18:21:28 +0000 (20:21 +0200)]
avfilter: add selectivecolor filter

4 years agoavcodec/pngdec: Alloc buffer after blend_op check in handle_p_frame_apng()
Michael Niedermayer [Sun, 11 Oct 2015 11:09:56 +0000 (13:09 +0200)]
avcodec/pngdec: Alloc buffer after blend_op check in handle_p_frame_apng()

Avoids memleak on error
Fixes CID1322342

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoRevert "Merge commit '8b830ee9a26d47b138f12a82085cdb372f407f1e'" (avconv: Do not...
Michael Niedermayer [Sun, 11 Oct 2015 10:10:42 +0000 (12:10 +0200)]
Revert "Merge commit '8b830ee9a26d47b138f12a82085cdb372f407f1e'" (avconv: Do not try to configure filter outputs without streams)

FFmpeg already tests for this case in configure_output_filter() and printed a
clearer error message

example:
./ffmpeg -f lavfi -i color -f lavfi -i color -filter_complex "[1]null[x],[0][1]overlay" -f null -
before the merge / after the revert:
Filter null has a unconnected output

after the merge / before the revert:
Output pad "default" with type video of the filter instance "Parsed_null_0" of null not connected to any destination
Error configuring complex filters.
Invalid argument

This reverts commit 3e3779cd517e4d2d1f21d5eb6afdb428cd3c1aa0, reversing
changes made to 0b28039a44b33753d77116691d680bd60f3bac1f.

Reviewed-by: Ganesh Ajjanagadde <gajjanag@mit.edu>
4 years agoavutil/intmath: Change debruijn_ctz64 to use 8bit elements
Michael Niedermayer [Sun, 11 Oct 2015 02:21:01 +0000 (04:21 +0200)]
avutil/intmath: Change debruijn_ctz64 to use 8bit elements

This reduces the memory & cache need from 256 to 64 bytes
the code also seems faster with this change

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavutil/mathematics: speed up av_gcd by using Stein's binary GCD algorithm
Ganesh Ajjanagadde [Sun, 11 Oct 2015 01:58:47 +0000 (21:58 -0400)]
avutil/mathematics: speed up av_gcd by using Stein's binary GCD algorithm

This uses Stein's binary GCD algorithm:
https://en.wikipedia.org/wiki/Binary_GCD_algorithm
to get a roughly 4x speedup over Euclidean GCD on standard architectures
with a compiler intrinsic for ctzll, and a roughly 2x speedup otherwise.
At the moment, the compiler intrinsic is used on GCC and Clang due to
its easy availability.

Quick note regarding overflow: yes, subtractions on int64_t can, but the
llabs takes care of that. The llabs is also guaranteed to be safe, with
no annoying INT64_MIN business since INT64_MIN being a power of 2, is
shifted down before being sent to llabs.

The binary GCD needs ff_ctzll, an extension of ff_ctz for long long (int64_t). On
GCC, this is provided by a built-in. On Microsoft, there is a
BitScanForward64 analog of BitScanForward that should work; but I can't confirm.
Apparently it is not available on 32 bit builds; so this may or may not
work correctly. On Intel, per the documentation there is only an
intrinsic for _bit_scan_forward and people have posted on forums
regarding _bit_scan_forward64, but often their documentation is
woeful. Again, I don't have it, so I can't test.

As such, to be safe, for now only the GCC/Clang intrinsic is added, the rest
use a compiled version based on the De-Bruijn method of Leiserson et al:
http://supertech.csail.mit.edu/papers/debruijn.pdf.

Tested with FATE, sample benchmark (x86-64, GCC 5.2.0, Haswell)
with a START_TIMER and STOP_TIMER in libavutil/rationsl.c, followed by a
make fate.

aac-am00_88.err:
builtin:
714 decicycles in av_gcd,    4095 runs,      1 skips

de-bruijn:
1440 decicycles in av_gcd,    4096 runs,      0 skips

previous:
2889 decicycles in av_gcd,    4096 runs,      0 skips

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavcodec/pngdec: Check blend_op.
Michael Niedermayer [Sun, 11 Oct 2015 01:46:44 +0000 (03:46 +0200)]
avcodec/pngdec: Check blend_op.

Fixes CID1322359, CID1322358

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agodoc/resampler, swresample/options: use proper capitalization
Ganesh Ajjanagadde [Sat, 10 Oct 2015 16:48:08 +0000 (12:48 -0400)]
doc/resampler, swresample/options: use proper capitalization

Proper names should be capitalized in all user facing API as far as
possible. The option names themselves have not been changed since:
1. We consistently keep option names in lower case.
2. Changing them would break existing scripts.
3. I suspect that we want to be similar to Sox and its relevant options.

The converse is also true: improper names should not be capitalized
generally.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agogitignore: ignore object file temporaries
Ganesh Ajjanagadde [Sat, 10 Oct 2015 16:36:27 +0000 (12:36 -0400)]
gitignore: ignore object file temporaries

During a build, a lot of *.o.-hash files are created - had not noticed
this as they are usually dumped in tmpfs on Linux. However, they
sometimes are present during a long build in the project directory, making it
annoying to commit while the project is being built.

These have been observed with Clang, -fsanitize-undefined on Arch Linux,
though other configurations may also generate such temporaries.

The solution here is on lines with the Linux kernel's .gitignore:
https://github.com/torvalds/linux/blob/master/.gitignore.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agodoc/scaler, swscale/options: use proper capitalization
Ganesh Ajjanagadde [Sat, 10 Oct 2015 16:54:33 +0000 (12:54 -0400)]
doc/scaler, swscale/options: use proper capitalization

Proper names should be capitalized in all user facing API as far as
possible. The option names themselves have not been changed since:
1. We consistently keep option names in lower case.
2. Changing them would break existing scripts.

The converse is also true: improper names should not be capitalized
generally.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agofate/async: test error code from underlying protocol
Zhang Rui [Sat, 10 Oct 2015 09:51:09 +0000 (17:51 +0800)]
fate/async: test error code from underlying protocol

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavformat/async: pass internal I/O error
Zhang Rui [Sat, 10 Oct 2015 09:51:08 +0000 (17:51 +0800)]
avformat/async: pass internal I/O error

av_fifo_generic_write() does not return any error code.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 years agoavfilter/x86/vf_w3fdif: add colons after labels
Paul B Mahol [Sat, 10 Oct 2015 15:53:22 +0000 (17:53 +0200)]
avfilter/x86/vf_w3fdif: add colons after labels

Signed-off-by: Paul B Mahol <onemda@gmail.com>
4 years agolavc: move bitstream filter args to the bsf ctx
Rodger Combs [Thu, 8 Oct 2015 02:09:26 +0000 (21:09 -0500)]
lavc: move bitstream filter args to the bsf ctx

4 years agoavfilter/vf_w3fdif: add x86 SIMD
Paul B Mahol [Wed, 7 Oct 2015 19:03:16 +0000 (21:03 +0200)]
avfilter/vf_w3fdif: add x86 SIMD

Signed-off-by: Paul B Mahol <onemda@gmail.com>
4 years agodoc/developer: minor typo and consistency fixes
Ganesh Ajjanagadde [Thu, 8 Oct 2015 13:01:38 +0000 (09:01 -0400)]
doc/developer: minor typo and consistency fixes

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
4 years agodoc/build_system: miscellaneous typo and consistency fixes
Ganesh Ajjanagadde [Thu, 8 Oct 2015 13:01:04 +0000 (09:01 -0400)]
doc/build_system: miscellaneous typo and consistency fixes

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
4 years agonullenc: Use the wrapped avframe pseudo-encoder
Luca Barbato [Fri, 9 Oct 2015 14:24:05 +0000 (16:24 +0200)]
nullenc: Use the wrapped avframe pseudo-encoder

4 years agoyuv4mpeg: Use the wrapped avframe pseudo-encoder
Luca Barbato [Fri, 9 Oct 2015 14:22:42 +0000 (16:22 +0200)]
yuv4mpeg: Use the wrapped avframe pseudo-encoder

4 years agowrapped_avframe: Initial implementation
Luca Barbato [Fri, 9 Oct 2015 12:12:04 +0000 (14:12 +0200)]
wrapped_avframe: Initial implementation

4 years agoavcodec/ac3enc: fix undefined negative left shift
Ganesh Ajjanagadde [Fri, 9 Oct 2015 19:59:04 +0000 (15:59 -0400)]
avcodec/ac3enc: fix undefined negative left shift

This should fix the undefined behavior reported in:
https://trac.ffmpeg.org/ticket/4727.

I can reproduce this at runtime: simply stick in an abort call in
asym_quant to check if c < 0 and run FATE. I don't know ac3 so I can't
confirm if negative coefficients are intentional, but at the moment they
clearly are according to FATE.

This resolves the undefined behavior. Tested with FATE.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>