[FFmpeg-devel] [PATCH 7/9] pthread_frame: do not run hwaccel decoding asynchronously unless it's safe
wm4
nfxjfg at googlemail.com
Mon Mar 20 07:43:50 EET 2017
On Sun, 19 Mar 2017 02:30:11 +0100
Michael Niedermayer <michael at niedermayer.cc> 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
>
> breaks:
> ./ffmpeg -i tickets//4583/ffvp9_corruption.webm -f null -
> https://trac.ffmpeg.org/raw-attachment/ticket/4583/ffvp9_corruption.webm
>
> ...
> frame= 215 fps=0.0 q=-0.0 Lsize=N/A time=00:00:08.00 bitrate=N/A speed= 165x
> video:104kB audio:1500kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> pthread_mutex_unlock failed with error: Operation not permitted
> Aborted
Fixed with this patch: http://sprunge.us/dNcA
Thanks for the sample link.
More information about the ffmpeg-devel
mailing list