summaryrefslogtreecommitdiff
path: root/ytdlsb-tasks.h
diff options
context:
space:
mode:
authordyknon dyknonr5fjp2026-01-11 23:04:54 +0900
committerdyknon dyknonr5fjp2026-01-11 23:04:54 +0900
commitb7bc3f0d4488b6822506b9f93121249d078c38e3 (patch)
tree99d287cdefbfeeb20c4470c4f1bfd1eb909e7538 /ytdlsb-tasks.h
parent8439d0383adaee15bfd9a82a4d76db352690750e (diff)
Rewritten: stop using ffmpeg. better flexibility about image size.
Diffstat (limited to 'ytdlsb-tasks.h')
-rw-r--r--ytdlsb-tasks.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/ytdlsb-tasks.h b/ytdlsb-tasks.h
new file mode 100644
index 0000000..86d3070
--- /dev/null
+++ b/ytdlsb-tasks.h
@@ -0,0 +1,39 @@
+#include <poll.h>
+#include <time.h>
+#include <curl/curl.h>
+#include "ytdlsb-utils.h"
+
+typedef int ytdlsb_sock;
+#define YTDLSB_POLLIN POLLIN
+#define YTDLSB_POLLPRI POLLPRI
+#define YTDLSB_POLLOUT POLLOUT
+
+struct ytdlsb_pollfd{
+ ytdlsb_sock fd;
+ short events;
+ short revents;
+};
+struct ytdlsb_task{
+ int (*process)(struct ytdlsb_task *);
+ struct ytdlsb_pollfd *pollfd;
+ size_t pollfd_num;
+ struct timespec timeout;
+ void *data;
+};
+struct ytdlsb_tasks{
+ struct ytdlsb_task *tasks;
+ size_t task_num;
+};
+
+int ytdlsb_tasks_step(struct ytdlsb_tasks *tasks);
+int ytdlsb_task_timeout_ms(struct ytdlsb_task *task, int ms);
+int ytdlsb_task_timeout_ms_min(struct ytdlsb_task *task, int ms);
+int ytdlsb_task_timeout_unset(struct ytdlsb_task *task);
+
+int ytdlsb_task_event_init(struct ytdlsb_task *task,
+ int (*cb)(void *), void *data);
+void ytdlsb_task_event_destroy(struct ytdlsb_task *task);
+int ytdlsb_task_event_wake(struct ytdlsb_task *task);
+
+int ytdlsb_task_fdto_from_curl(
+ struct ytdlsb_task *task, size_t off, int overwrite_timeout, CURLM* cm);