diff options
-rw-r--r-- | src/options.c | 12 | ||||
-rw-r--r-- | src/options.h | 2 | ||||
-rw-r--r-- | src/rharchive.c | 4 | ||||
-rw-r--r-- | src/writer.c | 17 | ||||
-rw-r--r-- | src/writer.h | 6 |
5 files changed, 24 insertions, 17 deletions
diff --git a/src/options.c b/src/options.c index eddf914..3595866 100644 --- a/src/options.c +++ b/src/options.c @@ -199,13 +199,13 @@ int options_parse(options_t* opt, int argc, char* argv[]) PARSE_STRING_PARAM("-s","--source", opt->src_bin_desc_) PARSE_STRING_PARAM("-d","--output-dir", opt->output_dir_) PARSE_STRING_PARAM("-f","--name-format", opt->name_format_) - PARSE_INT_PARAM("-l","--length", opt->length_) + PARSE_INT_PARAM("-i","--interval", opt->interval_) PARSE_INT_PARAM("-o","--offset", opt->offset_) else return i; } - if(opt->length_ <= 0) + if(opt->interval_ <= 0) return -4; if(opt->debug_) { @@ -244,7 +244,7 @@ void options_default(options_t* opt) opt->src_bin_desc_ = NULL; opt->output_dir_ = strdup("/srv/archiv"); opt->name_format_ = strdup("%Y-%m-%d-%H00.ogg"); - opt->length_ = 3600; + opt->interval_ = 50; opt->offset_ = 0; } @@ -289,8 +289,8 @@ void options_print_usage() printf(" as data source, see gst-launch man-page for syntax\n"); printf(" [-d|--output-dir] <path> path to the output directory\n"); printf(" [-f|--name-format] <format> the file name format, see manpage of date for the syntax\n"); - printf(" [-l|--length] <value> length of one file in seconds\n"); - printf(" [-o|--offset] <value> time offset for recordings in 0.1s\n"); + printf(" [-i|--interval] <value> interval for time checks in ms\n"); + printf(" [-o|--offset] <value> time offset for recordings in ms\n"); } void options_print_version() @@ -316,6 +316,6 @@ void options_print(options_t* opt) printf("src_bin_desc: >>%s<<\n", opt->src_bin_desc_); printf("output_dir: '%s'\n", opt->output_dir_); printf("name_format: '%s'\n", opt->name_format_); - printf("length: %d\n", opt->length_); + printf("interval: %d\n", opt->interval_); printf("offset: %d\n", opt->offset_); } diff --git a/src/options.h b/src/options.h index 666e513..aaad77a 100644 --- a/src/options.h +++ b/src/options.h @@ -43,7 +43,7 @@ struct options_struct { char* src_bin_desc_; char* output_dir_; char* name_format_; - int length_; + int interval_; int offset_; }; typedef struct options_struct options_t; diff --git a/src/rharchive.c b/src/rharchive.c index 699738b..dda75f4 100644 --- a/src/rharchive.c +++ b/src/rharchive.c @@ -94,7 +94,7 @@ int main_loop(options_t* opt) return -1; } - int ret = writer_init(&writer, opt->name_format_, opt->output_dir_, opt->length_, opt->offset_); + int ret = writer_init(&writer, opt->name_format_, opt->output_dir_, opt->interval_, opt->offset_); if(ret) { gst_object_unref(GST_OBJECT(pipeline)); gst_object_unref(GST_OBJECT(loop)); @@ -150,7 +150,7 @@ int main(int argc, char* argv[]) if(ret == -3) options_print_version(); if(ret == -4) - fprintf(stderr, "the length must be bigger than 0\n"); + fprintf(stderr, "the interval must be bigger than 0\n"); if(ret != -2 && ret != -3 && ret != -4) options_print_usage(); diff --git a/src/writer.c b/src/writer.c index 6322a00..c8689f0 100644 --- a/src/writer.c +++ b/src/writer.c @@ -31,12 +31,14 @@ #include <sys/stat.h> #include <fcntl.h> +#include <time.h> + #include "writer.h" #include "datatypes.h" #include "log.h" -int writer_init(writer_t* writer, const char* name_format, const char* output_dir, int length, int offset) +int writer_init(writer_t* writer, const char* name_format, const char* output_dir, int interval, int offset) { if(!writer) return -1; @@ -53,8 +55,8 @@ int writer_init(writer_t* writer, const char* name_format, const char* output_di } writer->name_format_ = name_format; writer->output_dir_ = output_dir; - writer->length_ = length; - writer->offset_ = offset; + writer->interval_ = interval * GST_MSECOND; + writer->offset_ = offset * GST_MSECOND; return 0; } @@ -72,7 +74,12 @@ static gpointer writer_thread_func(gpointer data) if(GST_CLOCK_EARLY == ret) continue; - log_printf(NOTICE, "just woke up"); + struct timespec now; + clock_gettime(CLOCK_REALTIME, &now); + + struct tm now_bd; + localtime_r(&(now.tv_sec), &now_bd); + log_printf(NOTICE, "it's now: %d:%d:%d on %d.%d.%d", now_bd.tm_hour, now_bd.tm_min, now_bd.tm_sec, now_bd.tm_mday, now_bd.tm_mon+1, now_bd.tm_year+1900); } log_printf(NOTICE, "writer thread stopped"); @@ -84,7 +91,7 @@ int writer_start(writer_t* writer) if(!writer) return; - writer->clock_id_ = gst_clock_new_periodic_id(writer->clock_, 0, writer->length_*GST_SECOND); + writer->clock_id_ = gst_clock_new_periodic_id(writer->clock_, 0, writer->interval_); writer->thread_ = g_thread_create(writer_thread_func, writer, TRUE, NULL); if(!writer->thread_) { log_printf(ERROR, "writer thread could not be started"); diff --git a/src/writer.h b/src/writer.h index 5189f50..38df718 100644 --- a/src/writer.h +++ b/src/writer.h @@ -37,12 +37,12 @@ struct writer_struct { GThread* thread_; const char* name_format_; const char* output_dir_; - int length_; - int offset_; + GstClockTime interval_; + GstClockTime offset_; }; typedef struct writer_struct writer_t; -int writer_init(writer_t* writer, const char* name_format, const char* output_dir, int length, int offset); +int writer_init(writer_t* writer, const char* name_format, const char* output_dir, int interval, int offset); int writer_start(writer_t* writer); void writer_stop(writer_t* writer); |