Commit 1b18e7a0be859911b22138ce27258687efc528b8

Authored by Sakari Ailus
Committed by Mauro Carvalho Chehab
1 parent 8e6057b510

[media] v4l: Tell user space we're using monotonic timestamps

Set buffer timestamp flags for videobuf, videobuf2 and drivers that use
neither.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

Showing 10 changed files with 23 additions and 12 deletions Side-by-side Diff

drivers/media/pci/meye/meye.c
... ... @@ -1426,7 +1426,7 @@
1426 1426 return -EINVAL;
1427 1427  
1428 1428 buf->bytesused = meye.grab_buffer[index].size;
1429   - buf->flags = V4L2_BUF_FLAG_MAPPED;
  1429 + buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
1430 1430  
1431 1431 if (meye.grab_buffer[index].state == MEYE_BUF_USING)
1432 1432 buf->flags |= V4L2_BUF_FLAG_QUEUED;
... ... @@ -1499,7 +1499,7 @@
1499 1499  
1500 1500 buf->index = reqnr;
1501 1501 buf->bytesused = meye.grab_buffer[reqnr].size;
1502   - buf->flags = V4L2_BUF_FLAG_MAPPED;
  1502 + buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
1503 1503 buf->field = V4L2_FIELD_NONE;
1504 1504 buf->timestamp = meye.grab_buffer[reqnr].timestamp;
1505 1505 buf->sequence = meye.grab_buffer[reqnr].sequence;
drivers/media/pci/zoran/zoran_driver.c
... ... @@ -1334,7 +1334,7 @@
1334 1334 struct zoran *zr = fh->zr;
1335 1335 unsigned long flags;
1336 1336  
1337   - buf->flags = V4L2_BUF_FLAG_MAPPED;
  1337 + buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
1338 1338  
1339 1339 switch (fh->map_mode) {
1340 1340 case ZORAN_MAP_MODE_RAW:
drivers/media/platform/omap3isp/ispqueue.c
... ... @@ -674,6 +674,7 @@
674 674 buf->vbuf.index = i;
675 675 buf->vbuf.length = size;
676 676 buf->vbuf.type = queue->type;
  677 + buf->vbuf.flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
677 678 buf->vbuf.field = V4L2_FIELD_NONE;
678 679 buf->vbuf.memory = memory;
679 680  
drivers/media/platform/vino.c
... ... @@ -3410,6 +3410,9 @@
3410 3410 if (fb->map_count > 0)
3411 3411 b->flags |= V4L2_BUF_FLAG_MAPPED;
3412 3412  
  3413 + b->flags &= ~V4L2_BUF_FLAG_TIMESTAMP_MASK;
  3414 + b->flags |= V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
  3415 +
3413 3416 b->index = fb->id;
3414 3417 b->memory = (vcs->fb_queue.type == VINO_MEMORY_MMAP) ?
3415 3418 V4L2_MEMORY_MMAP : V4L2_MEMORY_USERPTR;
drivers/media/usb/cpia2/cpia2_v4l.c
... ... @@ -825,6 +825,8 @@
825 825 else
826 826 buf->flags = 0;
827 827  
  828 + buf->flags |= V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
  829 +
828 830 switch (cam->buffers[buf->index].status) {
829 831 case FRAME_EMPTY:
830 832 case FRAME_ERROR:
... ... @@ -943,7 +945,8 @@
943 945  
944 946 buf->index = frame;
945 947 buf->bytesused = cam->buffers[buf->index].length;
946   - buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_DONE;
  948 + buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_DONE
  949 + | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
947 950 buf->field = V4L2_FIELD_NONE;
948 951 buf->timestamp = cam->buffers[buf->index].timestamp;
949 952 buf->sequence = cam->buffers[buf->index].seq;
drivers/media/usb/sn9c102/sn9c102_core.c
... ... @@ -173,7 +173,7 @@
173 173 cam->frame[i].buf.sequence = 0;
174 174 cam->frame[i].buf.field = V4L2_FIELD_NONE;
175 175 cam->frame[i].buf.memory = V4L2_MEMORY_MMAP;
176   - cam->frame[i].buf.flags = 0;
  176 + cam->frame[i].buf.flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
177 177 }
178 178  
179 179 return cam->nbuffers;
drivers/media/usb/stkwebcam/stk-webcam.c
... ... @@ -466,6 +466,7 @@
466 466 buf->dev = dev;
467 467 buf->v4lbuf.index = index;
468 468 buf->v4lbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  469 + buf->v4lbuf.flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
469 470 buf->v4lbuf.field = V4L2_FIELD_NONE;
470 471 buf->v4lbuf.memory = V4L2_MEMORY_MMAP;
471 472 buf->v4lbuf.m.offset = 2*index*buf->v4lbuf.length;
drivers/media/usb/usbvision/usbvision-video.c
... ... @@ -761,7 +761,7 @@
761 761 if (vb->index >= usbvision->num_frames)
762 762 return -EINVAL;
763 763 /* Updating the corresponding frame state */
764   - vb->flags = 0;
  764 + vb->flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
765 765 frame = &usbvision->frame[vb->index];
766 766 if (frame->grabstate >= frame_state_ready)
767 767 vb->flags |= V4L2_BUF_FLAG_QUEUED;
... ... @@ -843,7 +843,8 @@
843 843 vb->memory = V4L2_MEMORY_MMAP;
844 844 vb->flags = V4L2_BUF_FLAG_MAPPED |
845 845 V4L2_BUF_FLAG_QUEUED |
846   - V4L2_BUF_FLAG_DONE;
  846 + V4L2_BUF_FLAG_DONE |
  847 + V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
847 848 vb->index = f->index;
848 849 vb->sequence = f->sequence;
849 850 vb->timestamp = f->timestamp;
drivers/media/v4l2-core/videobuf-core.c
... ... @@ -340,7 +340,7 @@
340 340 break;
341 341 }
342 342  
343   - b->flags = 0;
  343 + b->flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
344 344 if (vb->map)
345 345 b->flags |= V4L2_BUF_FLAG_MAPPED;
346 346  
drivers/media/v4l2-core/videobuf2-core.c
... ... @@ -40,9 +40,10 @@
40 40 #define call_qop(q, op, args...) \
41 41 (((q)->ops->op) ? ((q)->ops->op(args)) : 0)
42 42  
43   -#define V4L2_BUFFER_STATE_FLAGS (V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_QUEUED | \
  43 +#define V4L2_BUFFER_MASK_FLAGS (V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_QUEUED | \
44 44 V4L2_BUF_FLAG_DONE | V4L2_BUF_FLAG_ERROR | \
45   - V4L2_BUF_FLAG_PREPARED)
  45 + V4L2_BUF_FLAG_PREPARED | \
  46 + V4L2_BUF_FLAG_TIMESTAMP_MASK)
46 47  
47 48 /**
48 49 * __vb2_buf_mem_alloc() - allocate video memory for the given buffer
... ... @@ -401,7 +402,8 @@
401 402 /*
402 403 * Clear any buffer state related flags.
403 404 */
404   - b->flags &= ~V4L2_BUFFER_STATE_FLAGS;
  405 + b->flags &= ~V4L2_BUFFER_MASK_FLAGS;
  406 + b->flags |= V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
405 407  
406 408 switch (vb->state) {
407 409 case VB2_BUF_STATE_QUEUED:
... ... @@ -939,7 +941,7 @@
939 941  
940 942 vb->v4l2_buf.field = b->field;
941 943 vb->v4l2_buf.timestamp = b->timestamp;
942   - vb->v4l2_buf.flags = b->flags & ~V4L2_BUFFER_STATE_FLAGS;
  944 + vb->v4l2_buf.flags = b->flags & ~V4L2_BUFFER_MASK_FLAGS;
943 945 }
944 946  
945 947 /**