summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfred E. Heggestad <alfred.heggestad@gmail.com>2017-07-28 20:59:28 +0200
committerAlfred E. Heggestad <alfred.heggestad@gmail.com>2017-07-28 20:59:28 +0200
commit5d297b1594765b681466b13257af0a59bf765ff8 (patch)
treee6177ae060c4d4228a00ee4ca3303e0d69daeb97
parentaaa5d3752d0ca2cd8b3a0848580c5253ab24c603 (diff)
v4l2_codec: extra debugging (ref #283)
-rw-r--r--modules/v4l2_codec/v4l2_codec.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/modules/v4l2_codec/v4l2_codec.c b/modules/v4l2_codec/v4l2_codec.c
index 5570c09..d688dad 100644
--- a/modules/v4l2_codec/v4l2_codec.c
+++ b/modules/v4l2_codec/v4l2_codec.c
@@ -298,8 +298,13 @@ static void read_handler(int flags, void *arg)
{
struct vidsrc_st *st = arg;
struct v4l2_buffer buf;
+ bool keyframe = false;
int err;
- (void)flags;
+
+ if (flags & FD_EXCEPT) {
+ warning("v4l2_codec: device error\n");
+ return;
+ }
memset(&buf, 0, sizeof(buf));
@@ -313,11 +318,6 @@ static void read_handler(int flags, void *arg)
return;
}
-#if 0
- debug("image captured at %ld, %ld (%zu bytes)\n",
- buf.timestamp.tv_sec, buf.timestamp.tv_usec,
- (size_t)buf.bytesused);
-#endif
{
struct mbuf mb = {0,0,0,0};
@@ -333,17 +333,29 @@ static void read_handler(int flags, void *arg)
warning("could not decode H.264 header\n");
}
else {
- if (h264_is_keyframe(hdr.type))
+ keyframe = h264_is_keyframe(hdr.type);
+ if (keyframe) {
++st->stats.n_key;
+ }
else
++st->stats.n_delta;
}
}
+#if 0
+ debug("v4l2_codec: %s frame captured at %ldsec, %ldusec (%zu bytes)\n",
+ keyframe ? "KEY" : " ",
+ buf.timestamp.tv_sec, buf.timestamp.tv_usec,
+ (size_t)buf.bytesused);
+#endif
+
/* pass the frame to the encoders */
encoders_read(st->buffer, buf.bytesused);
- query_buffer(st->fd);
+ err = query_buffer(st->fd);
+ if (err) {
+ warning("v4l2_codec: query_buffer failed (%m)\n", err);
+ }
}