X-Git-Url: https://git.sthu.org/?p=shuber-gentoo-overlay.git;a=blobdiff_plain;f=media-video%2Fv4l2loopback%2Ffiles%2Fuse-v4l2-buffer-ptr-instead-timeval.patch;fp=media-video%2Fv4l2loopback%2Ffiles%2Fuse-v4l2-buffer-ptr-instead-timeval.patch;h=6e95ea32ae02fcea18b3187009c5f4b6ab3288ec;hp=0000000000000000000000000000000000000000;hb=e8e7ec70ffbb7a3f64f8876aaabe66e701ade1b7;hpb=f225eecb7249b68527bd5f6d171fad7f64696c84 diff --git a/media-video/v4l2loopback/files/use-v4l2-buffer-ptr-instead-timeval.patch b/media-video/v4l2loopback/files/use-v4l2-buffer-ptr-instead-timeval.patch new file mode 100644 index 0000000..6e95ea3 --- /dev/null +++ b/media-video/v4l2loopback/files/use-v4l2-buffer-ptr-instead-timeval.patch @@ -0,0 +1,61 @@ +commit d7b657802c109ece5195208db26059921d2d6ebe +Author: Alex Xu (Hello71) +Date: Fri Jan 31 22:04:36 2020 -0500 + + use v4l2_buffer ptr instead of timeval + + 577c89b0ce726e44c08c396d14f84a00070a57b7 changes timestamp to type + __kernel_v4l2_timeval. use v4l2_buffer instead of raw timeval for better + compatibility. + +diff --git a/v4l2loopback.c b/v4l2loopback.c +index f43f98c..4f43a73 100644 +--- a/v4l2loopback.c ++++ b/v4l2loopback.c +@@ -134,7 +134,7 @@ void *v4l2l_vzalloc(unsigned long size) + # define v4l2l_vzalloc vzalloc + #endif + +-static inline void v4l2l_get_timestamp(struct timeval *tv) { ++static inline void v4l2l_get_timestamp(struct v4l2_buffer *b) { + /* ktime_get_ts is considered deprecated, so use ktime_get_ts64 if possible */ + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + struct timespec ts; +@@ -144,8 +144,8 @@ static inline void v4l2l_get_timestamp(struct timeval *tv) { + ktime_get_ts64(&ts); + #endif + +- tv->tv_sec = (time_t)ts.tv_sec; +- tv->tv_usec = (suseconds_t)(ts.tv_nsec / NSEC_PER_USEC); ++ b->timestamp.tv_sec = (time_t)ts.tv_sec; ++ b->timestamp.tv_usec = (suseconds_t)(ts.tv_nsec / NSEC_PER_USEC); + } + + +@@ -1520,7 +1520,7 @@ static int vidioc_qbuf(struct file *file, void *private_data, struct v4l2_buffer + case V4L2_BUF_TYPE_VIDEO_OUTPUT: + dprintkrw("output QBUF pos: %d index: %d\n", dev->write_position, index); + if (buf->timestamp.tv_sec == 0 && buf->timestamp.tv_usec == 0) +- v4l2l_get_timestamp(&b->buffer.timestamp); ++ v4l2l_get_timestamp(&b->buffer); + else + b->buffer.timestamp = buf->timestamp; + b->buffer.bytesused = buf->bytesused; +@@ -1947,7 +1947,7 @@ static ssize_t v4l2_loopback_write(struct file *file, + count); + return -EFAULT; + } +- v4l2l_get_timestamp(&b->timestamp); ++ v4l2l_get_timestamp(b); + b->bytesused = count; + b->sequence = dev->write_position; + buffer_written(dev, &dev->buffers[write_index]); +@@ -2052,7 +2052,7 @@ static void init_buffers(struct v4l2_loopback_device *dev) + b->timestamp.tv_usec = 0; + b->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + +- v4l2l_get_timestamp(&b->timestamp); ++ v4l2l_get_timestamp(b); + } + dev->timeout_image_buffer = dev->buffers[0]; + dev->timeout_image_buffer.buffer.m.offset = MAX_BUFFERS * buffer_size;