Martin Storsjö [Thu, 24 Aug 2017 20:27:16 +0000 (23:27 +0300)]
configure: Use dllexport/dllimport for data symbols across DLLs with mingw
This avoids having to use pseudo relocations.
The version script used for exporting functions is skipped as soon
as the set of object files contains symbols marked with dllexport,
therefore we need to use makedef to produce the full list of symbols
to be exported.
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Thu, 24 Aug 2017 20:05:21 +0000 (23:05 +0300)]
makedef: Extend the script for use with mingw tools as well
This is invoked by setting the NM and AR variables to the names of
those specific tools. The ARCH variable also needs to be provided,
to choose the symbol prefix (nm doesn't provide any option that
dumps the architecture easily).
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Thu, 24 Aug 2017 20:04:38 +0000 (23:04 +0300)]
makedef: Fold as much text transformations as possible into the initial dump
This avoids redoing them for each expression in the list.
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Thu, 24 Aug 2017 19:07:04 +0000 (22:07 +0300)]
msvc: Properly specify dllexport for data symbols shared across dll boundaries
We currently only have exported data symbols within libavcodec, but
the concept is easy to extend to other libraries if necessary.
The attribute declaration needs to be in a private header though,
since we can't use CONFIG_SHARED in public installed headers.
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Wed, 30 Aug 2017 19:04:30 +0000 (22:04 +0300)]
Remove support for building for mingw32ce (Windows CE)
The toolchain for this target is unmaintained since many years.
While it has been continuously build tested on fate, it hasn't
actually been tested at runtime since many, many years (and back
then, only a few codecs in libavcodec were tested).
So far, keeping support for it has been mostly effortless, but
the compiler does seem to have issues with dllimported data symbols,
ending up as internal compiler errors in some cases. Instead of
jumping through further hoops to work around that, just remove the
target.
Signed-off-by: Martin Storsjö <martin@martin.st>
wm4 [Thu, 17 Aug 2017 13:01:44 +0000 (15:01 +0200)]
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>
Derek Buitenhuis [Thu, 24 Aug 2017 20:04:13 +0000 (21:04 +0100)]
swscale: Do not expand a macro with 'defined' in it
Fixes:
libswscale/utils.c:1632:5: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
#if USE_MMAP
^
libswscale/utils.c:1577:49: note: expanded from macro 'USE_MMAP'
#define USE_MMAP (HAVE_MMAP && HAVE_MPROTECT && defined MAP_ANONYMOUS)
^
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Martin Storsjö [Thu, 24 Aug 2017 19:17:16 +0000 (22:17 +0300)]
configure: Include d3d11va_extralibs in libavutil
This fixes shared WinRT/UWP builds with d3d11va enabled.
Signed-off-by: Martin Storsjö <martin@martin.st>
Michael Niedermayer [Mon, 21 Aug 2017 07:55:48 +0000 (09:55 +0200)]
yadif: Account for the buffer alignment while processing the frame edges
Avoid out of bound reads.
Bug-Id: 1031
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Martin Storsjö [Sun, 9 Jul 2017 20:52:10 +0000 (23:52 +0300)]
aarch64: Fix negative movrel offsets for windows
On windows, the offset for the relocation doesn't get stored in
the relocation itself, but as an unsigned immediate in the opcode.
Therefore, negative offsets has to be handled via a separate sub
instruction, just as on MachO.
Signed-off-by: Martin Storsjö <martin@martin.st>
Luca Barbato [Sun, 16 Jul 2017 12:35:40 +0000 (14:35 +0200)]
png: Support RGBA64 pixel format
Luca Barbato [Sun, 16 Jul 2017 11:46:16 +0000 (13:46 +0200)]
png: Report more details regarding unsupported pixel formats
Mark Thompson [Sat, 12 Aug 2017 21:16:13 +0000 (22:16 +0100)]
mpeg2enc: Don't mark all streams as component video
Since there is no information about the source format, "unspecified"
is the correct value to write here.
All tests using the MPEG-2 encoder are updated, as this changes the
header on all outputs.
Mark Thompson [Tue, 1 Aug 2017 14:35:14 +0000 (15:35 +0100)]
lavc: Add mpeg2_metadata bitstream filter
Mark Thompson [Thu, 4 May 2017 22:03:03 +0000 (23:03 +0100)]
lavc: Add coded bitstream read/write support for MPEG-2
Also enable MPEG-2 support in the trace_headers filter.
Mark Thompson [Mon, 14 Aug 2017 15:46:32 +0000 (16:46 +0100)]
cbs_h2645: Return error if writing fails
Anton Khirnov [Thu, 17 Aug 2017 10:15:58 +0000 (12:15 +0200)]
h264dec: use a large enough field for reference list modification values
pic_num can be at most 17-bit, so uint8_t is not sufficient.
Found-By: Bradley Sepos <bradley@bradleysepos.com>
CC: libav-stable@libav.org
Piotr Bandurski [Sun, 24 Jun 2012 11:34:02 +0000 (11:34 +0000)]
xwddec: support 8bpp grayscale
(cherry picked from commit
b9c94e826e7551027754ecfa60e3e487e0c28fcb)
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diego Biurrun [Fri, 11 Aug 2017 17:15:20 +0000 (19:15 +0200)]
dfa: Disallow odd width/height and add proper bounds check for DDS1 chunks
DDS1 chunks are decoded in 2x2 blocks, odd chunk width or height is not
allowed in that case. Also ensure that the decode buffer is big enough
for all blocks being processed.
Bug-Id: CVE-2017-9992
CC: libav-stable@libav.org
Mark Thompson [Sat, 12 Aug 2017 20:32:29 +0000 (21:32 +0100)]
vaapi_h265: Reduce the amount of padding in the stream
It is not necessary to pad to the CTU size. The CB size of 8x8 should be
sufficient, but due to constraints in the Intel driver (the one usable
implementation of this) it has to be padded to 16x16 like in H.264.
Mark Thompson [Sun, 23 Jul 2017 22:22:54 +0000 (23:22 +0100)]
vaapi_h265: Add support for AUD NAL units
Matching the H.264 encoder.
Mark Thompson [Sun, 14 May 2017 20:36:24 +0000 (21:36 +0100)]
vaapi_h265: Convert to use coded bitstream infrastructure
Also improves the metadata and generally makes the configuration
a bit cleaner.
Mark Thompson [Sun, 7 May 2017 22:02:09 +0000 (23:02 +0100)]
vaapi_h264: Add support for SEI recovery points
Included by default with non-IDR intra frames.
Mark Thompson [Sun, 7 May 2017 21:58:56 +0000 (22:58 +0100)]
vaapi_h264: Add support for AUD NAL units
Adds a new private option to enable them (off by default).
Mark Thompson [Sun, 7 May 2017 14:01:42 +0000 (15:01 +0100)]
vaapi_h264: Convert to use coded bitstream infrastructure
Mark Thompson [Sun, 23 Jul 2017 15:23:51 +0000 (16:23 +0100)]
lavc: Add hevc_metadata bitstream filter
This is able to modify some header metadata found in the VPS/SPS/VUI,
and can also add/remove AUDs.
Mark Thompson [Thu, 4 May 2017 22:10:19 +0000 (23:10 +0100)]
lavc: Add h264_redundant_pps bitstream filter
This applies a specific fixup to some Bluray streams which contain
redundant PPSs modifying irrelevant parameters of the stream which
confuse other transformations which require correct extradata.
A new single global PPS is created, and all of the redundant PPSs
within the stream are removed.
Mark Thompson [Thu, 4 May 2017 22:09:02 +0000 (23:09 +0100)]
lavc: Add h264_metadata bitstream filter
This is able to modify some header metadata found in the SPS/VUI,
and can also add/remove AUDs and insert user data in SEI NAL units.
Mark Thompson [Thu, 4 May 2017 22:06:20 +0000 (23:06 +0100)]
lavc: Add trace_headers bitstream filter
Supports all streams that the coded bitstream infrastructure does
(currently H.264 and H.265).
Mark Thompson [Sun, 14 May 2017 15:32:00 +0000 (16:32 +0100)]
lavc: Add coded bitstream read/write support for H.265
Mark Thompson [Sun, 14 May 2017 15:18:25 +0000 (16:18 +0100)]
lavc: Add coded bitstream read/write support for H.264
Mark Thompson [Thu, 4 May 2017 22:01:51 +0000 (23:01 +0100)]
lavc: Add coded bitstream read/write API
Vittorio Giovara [Tue, 8 Aug 2017 14:30:32 +0000 (16:30 +0200)]
pixfmt: Support chroma-derived and ictcp color matrices
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Vittorio Giovara [Tue, 8 Aug 2017 14:06:29 +0000 (16:06 +0200)]
h264: Add support for alternative transfer characterics SEI
The use of this SEI is for backward compatibility in HLG HDR systems:
older devices that cannot interpret the "arib-std-b67" transfer will
get the compatible transfer (usually bt709 or bt2020) from the VUI,
while newer devices that can interpret HDR will read the SEI and use
its value instead.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Mark Thompson [Sun, 30 Apr 2017 18:27:54 +0000 (19:27 +0100)]
vaapi_encode: Move quality option to common code
Use AVCodecContext.compression_level rather than a private option,
replacing the H.264-specific quality option (which stays only for
compatibility).
This now works with the H.265 encoder in the i965 driver, as well as
the existing cases with the H.264 encoder.
Mark Thompson [Fri, 23 Jun 2017 23:29:14 +0000 (00:29 +0100)]
hevc: Validate the number of long term reference pictures
This would overflow if the stream contained a value greater than the
maximum allowed by the standard (32).
Mark Thompson [Fri, 23 Jun 2017 23:29:02 +0000 (00:29 +0100)]
hevc: Improve stream constraint values in common header
Add comments to describe the sources of the constraint values expressed here,
and add some more related values which will be used in following patches.
Fix the incorrect values for SPS and PPS count (they are not the same as those
used for H.264), and remove HEVC_MAX_CU_SIZE because it is not used anywhere.
Mark Thompson [Fri, 23 Jun 2017 23:30:20 +0000 (00:30 +0100)]
h264: Add stream constraint values to the common header
With comments describing the derivation of each value.
Sean McGovern [Sat, 29 Jul 2017 23:17:16 +0000 (19:17 -0400)]
mov: move stsd finalization to an appropriate place
mov_finalize_stsd_codec() parses stream information from the ALAC extradata,
so run it after the extradata processing is completed in mov_read_stsd().
Fixes playback of 96kHz ALAC streams muxed by qaac or the reference alac encoder.
Adapted from an FFmpeg patch by Hendrik Leppkes <h.leppkes@gmail.com>
Bug-Id: 1072
Sean McGovern [Fri, 28 Jul 2017 20:29:35 +0000 (16:29 -0400)]
mov: Do not set stsd_count if mov_read_stsd() fails
Based on an FFmpeg patch by Michael Niedermayer <michael@niedermayer.cc>
Sean McGovern [Fri, 28 Jul 2017 20:17:33 +0000 (16:17 -0400)]
mov: log and return early on non-positive stsd entry counts
Based on an FFmpeg patch by Michael Niedermayer <michael@niedermayer.cc>
Anton Khirnov [Sat, 11 Feb 2017 15:49:34 +0000 (16:49 +0100)]
hevcdec: add a CUVID hwaccel
Anton Khirnov [Mon, 24 Jul 2017 09:42:09 +0000 (11:42 +0200)]
fate/hevc: specify output pixel format explicitly
This allows running those tests with hwaccel.
Anton Khirnov [Mon, 24 Jul 2017 09:41:31 +0000 (11:41 +0200)]
hevcdec: set the active SPS before calling get_format()
This way the SPS is available to the hwaccel init code.
Peter Große [Fri, 30 Jun 2017 15:28:53 +0000 (17:28 +0200)]
avconv: when using -loop option bail out if seek to start fails
Fixes an infinite loop when a demuxer fails to seek to the start of the input.
Signed-off-by: Peter Große <pegro@friiks.de>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Anton Khirnov [Thu, 27 Jul 2017 10:42:03 +0000 (12:42 +0200)]
cuvid: add cuvid.h to SKIPHEADERS
Anton Khirnov [Sat, 11 Feb 2017 15:49:34 +0000 (16:49 +0100)]
h264dec: add a CUVID hwaccel
Some parts of the code are based on a patch by
Timo Rothenpieler <timo@rothenpieler.org>
Anton Khirnov [Sat, 1 Jul 2017 10:09:58 +0000 (12:09 +0200)]
decode: add a per-frame private data for hwaccel use
This will be useful in the CUVID hwaccel. It should also eventually
replace current decoder-specific mechanisms used by various other
hwaccels.
Anton Khirnov [Sat, 1 Jul 2017 10:09:58 +0000 (12:09 +0200)]
decode: add a mechanism for performing delayed processing on the decoded frames
This will be useful in the CUVID hwaccel.
Anton Khirnov [Sat, 1 Jul 2017 09:12:44 +0000 (11:12 +0200)]
decode: add a method for attaching lavc-internal data to frames
Use the AVFrame.opaque_ref field. The original user's opaque_ref is
wrapped in the lavc struct and then unwrapped before the frame is
returned to the caller.
This new struct will be useful in the following commits.
Anton Khirnov [Sat, 1 Jul 2017 09:32:56 +0000 (11:32 +0200)]
decode: avoid leaks on failure in ff_get_buffer()
If the get_buffer() call fails, the frame might have some side data
already set. Make sure it gets freed.
CC: libav-stable@libav.org
Anton Mitrofanov [Thu, 15 Jun 2017 22:56:16 +0000 (18:56 -0400)]
h264dec: Fix mix of lossless and lossy MBs decoding
CC: libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Anton Mitrofanov [Thu, 15 Jun 2017 22:56:14 +0000 (18:56 -0400)]
h264_cabac: Fix CABAC+8x8dct in 4:4:4
Use the correct ctxIdxInc calculation for coded_block_flag.
Keep old behavior for old versions of x264 for backward compatibility.
CC: libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Yogender Kumar Gupta [Thu, 15 Jun 2017 22:56:13 +0000 (18:56 -0400)]
h264dec: fix Lossless Decoding (Profile 244) for 8x8 Intra Prediction
CC: libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Anton Khirnov [Sat, 22 Jul 2017 12:52:27 +0000 (14:52 +0200)]
h264dec: track the last seen value of x264_build
Do not use the one in the SEI directly as that is reset at certain
points.
Inspired by patches from Michael Niedermayer <michaelni@gmx.at> and
Anton Mitrofanov <BugMaster@narod.ru>.
CC: libav-stable@libav.org
wm4 [Sat, 22 Jul 2017 21:05:14 +0000 (23:05 +0200)]
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>
wm4 [Sat, 22 Jul 2017 21:05:13 +0000 (23:05 +0200)]
lavc, lavu: move frame cropping to a convenience function
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Sean McGovern [Tue, 25 Jul 2017 22:04:32 +0000 (18:04 -0400)]
rmdec: add missing brackets to compound statement
Accidentally left out of
95ce02b35d3d1bb16111031df1d82a6e4d894d36.
Huang, Zhengxu [Thu, 20 Jul 2017 08:16:44 +0000 (16:16 +0800)]
lavf/vf_deinterlace_qsv: Enable the qsv deinterlace vpp
The current qsv deinterlace module does not work at all because MSDK needs user to pass
extra parameters to enable hint functions,such as denoise,deinterlace,composition and so on.
Usage:-hwaccel qsv -r 25 -c:v h264_qsv -i in -vf deinterlace_qsv=bob -b 2M
-maxrate 3M -c:v h264_qsv -y out.h264
Signed-off-by: ChaoX A Liu <chaox.a.liu@gmail.com>
Signed-off-by: Zhengxu Huang <zhengxu.maxwell@gmail.com>
Signed-off-by: Andrew Zhang <huazh407@gmail.com>
Change-Id: I9e7ddcf884f2788c2820f6c98affacfb9d8f3287
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
Huang, Zhengxu [Fri, 21 Jul 2017 04:12:44 +0000 (12:12 +0800)]
libavcodec/mjpeg_qsv: Add QSV MJPEG encoder
usage:
-hwaccel qsv -c:v h264_qsv -i in -c:v mjpeg_qsv -global_quality 80 -f
mjpeg out
Signed-off-by: ChaoX A Liu <chaox.a.liu@gmail.com>
Signed-off-by: Zhengxu Huang <zhengxu.maxwell@gmail.com>
Signed-off-by: Andrew Zhang <huazh407@gmail.com
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
wm4 [Sun, 16 Jul 2017 10:43:09 +0000 (12:43 +0200)]
lavf: allow avformat_close_input() with NULL
This is consistent with how other destructors behave.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
wm4 [Mon, 10 Jul 2017 13:59:38 +0000 (15:59 +0200)]
dxva: DXVA2_ModeHEVC_VLD_Main10 does not support Main
This mode apparently does not support decoding of HEVC Main (8 bit).
With D3D11 and Intel drivers on Windows 10 I get green corruption, while
using DXVA2_ModeHEVC_VLD_Main works.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Anton Khirnov [Sat, 1 Jul 2017 08:49:58 +0000 (10:49 +0200)]
caf: add an Opus tag
CC: libav-stable@libav.org
Vittorio Giovara [Thu, 20 Jul 2017 12:43:53 +0000 (14:43 +0200)]
hevc: Make sure to update the current frame transfer characteristic
Otherwise the first decoded frame will still be tagged with the
original transfer instead of the alternative one.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Sean McGovern [Wed, 12 Jul 2017 23:45:46 +0000 (19:45 -0400)]
rmdec: don't ignore the return value of av_get_packet()
Diego Biurrun [Sat, 8 Jul 2017 11:18:39 +0000 (13:18 +0200)]
build: Add feature test macros for glibc 2.19+
glibc introduced _DEFAULT_SOURCE in version 2.19 to replace _BSD_SOURCE and
_SVID_SOURCE, which were deprecated in version 2.20. Add _DEFAULT_SOURCE
where the latter two are used to be forwards-compatible and avoid warnings
about the use of deprecated definitions.
Luca Barbato [Sat, 29 Apr 2017 02:15:32 +0000 (02:15 +0000)]
flac: Use a local cache for decode_residual()
About an additional 4% speedup.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Luca Barbato [Sat, 29 Apr 2017 02:15:31 +0000 (02:15 +0000)]
flac: Postpone unlikely condition checks
About 2% speedup on gcc-6.3.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Alexandra Hájková [Sat, 29 Apr 2017 02:15:30 +0000 (02:15 +0000)]
flac: Convert to the new bitstream reader
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Luca Barbato [Sat, 8 Jul 2017 19:04:44 +0000 (21:04 +0200)]
bitstream: Avoid undefined behavior in bitstream_skip()
Do not use skip_remaining() to fully wipe the cache, as this could do
a 64-bit shift of a 64-bit variable which is undefined behavior in C.
Instead set the related variables to zero directly.
Thanks to Uoti for pointing out the problem.
CC: libav-stable@libav.org
Diego Biurrun [Wed, 5 Jul 2017 13:03:56 +0000 (15:03 +0200)]
bink: Split read_dct_coeffs()
This works around type aliasing violations and related warnings.
Also add some missing error checking.
Diego Biurrun [Tue, 27 Jun 2017 22:27:19 +0000 (00:27 +0200)]
fate: Add cinepak encoder vsynth tests
Diego Biurrun [Tue, 27 Jun 2017 22:27:18 +0000 (00:27 +0200)]
cinepakenc: misc small changes
Avoid anonymously typedeffed structs and enums, drop an unused context member,
fix a small wording mishap, sizeof(type) ---> sizeof(*variable), drop a
needlessly verbose log message, use av_malloc_array() where appropriate.
Diego Biurrun [Tue, 27 Jun 2017 22:27:17 +0000 (00:27 +0200)]
cinepakenc: K&R formatting cosmetics
Timothy Gu [Tue, 27 Jun 2017 22:27:15 +0000 (00:27 +0200)]
cinepakenc: Stop using AVPicture
Diego Biurrun [Tue, 27 Jun 2017 22:27:14 +0000 (00:27 +0200)]
cinepakenc: Drop broken debug code
addr-see-the-website@aetey.se [Tue, 27 Jun 2017 22:27:13 +0000 (00:27 +0200)]
cinepakenc: add option handling for flexibility
Now it is possible to adjust compression speed vs R/D when needed
and also skip vintage player compatibility at will.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
addr-see-the-website@aetey.se [Tue, 27 Jun 2017 22:27:12 +0000 (00:27 +0200)]
cinepakenc: fixes and improvements
version 2013-02-08 Rl
- fixes/optimization in multistrip encoding and codebook size choice,
quality/bitrate is now better than that of the binary proprietary encoder
version 2013-02-12 Rl
- separated codebook training sets, avoided the transfer of wasted bytes,
which yields both better quality and smaller files
- now using the correct colorspace (TODO: move conversion to libswscale)
version 2013-02-14 Rl "Valentine's Day" version:
- made strip division more robust
- minimized bruteforcing the number of strips,
(costs some R/D but speeds up compession a lot), the heuristic
assumption is that score as a function of the number of strips has
one wide minimum which moves slowly, of course not fully true
- simplified codebook generation,
the old code was meant for other optimizations than we actually do
- optimized the codebook generation / error estimation for MODE_MC
version 2013-04-28 Rl
- bugfixed codebook optimization logic
version 2014-01-20 Rl
- made the encoder compatible with vintage decoders
and added some yet unused code for possible future
incremental codebook updates
- fixed a small memory leak
version 2014-01-21 Rl
- believe it or not, now we get even smaller files, with better quality
(which means I missed an optimization earlier :)
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Tomas Härdin [Tue, 27 Jun 2017 22:27:11 +0000 (00:27 +0200)]
Add Cinepak encoder
With permission of Tomas Härdin applied by Rl aetey.se
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Martin Storsjö [Wed, 5 Jul 2017 09:36:03 +0000 (12:36 +0300)]
os_support: Use HAVE_UWP instead of manually checking WINAPI_FAMILY
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Tue, 4 Jul 2017 17:03:00 +0000 (20:03 +0300)]
d3d11va: Check WINAPI_FAMILY instead of HAVE_LOADLIBRARY
If using the winstore compat library, a fallback LoadLibrary
function does exist, that only calls LoadPackagedLibrary though
(which doesn't work for dynamically loading d3d11 DLLs).
Therefore explicitly check the targeted API family instead.
Make this check a reusable HAVE_* component which other parts
of the libraries can check when necessary as well.
Signed-off-by: Martin Storsjö <martin@martin.st>
Martin Storsjö [Fri, 30 Jun 2017 09:49:49 +0000 (12:49 +0300)]
lavf: Remove codec_tag from dashenc and smoothstreamingenc
Currently, the tags enforced and set on the segmenter muxer level
mismatch what the mp4/ismv muxer uses (since
713efb2c0d013).
Skip the codec_tag altogether here, to let the user (try to) set
whichever codec/tag is preferred; the individual chained muxer will
reject invalid codecs anyway.
Signed-off-by: Martin Storsjö <martin@martin.st>
Vittorio Giovara [Fri, 9 Jun 2017 21:27:22 +0000 (17:27 -0400)]
hevc: Add support for alternative transfer characterics SEI
The use of this SEI is for backward compatibility in HLG HDR systems:
older devices that cannot interpret the "arib-std-b67" transfer will
get the compatible transfer (usually bt709 or bt2020) from the VUI,
while newer devices that can interpret HDR will read the SEI and use
its value instead.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Vittorio Giovara [Tue, 13 Jun 2017 15:35:16 +0000 (11:35 -0400)]
dvbsubdec: Free subrect memory on allocation error
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Lorenz Brun [Fri, 21 Oct 2016 20:51:37 +0000 (22:51 +0200)]
dvbsubdec: Fixed segfault when decoding subtitles
This fixes a segfault (originally found in Movian, but traced to libav)
when decoding subtitles because only an array of rects is allocated,
but not the actual structs it contains. The issue was probably
introduced in commit
2383323 where the loop to allocate the rects in
the array was thrown away.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Anton Khirnov [Thu, 22 Jun 2017 18:05:12 +0000 (20:05 +0200)]
hwframe: Allow hwaccel frame allocators to align surface sizes
Hardware accelerated decoding generally uses AVHWFramesContext for pool
allocation of hardware surfaces. These are setup to allocate surfaces
aligned to hardware and hwaccel API requirements. Due to the
architecture, av_hwframe_get_buffer() will return AVFrames with
the dimensions set to the aligned sizes.
This causes some decoders (like hevc) return these aligned size as
final frame size, instead of cropping them to the video's actual
dimensions. To make sure this doesn't happen, crop the frame to the
size the decoder expects when ff_get_buffer() is called.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:59 +0000 (14:52 +0200)]
dxva: verbose-log decoder GUID list
Helpful for debugging.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:57 +0000 (14:52 +0200)]
hwcontext_d3d11va: add option to enable debug mode
Basically copied from VLC (LGPL):
http://git.videolan.org/?p=vlc.git;a=blob;f=modules/video_output/win32/direct3d11.c;h=
e9fcb83dcabfe778f26e63d19f218caf06a7c3ae;hb=HEAD#l1482
http://git.videolan.org/?p=vlc.git;a=blob;f=modules/codec/avcodec/d3d11va.c;h=
85e7d25caebc059a9770da2ef4bb8fe90816d76d;hb=HEAD#l599
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:56 +0000 (14:52 +0200)]
dxva: support DXGI_FORMAT_420_OPAQUE decoding
Some devices (some phones, apparently) will support only this opaque
format. Of course this won't work with CLI, because copying data
directly is not supported.
Automatic frame allocation (setting AVCodecContext.hw_device_ctx) does
not support this mode, even if it's the only supported mode. But since
opaque surfaces are generally less useful, that's probably ok.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:55 +0000 (14:52 +0200)]
hwcontext_d3d11va: allocate staging texture lazily
Makes dealing with formats that can not be used for staging textures
easier (DXGI_FORMAT_420_OPAQUE). It also saves memory if the staging
texture is never needed, so this is a good thing.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:54 +0000 (14:52 +0200)]
hwcontext_d3d11va: fix crash on frames_init failure
It appears in this case, frames_ininit is called twice (once by
av_hwframe_ctx_init(), and again by unreffing the frames ctx ref).
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:53 +0000 (14:52 +0200)]
dxva: fix some warnings
Some existed since forever, some are new.
The cast in get_surface() is silly, but unless we change the av_log
function signature, or all callers of ff_dxva2_get_surface_index(), it's
needed to remove the const warning.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
wm4 [Thu, 22 Jun 2017 12:52:52 +0000 (14:52 +0200)]
dxva: add declarative profile checks
Make supported codec profiles part of each dxva_modes entry. Every DXVA2
mode is representative for a codec with a subset of supported profiles,
so reflecting that in dxva_modes seems appropriate.
In practice, this will more strictly check MPEG2 profiles, will stop
relying on the surface format checks for selecting the correct HEVC
profile, and remove the verbose messages for mismatching H264/HEVC
profiles. Instead of the latter, it will now print the more nebulous "No
decoder device for codec found" verbose message.
This also respects AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH. Move the
Main10 HEVC entry before the normal one to make this work better.
Originally inspired by VLC's code.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diego Biurrun [Sat, 24 Jun 2017 15:51:02 +0000 (17:51 +0200)]
configure: Reset X86ASM_DEP(FLAGS) when probing for the assembler program
These variables might be set from a previous probe run, but one or the
other program that is probed for may not grok the flags, resulting in
errors during assembling when the values of those variables are passed
to the assembler.
Ben Chang [Sat, 24 Jun 2017 12:17:14 +0000 (12:17 +0000)]
nvenc: Minimize the surface allocation
The previous default sets the allocated surfaces to 32 unless it is
user-overridden or the lookahead parameter is set.
Change the surfaces calculation for default, B-frames and lookahead scenario.
Ben Chang [Sat, 24 Jun 2017 12:14:22 +0000 (12:14 +0000)]
nvenc: Use a fifo to manage the free surface pool
Previously, if a session allocates x surfaces, only x-1 surfaces are
used (due to combination of output delay and lock toggle logic).
Ben Chang [Sat, 24 Jun 2017 12:10:10 +0000 (12:10 +0000)]
nvenc: Add an explicit auto alias
Janne Grunau [Tue, 20 Jun 2017 17:25:43 +0000 (19:25 +0200)]
build: Add an option for passing linker flags to the shared library build
Also employ this mechanism to pass $libdir to the runtime library search
path if rpath is enabled. This fixes underlinking of some test binaries
on some systems.
Martin Storsjö [Wed, 21 Jun 2017 13:54:22 +0000 (16:54 +0300)]
configure: Automatically add -isysroot for darwin if --sysroot is specified
Check the existing flags in the cc/cflags/cppflags/ldflags for
occurrances of -isysroot; if none is found but --sysroot was specified,
set -isysroot to the same value as --sysroot.
This simplifies configuring cross-builds for iOS, if the global
environment variable SDKROOT isn't set.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diego Biurrun [Mon, 12 Jun 2017 20:12:17 +0000 (22:12 +0200)]
af_bs2b: Add missing casts to complex pointer assignments
Fixes several warnings of the type:
libavfilter/af_bs2b.c:171:22: warning: assignment from incompatible pointer type