Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
5f847bf6
Commit
5f847bf6
authored
Jul 07, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavf: deprecate AVFormatContext.timestamp
It's replaced by 'creation_time' metadata tag.
parent
b12c2592
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
14 deletions
+71
-14
ffmpeg.c
ffmpeg.c
+8
-7
avformat.h
libavformat/avformat.h
+6
-1
dvenc.c
libavformat/dvenc.c
+12
-2
gxfenc.c
libavformat/gxfenc.c
+16
-2
movenc.c
libavformat/movenc.c
+13
-1
mxfenc.c
libavformat/mxfenc.c
+13
-1
version.h
libavformat/version.h
+3
-0
No files found.
ffmpeg.c
View file @
5f847bf6
...
@@ -183,7 +183,6 @@ static float mux_max_delay= 0.7;
...
@@ -183,7 +183,6 @@ static float mux_max_delay= 0.7;
static
int64_t
recording_time
=
INT64_MAX
;
static
int64_t
recording_time
=
INT64_MAX
;
static
int64_t
start_time
=
0
;
static
int64_t
start_time
=
0
;
static
int64_t
recording_timestamp
=
0
;
static
int64_t
input_ts_offset
=
0
;
static
int64_t
input_ts_offset
=
0
;
static
int
file_overwrite
=
0
;
static
int
file_overwrite
=
0
;
static
AVDictionary
*
metadata
;
static
AVDictionary
*
metadata
;
...
@@ -712,9 +711,6 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename)
...
@@ -712,9 +711,6 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename)
nopts
=
1
;
nopts
=
1
;
}
}
if
(
!
nopts
)
s
->
timestamp
=
av_gettime
();
av_close_input_file
(
ic
);
av_close_input_file
(
ic
);
return
0
;
return
0
;
}
}
...
@@ -3109,7 +3105,14 @@ static int opt_start_time(const char *opt, const char *arg)
...
@@ -3109,7 +3105,14 @@ static int opt_start_time(const char *opt, const char *arg)
static
int
opt_recording_timestamp
(
const
char
*
opt
,
const
char
*
arg
)
static
int
opt_recording_timestamp
(
const
char
*
opt
,
const
char
*
arg
)
{
{
recording_timestamp
=
parse_time_or_die
(
opt
,
arg
,
0
)
/
1000000
;
char
buf
[
128
];
int64_t
recording_timestamp
=
parse_time_or_die
(
opt
,
arg
,
0
)
/
1E6
;
struct
tm
time
=
*
gmtime
((
time_t
*
)
&
recording_timestamp
);
strftime
(
buf
,
sizeof
(
buf
),
"creation_time=%FT%T%z"
,
&
time
);
opt_metadata
(
"metadata"
,
buf
);
av_log
(
NULL
,
AV_LOG_WARNING
,
"%s is deprecated, set the 'creation_time' metadata "
"tag instead.
\n
"
,
opt
);
return
0
;
return
0
;
}
}
...
@@ -3823,8 +3826,6 @@ static void opt_output_file(const char *filename)
...
@@ -3823,8 +3826,6 @@ static void opt_output_file(const char *filename)
if
(
use_subtitle
)
new_subtitle_stream
(
oc
,
nb_output_files
);
if
(
use_subtitle
)
new_subtitle_stream
(
oc
,
nb_output_files
);
if
(
use_data
)
new_data_stream
(
oc
,
nb_output_files
);
if
(
use_data
)
new_data_stream
(
oc
,
nb_output_files
);
oc
->
timestamp
=
recording_timestamp
;
av_dict_copy
(
&
oc
->
metadata
,
metadata
,
0
);
av_dict_copy
(
&
oc
->
metadata
,
metadata
,
0
);
av_dict_free
(
&
metadata
);
av_dict_free
(
&
metadata
);
}
}
...
...
libavformat/avformat.h
View file @
5f847bf6
...
@@ -674,7 +674,12 @@ typedef struct AVFormatContext {
...
@@ -674,7 +674,12 @@ typedef struct AVFormatContext {
AVStream
**
streams
;
AVStream
**
streams
;
char
filename
[
1024
];
/**< input or output filename */
char
filename
[
1024
];
/**< input or output filename */
/* stream info */
/* stream info */
int64_t
timestamp
;
#if FF_API_TIMESTAMP
/**
* @deprecated use 'creation_time' metadata tag instead
*/
attribute_deprecated
int64_t
timestamp
;
#endif
int
ctx_flags
;
/**< Format-specific flags, see AVFMTCTX_xx */
int
ctx_flags
;
/**< Format-specific flags, see AVFMTCTX_xx */
/* private data for pts handling (do not modify directly). */
/* private data for pts handling (do not modify directly). */
...
...
libavformat/dvenc.c
View file @
5f847bf6
...
@@ -43,7 +43,7 @@ struct DVMuxContext {
...
@@ -43,7 +43,7 @@ struct DVMuxContext {
AVStream
*
ast
[
2
];
/* stereo audio streams */
AVStream
*
ast
[
2
];
/* stereo audio streams */
AVFifoBuffer
*
audio_data
[
2
];
/* FIFO for storing excessive amounts of PCM */
AVFifoBuffer
*
audio_data
[
2
];
/* FIFO for storing excessive amounts of PCM */
int
frames
;
/* current frame number */
int
frames
;
/* current frame number */
time_t
start_time
;
/* recording start time */
int64_t
start_time
;
/* recording start time */
int
has_audio
;
/* frame under contruction has audio */
int
has_audio
;
/* frame under contruction has audio */
int
has_video
;
/* frame under contruction has video */
int
has_video
;
/* frame under contruction has video */
uint8_t
frame_buf
[
DV_MAX_FRAME_SIZE
];
/* frame under contruction */
uint8_t
frame_buf
[
DV_MAX_FRAME_SIZE
];
/* frame under contruction */
...
@@ -290,6 +290,7 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
...
@@ -290,6 +290,7 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
{
{
DVMuxContext
*
c
=
s
->
priv_data
;
DVMuxContext
*
c
=
s
->
priv_data
;
AVStream
*
vst
=
NULL
;
AVStream
*
vst
=
NULL
;
AVDictionaryEntry
*
t
;
int
i
;
int
i
;
/* we support at most 1 video and 2 audio streams */
/* we support at most 1 video and 2 audio streams */
...
@@ -337,7 +338,16 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
...
@@ -337,7 +338,16 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
c
->
frames
=
0
;
c
->
frames
=
0
;
c
->
has_audio
=
0
;
c
->
has_audio
=
0
;
c
->
has_video
=
0
;
c
->
has_video
=
0
;
c
->
start_time
=
(
time_t
)
s
->
timestamp
;
#if FF_API_TIMESTAMP
if
(
s
->
timestamp
)
c
->
start_time
=
s
->
timestamp
;
else
#endif
if
(
t
=
av_dict_get
(
s
->
metadata
,
"creation_time"
,
NULL
,
0
))
{
struct
tm
time
=
{
0
};
strptime
(
t
->
value
,
"%Y - %m - %dT%T"
,
&
time
);
c
->
start_time
=
mktime
(
&
time
);
}
for
(
i
=
0
;
i
<
c
->
n_ast
;
i
++
)
{
for
(
i
=
0
;
i
<
c
->
n_ast
;
i
++
)
{
if
(
c
->
ast
[
i
]
&&
!
(
c
->
audio_data
[
i
]
=
av_fifo_alloc
(
100
*
AVCODEC_MAX_AUDIO_FRAME_SIZE
)))
{
if
(
c
->
ast
[
i
]
&&
!
(
c
->
audio_data
[
i
]
=
av_fifo_alloc
(
100
*
AVCODEC_MAX_AUDIO_FRAME_SIZE
)))
{
...
...
libavformat/gxfenc.c
View file @
5f847bf6
...
@@ -394,6 +394,20 @@ static int gxf_write_umf_material_description(AVFormatContext *s)
...
@@ -394,6 +394,20 @@ static int gxf_write_umf_material_description(AVFormatContext *s)
GXFContext
*
gxf
=
s
->
priv_data
;
GXFContext
*
gxf
=
s
->
priv_data
;
AVIOContext
*
pb
=
s
->
pb
;
AVIOContext
*
pb
=
s
->
pb
;
int
timecode_base
=
gxf
->
time_base
.
den
==
60000
?
60
:
50
;
int
timecode_base
=
gxf
->
time_base
.
den
==
60000
?
60
:
50
;
int64_t
timestamp
=
0
;
AVDictionaryEntry
*
t
;
#if FF_API_TIMESTAMP
if
(
s
->
timestamp
)
timestamp
=
s
->
timestamp
;
else
#endif
if
(
t
=
av_dict_get
(
s
->
metadata
,
"creation_time"
,
NULL
,
0
))
{
struct
tm
time
=
{
0
};
strptime
(
t
->
value
,
"%Y - %m - %dT%T"
,
&
time
);
timestamp
=
mktime
(
&
time
);
}
// XXX drop frame
// XXX drop frame
uint32_t
timecode
=
uint32_t
timecode
=
...
@@ -409,8 +423,8 @@ static int gxf_write_umf_material_description(AVFormatContext *s)
...
@@ -409,8 +423,8 @@ static int gxf_write_umf_material_description(AVFormatContext *s)
avio_wl32
(
pb
,
gxf
->
nb_fields
);
/* mark out */
avio_wl32
(
pb
,
gxf
->
nb_fields
);
/* mark out */
avio_wl32
(
pb
,
0
);
/* timecode mark in */
avio_wl32
(
pb
,
0
);
/* timecode mark in */
avio_wl32
(
pb
,
timecode
);
/* timecode mark out */
avio_wl32
(
pb
,
timecode
);
/* timecode mark out */
avio_wl64
(
pb
,
s
->
timestamp
);
/* modification time */
avio_wl64
(
pb
,
timestamp
);
/* modification time */
avio_wl64
(
pb
,
s
->
timestamp
);
/* creation time */
avio_wl64
(
pb
,
timestamp
);
/* creation time */
avio_wl16
(
pb
,
0
);
/* reserved */
avio_wl16
(
pb
,
0
);
/* reserved */
avio_wl16
(
pb
,
0
);
/* reserved */
avio_wl16
(
pb
,
0
);
/* reserved */
avio_wl16
(
pb
,
gxf
->
audio_tracks
);
avio_wl16
(
pb
,
gxf
->
audio_tracks
);
...
...
libavformat/movenc.c
View file @
5f847bf6
...
@@ -2129,6 +2129,7 @@ static int mov_write_header(AVFormatContext *s)
...
@@ -2129,6 +2129,7 @@ static int mov_write_header(AVFormatContext *s)
{
{
AVIOContext
*
pb
=
s
->
pb
;
AVIOContext
*
pb
=
s
->
pb
;
MOVMuxContext
*
mov
=
s
->
priv_data
;
MOVMuxContext
*
mov
=
s
->
priv_data
;
AVDictionaryEntry
*
t
;
int
i
,
hint_track
=
0
;
int
i
,
hint_track
=
0
;
if
(
!
s
->
pb
->
seekable
)
{
if
(
!
s
->
pb
->
seekable
)
{
...
@@ -2259,7 +2260,18 @@ static int mov_write_header(AVFormatContext *s)
...
@@ -2259,7 +2260,18 @@ static int mov_write_header(AVFormatContext *s)
}
}
mov_write_mdat_tag
(
pb
,
mov
);
mov_write_mdat_tag
(
pb
,
mov
);
mov
->
time
=
s
->
timestamp
+
0x7C25B080
;
//1970 based -> 1904 based
#if FF_API_TIMESTAMP
if
(
s
->
timestamp
)
mov
->
time
=
s
->
timestamp
;
else
#endif
if
(
t
=
av_dict_get
(
s
->
metadata
,
"creation_time"
,
NULL
,
0
))
{
struct
tm
time
=
{
0
};
strptime
(
t
->
value
,
"%Y - %m - %dT%T"
,
&
time
);
mov
->
time
=
mktime
(
&
time
);
}
mov
->
time
+=
0x7C25B080
;
//1970 based -> 1904 based
if
(
mov
->
chapter_track
)
if
(
mov
->
chapter_track
)
mov_create_chapter_track
(
s
,
mov
->
chapter_track
);
mov_create_chapter_track
(
s
,
mov
->
chapter_track
);
...
...
libavformat/mxfenc.c
View file @
5f847bf6
...
@@ -1407,6 +1407,8 @@ static int mxf_write_header(AVFormatContext *s)
...
@@ -1407,6 +1407,8 @@ static int mxf_write_header(AVFormatContext *s)
int
i
;
int
i
;
uint8_t
present
[
FF_ARRAY_ELEMS
(
mxf_essence_container_uls
)]
=
{
0
};
uint8_t
present
[
FF_ARRAY_ELEMS
(
mxf_essence_container_uls
)]
=
{
0
};
const
int
*
samples_per_frame
=
NULL
;
const
int
*
samples_per_frame
=
NULL
;
AVDictionaryEntry
*
t
;
int64_t
timestamp
=
0
;
if
(
!
s
->
nb_streams
)
if
(
!
s
->
nb_streams
)
return
-
1
;
return
-
1
;
...
@@ -1512,8 +1514,18 @@ static int mxf_write_header(AVFormatContext *s)
...
@@ -1512,8 +1514,18 @@ static int mxf_write_header(AVFormatContext *s)
sc
->
order
=
AV_RB32
(
sc
->
track_essence_element_key
+
12
);
sc
->
order
=
AV_RB32
(
sc
->
track_essence_element_key
+
12
);
}
}
#if FF_API_TIMESTAMP
if
(
s
->
timestamp
)
if
(
s
->
timestamp
)
mxf
->
timestamp
=
mxf_parse_timestamp
(
s
->
timestamp
);
timestamp
=
s
->
timestamp
;
else
#endif
if
(
t
=
av_dict_get
(
s
->
metadata
,
"creation_time"
,
NULL
,
0
))
{
struct
tm
time
=
{
0
};
strptime
(
t
->
value
,
"%Y - %m - %dT%T"
,
&
time
);
timestamp
=
mktime
(
&
time
);
}
if
(
timestamp
)
mxf
->
timestamp
=
mxf_parse_timestamp
(
timestamp
);
mxf
->
duration
=
-
1
;
mxf
->
duration
=
-
1
;
mxf
->
timecode_track
=
av_mallocz
(
sizeof
(
*
mxf
->
timecode_track
));
mxf
->
timecode_track
=
av_mallocz
(
sizeof
(
*
mxf
->
timecode_track
));
...
...
libavformat/version.h
View file @
5f847bf6
...
@@ -83,5 +83,8 @@
...
@@ -83,5 +83,8 @@
#ifndef FF_API_LOOP_OUTPUT
#ifndef FF_API_LOOP_OUTPUT
#define FF_API_LOOP_OUTPUT (LIBAVFORMAT_VERSION_MAJOR < 54)
#define FF_API_LOOP_OUTPUT (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#endif
#ifndef FF_API_TIMESTAMP
#define FF_API_TIMESTAMP (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#endif
/* AVFORMAT_VERSION_H */
#endif
/* AVFORMAT_VERSION_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment