From c42262d6496ce718c65a23ab753e59f3fc7e44e6 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Sun, 10 Apr 2022 16:15:13 +0200 Subject: [PATCH] Add `device/dummy` --- device/buffer.h | 1 + device/buffer_list.h | 1 + device/device.h | 1 + device/dummy/buffer.c | 30 ++++++++++++++++++++++++++++++ device/dummy/buffer_list.c | 25 +++++++++++++++++++++++++ device/dummy/device.c | 35 +++++++++++++++++++++++++++++++++++ device/dummy/dummy.c | 28 ++++++++++++++++++++++++++++ device/dummy/dummy.h | 36 ++++++++++++++++++++++++++++++++++++ 8 files changed, 157 insertions(+) create mode 100644 device/dummy/buffer.c create mode 100644 device/dummy/buffer_list.c create mode 100644 device/dummy/device.c create mode 100644 device/dummy/dummy.c create mode 100644 device/dummy/dummy.h diff --git a/device/buffer.h b/device/buffer.h index f1ab6a9..64ace40 100644 --- a/device/buffer.h +++ b/device/buffer.h @@ -24,6 +24,7 @@ typedef struct buffer_s { union { struct buffer_v4l2_s *v4l2; + struct buffer_dummy_s *dummy; }; // State diff --git a/device/buffer_list.h b/device/buffer_list.h index 3c91609..a495823 100644 --- a/device/buffer_list.h +++ b/device/buffer_list.h @@ -17,6 +17,7 @@ typedef struct buffer_list_s { union { struct buffer_list_v4l2_s *v4l2; + struct buffer_list_dummy_s *dummy; }; unsigned fmt_width, fmt_height, fmt_format, fmt_bytesperline, fmt_interval_us; diff --git a/device/device.h b/device/device.h index 77df215..c9813a8 100644 --- a/device/device.h +++ b/device/device.h @@ -40,6 +40,7 @@ typedef struct device_s { union { struct device_v4l2_s *v4l2; + struct device_dummy_s *dummy; }; device_t *output_device; diff --git a/device/dummy/buffer.c b/device/dummy/buffer.c new file mode 100644 index 0000000..a5f85be --- /dev/null +++ b/device/dummy/buffer.c @@ -0,0 +1,30 @@ +#include "dummy.h" +#include "device/buffer.h" + +#include + +int dummy_buffer_open(buffer_t *buf) +{ + buf->dummy = calloc(1, sizeof(buffer_dummy_t)); + return 0; +} + +void dummy_buffer_close(buffer_t *buf) +{ + free(buf->dummy); +} + +int dummy_buffer_enqueue(buffer_t *buf, const char *who) +{ + return -1; +} + +int dummy_buffer_list_dequeue(buffer_list_t *buf_list, buffer_t **bufp) +{ + return -1; +} + +int dummy_buffer_list_pollfd(buffer_list_t *buf_list, struct pollfd *pollfd, bool can_dequeue) +{ + return -1; +} diff --git a/device/dummy/buffer_list.c b/device/dummy/buffer_list.c new file mode 100644 index 0000000..95d9137 --- /dev/null +++ b/device/dummy/buffer_list.c @@ -0,0 +1,25 @@ +#include "dummy.h" +#include "device/buffer_list.h" + +#include + +int dummy_buffer_list_open(buffer_list_t *buf_list, unsigned width, unsigned height, unsigned format, unsigned bytesperline) +{ + buf_list->dummy = calloc(1, sizeof(buffer_list_dummy_t)); + return 0; +} + +void dummy_buffer_list_close(buffer_list_t *buf_list) +{ + free(buf_list->dummy); +} + +int dummy_buffer_list_set_buffers(buffer_list_t *buf_list, int nbufs) +{ + return -1; +} + +int dummy_buffer_list_set_stream(buffer_list_t *buf_list, bool do_on) +{ + return -1; +} diff --git a/device/dummy/device.c b/device/dummy/device.c new file mode 100644 index 0000000..2ea7462 --- /dev/null +++ b/device/dummy/device.c @@ -0,0 +1,35 @@ +#include "dummy.h" +#include "device/device.h" + +#include + +int dummy_device_open(device_t *dev) +{ + dev->dummy = calloc(1, sizeof(device_dummy_t)); + return 0; +} + +void dummy_device_close(device_t *dev) +{ + free(dev->dummy); +} + +int dummy_device_set_decoder_start(device_t *dev, bool do_on) +{ + return -1; +} + +int dummy_device_video_force_key(device_t *dev) +{ + return -1; +} + +int dummy_device_set_fps(device_t *dev, int desired_fps) +{ + return -1; +} + +int dummy_device_set_option(device_t *dev, const char *key, const char *value) +{ + return -1; +} diff --git a/device/dummy/dummy.c b/device/dummy/dummy.c new file mode 100644 index 0000000..ae50394 --- /dev/null +++ b/device/dummy/dummy.c @@ -0,0 +1,28 @@ +#include "dummy.h" + +#include "device/device.h" + +device_hw_t dummy_device_hw = { + .device_open = dummy_device_open, + .device_close = dummy_device_close, + .device_set_decoder_start = dummy_device_set_decoder_start, + .device_video_force_key = dummy_device_video_force_key, + .device_set_fps = dummy_device_set_fps, + .device_set_option = dummy_device_set_option, + + .buffer_open = dummy_buffer_open, + .buffer_close = dummy_buffer_close, + .buffer_enqueue = dummy_buffer_enqueue, + + .buffer_list_dequeue = dummy_buffer_list_dequeue, + .buffer_list_pollfd = dummy_buffer_list_pollfd, + .buffer_list_open = dummy_buffer_list_open, + .buffer_list_close = dummy_buffer_list_close, + .buffer_list_set_buffers = dummy_buffer_list_set_buffers, + .buffer_list_set_stream = dummy_buffer_list_set_stream +}; + +device_t *device_dummy_open(const char *name, const char *path) +{ + return device_open(name, path, &dummy_device_hw); +} diff --git a/device/dummy/dummy.h b/device/dummy/dummy.h new file mode 100644 index 0000000..63911b1 --- /dev/null +++ b/device/dummy/dummy.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +typedef struct buffer_s buffer_t; +typedef struct buffer_list_s buffer_list_t; +typedef struct device_s device_t; +struct pollfd; + +typedef struct device_dummy_s { +} device_dummy_t; + +typedef struct buffer_list_dummy_s { +} buffer_list_dummy_t; + +typedef struct buffer_dummy_s { +} buffer_dummy_t; + +int dummy_device_open(device_t *dev); +void dummy_device_close(device_t *dev); +int dummy_device_set_decoder_start(device_t *dev, bool do_on); +int dummy_device_video_force_key(device_t *dev); +int dummy_device_set_fps(device_t *dev, int desired_fps); +int dummy_device_set_option(device_t *dev, const char *key, const char *value); + +int dummy_buffer_open(buffer_t *buf); +void dummy_buffer_close(buffer_t *buf); +int dummy_buffer_enqueue(buffer_t *buf, const char *who); +int dummy_buffer_list_dequeue(buffer_list_t *buf_list, buffer_t **bufp); +int dummy_buffer_list_pollfd(buffer_list_t *buf_list, struct pollfd *pollfd, bool can_dequeue); + +int dummy_buffer_list_open(buffer_list_t *buf_list, unsigned width, unsigned height, unsigned format, unsigned bytesperline); +void dummy_buffer_list_close(buffer_list_t *buf_list); +int dummy_buffer_list_set_buffers(buffer_list_t *buf_list, int nbufs); +int dummy_buffer_list_set_stream(buffer_list_t *buf_list, bool do_on);