1415 Commits

Author SHA1 Message Date
Marton Balint 876cd3f60b avformat: add url field to AVFormatContext
This will replace the 1024 character limited filename field. Compatiblity for
output contexts are provided by copying filename field to URL if URL is unset
and by providing an internal function for muxers to set both url and filename
at once.

Signed-off-by: Marton Balint <cus@passwd.hu>
2018-01-28 23:06:43 +01:00
wm4 d70672d86c avformat, hls: add a flag to signal unavailability of seeking
The seek function can just return an error if seeking is unavailable,
but often this is too late. Add a flag that signals that the stream is
unseekable, and use it in HLS.
2018-01-27 04:10:52 +01:00
Jacob Trimble b8b660d125 avutil/aes_ctr: Add method to set 16-byte IV.
Signed-off-by: Jacob Trimble <modmaker@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-01-23 21:48:31 +01:00
wm4 0a314e2601 avformat: make avformat_network_init() explicitly optional
It was sort of optional before - if you didn't call it, networking was
initialized on demand, and an ugly warning was logged. Also, the doxygen
comments threatened that it would be made strictly required one day.

Make it explicitly optional. I would prefer to deprecate it fully, but
there might still be legitimate reasons to use this. But the average
user won't need it.

This is needed only for two reasons: to initialize TLS libraries like
OpenSSL and GnuTLS, and winsock.

OpenSSL and GnuTLS were already silently initialized on demand if the
global network init function was not called. They also have various
thread-safety acrobatics, which make concurrent initialization within
libavformat safe. In addition, the libraries are moving towards making
their global init functions safe, which removes all need for central
global init. In particular, GnuTLS 3.5.16 and OpenSSL 1.1.0g have been
found to have safe init functions. In all cases, they use internal
reference counters to avoid that the global uninit functions interfere
with concurrent uses of the library by other API users who called global
init.

winsock should be thread-safe as well, and maintains an internal
reference counter as well.

Since we still support ancient TLS libraries, which do not have this
fixed, and since it's unknown whether winsock and GnuTLS
reinitialization is costly in any way, don't deprecate the libavformat
functions yet.
2018-01-16 12:57:04 +01:00
wm4 f909eaef2b avformat: deprecate another ffserver API leftover 2018-01-16 12:54:53 +01:00
James Almer 34bcd1ed9a avfilter: deprecate avfilter_link_get_channels()
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-06 11:01:16 -03:00
James Almer dd1f0409fd Revert "avfilter: deprecate avfilter_link_get_channels()"
This reverts commit d8a972e760.

It was applied by accident before it could be reviewed.
2018-01-05 22:13:28 -03:00
James Almer d8a972e760 avfilter: deprecate avfilter_link_get_channels()
And move the channels field to the public section of the struct.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-01-05 17:49:09 -03:00
Rostislav Pehlivanov 6f93b062f9 lavr: deprecate the entire library
Deprecate the entire library. Merged years ago to provide compatibility
with Libav, it remained unmaintained by the FFmpeg project and duplicated
functionality provided by libswresample.

In order to improve consistency and reduce attack surface, as well as to ease
burden on maintainers, it has been deprecated. Users of this library are asked
to migrate to libswresample, which, as well as providing more functionality,
is faster and has higher accuracy.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-01-04 01:38:22 +00:00
wm4 d37689506f lavc: replace and deprecate the lock manager
Use static mutexes instead of requiring a lock manager. The behavior
should be roughly the same before and after this change for API users
which did not set the lock manager at all (except that a minor memory
leak disappears).
2017-12-26 02:50:00 +01:00
James Darnley 4be95be4fb avutil: add AVX-512 flags 2017-12-24 22:02:41 +01:00
Mark Thompson ce14216f78 lavc: Mark all AVHWAccel structures as const 2017-12-19 23:24:24 +00:00
Mark Thompson 2ac0b5ef57 lavc: Deprecate av_hwaccel_next() and av_register_hwaccel() 2017-12-19 23:22:31 +00:00
Mark Thompson b3033d75a4 lavc: Add codec metadata to indicate hardware support 2017-12-19 23:21:53 +00:00
Aman Gupta 750ba387a5 lavc/mediacodec: use AVMediaCodecDeviceContext hw_device_ctx if set
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
2017-12-16 00:52:27 +01:00
Aman Gupta e758eed6f2 lavu/hwcontext: add AV_HWDEVICE_TYPE_MEDIACODEC
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
2017-12-16 00:52:00 +01:00
wm4 1425fc7993 avcodec: add metadata to identify wrappers and hardware decoders
Explicitly identify decoder/encoder wrappers with a common name. This
saves API users from guessing by the name suffix. For example, they
don't have to guess that "h264_qsv" is the h264 QSV implementation, and
instead they can just check the AVCodec .codec and .wrapper_name fields.

Explicitly mark AVCodec entries that are hardware decoders or most
likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing
API users listing hardware decoders in a more generic way. The proposed
AVCodecHWConfig does not provide this information fully, because it's
concerned with decoder configuration, not information about the fact
whether the hardware is used or not.

AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software
implementations in case the hardware is not capable.

Based on a patch by Philip Langdale <philipl@overt.org>.

Merges Libav commit 47687a2f8a.
2017-12-14 19:37:56 +01:00
James Almer eaad98b1b6 Merge commit '4f5d426f441e1cf901a1270f0fe75e19b2336ed2'
* commit '4f5d426f441e1cf901a1270f0fe75e19b2336ed2':
  stereo3d: Support view type for frame sequence type

Merged-by: James Almer <jamrial@gmail.com>
2017-11-29 21:06:49 -03:00
Vittorio Giovara 4f5d426f44 stereo3d: Support view type for frame sequence type
Implement detection in h264 and hevc and insertion in framepack filter.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2017-11-28 14:56:51 -05:00
Mark Thompson bdec215247 lavc: Mark all AVHWAccel structures as const 2017-11-26 21:41:19 +00:00
Mark Thompson eec57846fd lavc: Deprecate av_hwaccel_next() and av_register_hwaccel() 2017-11-26 21:36:31 +00:00
Mark Thompson 2c094e8ff7 lavc: Add codec metadata to indicate hardware support 2017-11-26 21:35:49 +00:00
Mark Thompson 98f4a81142 doc/APIchanges: Fix lavu versions for OpenCL changes
Also fix a typo and fill hashes and dates.
2017-11-25 15:13:15 +00:00
Mark Thompson f75c0f0335 lavu,lavfi,ffmpeg: Remove experimental OpenCL API
This was added in early 2013 and abandoned several months later; as far as
I can tell, there are no external users.  Future OpenCL use will be via
hwcontext, which requires neither special OpenCL-only API nor global state
in libavutil.

All internal users are also deleted - this is just the unsharp filter
(replaced by unsharp_opencl, which is more flexible) and the deshake filter
(no replacement).
2017-11-22 23:20:39 +00:00
Mark Thompson 2759ef1b93 lavu: OpenCL hwcontext implementation 2017-11-22 23:02:29 +00:00
Mark Thompson 18e2094130 lavu: Add OpenCL hardware pixfmt 2017-11-22 23:01:29 +00:00
James Almer 02e7135c47 Merge commit 'f53d483dede665f7ea81772880bb8039c1800379'
* commit 'f53d483dede665f7ea81772880bb8039c1800379':
  lavc: external hardware frame pool initialization

Includes the fix from e724bdfffb

Merged-by: James Almer <jamrial@gmail.com>
2017-11-11 20:33:26 -03:00
James Almer 87c94fddfc Merge commit '010841850469e383709dfc472e1bc18b918e7f09'
* commit '010841850469e383709dfc472e1bc18b918e7f09':
  APIchanges: Update bump dates

Merged-by: James Almer <jamrial@gmail.com>
2017-10-23 19:17:31 -03:00
wm4 f53d483ded lavc: external hardware frame pool initialization
This adds a new API, which allows the API user to query the required
AVHWFramesContext parameters. This also reduces code duplication across
the hwaccels by introducing ff_decode_get_hw_frames_ctx(), which uses
the new API function. It takes care of initializing the hw_frames_ctx
if needed, and does additional error handling and API usage checking.

Support for VDA and Cuvid missing.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2017-10-19 17:10:59 +02:00
Michael Niedermayer 4c3907b04c doc/APIchanges: Add 3.4 cut point
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-10-11 01:23:49 +02:00
Michael Niedermayer 5ca7a5f83d doc/APIchanges: Update
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-10-11 00:16:15 +02:00
Karthick J 3db323cd37 avdevice/decklink_dec: Added Closed caption decode from VANC
Signed-off-by: Karthick J <kjeyapal@akamai.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2017-09-28 21:06:12 +02:00
James Almer d814997a7e Merge commit '81c719a7bcecc84547c015933bd958b1195479b6'
* commit '81c719a7bcecc84547c015933bd958b1195479b6':
  frame: allow align=0 (meaning automatic) for av_frame_get_buffer()

See https://ffmpeg.org/pipermail/ffmpeg-devel/2017-September/215834.html

Merged-by: James Almer <jamrial@gmail.com>
2017-09-27 23:31:53 -03:00
James Almer b1f4bad6ef Merge commit '5921255d15399c457307c53d2c6a8636440e7dd3'
* commit '5921255d15399c457307c53d2c6a8636440e7dd3':
  cpu: add a function for querying maximum required data alignment

Adapted to work with the arbitrary runtime cpuflag changes av_force_cpu_flags()
can generate.

Merged-by: James Almer <jamrial@gmail.com>
2017-09-27 23:03:57 -03:00
James Almer f8c3f39801 Merge commit 'f7013b3531f530715be6ba023986c405a483e486'
* commit 'f7013b3531f530715be6ba023986c405a483e486':
  lavc: deprecate refcounted_frames field

Merged-by: James Almer <jamrial@gmail.com>
2017-09-26 16:42:18 -03:00
Vittorio Giovara 21e3c8ed0f pixdesc: Add API to map color property names to enum values
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2017-09-21 13:33:29 +02:00
Vittorio Giovara 30ec98a223 pixdesc: Add API to map color property names to enum values
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2017-09-21 13:23:21 +02:00
Mark Thompson 7ff766fc9b lavc: Add flag to mark packets containing trusted input 2017-09-13 22:25:29 +01:00
Mark Thompson b395f1ec46 lavu: Add DRM hwcontext 2017-09-13 22:03:27 +01:00
Nicolas George 32156cc740 lavfi/buffersrc: add av_buffersrc_close(). 2017-09-08 10:31:01 +02:00
James Almer e6270cad08 avcodec: add AV_HWACCEL_CODEC_CAP_EXPERIMENTAL flag
This flag replaces the deprecated, non-prefixed HWACCEL_CODEC_CAP_EXPERIMENTAL
one.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2017-09-04 17:48:41 -03:00
wm4 595a9eed61 lavf: make avio_read_partial() public
Main use-case is proxying avio through a foreign I/O layer and a custom
AVIO context, without losing latency and performance characteristics.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>

Merged from Libav commit 173b56218f.
2017-09-01 17:56:33 +02:00
Anton Khirnov 18c7e2f749 avio: add a destructor for AVIOContext
Before this commit, AVIOContext is to be freed with a plain av_free(),
which prevents us from adding any deeper structure to it.

(cherry picked from commit 99684f3ae7)
Signed-off-by: James Almer <jamrial@gmail.com>
2017-09-01 01:51:15 -03:00
wm4 a69a4ad477 lavf: make avio_read_partial() public
Main use-case is proxying avio through a foreign I/O layer and a custom
AVIO context, without losing latency and performance characteristics.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2017-08-30 14:29:14 +02:00
Vittorio Giovara afc9ecdd47 Add single precision planar RGB pixel formats
Add a pixel format flag to identify this family.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2017-08-15 15:26:20 +02:00
wm4 2e32cc697e imgutils: add function to clear an image to black
Black isn't always just memset(ptr, 0, size). Limited YUV in particular
requires relatively non-obvious values, and filling a frame with
repeating 0 bytes is disallowed in some contexts. With component sizes
larger than 8 or packed YUV, this can become relatively complicated. So
having a generic function for this seems helpful.

In order to handle the complex cases in a generic way without destroying
performance, this code attempts to compute a black pixel, and then uses
that value to clear the image data quickly by using a function like
memset.

Common cases like yuv410p10 or rgba can't be handled with a simple
memset, so there is some code to fill memory with 2/4/8 byte patterns.
For the remaining cases, a generic slow fallback is used.

Signed-off-by: Anton Khirnov <anton@khirnov.net>

Merged from Libav commit 45df7adc1d.
2017-08-08 13:37:37 +02:00
wm4 608203c23b lavc, lavu: move frame cropping to a convenience function
Signed-off-by: Anton Khirnov <anton@khirnov.net>

Merged from Libav commit 47399ccdfd.
2017-08-08 13:35:09 +02:00
James Almer 01a3cfcb07 doc/APIChanges: add missing entry for ICC Profile side data type. 2017-07-27 14:21:41 -03:00
wm4 2ac1f6f3ff imgutils: add function to clear an image to black
Black isn't always just memset(ptr, 0, size). Limited YUV in particular
requires relatively non-obvious values, and filling a frame with
repeating 0 bytes is disallowed in some contexts. With component sizes
larger than 8 or packed YUV, this can become relatively complicated. So
having a generic function for this seems helpful.

In order to handle the complex cases in a generic way without destroying
performance, this code attempts to compute a black pixel, and then uses
that value to clear the image data quickly by using a function like
memset.

Common cases like yuv410p10 or rgba can't be handled with a simple
memset, so there is some code to fill memory with 2/4/8 byte patterns.
For the remaining cases, a generic slow fallback is used.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2017-07-26 23:21:26 +02:00
wm4 2085ef02e2 lavc, lavu: move frame cropping to a convenience function
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2017-07-26 23:20:40 +02:00