1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00
Commit Graph

3849 Commits

Author SHA1 Message Date
Zhang Rui
87ff61b9ab avutil/fifo: add function av_fifo_generic_peek_at()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-14 20:23:58 +02:00
Ganesh Ajjanagadde
55d3e97970 avutil/intmath: use de Bruijn based ff_ctz
It has already been demonstrated that the de Bruijn method has benefits
over the current implementation: commit 971d12b7f9.
That commit implemented it for long long, this extends it to the int version.

Tested with FATE.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2015-10-14 13:39:42 -04:00
Hendrik Leppkes
b994788353 Merge commit '11c5f438ff83da5040e85bfa6299f56b321d32ef'
* commit '11c5f438ff83da5040e85bfa6299f56b321d32ef':
  dict: Change return type of av_dict_copy()

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-14 14:01:11 +02:00
Michael Niedermayer
147b12162d 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>
2015-10-13 19:08:42 +02:00
Vittorio Giovara
11c5f438ff 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>
2015-10-12 13:35:01 +02:00
Ronald S. Bultje
93866c2aa2 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.
2015-10-11 18:03:10 -04:00
Michael Niedermayer
2a4d1a66e8 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>
2015-10-11 04:21:01 +02:00
Ganesh Ajjanagadde
971d12b7f9 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>
2015-10-11 04:08:41 +02:00
Rodger Combs
0562f95902 lavu/opt: add flag to return NULL when applicable in av_opt_get
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-09 04:12:57 -05:00
Rodger Combs
f36baeebc5 lavu/opt: switch AV_OPT flags to shift-based formatting 2015-10-09 04:12:57 -05:00
Ganesh Ajjanagadde
1d4af04adf avutil/attributes: add av_warn_unused_result
GCC 3.4 introduced an attribute warn_unused_result to warn when a programmer
discards the return value. Applying this judiciously across the codebase can help
in fixing a lot of problems. At a high level, functions which return error codes
should always be checked. More concretely, consider the functions ff_add_format
and the like in avfilter/formats.h. A quick examination shows that a large portion
of libavfilter fails to handle the associated errors, usually AVERROR(ENOMEM).
The above example was where I observed the utility of this, but it should be
useful in many places across the code base.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 19:30:20 +02:00
Henrik Gramner
2c3dbff1d8 avutil/avstring: Inline some tiny functions
They're short enough that inlining them actually reduces code size due to
all the overhead associated with making a function call.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-10-03 13:45:37 +02:00
Hendrik Leppkes
5fa5e73e81 Merge commit '1aa24df74c052a73175c43e57d35b4835e537ec8'
* commit '1aa24df74c052a73175c43e57d35b4835e537ec8':
  lavu: Deprecate AVFrame.error[]

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-03 09:52:39 +02:00
Henrik Gramner
17710550c4 x86inc: Make cpuflag() and notcpuflag() return 0 or 1
Makes it possible to use them in arithmetic expressions.
2015-10-01 18:14:12 +02:00
Vittorio Giovara
1aa24df74c lavu: Deprecate AVFrame.error[]
These field are difficult to interpret, and are provided by a single
encoder (mpegvideoenc). In general they do not belong to a structure
containing raw data only, so remove them from AVFrame.

Mpegvideoenc now uses a private field in Picture for its internal
computations.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-30 16:44:33 +02:00
Vicente Olivert Riera
d00bb8addc mips: intreadwrite: Only execute that code for mips r1 or r2
MIPS R6 supports unaligned memory access and does not have
the load/store-left/right family of instructions.

Signed-off-by: Vicente Olivert Riera <Vincent.Riera at imgtec.com>
Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-09-29 11:10:37 +02:00
Henrik Gramner
ad9a543e93 avutil/avstring: Inline some tiny functions
They're short enough that inlining them actually reduces code size due to
all the overhead associated with making a function call.
2015-09-26 22:08:02 +02:00
Timo Rothenpieler
31ee86cd98 avutil/opencl: Fix volatile pointer
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-09-26 20:28:29 +02:00
James Almer
36e1665d3d avutil/attributes: add AV_GCC_VERSION_AT_MOST
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-09-18 12:41:29 -03:00
Ganesh Ajjanagadde
63cdb6e4a5 avutil/log: fix zero length gnu_printf format string warning
This should fix warning reported by fate client:
http://fate.ffmpeg.org/report.cgi?time=20150917113121&slot=x86_32-linux-gnu-gcc-4.5.1-have_6regs.
Untested.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-17 18:58:01 +02:00
Kevin Wheatley
4a66422450 pixfmt: Add new SMPTE color primaries and transfer characteristic values
Appeared in ITU-T Rec H.265 10/2014.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-17 10:31:43 +02:00
Rodger Combs
8e924629eb lavu/avstring: switch AV_ESCAPE_FLAGs to shift-based formatting
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-15 00:00:57 +02:00
Hendrik Leppkes
eadf6cb2c4 Merge commit '7b02cb29d9d60cdd5ef321043d11d02023e7dc8f'
* commit '7b02cb29d9d60cdd5ef321043d11d02023e7dc8f':
  pixdesc: Document the component order

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-12 13:03:04 +02:00
Hendrik Leppkes
ba42096d9a Merge commit 'e336c51e6ffcdb93fbcf3c6153d378400608526b'
* commit 'e336c51e6ffcdb93fbcf3c6153d378400608526b':
  pixdesc: Consistently order components

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-12 12:54:25 +02:00
James Almer
d5f8a642f6 x86: port PSIGNW to cpuflags
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-09-11 23:27:03 -03:00
Michael Niedermayer
77d03b0ebb avutil/version: Bump for avpriv_get_trc_function_from_trc() and AVCOL_PRI/TRC_SMPTEST428_1 and AVCOL_TRC_SMPTEST2084
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-11 01:12:28 +02:00
Kevin Wheatley
bac9048265 avutil/color_utils: Add basic transfer functions for each AVColorTransferCharacteristic
Most functions are valid over a domain and range of [0.0-1.0] but
some are defined over greater. This patch does not deal with
AVColorRange and assumes AVCOL_RANGE_JPEG for the returned values.

Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com>
2015-09-10 23:53:05 +02:00
Michael Niedermayer
24426172d3 avutil/pixfmt: Name "SMPTE ST 428-1" in AVColorPrimaries the same as in AVColorTransferCharacteristic
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-10 22:50:42 +02:00
Michael Niedermayer
b5939ba09c avutil/pixdesc: Use "-" in color_primaries_names to be consistent with color_transfer_names
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-10 22:47:51 +02:00
Kevin Wheatley
6d4b394b5d avutil/pixdesc: Add SMPTE ST 2084 and ST 428-1 pixel descriptions
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-10 22:34:47 +02:00
Kevin Wheatley
c3cd6dd106 avutil/pixfmt: Add additional primaries and transfer characteristic enumerations from ITU-T Rec H.265
Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com>
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-10 22:32:52 +02:00
Luca Barbato
7b02cb29d9 pixdesc: Document the component order 2015-09-10 12:08:57 +02:00
Hendrik Leppkes
e336c51e6f pixdesc: Consistently order components
Ensure that the components are ordered consistently, ie. always
RGB(A) and YUV(A). This allows to identify a specific plane on a given
pixel format without hard-coding knowledge of the plane order.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-09-10 12:08:57 +02:00
Hendrik Leppkes
c7ed26ad60 pixdesc: Add missing alpha flag for yuva420p9be
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-09-10 12:08:57 +02:00
Clément Bœsch
9571a56009 avutil/opt: refactor pixel/sample fmt common case 2015-09-08 22:49:33 +02:00
Clément Bœsch
9117748cff avutil/opt: add AV_OPT_TYPE_BOOL 2015-09-08 22:39:20 +02:00
Hendrik Leppkes
5d8e836d0e Replace all remaining occurances of step/depth_minus1 and offset_plus1 2015-09-08 17:10:48 +02:00
Hendrik Leppkes
151aa2ebff Merge commit '2268db2cd052674fde55c7d48b7a5098ce89b4ba'
* commit '2268db2cd052674fde55c7d48b7a5098ce89b4ba':
  lavu: Drop the {minus,plus}1 suffix from AVComponentDescriptor fields

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-08 16:35:28 +02:00
Hendrik Leppkes
f53569a93f Merge commit '6b3ef7f080293956b2e5212b83135c6b051212e9'
* commit '6b3ef7f080293956b2e5212b83135c6b051212e9':
  lavu: Remove bit packing from AVComponentDescriptor

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-08 14:53:34 +02:00
Hendrik Leppkes
c734b34b04 Merge commit 'b8b5d8274471129f122858bc74ad09284dae6ab7'
* commit 'b8b5d8274471129f122858bc74ad09284dae6ab7':
  lavu: extend size of the AVPixFmtDescriptor.flags field

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-08 14:53:13 +02:00
Vittorio Giovara
2268db2cd0 lavu: Drop the {minus,plus}1 suffix from AVComponentDescriptor fields
The new fields can be accessed directly and are more intelligible.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-07 12:37:47 +02:00
Vittorio Giovara
6b3ef7f080 lavu: Remove bit packing from AVComponentDescriptor
There is no practical benefit in having this structure elements
bit packed given the size of the structure and its usage.
Change types from uint16_t (packed) to plain int in order to simplify
modifying the structure and accessing its fields.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-07 12:36:56 +02:00
wm4
b8b5d82744 lavu: extend size of the AVPixFmtDescriptor.flags field
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-07 12:36:04 +02:00
Hendrik Leppkes
b7601b5f3d Merge commit 'a686e58165ca0f83966431a9166cb6e17bf6095c'
* commit 'a686e58165ca0f83966431a9166cb6e17bf6095c':
  des: Add missing include

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-07 12:28:25 +02:00
Hendrik Leppkes
160e92c8bf Merge commit 'e88103a7f92cf27a2868b50acc8a9912f6088249'
* commit 'e88103a7f92cf27a2868b50acc8a9912f6088249':
  Bump major versions of all libraries

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-05 21:35:46 +02:00
James Almer
c956cb2c02 avutil/pixfmt: remove duplicate AVPixelFormat values
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-09-05 15:51:55 -03:00
Hendrik Leppkes
d83dd630a0 lavu: Drop FF_API_GET_CHANNEL_LAYOUT_COMPAT cruft
FATE refs changed to accomodate for the new default behavior of the function.
Numbers are now interpreted as a channel layout, instead of a number of channels.
2015-09-05 20:36:19 +02:00
Hendrik Leppkes
237cf3786e lavu: Drop old deprecated AVOption API
Deprecated in 2011/10
2015-09-05 18:30:35 +02:00
Hendrik Leppkes
137f075993 lavu/hmac: remove deprecated type ids 2015-09-05 18:07:20 +02:00
Hendrik Leppkes
545559e43d Remove FF_CONST_AVUTIL55 cruft 2015-09-05 17:56:28 +02:00