summaryrefslogtreecommitdiff
path: root/vdrrip.c
diff options
context:
space:
mode:
Diffstat (limited to 'vdrrip.c')
-rwxr-xr-xvdrrip.c159
1 files changed, 159 insertions, 0 deletions
diff --git a/vdrrip.c b/vdrrip.c
new file mode 100755
index 0000000..69fbfee
--- /dev/null
+++ b/vdrrip.c
@@ -0,0 +1,159 @@
+/*
+ * vdrrip.c: A plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ * $Id$
+ */
+
+#include <unistd.h>
+
+#include <getopt.h>
+#include <vdr/plugin.h>
+#include <vdr/menu.h>
+#include "menu-vdrrip.h"
+#include "movie.h"
+#include "i18n.h"
+#include "a-tools.h"
+
+static const char *VERSION = "0.3.0";
+static const char *DESCRIPTION = "A MPlayer using movie encoder";
+static const char *MAINMENUENTRY = "Vdrrip";
+
+const char *MPlayer = "/usr/local/bin/mplayer";
+const char *MEncoder = "/usr/local/bin/mencoder";
+const char *DVD = "/dev/dvd";
+
+class cPluginVdrrip : public cPlugin {
+private:
+ // Add any member variables or functions you may need here.
+public:
+ cPluginVdrrip(void);
+ virtual ~cPluginVdrrip();
+ virtual const char *Version(void) { return VERSION; }
+ virtual const char *Description(void) { return DESCRIPTION; }
+ virtual const char *CommandLineHelp(void);
+ virtual bool ProcessArgs(int argc, char *argv[]);
+ virtual bool Initialize(void);
+ virtual bool Start(void);
+ virtual void Housekeeping(void);
+ virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
+ virtual cOsdObject *MainMenuAction(void);
+ virtual cMenuSetupPage *SetupMenu(void);
+ virtual bool SetupParse(const char *Name, const char *Value);
+ };
+
+cPluginVdrrip::cPluginVdrrip(void)
+{
+ // Initialize any member variables here.
+ // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
+ // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
+}
+
+cPluginVdrrip::~cPluginVdrrip()
+{
+ // Clean up after yourself!
+}
+
+const char *cPluginVdrrip::CommandLineHelp(void)
+{
+ // Return a string that describes all known command line options.
+ char *s = NULL;
+ asprintf(&s, " -p LOC, --MPlayer=LOC use LOC as location of MPlayer\n"
+ " (default is %s)\n"
+ " -e LOC, --MEncoder=LOC use LOC as location of MEncoder\n"
+ " (default is %s)\n"
+#ifdef VDRRIP_DVD
+ " -d DEV, --DVD=DEV use DEV as your DVD-device\n"
+ " (default is %s)\n"
+#endif // VDRRIP_DVD
+ , MPlayer, MEncoder
+#ifdef VDRRIP_DVD
+ , DVD
+#endif // VDRRIP_DVD
+ );
+ return s;
+}
+
+bool cPluginVdrrip::ProcessArgs(int argc, char *argv[])
+{
+ // Implement command line argument processing here if applicable.
+ static struct option long_options[] = {
+ { "MPlayer", required_argument, NULL, 'p' },
+ { "MEncoder", required_argument, NULL, 'e' },
+ { "DVD", required_argument, NULL, 'd' },
+ { NULL }
+ };
+
+ int c, option_index = 0;
+ while ((c = getopt_long(argc, argv, "p:e:d:", long_options, &option_index)) != -1) {
+ switch (c) {
+ case 'p':
+ MPlayer = optarg;
+ break;
+
+ case 'e':
+ MEncoder = optarg;
+ break;
+
+ case 'd':
+ DVD = optarg;
+ break;
+
+ default:
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool cPluginVdrrip::Initialize(void)
+{
+ // Initialize any background activities the plugin shall perform.
+ return true;
+}
+
+bool cPluginVdrrip::Start(void)
+{
+ // Start any background activities the plugin shall perform.
+ RegisterI18n(Phrases);
+ return true;
+}
+
+void cPluginVdrrip::Housekeeping(void)
+{
+ // Perform any cleanup or other regular tasks.
+}
+
+cOsdObject *cPluginVdrrip::MainMenuAction(void)
+{
+ // Perform the action when selected from the main VDR menu.
+ if (access(MPlayer, X_OK) == -1) {
+ char *s = NULL;
+ asprintf(&s, "%s doesn't exist or isn't a executable !", MPlayer);
+ Interface->Error(s);
+ FREE(s);
+ return NULL;
+ } else if (access(MEncoder, X_OK) == -1) {
+ char *s = NULL;
+ asprintf(&s, "%s doesn't exist or isn't a executable !", MEncoder);
+ Interface->Error(s);
+ FREE(s);
+ return NULL;
+ } else return new cMenuVdrrip();
+}
+
+cMenuSetupPage *cPluginVdrrip::SetupMenu(void)
+{
+ // Return a setup menu in case the plugin supports one.
+ return new cMenuVdrripSetup();
+}
+
+bool cPluginVdrrip::SetupParse(const char *Name, const char *Value)
+{
+ // Parse your own setup parameters and store their values.
+ return VdrripSetup.SetupParse(Name, Value);
+}
+
+VDRPLUGINCREATOR(cPluginVdrrip); // Don't touch this!