summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-02-27 14:33:18 +0100
committerwm4 <wm4@nowhere>2017-02-27 14:41:24 +0100
commit6e3fbaba7e134b825f6fe9ceb83d2d052e3d85db (patch)
tree58b6c2c58c4f7e421db087a4bb192a3c25c55230 /video
parent9714e04e94b66822a7309961b2141ce0032a1121 (diff)
downloadmpv-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')
-rw-r--r--video/decode/hw_d3d11va.c2
-rw-r--r--video/decode/hw_dxva2.c2
-rw-r--r--video/decode/hw_vaapi_old.c2
-rw-r--r--video/decode/lavc.h3
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;