summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--tools.c17
-rw-r--r--tools.h8
-rw-r--r--vdr.116
-rw-r--r--vdr.c19
6 files changed, 61 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 1c8ade8b..2aa2c21d 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2732,6 +2732,7 @@ Dirk Leber <dirk.leber@reel-multimedia.com>
Marco Göbenich <mg@needful.de>
for reporting a problem with executing diseqc commands from different threads
+ for suggesting to implement command line option --filesize
Johan Andersson <jna@jna.pp.se>
for reporting a bug in detecting frames in case the Picture Start Code or Access Unit
diff --git a/HISTORY b/HISTORY
index bdaadcae..773e7d9f 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6691,3 +6691,7 @@ Video Disk Recorder Revision History
- The cutter now sets the 'broken link' flag for MPEG2 TS recordings (thanks to
Oliver Endriss).
- Fixed language code entry for Portuguese.
+- The new command line options --filesize (suggested by Marco Göbenich) and --split
+ can be used together with --edit to set the maximum video file size and turn on
+ splitting edited files at the editing marks. These options must be given before
+ --edit to have an effect.
diff --git a/tools.c b/tools.c
index e0b11633..ccd2783d 100644
--- a/tools.c
+++ b/tools.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.c 2.15 2011/07/31 13:19:28 kls Exp $
+ * $Id: tools.c 2.16 2011/08/15 12:23:20 kls Exp $
*/
#include "tools.h"
@@ -270,6 +270,21 @@ bool isnumber(const char *s)
return true;
}
+int64_t StrToNum(const char *s)
+{
+ char *t = NULL;
+ int64_t n = strtoll(s, &t, 10);
+ if (t) {
+ switch (*t) {
+ case 'T': n *= 1024;
+ case 'G': n *= 1024;
+ case 'M': n *= 1024;
+ case 'K': n *= 1024;
+ }
+ }
+ return n;
+}
+
cString AddDirectory(const char *DirName, const char *FileName)
{
return cString::sprintf("%s/%s", DirName && *DirName ? DirName : ".", FileName);
diff --git a/tools.h b/tools.h
index 69b9613e..bc51daed 100644
--- a/tools.h
+++ b/tools.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.h 2.9 2011/08/13 13:36:37 kls Exp $
+ * $Id: tools.h 2.10 2011/08/15 11:50:02 kls Exp $
*/
#ifndef __TOOLS_H
@@ -205,6 +205,12 @@ bool endswith(const char *s, const char *p);
bool isempty(const char *s);
int numdigits(int n);
bool isnumber(const char *s);
+int64_t StrToNum(const char *s);
+ ///< Converts the given string to a number.
+ ///< The numerical part of the string may be followed by one of the letters
+ ///< K, M, G or T to abbreviate Kilo-, Mega-, Giga- or Terabyte, respectively
+ ///< (based on 1024). Everything after the first non-numeric character is
+ ///< silently ignored, as are any characters other than the ones mentionend here.
cString itoa(int n);
cString AddDirectory(const char *DirName, const char *FileName);
bool EntriesOnSameFileSystem(const char *File1, const char *File2);
diff --git a/vdr.1 b/vdr.1
index ea93bdda..4c0a9785 100644
--- a/vdr.1
+++ b/vdr.1
@@ -8,7 +8,7 @@
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
-.\" $Id: vdr.1 2.5 2010/04/02 12:22:08 kls Exp $
+.\" $Id: vdr.1 2.6 2011/08/15 12:28:54 kls Exp $
.\"
.TH vdr 1 "10 Feb 2008" "1.6" "Video Disk Recorder"
.SH NAME
@@ -66,6 +66,15 @@ Use \fB\-E\-\fR to disable this.
If \fIfile\fR is a directory, the file \fIepg.data\fR
will be created in that directory.
.TP
+.BI \-\-filesize= size
+Limit video files to \fIsize\fR bytes (default is 2000M).
+This option is only useful in conjunction with --edit, and must precede that
+option to have an effect.
+\fIsize\fR is an integer number and may be followed by one of the letters K, M, G or T
+to abbreviate Kilo-, Mega-, Giga- or Terabyte, respectively.
+The given value is silently limited to the program's internal minimum and
+maximum values.
+.TP
.BI \-\-genindex= rec
Generate the index file for the given recording.
\fIrec\fR must be the full path name of an existing recording.
@@ -157,6 +166,11 @@ more information.
Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
information.
.TP
+.BI \-\-split
+Split edited files at the editing marks.
+This option is only useful in conjunction with --edit, and must precede that
+option to have an effect.
+.TP
.BI \-t\ tty ,\ \-\-terminal= tty
Set the controlling terminal.
.TP
diff --git a/vdr.c b/vdr.c
index 83793756..c32e45fd 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.tvdr.de
*
- * $Id: vdr.c 2.22 2011/07/31 13:42:53 kls Exp $
+ * $Id: vdr.c 2.23 2011/08/15 12:42:39 kls Exp $
*/
#include <getopt.h>
@@ -223,6 +223,7 @@ int main(int argc, char *argv[])
{ "device", required_argument, NULL, 'D' },
{ "edit", required_argument, NULL, 'e' | 0x100 },
{ "epgfile", required_argument, NULL, 'E' },
+ { "filesize", required_argument, NULL, 'f' | 0x100 },
{ "genindex", required_argument, NULL, 'g' | 0x100 },
{ "grab", required_argument, NULL, 'g' },
{ "help", no_argument, NULL, 'h' },
@@ -238,6 +239,7 @@ int main(int argc, char *argv[])
{ "rcu", optional_argument, NULL, 'r' | 0x100 },
{ "record", required_argument, NULL, 'r' },
{ "shutdown", required_argument, NULL, 's' },
+ { "split", no_argument, NULL, 's' | 0x100 },
{ "terminal", required_argument, NULL, 't' },
{ "user", required_argument, NULL, 'u' },
{ "userdump", no_argument, NULL, 'u' | 0x100 },
@@ -270,6 +272,13 @@ int main(int argc, char *argv[])
return CutRecording(optarg) ? 0 : 2;
case 'E': EpgDataFileName = (*optarg != '-' ? optarg : NULL);
break;
+ case 'f' | 0x100:
+ Setup.MaxVideoFileSize = StrToNum(optarg) / MEGABYTE(1);
+ if (Setup.MaxVideoFileSize < MINVIDEOFILESIZE)
+ Setup.MaxVideoFileSize = MINVIDEOFILESIZE;
+ if (Setup.MaxVideoFileSize > MAXVIDEOFILESIZETS)
+ Setup.MaxVideoFileSize = MAXVIDEOFILESIZETS;
+ break;
case 'g' | 0x100:
return GenerateIndex(optarg) ? 0 : 2;
case 'g': cSVDRP::SetGrabImageDir(*optarg != '-' ? optarg : NULL);
@@ -348,6 +357,9 @@ int main(int argc, char *argv[])
break;
case 's': ShutdownHandler.SetShutdownCommand(optarg);
break;
+ case 's' | 0x100:
+ Setup.SplitEditedFiles = 1;
+ break;
case 't': Terminal = optarg;
if (access(Terminal, R_OK | W_OK) < 0) {
fprintf(stderr, "vdr: can't access terminal: %s\n", Terminal);
@@ -419,6 +431,8 @@ int main(int argc, char *argv[])
" '-E-' disables this\n"
" if FILE is a directory, the default EPG file will be\n"
" created in that directory\n"
+ " --filesize=SIZE limit video files to SIZE bytes (default is %dM)\n"
+ " only useful in conjunction with --edit\n"
" --genindex=REC generate index for recording REC and exit\n"
" -g DIR, --grab=DIR write images from the SVDRP command GRAB into the\n"
" given DIR; DIR must be the full path name of an\n"
@@ -445,6 +459,8 @@ int main(int argc, char *argv[])
" (default: %s)\n"
" -r CMD, --record=CMD call CMD before and after a recording\n"
" -s CMD, --shutdown=CMD call CMD to shutdown the computer\n"
+ " --split split edited files at the editing marks (only\n"
+ " useful in conjunction with --edit)\n"
" -t TTY, --terminal=TTY controlling tty\n"
" -u USER, --user=USER run as user USER; only applicable if started as\n"
" root\n"
@@ -458,6 +474,7 @@ int main(int argc, char *argv[])
"\n",
DEFAULTCONFDIR,
DEFAULTEPGDATAFILENAME,
+ MAXVIDEOFILESIZEDEFAULT,
DEFAULTPLUGINDIR,
LIRC_DEVICE,
LOCDIR,