[FFmpeg-devel] [PATCH 7/9] pthread_frame: do not run hwaccel decoding asynchronously unless it's safe
Michael Niedermayer
michael at niedermayer.cc
Sun Mar 26 02:23:39 EET 2017
On Sat, Mar 18, 2017 at 09:56:04AM +0100, wm4 wrote:
> From: Anton Khirnov <anton at khirnov.net>
>
> Certain hardware decoding APIs are not guaranteed to be thread-safe, so
> having the user access decoded hardware surfaces while the decoder is
> running in another thread can cause failures (this is mainly known to
> happen with DXVA2).
>
> For such hwaccels, only allow the decoding thread to run while the user
> is inside a lavc decode call (avcodec_send_packet/receive_frame).
>
> Merges Libav commit d4a91e65.
>
> Signed-off-by: wm4 <nfxjfg at googlemail.com>
> ---
> libavcodec/avcodec.h | 5 +++++
> libavcodec/hwaccel.h | 24 +++++++++++++++++++++
> libavcodec/pthread_frame.c | 52 ++++++++++++++++++++++++++++++++++++++++------
> libavcodec/vaapi_h264.c | 2 ++
> libavcodec/vaapi_mpeg2.c | 2 ++
> libavcodec/vaapi_mpeg4.c | 3 +++
> libavcodec/vaapi_vc1.c | 3 +++
> libavcodec/vdpau_h264.c | 2 ++
> libavcodec/vdpau_hevc.c | 2 ++
> libavcodec/vdpau_mpeg12.c | 3 +++
> libavcodec/vdpau_mpeg4.c | 2 ++
> libavcodec/vdpau_vc1.c | 3 +++
> libavcodec/version.h | 2 +-
> 13 files changed, 98 insertions(+), 7 deletions(-)
> create mode 100644 libavcodec/hwaccel.h
>
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 1923c9648d..dbbe4febcd 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -3904,6 +3904,11 @@ typedef struct AVHWAccel {
> * AVCodecInternal.hwaccel_priv_data.
> */
> int priv_data_size;
> +
> + /**
> + * Internal hwaccel capabilities.
> + */
> + int caps_internal;
> } AVHWAccel;
>
> /**
> diff --git a/libavcodec/hwaccel.h b/libavcodec/hwaccel.h
> new file mode 100644
> index 0000000000..17af43707c
> --- /dev/null
> +++ b/libavcodec/hwaccel.h
> @@ -0,0 +1,24 @@
> +/*
> + * This file is part of FFmpeg and was stolen from Libav.
hmm
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Democracy is the form of government in which you can choose your dictator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170326/8ccc9cb3/attachment.sig>
More information about the ffmpeg-devel
mailing list