diff options
author | wm4 <wm4@nowhere> | 2017-02-27 14:33:18 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-02-27 14:41:24 +0100 |
commit | 6e3fbaba7e134b825f6fe9ceb83d2d052e3d85db (patch) | |
tree | 58b6c2c58c4f7e421db087a4bb192a3c25c55230 /video/decode | |
parent | 9714e04e94b66822a7309961b2141ce0032a1121 (diff) | |
download | mpv-6e3fbaba7e134b825f6fe9ceb83d2d052e3d85db.tar.bz2 mpv-6e3fbaba7e134b825f6fe9ceb83d2d052e3d85db.tar.xz |
decode: fix extra surface count
FFmpeg could crash with vaapi (new) and --vo=opengl + interpolation.
It seems the actual surface count the old vaapi code uses (and which
usually never exceeded the preallocated amount) was higher than what
was used for the new vaapi code, so just correct that. The d3d helpers
also had weird code that bumped the real pool size, fix them as well.
Why this would result in an assertion failure instead of a proper error,
who knows.
Diffstat (limited to 'video/decode')
-rw-r--r-- | video/decode/hw_d3d11va.c | 2 | ||||
-rw-r--r-- | video/decode/hw_dxva2.c | 2 | ||||
-rw-r--r-- | video/decode/hw_vaapi_old.c | 2 | ||||
-rw-r--r-- | video/decode/lavc.h | 3 |
4 files changed, 4 insertions, 5 deletions
diff --git a/video/decode/hw_d3d11va.c b/video/decode/hw_d3d11va.c index a69a3890bd..1eab4b5e0b 100644 --- a/video/decode/hw_d3d11va.c +++ b/video/decode/hw_d3d11va.c @@ -27,7 +27,7 @@ #include "d3d.h" -#define ADDITIONAL_SURFACES (HWDEC_EXTRA_SURFACES + HWDEC_DELAY_QUEUE_COUNT) +#define ADDITIONAL_SURFACES HWDEC_EXTRA_SURFACES struct d3d11va_decoder { ID3D11VideoDecoder *decoder; diff --git a/video/decode/hw_dxva2.c b/video/decode/hw_dxva2.c index 7b1a6b4bc7..7be0d9b9fa 100644 --- a/video/decode/hw_dxva2.c +++ b/video/decode/hw_dxva2.c @@ -32,7 +32,7 @@ #include "d3d.h" -#define ADDITIONAL_SURFACES (HWDEC_EXTRA_SURFACES + HWDEC_DELAY_QUEUE_COUNT) +#define ADDITIONAL_SURFACES HWDEC_EXTRA_SURFACES struct priv { struct mp_log *log; diff --git a/video/decode/hw_vaapi_old.c b/video/decode/hw_vaapi_old.c index fb0fc40110..8ba4d444bf 100644 --- a/video/decode/hw_vaapi_old.c +++ b/video/decode/hw_vaapi_old.c @@ -44,7 +44,7 @@ * Note that redundant additional surfaces also might allow for some * buffering (i.e. not trying to reuse a surface while it's busy). */ -#define ADDTIONAL_SURFACES MPMAX(6, HWDEC_DELAY_QUEUE_COUNT) +#define ADDTIONAL_SURFACES HWDEC_EXTRA_SURFACES // Some upper bound. #define MAX_SURFACES 25 diff --git a/video/decode/lavc.h b/video/decode/lavc.h index dfce9c3bfd..4df92e40a6 100644 --- a/video/decode/lavc.h +++ b/video/decode/lavc.h @@ -16,8 +16,7 @@ // This number might require adjustment depending on whatever the player does; // for example, if vo_opengl increases the number of reference surfaces for // interpolation, this value has to be increased too. -// This value does not yet include HWDEC_DELAY_QUEUE_COUNT. -#define HWDEC_EXTRA_SURFACES 4 +#define HWDEC_EXTRA_SURFACES 6 struct mpv_global; |