Supplying a hardware input frame which is not in the input hardware frames
context is not allowed by the API, so additional code to handle it is not
necessary. Further, handling it automatically results in very low
performance - it is more appropriate to fail immediately so that the user
can fix their incorrect setup.
If the user supplies a device or frames context then it is an error
not to use it; this is consistent with other hardware components.
Also factorise out the D3D11 initialisation and improve error
messages.
This crash was introduced by 8bbf2dacbf,
which could incorrectly overwrite the failure result from creating the
device.
Fixes ticket #7108.
Reviewed-by: wm4 <nfxjfg@googlemail.com>
The output frame size is larger than the image containing a subsampled
plane - use the actual size of the image being written rather than the
dimensions of the intended output frame.
Reviewed-by: Dylan Fernando <dylanf123@gmail.com>
The old vaAcquireBufferHandle() API works in fewer cases and provides
less information than the current vaExportSurfaceHandle(), but it exists
on older versions and is already used by the OpenCL code.
The intended target is OpenCL 1.2, so disable warnings for APIs deprecated
after that. This primarily applies to clCreateCommandQueue(), we can't use
the replacement clCreateCommandQueueWithProperties() because it was
introduced in OpenCL 2.0.
Also remove some unnecessary includes from overlay and program filters so
that the define is available at the right moment.
Add a new function to find the global work size given the output image and
the required block alignment, then use it in the overlay, program and unsharp
filters. Fixes the overlay and unsharp filters applying the kernel to
locations outside the frame when subsampled planes are present.
Fixes building with VAAPI but not libdrm, which was broken by
389f4c3e0d. Just unconditionally include
the header, since it doesn't depend on libdrm being present.
This can remove units with types in or not in a given set from a stream.
For example, it can be used to remove all non-VCL NAL units from an H.264 or
H.265 stream.
The type of the result of a shift operation is unaffected by the type of
the right operand, so some existing code overflows with undefined behaviour
when the element length is 32. Add a helper macro to calculate the maximum
value correctly and then use it everywhere this pattern appears.
Found-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
* commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109':
qsvenc: Provide a detailed error message if the parameters are invalid
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'e2399e0c1aeb110456405d23e211066fab6cb041':
fate: Error out more gracefully on configure failure
This commit is a noop, the configure failure reporting issue does not
appear to affect FFmpeg.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'dc40e64adb1712b1209c018914a44f809bc32664':
hvcc: zero initialize the nal buffers past the last written byte
This commit is a noop, see 9482ec1b20
Merged-by: Mark Thompson <sw@jkqxz.net>
This is needed by later hwaccel code to tell which encoding process was
used for a particular frame, because hardware decoders may only support a
subset of possible methods.
* commit '6d5a6dde5301c81e221a37b3f39bb03149492b98':
h264_metadata: Add option to delete filler data
Fixes#6899.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'eccc03c8fbc603a0a3257df66f0705f74fe2581a':
cbs_h264: Add support for filler NAL units
Some bitstream -> get_bits.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '78fa0b9033c0834c049e2aedf71a8c613fed87ab':
h264_metadata: Always add the SEI user data to the first access unit
Mostly already present from a308872b04,
one cosmetic change applied.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '69062d0f9b6aef5d9d9b8c9c9b5cfb23037caddb':
h264_metadata: Use common SEI addition function
Minor changes because the following patch is already present.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'a2ca8ed903b435446031a8a0792ca535e6ee2913':
cbs_h264: Add utility functions to insert/delete SEI messages
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'ce5870a3a8f2b10668ee4f04c2ae0287f66f31b2':
cbs: Refcount all the things!
Some changes for bitstream API.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '13ca5d34ba5c473211daaae0a101123bcaada3e6':
cbs_h264: Add hack for pic_timing with no active SPS
Partially fixes#6896 - the sample stream from that ticket now works, but
more obscure cases can still fail.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '0e4c166cdd6446522a085dd9731967d09ac71f72':
cbs_h2645: Remove active ps references when it is replaced
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '67eb2b16daa77f6ba3e04a28ca18e53193723b7f':
vaapi_h265: Mark unused entries in RefPicList[01] as explicitly invalid
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '216c44dfc17252ec0681dcb0bbeeb45a9d14eca7':
vaapi_encode: Destroy output buffer pool before VA context
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'c8e135ea9225137050a6315fd9ba9c0f242c90b6':
vaapi_encode: Allocate slice structures and parameter buffers dynamically
Already present as e4a6eb70f4, one minor
fix for libav merged.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '254e728d207c173a3714e6a01c9d68fcb3af8b73':
cbs: Minor comment fixes / cosmetics
Mostly already present, one small fix.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '1d12a545ce828eaf4fb37295400008ea37635ab8':
cbs: Add an explicit type for coded bitstream unit types
Mostly already present from 6734eef6b8, two
minor message changes are merged.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '2651352988212531038326c44754ece1728c4a3b':
cbs: Allocate the context inside the init function
This commit is a noop, see 6734eef6b8
Merged-by: Mark Thompson <sw@jkqxz.net>
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).
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.
* commit 'a674b31240e99a369059385b03582b35629d190f':
build: Ignore generated mpeg12framerate test binary
This commit is a noop, see fb791d2876
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '5b6213ef6bf5e0781c83e86926eb0b33a98dc185':
avcodec/vc1dec: fix mby_start for interlaced content
This commit is a noop, see c9f72e4b81
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '9b09792c90b580842157ca8ce534be434725a841':
lavc/qsv: default la_ds to MFX_LOOKAHEAD_DS_UNKNOWN
This commit is a noop: the code in FFmpeg is slightly different and never
contained the invalid value.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'e412d683fe0349bb8450645813a23158bb4ebd66':
hwcontext: Perform usual uninitialisation on derived frames contexts
This commit is a noop, see 0f93cef2d6
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'caecb85014fc81f8734560a150073627eedab78c':
hwcontext: Perform usual initialisation on derived device contexts
This commit is a noop, see 309d660775
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit 'b128be1748f3920a14a98307265df5f2d3433e1d':
vf_*_vaapi: Support increasing hardware frame pool size
Rewritten to apply to common VAAPI code rather than specific filters.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '6d86cef06ba36c0ed591e14a2382e9630059fc5d':
lavfi: Add support for increasing hardware frame pool sizes
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '5b145290df2998a9836a93eb925289c6c8b63af0':
lavc: Add support for increasing hardware frame pool sizes
Merged-by: Mark Thompson <sw@jkqxz.net>
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).
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.
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.
On systems which deliver SIGPIPE (Unices), a broken pipe will currently
result in the immediate termination of the ffmpeg process (the default
disposition as required by POSIX). This is undesirable, because while
the broken pipe is likely fatal to useful cleanup of whatever component
is writing to it, there might be other components which can do useful
cleanup - for example, a muxer on another stream may still need to write
indexes to complete a file. Therefore, set the signal disposition for
SIGPIPE to ignore the signal - the call which caused the signal will
fail with EPIPE and the error will be propagated upwards like any other
I/O failure on a single stream.
* commit 'a2a9e4eea0e4fde2ed8d3405b4f33f655b600c2d':
rtmp: Plug leak if sending bytes read report fails.
This commit is a noop, see ee88f31d34
Merged-by: Mark Thompson <sw@jkqxz.net>
Refcount all of the context information. This also fixes a potential
segmentation fault when accessing freed memory (buffer returned after
the codec has been closed).
Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez.ortiz@gmail.com>
* commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8':
qsv: better to use alignment by 16 and HEVC 10b requires alignment by 32
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '34c113335b53d83ed343de49741f0823aa1f8cc6':
Add support for H.264 and HEVC hardware encoding for AMD GPUs based on AMF SDK
Most of this was already present from 9ea6607d29,
this just applies some minor fixups and adds the general documentation.
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '7b0b5bc810cdb9ef100492c9a9f2d30602c04336':
cmdutils: update copyright year to 2018
This commit is a noop, see bddf31ba75
Merged-by: Mark Thompson <sw@jkqxz.net>
* commit '1efbbfedcaf4a3cecab980273ad809ba3ade2f74':
examples/qsvdec: do not set the deprecated field refcounted_frames
Merged-by: Mark Thompson <sw@jkqxz.net>