aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Shaposhnik <roman@shaposhnik.org>2004-04-06 06:31:12 +0000
committerRoman Shaposhnik <roman@shaposhnik.org>2004-04-06 06:31:12 +0000
commit4568325a1810ea5d829230dc5e9ef0e56c51632f (patch)
tree7285032dd6413a353e2832e33af8598a50ab60bc
parent8c266f0cb76b5f293f257227ba66f68c0914257d (diff)
downloadffmpeg-4568325a1810ea5d829230dc5e9ef0e56c51632f.tar.gz
* making it possible to specify recording date and time in a stream
Originally committed as revision 2971 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--ffmpeg.c11
-rw-r--r--ffserver.c1
-rw-r--r--libavformat/avformat.h1
-rw-r--r--libavformat/dv.c2
4 files changed, 13 insertions, 2 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 35a8fd0de8..e1a2b18d86 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -166,6 +166,7 @@ static int audio_codec_id = CODEC_ID_NONE;
static int64_t recording_time = 0;
static int64_t start_time = 0;
+static int64_t rec_timestamp = 0;
static int file_overwrite = 0;
static char *str_title = NULL;
static char *str_author = NULL;
@@ -2213,6 +2214,11 @@ static void opt_start_time(const char *arg)
start_time = parse_date(arg, 1);
}
+static void opt_rec_timestamp(const char *arg)
+{
+ rec_timestamp = parse_date(arg, 0) / 1000000;
+}
+
static void opt_input_file(const char *filename)
{
AVFormatContext *ic;
@@ -2658,7 +2664,9 @@ static void opt_output_file(const char *filename)
exit(1);
}
- if (str_title)
+ oc->timestamp = rec_timestamp;
+
+ if (str_title)
pstrcpy(oc->title, sizeof(oc->title), str_title);
if (str_author)
pstrcpy(oc->author, sizeof(oc->author), str_author);
@@ -3127,6 +3135,7 @@ const OptionDef options[] = {
{ "t", HAS_ARG, {(void*)opt_recording_time}, "set the recording time", "duration" },
{ "ss", HAS_ARG, {(void*)opt_start_time}, "set the start time offset", "time_off" },
{ "title", HAS_ARG | OPT_STRING, {(void*)&str_title}, "set the title", "string" },
+ { "timestamp", HAS_ARG, {(void*)&opt_rec_timestamp}, "set the timestamp", "time" },
{ "author", HAS_ARG | OPT_STRING, {(void*)&str_author}, "set the author", "string" },
{ "copyright", HAS_ARG | OPT_STRING, {(void*)&str_copyright}, "set the copyright", "string" },
{ "comment", HAS_ARG | OPT_STRING, {(void*)&str_comment}, "set the comment", "string" },
diff --git a/ffserver.c b/ffserver.c
index 20f2b23724..b81b5c8865 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -26,6 +26,7 @@
#include <sys/poll.h>
#include <errno.h>
#include <sys/time.h>
+#undef time //needed because HAVE_AV_CONFIG_H is defined on top
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 7b64e0bbd8..d1db5f3a55 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -251,6 +251,7 @@ typedef struct AVFormatContext {
AVStream *streams[MAX_STREAMS];
char filename[1024]; /* input or output filename */
/* stream info */
+ int64_t timestamp;
char title[512];
char author[512];
char copyright[512];
diff --git a/libavformat/dv.c b/libavformat/dv.c
index 6ff94a7ff8..71033d2718 100644
--- a/libavformat/dv.c
+++ b/libavformat/dv.c
@@ -685,7 +685,7 @@ DVMuxContext* dv_init_mux(AVFormatContext* s)
/* Ok, everything seems to be in working order */
c->frames = 0;
c->has_audio = c->has_video = 0;
- c->start_time = 0;
+ c->start_time = (time_t)s->timestamp;
c->aspect = 0; /* 4:3 is the default */
if ((int)(av_q2d(vst->codec.sample_aspect_ratio) * vst->codec.width / vst->codec.height * 10) == 17) /* 16:9 */
c->aspect = 0x07;