wintv remote control + kernel patch, add codec fileref, amp up OpenEDL, add loadmode...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / wintv.h
diff --git a/cinelerra-5.1/cinelerra/wintv.h b/cinelerra-5.1/cinelerra/wintv.h
new file mode 100644 (file)
index 0000000..cefb644
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef __WINTV_H__
+#define __WINTV_H__
+// as of 2020/01/06 using kernel version 5.3.16
+//  a patch is needed for: drivers/media/usb/em28xx/em28xx-rc.ko
+//  prototype in thirdparty/src/em28xx-input.patch1
+//#define HAVE_WINTV
+#ifdef HAVE_WINTV
+
+#include "remotecontrol.h"
+#include "thread.h"
+
+#define WTV_OK          0x0160
+#define WTV_LT          0x0069
+#define WTV_UP          0x0067
+#define WTV_RT          0x006a
+#define WTV_DN          0x006c
+#define WTV_HOME        0x0162
+#define WTV_BACK        0x00ae
+#define WTV_MENU        0x008b
+#define WTV_TV          0x0179
+#define WTV_POWER       0x0074
+#define WTV_VOLUP       0x0073
+#define WTV_VOLDN       0x0072
+#define WTV_CH_UP       0x0192
+#define WTV_CH_DN       0x0193
+#define WTV_1           0x0201
+#define WTV_2           0x0202
+#define WTV_3           0x0203
+#define WTV_4           0x0204
+#define WTV_5           0x0205
+#define WTV_6           0x0206
+#define WTV_7           0x0207
+#define WTV_8           0x0208
+#define WTV_9           0x0209
+#define WTV_TEXT        0x0184
+#define WTV_0           0x0200
+#define WTV_CC          0x0172
+#define WTV_BOX         0x0080
+#define WTV_START       0x0195
+#define WTV_REV         0x00a8
+#define WTV_STOP        0x0077
+#define WTV_PLAY        0x00cf
+#define WTV_FWD         0x00d0
+#define WTV_END         0x0197
+#define WTV_MUTE        0x0071
+#define WTV_PREV        0x019c
+#define WTV_RED         0x00a7
+
+struct input_event;
+
+class WinTV : public Thread
+{
+public:
+       WinTV(MWindow *mwindow, int ifd);
+       ~WinTV();
+
+       void stop();
+       void start();
+       static int open_usb_input(int vendor, int product, int &version);
+       static WinTV *probe(MWindow *mwindow);
+       void run();
+       void handle_event();
+       int check_menu_keys(int code);
+       virtual int process_code() { return 1; }
+
+       MWindow *mwindow;
+       input_event *ev;
+       int done, ifd;
+       int last_code, code;
+};
+
+class WinTVCWindowHandler : public RemoteHandler
+{
+public:
+       WinTVCWindowHandler(WinTV *wintv, RemoteControl *remote_control);
+       int wintv_process_code(int code);
+       int process_key(int key);
+
+       WinTV *wintv;
+};
+
+class WinTVRecordHandler : public RemoteHandler
+{
+public:
+       WinTVRecordHandler(WinTV *wintv, RemoteControl *remote_control);
+       int wintv_process_code(int code);
+       int process_key(int key);
+
+       WinTV *wintv;
+};
+
+#endif
+#endif