[FFmpeg-devel] [PATCH 7/9] pthread_frame: do not run hwaccel decoding asynchronously unless it's safe
James Almer
jamrial at gmail.com
Sun Mar 26 02:33:50 EET 2017
On 3/25/2017 9:23 PM, Michael Niedermayer wrote:
> 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
See 6476bb84bca36b4af5427c5e733fd7b33a985700
IMO, better not do silly things like this if they can make it to
the tree by accident.
More information about the ffmpeg-devel
mailing list