3 years agoivf: Support VP9 and AV1 as well
Luca Barbato [Sun, 11 Feb 2018 20:32:04 +0000 (21:32 +0100)]
ivf: Support VP9 and AV1 as well

3 years agoconfigure: Restore original endianness test
Diego Biurrun [Thu, 8 Mar 2018 10:47:04 +0000 (11:47 +0100)]
configure: Restore original endianness test

Previously the bit pattern for the endianness test was declared as a
global, instead of a local, variable. This ensures that the pattern
appears unchanged in the object file and is not optimized out.

3 years agoamf: Replace writer_id option with LIBAV_AMF_WRITER_ID constant
Alexander Kravchenko [Wed, 28 Feb 2018 06:33:05 +0000 (06:33 +0000)]
amf: Replace writer_id option with LIBAV_AMF_WRITER_ID constant

AMFTraceWriter is an abstraction to configure how AMF outputs its logs
for the current process and can be configured to output different levels
of trace output. If multiple LibavWriter objects are used in one process,
there will be duplication of output in av_log. Use a constant writer_id
to prevent this scenario.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
3 years agoconfigure: Add check_as() helper function to simplify some expressions
Diego Biurrun [Fri, 20 Oct 2017 02:43:13 +0000 (04:43 +0200)]
configure: Add check_as() helper function to simplify some expressions

3 years agoconfigure: Add check_ld() helper function to simplify some expressions
Diego Biurrun [Fri, 20 Oct 2017 01:43:58 +0000 (03:43 +0200)]
configure: Add check_ld() helper function to simplify some expressions

3 years agoconfigure: Add check_cc/require_cc helper functions to simplify some expressions
Diego Biurrun [Tue, 17 Oct 2017 01:00:50 +0000 (03:00 +0200)]
configure: Add check_cc/require_cc helper functions to simplify some expressions

3 years agoconfigure: Add check_cpp_condition() helper function to simplify some expressions
Diego Biurrun [Sat, 7 Oct 2017 19:20:36 +0000 (21:20 +0200)]
configure: Add check_cpp_condition() helper function to simplify some expressions

3 years agoconfigure: Add check_cmd() helper function to simplify some expressions
Diego Biurrun [Sun, 24 Sep 2017 16:55:28 +0000 (18:55 +0200)]
configure: Add check_cmd() helper function to simplify some expressions

3 years agoconfigure: Use test_ prefix for helper functions that do not set variables
Diego Biurrun [Sun, 4 Feb 2018 19:21:57 +0000 (20:21 +0100)]
configure: Use test_ prefix for helper functions that do not set variables

3 years agoconfigure: Drop unnecessary variables, shifts, and quotes in helper functions
Diego Biurrun [Fri, 20 Oct 2017 23:27:23 +0000 (01:27 +0200)]
configure: Drop unnecessary variables, shifts, and quotes in helper functions

3 years agoconfigure: Fix logic of AMF external library check
Diego Biurrun [Wed, 7 Mar 2018 12:27:39 +0000 (13:27 +0100)]
configure: Fix logic of AMF external library check

Fail if AMF is requested but unavailable, as we do for all
other external libraries that need to be explicitly enabled.

3 years agoexamples: Use new API for transcoding example
Andreas Unterweger [Tue, 27 Feb 2018 16:48:03 +0000 (17:48 +0100)]
examples: Use new API for transcoding example

Signed-off-by: Diego Biurrun <diego@biurrun.de>
3 years agohls: Add a discontinuity marker on recover
Luca Barbato [Fri, 16 Feb 2018 15:09:25 +0000 (16:09 +0100)]
hls: Add a discontinuity marker on recover

It seems to improve the compatibility with the js demuxers.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoqsvenc: Provide a detailed error message if the parameters are invalid
Zhong Li [Fri, 2 Mar 2018 03:26:27 +0000 (11:26 +0800)]
qsvenc: Provide a detailed error message if the parameters are invalid

Currently it always shows "Selected ratecontrol mode is not supported
by the QSV runtime. Choose a different mode", but sometimes it is not

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agofate: Error out more gracefully on configure failure
Diego Biurrun [Thu, 15 Feb 2018 12:26:20 +0000 (13:26 +0100)]
fate: Error out more gracefully on configure failure

If configure fails before config.fate is generated, the report file misses
some values and gets discarded by the FATE server. In these cases, print
those values as "failed" along with the failing configure command line.

3 years agohvcc: zero initialize the nal buffers past the last written byte
James Almer [Fri, 23 Feb 2018 03:09:38 +0000 (00:09 -0300)]
hvcc: zero initialize the nal buffers past the last written byte

Bug-Id: 1116
Cc: libav-stable@libav.org
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoqsv: Default PicStruct to progressive
Ruiling Song [Mon, 12 Feb 2018 08:37:16 +0000 (16:37 +0800)]
qsv: Default PicStruct to progressive

The PicStruct is required by MediaSDK, so give a default value.
hwupload does not work without this.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoh264_metadata: Add option to delete filler data
Mark Thompson [Mon, 11 Dec 2017 00:30:54 +0000 (00:30 +0000)]
h264_metadata: Add option to delete filler data

Deletes both filler NAL units and filler SEI messages.  (Annex B zero_bytes
between NAL units are already discarded by the read/write process.)

3 years agocbs_h264: Add support for filler NAL units
Mark Thompson [Sun, 11 Feb 2018 17:33:15 +0000 (17:33 +0000)]
cbs_h264: Add support for filler NAL units

3 years agocbs_h264: Move slice_group_id array out of PPS structure
Mark Thompson [Sun, 11 Feb 2018 00:57:46 +0000 (00:57 +0000)]
cbs_h264: Move slice_group_id array out of PPS structure

It's very large, and is only used in some FMO streams.

3 years agoh264_metadata: Always add the SEI user data to the first access unit
Mark Thompson [Sun, 11 Feb 2018 15:41:07 +0000 (15:41 +0000)]
h264_metadata: Always add the SEI user data to the first access unit

This should be added even if the first access unit does not contain
parameter sets.

3 years agoh264_metadata: Use common SEI addition function
Mark Thompson [Sun, 11 Feb 2018 15:38:02 +0000 (15:38 +0000)]
h264_metadata: Use common SEI addition function

3 years agocbs_h264: Add utility functions to insert/delete SEI messages
Mark Thompson [Sun, 11 Feb 2018 15:37:34 +0000 (15:37 +0000)]
cbs_h264: Add utility functions to insert/delete SEI messages

3 years agocbs: Refcount all the things!
Mark Thompson [Sun, 11 Feb 2018 00:51:33 +0000 (00:51 +0000)]
cbs: Refcount all the things!

This makes it easier for users of the CBS API to get alloc/free right -
all subelements use the buffer API so that it's clear how to free them.
It also allows eliding some redundant copies: the packet -> fragment copy
disappears after this change if the input packet is refcounted, and more
codec-specific cases are now possible (but not included in this patch).

3 years agocbs_h264: Add hack for pic_timing with no active SPS
Mark Thompson [Mon, 11 Dec 2017 00:22:42 +0000 (00:22 +0000)]
cbs_h264: Add hack for pic_timing with no active SPS

If there is exactly one possible SPS but it is not yet active then just
assume that it should be the active one.

3 years agocbs_h2645: Remove active ps references when it is replaced
Mark Thompson [Mon, 11 Dec 2017 00:38:57 +0000 (00:38 +0000)]
cbs_h2645: Remove active ps references when it is replaced

3 years agocbs: Demote the "decomposition unimplemented" warning
Mark Thompson [Mon, 11 Dec 2017 00:28:40 +0000 (00:28 +0000)]
cbs: Demote the "decomposition unimplemented" warning

This is harmless and should not be a warning - unknown units are passed
through to the write functions unchanged, and no other code will interact
with them.

3 years agovaapi_h265: Mark unused entries in RefPicList[01] as explicitly invalid
Mark Thompson [Sun, 17 Dec 2017 19:50:29 +0000 (19:50 +0000)]
vaapi_h265: Mark unused entries in RefPicList[01] as explicitly invalid

The iHD driver looks at entries beyond num_ref_idx_l[01]_active_minus1
for unknown reasons.

3 years agovaapi_encode: Destroy output buffer pool before VA context
Mark Thompson [Sun, 17 Dec 2017 19:48:35 +0000 (19:48 +0000)]
vaapi_encode: Destroy output buffer pool before VA context

The buffers are created associated with the context, so they should be
destroyed before the context is.  This is enforced by the iHD driver.

3 years agovaapi_encode: Allocate slice structures and parameter buffers dynamically
Jun Zhao [Thu, 24 Aug 2017 01:13:01 +0000 (09:13 +0800)]
vaapi_encode: Allocate slice structures and parameter buffers dynamically

This removes the arbitrary limit on the allowed number of slices and
parameter buffers.

From ffmpeg commit e4a6eb70f471eda36592078e8fa1bad87fc9df73.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
3 years agocbs: Minor comment fixes / cosmetics
Mark Thompson [Thu, 9 Nov 2017 01:04:15 +0000 (01:04 +0000)]
cbs: Minor comment fixes / cosmetics

3 years agocbs: Add an explicit type for coded bitstream unit types
Mark Thompson [Thu, 9 Nov 2017 01:04:02 +0000 (01:04 +0000)]
cbs: Add an explicit type for coded bitstream unit types

Also fix conversion specifiers used for the unit type.

3 years agocbs: Allocate the context inside the init function
Mark Thompson [Thu, 9 Nov 2017 01:03:57 +0000 (01:03 +0000)]
cbs: Allocate the context inside the init function

... instead of making callers allocate it themselves.  This is more
consistent with other APIs in libav.

3 years agoconfigure: Pass the right machine types to dlltool for arm and arm64 mingw
Martin Storsjö [Fri, 16 Feb 2018 22:17:21 +0000 (00:17 +0200)]
configure: Pass the right machine types to dlltool for arm and arm64 mingw

These are supported by llvm-dlltool.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoRevert "configure: Stop using dlltool to create an import library"
Martin Storsjö [Fri, 16 Feb 2018 22:08:45 +0000 (00:08 +0200)]
Revert "configure: Stop using dlltool to create an import library"

This reverts commit 67c72f08a4707c18a67a4734660e3a23cc9488b6.

While the linker produced import libraries might work with MSVC in
simple test cases, they don't if e.g. linking to multiple GNU ld
produced import libraries at the same time. (They end up importing
functions from the wrong libraries.) The ones produced by dlltool
work fine though.

This issue was pointed out by Hendrik Leppkes.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agobuild: Ignore generated mpeg12framerate test binary
Diego Biurrun [Fri, 9 Feb 2018 17:48:27 +0000 (17:48 +0000)]
build: Ignore generated mpeg12framerate test binary

3 years agoavcodec/vc1dec: fix mby_start for interlaced content
Michael Niedermayer [Sat, 14 Dec 2013 16:11:21 +0000 (17:11 +0100)]
avcodec/vc1dec: fix mby_start for interlaced content

Bug-Id: 1100
Bug-Id: ffmpeg/Ticket2531
Cc: libav-stable@libav.org
3 years agolavc/qsv: default la_ds to MFX_LOOKAHEAD_DS_UNKNOWN
Ruiling Song [Sun, 11 Feb 2018 07:43:45 +0000 (15:43 +0800)]
lavc/qsv: default la_ds to MFX_LOOKAHEAD_DS_UNKNOWN

-1 is not a valid value.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agoqsvenc: AVBR is not supported on non-windows OS
Zhong Li [Tue, 30 Jan 2018 10:07:23 +0000 (18:07 +0800)]
qsvenc: AVBR is not supported on non-windows OS

AVBR is supported from API 1.3 but only available for Windows

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agohwcontext: Perform usual uninitialisation on derived frames contexts
Mark Thompson [Mon, 26 Jun 2017 19:28:07 +0000 (20:28 +0100)]
hwcontext: Perform usual uninitialisation on derived frames contexts

3 years agohwcontext: Perform usual initialisation on derived device contexts
Mark Thompson [Sun, 8 Oct 2017 14:19:17 +0000 (15:19 +0100)]
hwcontext: Perform usual initialisation on derived device contexts

The initialisation should be common.  For libmfx, it was previously
happening in the derivation function and this moves it out.

3 years agovf_hwupload/hwmap: Support setting a fixed pool size
Mark Thompson [Sat, 5 Aug 2017 21:10:46 +0000 (22:10 +0100)]
vf_hwupload/hwmap: Support setting a fixed pool size

These filters do not directly know whether the API they are using will
support dynamic frame pools, so this is somewhat tricky.  If the user
sets extra_hw_frames, we assume that they are aware of the problem and
set a fixed size based on that.  If not, most cases use dynamic sizing
just like they did previously.  The hardware-reverse-mapping case for
hwmap previously had a large fixed size (64) here, primarily as a hack
for QSV use - this is removed and extra_hw_frames will need to be set
for QSV to work since it requires fixed-size pools (as the other cases
do, and which didn't work before).

3 years agovf_scale_qsv: Support increasing hardware frame pool size
Mark Thompson [Mon, 27 Mar 2017 20:10:23 +0000 (21:10 +0100)]
vf_scale_qsv: Support increasing hardware frame pool size

The deinterlacer does not change, because it does not allocate any new
frames (for output it uses the same pool as the input).

3 years agovf_*_vaapi: Support increasing hardware frame pool size
Mark Thompson [Mon, 27 Mar 2017 20:10:10 +0000 (21:10 +0100)]
vf_*_vaapi: Support increasing hardware frame pool size

Defaults to 10 frames to preserve compatibility, but can allocate
fewer if extra_hw_frames is set explicitly.

3 years agolavfi: Add support for increasing hardware frame pool sizes
Mark Thompson [Mon, 27 Mar 2017 20:10:53 +0000 (21:10 +0100)]
lavfi: Add support for increasing hardware frame pool sizes

AVFilterContext.extra_hw_frames functions identically to the field of
the same name in AVCodecContext.

3 years agolavc: Add per-thread surfaces in get_hw_frame_parameters()
Mark Thompson [Mon, 29 Jan 2018 22:55:11 +0000 (22:55 +0000)]
lavc: Add per-thread surfaces in get_hw_frame_parameters()

This number is definitely required when frame threading is enabled, so
add it here rather than forcing all users to handle it themselves.

DXVA2 contained this addition in specific code as well (therefore being
added twice in the internal case) - just remove it from there.

3 years agolavc: Add support for increasing hardware frame pool sizes
Mark Thompson [Mon, 29 Jan 2018 22:18:00 +0000 (22:18 +0000)]
lavc: Add support for increasing hardware frame pool sizes

AVCodecContext.extra_hw_frames is added to the size of hardware frame
pools created by libavcodec for APIs which require fixed-size pools.
This allows the user to keep references to a greater number of frames
after decode, which may be necessary for some use-cases.

It is also added to the initial_pool_size value returned by
avcodec_get_hw_frames_parameters() if a fixed-size pool is required.

3 years agoconfigure: Factorize check_64_bit()
Diego Biurrun [Fri, 20 Oct 2017 02:42:13 +0000 (04:42 +0200)]
configure: Factorize check_64_bit()

3 years agoconfigure: Simplify restrict keyword handling
Diego Biurrun [Fri, 10 Nov 2017 14:40:30 +0000 (15:40 +0100)]
configure: Simplify restrict keyword handling

Skip a variable indirection and only redefine restrict if necessary.

3 years agoDrop some unnecessary config.h #includes
Diego Biurrun [Fri, 3 Nov 2017 16:20:49 +0000 (17:20 +0100)]
Drop some unnecessary config.h #includes

3 years agoconfigure: Group code that sets the license string with licensing checks
Diego Biurrun [Mon, 5 Feb 2018 12:53:49 +0000 (13:53 +0100)]
configure: Group code that sets the license string with licensing checks

This also moves the setting of the licensing string out of a block that
is skipped when quiet operation is requested.

3 years agohwcontext: Fix memory leak on derived frame allocation failure
Mark Thompson [Fri, 26 Jan 2018 23:12:18 +0000 (23:12 +0000)]
hwcontext: Fix memory leak on derived frame allocation failure

3 years agohwcontext: Fix documentation for av_hwdevice_ctx_alloc()
Jun Zhao [Sun, 19 Mar 2017 07:44:46 +0000 (15:44 +0800)]
hwcontext: Fix documentation for av_hwdevice_ctx_alloc()

From ffmpeg commit 9365dfcbf665b83b2e60c5ec5e2abf1f0a49e2c3.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
3 years agoavpacket: Initialize the allocated padding area in side data
Martin Storsjö [Thu, 1 Feb 2018 12:56:49 +0000 (14:56 +0200)]
avpacket: Initialize the allocated padding area in side data

This makes sure that consumers of the side data actually can
rely on the padding as intended, without having the callers of
av_packet_new_side_data to explicitly zero initialize it.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agovc1: skip motion compensation when data for last picture is invalid
Sean McGovern [Sun, 28 Jan 2018 02:19:30 +0000 (21:19 -0500)]
vc1: skip motion compensation when data for last picture is invalid

Bug-Id: 1101
Cc: libav-stable@libav.org
3 years agoqsvdec: Relax the surface vs coded dimension check
Zhong Li [Thu, 25 Jan 2018 10:19:12 +0000 (18:19 +0800)]
qsvdec: Relax the surface vs coded dimension check

Fix a common vp8 decoding failure.

Many vp8 clips cannot decode if hw_frames_ctx is enabled, reporting
"Error during QSV decoding.: incompatible video parameters (-14)".

It is due to mfx.FrameInfo.Width/Height not matching coded_w/coded_h.

See: avconv -hwaccel qsv -init_hw_device qsv -c:v vp8_qsv -i vp8-test-vectors-r1/vp80-00-comprehensive-001.ivf
-vf "hwdownload,format=nv12" -pix_fmt yuv420p -f md5 -

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoqsv: Skip the packet if decoding failure
Ruiling, Song [Wed, 24 Jan 2018 02:14:51 +0000 (10:14 +0800)]
qsv: Skip the packet if decoding failure

MediaSDK may fail to decode some frame, just skip it.
Otherwise, it will keep decoding the failure packet repeatedly
without processing any packet afterwards.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agortmp: Plug leak if sending bytes read report fails.
Josh Allmann [Wed, 24 Jan 2018 00:47:12 +0000 (16:47 -0800)]
rtmp: Plug leak if sending bytes read report fails.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agointreadwrite: Use __unaligned in MSVC for ARM64 as well
Martin Storsjö [Tue, 16 Jan 2018 13:40:24 +0000 (15:40 +0200)]
intreadwrite: Use __unaligned in MSVC for ARM64 as well

This attribute is supported for this architecture in MSVC as well
(but produces errors if used for 32 bit x86).

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoqsv: better to use alignment by 16 and HEVC 10b requires alignment by 32
Maxym Dmytrychenko [Mon, 8 Jan 2018 14:10:23 +0000 (15:10 +0100)]
qsv: better to use alignment by 16 and HEVC 10b requires alignment by 32

3 years agoAdd support for H.264 and HEVC hardware encoding for AMD GPUs based on AMF SDK
Michael Wootton [Wed, 3 Jan 2018 17:55:53 +0000 (12:55 -0500)]
Add support for H.264 and HEVC hardware encoding for AMD GPUs based on AMF SDK

Requires AMF headers for at least version

Signed-off-by: Mikhail Mironov <mikhail.mironov@amd.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agocmdutils: update copyright year to 2018
Sean McGovern [Mon, 1 Jan 2018 07:51:51 +0000 (02:51 -0500)]
cmdutils: update copyright year to 2018

3 years agoexamples/qsvdec: do not set the deprecated field refcounted_frames
Zhong Li [Thu, 28 Dec 2017 09:38:33 +0000 (17:38 +0800)]
examples/qsvdec: do not set the deprecated field refcounted_frames

It is used by the deprecated API avcodec_decode_video2 and ignored by the
new decode APIs (avcodec_send_packet/avcodec_receive_frame).

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agolavu/qsv: add log message for libmfx version
Zhong Li [Thu, 28 Dec 2017 09:38:32 +0000 (17:38 +0800)]
lavu/qsv: add log message for libmfx version

It is benefit to diagnose issues related to different libmfx version.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agox264: Support version 153
Luca Barbato [Tue, 26 Dec 2017 11:32:42 +0000 (12:32 +0100)]
x264: Support version 153

It has native simultaneus 8 and 10 bit support.

3 years agommaldec: Fix compilation after 2fcb0090
Martin Storsjö [Wed, 20 Dec 2017 07:45:14 +0000 (09:45 +0200)]
mmaldec: Fix compilation after 2fcb0090

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavconv: Use codec hardware config to configure hwaccels
Mark Thompson [Wed, 25 Oct 2017 23:18:47 +0000 (00:18 +0100)]
avconv: Use codec hardware config to configure hwaccels

Removes specific support for all hwaccels supported by the generic code

3 years agolavc: Mark all AVHWAccel structures as const
Mark Thompson [Sat, 4 Nov 2017 18:53:26 +0000 (18:53 +0000)]
lavc: Mark all AVHWAccel structures as const

3 years agolavc: Delete all fake hwaccels
Mark Thompson [Wed, 25 Oct 2017 23:18:46 +0000 (00:18 +0100)]
lavc: Delete all fake hwaccels

They are now unused.

3 years agolavc: Remove register mechanism for hwaccels
Mark Thompson [Wed, 25 Oct 2017 23:18:45 +0000 (00:18 +0100)]
lavc: Remove register mechanism for hwaccels

There is no longer any need for a list of them at runtime, because
decoders now carry the pointers to their associated hwaccels internally.
The file containing external declarations is now used to make the list
of hwaccels for configure.

3 years agolavc: Deprecate av_hwaccel_next() and av_register_hwaccel()
Mark Thompson [Wed, 25 Oct 2017 23:18:44 +0000 (00:18 +0100)]
lavc: Deprecate av_hwaccel_next() and av_register_hwaccel()

3 years agolavc: Use hardware config information in ff_get_format()
Mark Thompson [Wed, 25 Oct 2017 23:18:43 +0000 (00:18 +0100)]
lavc: Use hardware config information in ff_get_format()

This removes the dependency that hardware pixel formats previously had on
AVHWAccel instances, meaning only those which actually do something need
exist after this patch.

Also updates avcodec_default_get_format() to be able to choose hardware
formats if either a matching device has been supplied or no additional
external configuration is required, and avcodec_get_hw_frames_parameters()
to use the hardware config rather than searching the old hwaccel list.

3 years agowebp: Fix alpha initialisation
Mark Thompson [Wed, 25 Oct 2017 23:18:42 +0000 (00:18 +0100)]
webp: Fix alpha initialisation

ff_get_format() in the next patch will reject formats which aren't in the
offered list, so the hack in 7cb9296db872c4221453e5411f242ebcfca62664 is
no longer valid.  Change the hack by adding a new field in the VP8 decoder
context to indicate that it's actually WebP and don't call ff_get_format()
at all in that case.

3 years agolavc: Add hardware config metadata for decoders supporting hardware output
Mark Thompson [Wed, 25 Oct 2017 23:18:40 +0000 (00:18 +0100)]
lavc: Add hardware config metadata for decoders supporting hardware output

This includes a pointer to the associated hwaccel for decoders using
hwaccels - these will be used later to implement the hwaccel setup
without needing a global list.

Also added is a new file listing all hwaccels as external declarations -
this will be used later to generate the hwaccel list at configure time.

3 years agolavc: Add codec metadata to indicate hardware support
Mark Thompson [Wed, 25 Oct 2017 23:18:39 +0000 (00:18 +0100)]
lavc: Add codec metadata to indicate hardware support

3 years agoavcodec: add metadata to identify wrappers and hardware decoders
wm4 [Tue, 12 Dec 2017 10:03:43 +0000 (11:03 +0100)]
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>.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoqsv: Support explicit lookahead downscaling
Luca Barbato [Tue, 12 Dec 2017 14:27:52 +0000 (14:27 +0000)]
qsv: Support explicit lookahead downscaling

3 years agoqsv/vp8dec: fixes memory leak issue
Li, Zhong [Thu, 7 Dec 2017 07:26:38 +0000 (15:26 +0800)]
qsv/vp8dec: fixes memory leak issue

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agolavc/qsvenc: add error messeage if ICQ unsupported.
Li, Zhong [Thu, 7 Dec 2017 06:44:27 +0000 (14:44 +0800)]
lavc/qsvenc: add error messeage if ICQ unsupported.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agolavc/qsvenc: ICQ/VCM/QVBR are not avilable on Linux
Li, Zhong [Thu, 7 Dec 2017 06:44:26 +0000 (14:44 +0800)]
lavc/qsvenc: ICQ/VCM/QVBR are not avilable on Linux

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agolavc/qsvenc: set HRD buffer size
Li, Zhong [Fri, 1 Dec 2017 08:48:45 +0000 (16:48 +0800)]
lavc/qsvenc: set HRD buffer size

Hypothetical Reference Decoding (HRD) model assumes that data flows
into a buffer of the fixed size BufferSizeInKB with a constant bitrate.
Smaller BufferSizeInKB means smaller frame size variations,
but more difficult to maintain HRD.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agocheckasm: Use LOCAL_ALIGNED for aligned variables on the stack
Martin Storsjö [Mon, 11 Dec 2017 20:25:16 +0000 (22:25 +0200)]
checkasm: Use LOCAL_ALIGNED for aligned variables on the stack

This fixes fate-checkasm-hevc_mc on ARMCC 5.0 after adding
NEON HEVC MC assembly.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agohevc: Add hevc_get_pixel_4/8/12/16/24/32/48/64
Alexandra Hájková [Sun, 3 Dec 2017 08:15:23 +0000 (09:15 +0100)]
hevc: Add hevc_get_pixel_4/8/12/16/24/32/48/64

Checkasm timings:
block size bitdepth  C       NEON
4           8 bit:    146.7   48.7
           10 bit:    146.7   52.7
8           8 bit:    430.3   84.4
           10 bit:    430.4  119.5
12          8 bit:    812.8  141.0
           10 bit:    812.8  195.0
16          8 bit:   1499.1  268.0
           10 bit:   1498.9  368.4
24          8 bit:   4394.2  574.8
           10 bit:   3696.3  804.8
32          8 bit:   5108.6  568.9
           10 bit:   4249.6  918.8
48          8 bit:  16819.6 2304.9
           10 bit:  13882.0 3178.5
64          8 bit:  13490.8 1799.5
           10 bit:  11018.5 2519.4

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agovaapi_h265: Add named options for setting profile and level
Mark Thompson [Wed, 29 Nov 2017 21:31:53 +0000 (21:31 +0000)]
vaapi_h265: Add named options for setting profile and level

Also fixes the default, which previously contained a nonsense value.

3 years agovaapi_h264: Add named options for setting profile and level
Mark Thompson [Wed, 29 Nov 2017 21:31:11 +0000 (21:31 +0000)]
vaapi_h264: Add named options for setting profile and level

3 years agovaapi: Make the decode profile matching more explicit
Mark Thompson [Thu, 9 Nov 2017 01:04:44 +0000 (01:04 +0000)]
vaapi: Make the decode profile matching more explicit

Also fixes a bug where it could attempt to decode with an unsupported
codec if allow-profile-mismatch was set.

3 years agovaapi_h264: Fix VUI max_dec_frame_buffering
Jun Zhao [Tue, 24 Oct 2017 05:25:21 +0000 (13:25 +0800)]
vaapi_h264: Fix VUI max_dec_frame_buffering

This should refer to the existing SPS structure, not the VAAPI sequence
parameter buffer (which is not yet initialised).

From ffmpeg commit f31478ba1472afe5c1eed60f219ae331816425a2.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
3 years agovaapi_h265: Enable VBR mode
Jun Zhao [Fri, 25 Aug 2017 07:56:51 +0000 (15:56 +0800)]
vaapi_h265: Enable VBR mode

To match vaapi_h264.

From ffmpeg commit 385cafb07ac1e46433931ea9749a134efd7350be.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
3 years agocbs_mpeg2: Fix marker_bit type
Mark Thompson [Thu, 9 Nov 2017 01:04:25 +0000 (01:04 +0000)]
cbs_mpeg2: Fix marker_bit type

3 years agocbs: Add padding to slice data allocations
Mark Thompson [Thu, 9 Nov 2017 01:04:20 +0000 (01:04 +0000)]
cbs: Add padding to slice data allocations

These may be read by the bitstream reader, so they should include the
necessary padding for overreads.

3 years agortsp: only break on parse_rtsp_message on error
Tristan Matthews [Wed, 29 Nov 2017 19:16:02 +0000 (14:16 -0500)]
rtsp: only break on parse_rtsp_message on error

Fix suggested by Luca Barbato.

This was causing spurious EOFs when using -rtsp_transport udp, as
reported in https://bugzilla.libav.org/show_bug.cgi?id=1103

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agostereo3d: Support view type for frame sequence type
Vittorio Giovara [Mon, 25 Sep 2017 13:09:21 +0000 (15:09 +0200)]
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>
3 years agoprores: Always assume limited range
Vittorio Giovara [Wed, 27 Sep 2017 21:28:55 +0000 (17:28 -0400)]
prores: Always assume limited range

As defined by the specification.

3 years agoqsvenc: cavlc option is only available for h264
Li, Zhong [Mon, 27 Nov 2017 16:19:57 +0000 (11:19 -0500)]
qsvenc: cavlc option is only available for h264

Moving option definition to h264 implementation and fixing command line defaults
in order to properly respect cavlc input value

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agoqsv/hevcdec: Load hw plugin by default on non-windows os
Li, Zhong [Fri, 10 Nov 2017 08:03:42 +0000 (03:03 -0500)]
qsv/hevcdec: Load hw plugin by default on non-windows os

Software plugin is not available on Linux, Only works on Windows.
Similar changes have been applied to qsv hevc encoder by

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
3 years agolibavcodec: Don't use dllexport, only dllimport when building DLLs
Martin Storsjö [Thu, 14 Sep 2017 05:33:05 +0000 (08:33 +0300)]
libavcodec: Don't use dllexport, only dllimport when building DLLs

The only purpose of dllexport (which is set while building the library
that exports the symbols) is to have the linker automatically
export such symbols into a DLL without using a def file - it doesn't
affect the generated code.

For both MSVC and mingw builds, this isn't essential since we override
what symbols to export via an autogenerated def file instead.

Update a comment in configure to refer to the right concept.

With lld, this avoids warnings about duplicate export directives,
when some symbols are requested to be exported both via dllexport
attributes and via the autogenerated def file.

This also reduces the number of lines of code marginally.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomakedef: Pass EXTERN_PREFIX from configure to makedef
Martin Storsjö [Thu, 16 Nov 2017 07:32:15 +0000 (09:32 +0200)]
makedef: Pass EXTERN_PREFIX from configure to makedef

This avoids having to use either "dumpbin -headers" to find out
the current architecture, or pass $ARCH from configure to deduce it.

When configuring with --disable-asm, ARCH is equal to "c", which doesn't
give any indication of what symbol prefix is to be used.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoconfigure: Coalesce some arch configuration and PIC handling
Diego Biurrun [Fri, 6 Oct 2017 21:06:45 +0000 (23:06 +0200)]
configure: Coalesce some arch configuration and PIC handling

3 years agoconfigure: Miscellaneous minor changes
Diego Biurrun [Sun, 24 Sep 2017 16:46:47 +0000 (18:46 +0200)]
configure: Miscellaneous minor changes

- Move a variable closer to where it is used
- Add an explanatory comment
- Simplify a crosscompile check
- Minor SHFLAGS simplification
- Coalesce some threads tests

3 years agoMakefile: fix distclean target
James Almer [Mon, 13 Nov 2017 20:34:15 +0000 (17:34 -0300)]
Makefile: fix distclean target

It must imply clean. Regression since 7ebe7e8e7a76c0ce302f4f583ef0d14220031214.

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