diff options
author | Alfred E. Heggestad <alfred.heggestad@gmail.com> | 2017-07-28 20:59:28 +0200 |
---|---|---|
committer | Alfred E. Heggestad <alfred.heggestad@gmail.com> | 2017-07-28 20:59:28 +0200 |
commit | 5d297b1594765b681466b13257af0a59bf765ff8 (patch) | |
tree | e6177ae060c4d4228a00ee4ca3303e0d69daeb97 | |
parent | aaa5d3752d0ca2cd8b3a0848580c5253ab24c603 (diff) |
v4l2_codec: extra debugging (ref #283)
-rw-r--r-- | modules/v4l2_codec/v4l2_codec.c | 28 |
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); + } } |