improve debug

This commit is contained in:
Wim Taymans 2020-05-09 19:21:44 +02:00
parent 011992e774
commit 8dcd6c4417
3 changed files with 32 additions and 25 deletions

View file

@ -15,7 +15,7 @@
#include "alsa-pcm.h" #include "alsa-pcm.h"
#define CHECK(s,msg) if ((err = (s)) < 0) { spa_log_error(state->log, msg ": %s", snd_strerror(err)); return err; } #define CHECK(s,msg,...) if ((err = (s)) < 0) { spa_log_error(state->log, msg ": %s", ##__VA_ARGS__, snd_strerror(err)); return err; }
static int spa_alsa_open(struct state *state) static int spa_alsa_open(struct state *state)
{ {
@ -35,7 +35,7 @@ static int spa_alsa_open(struct state *state)
state->stream, state->stream,
SND_PCM_NONBLOCK | SND_PCM_NONBLOCK |
SND_PCM_NO_AUTO_RESAMPLE | SND_PCM_NO_AUTO_RESAMPLE |
SND_PCM_NO_AUTO_CHANNELS | SND_PCM_NO_AUTO_FORMAT), "open failed"); SND_PCM_NO_AUTO_CHANNELS | SND_PCM_NO_AUTO_FORMAT), "%s: open failed", props->device);
if ((err = spa_system_timerfd_create(state->data_system, if ((err = spa_system_timerfd_create(state->data_system,
CLOCK_MONOTONIC, SPA_FD_CLOEXEC | SPA_FD_NONBLOCK)) < 0) CLOCK_MONOTONIC, SPA_FD_CLOEXEC | SPA_FD_NONBLOCK)) < 0)
@ -72,7 +72,7 @@ int spa_alsa_close(struct state *state)
return 0; return 0;
spa_log_debug(state->log, NAME" %p: Device '%s' closing", state, state->props.device); spa_log_debug(state->log, NAME" %p: Device '%s' closing", state, state->props.device);
CHECK(snd_pcm_close(state->hndl), "close failed"); CHECK(snd_pcm_close(state->hndl), "%s: close failed", state->props.device);
spa_system_close(state->data_system, state->timerfd); spa_system_close(state->data_system, state->timerfd);
state->opened = false; state->opened = false;

View file

@ -41,7 +41,7 @@
#include "alsa-seq.h" #include "alsa-seq.h"
#define CHECK(s,msg) if ((res = (s)) < 0) { spa_log_error(state->log, msg ": %s", snd_strerror(res)); return res; } #define CHECK(s,msg,...) if ((res = (s)) < 0) { spa_log_error(state->log, msg ": %s", ##__VA_ARGS__, snd_strerror(res)); return res; }
static int seq_open(struct seq_state *state, struct seq_conn *conn, bool with_queue) static int seq_open(struct seq_state *state, struct seq_conn *conn, bool with_queue)
{ {

View file

@ -83,7 +83,7 @@ int spa_v4l2_open(struct spa_v4l2_device *dev, const char *path)
if (xioctl(dev->fd, VIDIOC_QUERYCAP, &dev->cap) < 0) { if (xioctl(dev->fd, VIDIOC_QUERYCAP, &dev->cap) < 0) {
err = errno; err = errno;
spa_log_error(dev->log, "QUERYCAP: %m"); spa_log_error(dev->log, "v4l2: '%s' QUERYCAP: %m", path);
goto error_close; goto error_close;
} }
return 0; return 0;
@ -135,7 +135,7 @@ static int spa_v4l2_buffer_recycle(struct impl *this, uint32_t buffer_id)
if (xioctl(dev->fd, VIDIOC_QBUF, &b->v4l2_buffer) < 0) { if (xioctl(dev->fd, VIDIOC_QBUF, &b->v4l2_buffer) < 0) {
err = errno; err = errno;
spa_log_error(this->log, "VIDIOC_QBUF: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_QBUF: %m", this->props.device);
return -err; return -err;
} }
@ -587,7 +587,8 @@ spa_v4l2_enum_format(struct impl *this, int seq,
goto enum_end; goto enum_end;
res = -errno; res = -errno;
spa_log_error(this->log, "VIDIOC_ENUM_FMT: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_ENUM_FMT: %m",
this->props.device);
goto exit; goto exit;
} }
} }
@ -632,7 +633,8 @@ spa_v4l2_enum_format(struct impl *this, int seq,
goto next_fmtdesc; goto next_fmtdesc;
res = -errno; res = -errno;
spa_log_error(this->log, "VIDIOC_ENUM_FRAMESIZES: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_ENUM_FRAMESIZES: %m",
this->props.device);
goto exit; goto exit;
} }
if (filter) { if (filter) {
@ -722,7 +724,8 @@ spa_v4l2_enum_format(struct impl *this, int seq,
goto next_frmsize; goto next_frmsize;
break; break;
} }
spa_log_error(this->log, "VIDIOC_ENUM_FRAMEINTERVALS: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_ENUM_FRAMEINTERVALS: %m",
this->props.device);
goto exit; goto exit;
} }
if (filter) { if (filter) {
@ -895,7 +898,8 @@ static int spa_v4l2_set_format(struct impl *this, struct spa_video_info *format,
cmd = (flags & SPA_NODE_PARAM_FLAG_TEST_ONLY) ? VIDIOC_TRY_FMT : VIDIOC_S_FMT; cmd = (flags & SPA_NODE_PARAM_FLAG_TEST_ONLY) ? VIDIOC_TRY_FMT : VIDIOC_S_FMT;
if (xioctl(dev->fd, cmd, &fmt) < 0) { if (xioctl(dev->fd, cmd, &fmt) < 0) {
res = -errno; res = -errno;
spa_log_error(this->log, "VIDIOC_S_FMT: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_S_FMT: %m",
this->props.device);
return res; return res;
} }
@ -919,7 +923,8 @@ static int spa_v4l2_set_format(struct impl *this, struct spa_video_info *format,
if (flags & SPA_NODE_PARAM_FLAG_TEST_ONLY) if (flags & SPA_NODE_PARAM_FLAG_TEST_ONLY)
return match ? 0 : 1; return match ? 0 : 1;
spa_log_info(this->log, "v4l2: got %.4s %dx%d %d/%d", (char *)&fmt.fmt.pix.pixelformat, spa_log_info(this->log, "v4l2: '%s' got %.4s %dx%d %d/%d",
this->props.device, (char *)&fmt.fmt.pix.pixelformat,
fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.width, fmt.fmt.pix.height,
streamparm.parm.capture.timeperframe.denominator, streamparm.parm.capture.timeperframe.denominator,
streamparm.parm.capture.timeperframe.numerator); streamparm.parm.capture.timeperframe.numerator);
@ -1064,7 +1069,7 @@ spa_v4l2_enum_controls(struct impl *this, int seq,
goto next; goto next;
} }
res = -errno; res = -errno;
spa_log_error(this->log, "VIDIOC_QUERYCTRL: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_QUERYCTRL: %m", this->props.device);
return res; return res;
} }
if (result.next & next_fl) if (result.next & next_fl)
@ -1231,7 +1236,7 @@ static void v4l2_on_fd_events(struct spa_source *source)
if (source->rmask & SPA_IO_ERR) { if (source->rmask & SPA_IO_ERR) {
struct port *port = &this->out_ports[0]; struct port *port = &this->out_ports[0];
spa_log_error(this->log, "v4l2 %p: error %08x", this, source->rmask); spa_log_error(this->log, "v4l2: '%p' error %08x", this->props.device, source->rmask);
if (port->source.loop) if (port->source.loop)
spa_loop_remove_source(this->data_loop, &port->source); spa_loop_remove_source(this->data_loop, &port->source);
return; return;
@ -1292,12 +1297,13 @@ static int spa_v4l2_use_buffers(struct impl *this, struct spa_buffer **buffers,
reqbuf.count = n_buffers; reqbuf.count = n_buffers;
if (xioctl(dev->fd, VIDIOC_REQBUFS, &reqbuf) < 0) { if (xioctl(dev->fd, VIDIOC_REQBUFS, &reqbuf) < 0) {
spa_log_error(this->log, "v4l2: VIDIOC_REQBUFS %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_REQBUFS %m", this->props.device);
return -errno; return -errno;
} }
spa_log_debug(this->log, "v4l2: got %d buffers", reqbuf.count); spa_log_debug(this->log, "v4l2: got %d buffers", reqbuf.count);
if (reqbuf.count < n_buffers) { if (reqbuf.count < n_buffers) {
spa_log_error(this->log, "v4l2: can't allocate enough buffers"); spa_log_error(this->log, "v4l2: '%s' can't allocate enough buffers %d < %d",
this->props.device, reqbuf.count, n_buffers);
return -ENOMEM; return -ENOMEM;
} }
@ -1374,7 +1380,7 @@ mmap_init(struct impl *this,
reqbuf.count = n_buffers; reqbuf.count = n_buffers;
if (xioctl(dev->fd, VIDIOC_REQBUFS, &reqbuf) < 0) { if (xioctl(dev->fd, VIDIOC_REQBUFS, &reqbuf) < 0) {
spa_log_error(this->log, "VIDIOC_REQBUFS: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_REQBUFS: %m", this->props.device);
return -errno; return -errno;
} }
@ -1382,7 +1388,8 @@ mmap_init(struct impl *this,
n_buffers = reqbuf.count; n_buffers = reqbuf.count;
if (reqbuf.count < 2) { if (reqbuf.count < 2) {
spa_log_error(this->log, "v4l2: can't allocate enough buffers"); spa_log_error(this->log, "v4l2: '%s' can't allocate enough buffers (%d)",
this->props.device, reqbuf.count);
return -ENOMEM; return -ENOMEM;
} }
if (port->export_buf) if (port->export_buf)
@ -1409,7 +1416,7 @@ mmap_init(struct impl *this,
b->v4l2_buffer.index = i; b->v4l2_buffer.index = i;
if (xioctl(dev->fd, VIDIOC_QUERYBUF, &b->v4l2_buffer) < 0) { if (xioctl(dev->fd, VIDIOC_QUERYBUF, &b->v4l2_buffer) < 0) {
spa_log_error(this->log, "VIDIOC_QUERYBUF: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_QUERYBUF: %m", this->props.device);
return -errno; return -errno;
} }
@ -1429,7 +1436,7 @@ mmap_init(struct impl *this,
expbuf.index = i; expbuf.index = i;
expbuf.flags = O_CLOEXEC | O_RDONLY; expbuf.flags = O_CLOEXEC | O_RDONLY;
if (xioctl(dev->fd, VIDIOC_EXPBUF, &expbuf) < 0) { if (xioctl(dev->fd, VIDIOC_EXPBUF, &expbuf) < 0) {
spa_log_error(this->log, "VIDIOC_EXPBUF: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_EXPBUF: %m", this->props.device);
continue; continue;
} }
d[0].type = SPA_DATA_DmaBuf; d[0].type = SPA_DATA_DmaBuf;
@ -1448,7 +1455,7 @@ mmap_init(struct impl *this,
dev->fd, dev->fd,
b->v4l2_buffer.m.offset); b->v4l2_buffer.m.offset);
if (d[0].data == MAP_FAILED) { if (d[0].data == MAP_FAILED) {
spa_log_error(this->log, "mmap: %m"); spa_log_error(this->log, "v4l2: '%s' mmap: %m", this->props.device);
continue; continue;
} }
b->ptr = d[0].data; b->ptr = d[0].data;
@ -1516,7 +1523,7 @@ static int spa_v4l2_stream_on(struct impl *this)
type = V4L2_BUF_TYPE_VIDEO_CAPTURE; type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (xioctl(dev->fd, VIDIOC_STREAMON, &type) < 0) { if (xioctl(dev->fd, VIDIOC_STREAMON, &type) < 0) {
spa_log_error(this->log, "VIDIOC_STREAMON: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_STREAMON: %m", this->props.device);
return -errno; return -errno;
} }
@ -1564,7 +1571,7 @@ static int spa_v4l2_stream_off(struct impl *this)
type = V4L2_BUF_TYPE_VIDEO_CAPTURE; type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (xioctl(dev->fd, VIDIOC_STREAMOFF, &type) < 0) { if (xioctl(dev->fd, VIDIOC_STREAMOFF, &type) < 0) {
spa_log_error(this->log, "VIDIOC_STREAMOFF: %m"); spa_log_error(this->log, "v4l2: '%s' VIDIOC_STREAMOFF: %m", this->props.device);
return -errno; return -errno;
} }
for (i = 0; i < port->n_buffers; i++) { for (i = 0; i < port->n_buffers; i++) {