1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-19 22:01:10 +00:00

vf_vapoursynth: add more debug output

Also, move num_requested() to where it's used. Remove newlines from VS
error messages. Remove an assert(0) on an error path.
This commit is contained in:
wm4 2014-05-15 14:50:35 +02:00
parent a5e22c70e8
commit 97604ebcd2

View File

@ -175,16 +175,6 @@ static void drain_oldest_buffered_frame(struct vf_priv_s *p)
p->in_frameno++;
}
// number of getAsyncFrame calls in progress
// must be called with p->lock held
static int num_requested(struct vf_priv_s *p)
{
int r = 0;
for (int n = 0; n < p->max_requests; n++)
r += p->requested[n] == &dummy_img;
return r;
}
static void VS_CC vs_frame_done(void *userData, const VSFrameRef *f, int n,
VSNodeRef *node, const char *errorMsg)
{
@ -193,11 +183,11 @@ static void VS_CC vs_frame_done(void *userData, const VSFrameRef *f, int n,
pthread_mutex_lock(&p->lock);
// If these assertions fail, n is an unrequested frame.
// If these assertions fail, n is an unrequested frame (or filtered twice).
assert(n >= p->out_frameno && n < p->out_frameno + p->max_requests);
int index = n - p->out_frameno;
assert(p->requested[index] == &dummy_img);
MP_DBG(vf, "filtered frame %d (%d)\n", n, index);
assert(p->requested[index] == &dummy_img);
struct mp_image *res = NULL;
if (f) {
@ -328,19 +318,19 @@ static const VSFrameRef *VS_CC infiltGetFrame(int frameno, int activationReason,
VSFrameRef *ret = NULL;
pthread_mutex_lock(&p->lock);
MP_DBG(vf, "VS requesting frame %d (at %d)\n", frameno, p->in_frameno);
MP_DBG(vf, "VS asking for frame %d (at %d)\n", frameno, p->in_frameno);
while (1) {
if (p->shutdown) {
p->vsapi->setFilterError("EOF or filter reinit/uninit\n", frameCtx);
p->vsapi->setFilterError("EOF or filter reinit/uninit", frameCtx);
break;
}
if (frameno < p->in_frameno) {
char msg[180];
snprintf(msg, sizeof(msg),
"Frame %d requested, but only have frames starting from %d.\n"
"Try increasing the buffered-frames suboption.\n",
"Frame %d requested, but only have frames starting from %d. "
"Try increasing the buffered-frames suboption.",
frameno, p->in_frameno);
MP_FATAL(vf, "%s", msg);
MP_FATAL(vf, "%s\n", msg);
p->vsapi->setFilterError(msg, frameCtx);
break;
}
@ -359,7 +349,6 @@ static const VSFrameRef *VS_CC infiltGetFrame(int frameno, int activationReason,
vsapi->getFormatPreset(mp_to_vs(img->imgfmt), core);
ret = vsapi->newVideoFrame(vsfmt, img->w, img->h, NULL, core);
if (!ret) {
assert(0);
p->vsapi->setFilterError("Could not allocate VS frame", frameCtx);
break;
}
@ -392,10 +381,22 @@ static void VS_CC infiltFree(void *instanceData, VSCore *core, const VSAPI *vsap
pthread_mutex_unlock(&p->lock);
}
// number of getAsyncFrame calls in progress
// must be called with p->lock held
static int num_requested(struct vf_priv_s *p)
{
int r = 0;
for (int n = 0; n < p->max_requests; n++)
r += p->requested[n] == &dummy_img;
return r;
}
static void destroy_vs(struct vf_instance *vf)
{
struct vf_priv_s *p = vf->priv;
MP_DBG(vf, "destroying VS filters\n");
// Wait until our frame callbacks return.
pthread_mutex_lock(&p->lock);
p->shutdown = true;
@ -432,6 +433,8 @@ static void destroy_vs(struct vf_instance *vf)
p->next_image = NULL;
p->out_pts = MP_NOPTS_VALUE;
p->out_frameno = p->in_frameno = 0;
MP_DBG(vf, "initialized.\n");
}
static int reinit_vs(struct vf_instance *vf)