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
e8c04f62
Commit
e8c04f62
authored
Nov 26, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avconv: add symbolic names for -vsync parameters
parent
2df73eef
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
11 deletions
+27
-11
avconv.c
avconv.c
+23
-7
avconv.texi
doc/avconv.texi
+4
-4
No files found.
avconv.c
View file @
e8c04f62
...
@@ -76,6 +76,11 @@
...
@@ -76,6 +76,11 @@
#include "libavutil/avassert.h"
#include "libavutil/avassert.h"
#define VSYNC_AUTO -1
#define VSYNC_PASSTHROUGH 0
#define VSYNC_CFR 1
#define VSYNC_VFR 2
const
char
program_name
[]
=
"avconv"
;
const
char
program_name
[]
=
"avconv"
;
const
int
program_birth_year
=
2000
;
const
int
program_birth_year
=
2000
;
...
@@ -111,7 +116,7 @@ static int do_hex_dump = 0;
...
@@ -111,7 +116,7 @@ static int do_hex_dump = 0;
static
int
do_pkt_dump
=
0
;
static
int
do_pkt_dump
=
0
;
static
int
do_pass
=
0
;
static
int
do_pass
=
0
;
static
char
*
pass_logfilename_prefix
=
NULL
;
static
char
*
pass_logfilename_prefix
=
NULL
;
static
int
video_sync_method
=
-
1
;
static
int
video_sync_method
=
VSYNC_AUTO
;
static
int
audio_sync_method
=
0
;
static
int
audio_sync_method
=
0
;
static
float
audio_drift_threshold
=
0
.
1
;
static
float
audio_drift_threshold
=
0
.
1
;
static
int
copy_ts
=
0
;
static
int
copy_ts
=
0
;
...
@@ -1330,16 +1335,16 @@ static void do_video_out(AVFormatContext *s,
...
@@ -1330,16 +1335,16 @@ static void do_video_out(AVFormatContext *s,
*
frame_size
=
0
;
*
frame_size
=
0
;
format_video_sync
=
video_sync_method
;
format_video_sync
=
video_sync_method
;
if
(
format_video_sync
<
0
)
if
(
format_video_sync
==
VSYNC_AUTO
)
format_video_sync
=
(
s
->
oformat
->
flags
&
AVFMT_NOTIMESTAMPS
)
?
0
:
format_video_sync
=
(
s
->
oformat
->
flags
&
AVFMT_NOTIMESTAMPS
)
?
VSYNC_PASSTHROUGH
:
(
s
->
oformat
->
flags
&
AVFMT_VARIABLE_FPS
)
?
2
:
1
;
(
s
->
oformat
->
flags
&
AVFMT_VARIABLE_FPS
)
?
VSYNC_VFR
:
VSYNC_CFR
;
if
(
format_video_sync
)
{
if
(
format_video_sync
!=
VSYNC_PASSTHROUGH
)
{
double
vdelta
=
sync_ipts
-
ost
->
sync_opts
;
double
vdelta
=
sync_ipts
-
ost
->
sync_opts
;
// FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
// FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
if
(
vdelta
<
-
1
.
1
)
if
(
vdelta
<
-
1
.
1
)
nb_frames
=
0
;
nb_frames
=
0
;
else
if
(
format_video_sync
==
2
)
{
else
if
(
format_video_sync
==
VSYNC_VFR
)
{
if
(
vdelta
<=
-
0
.
6
)
{
if
(
vdelta
<=
-
0
.
6
)
{
nb_frames
=
0
;
nb_frames
=
0
;
}
else
if
(
vdelta
>
0
.
6
)
}
else
if
(
vdelta
>
0
.
6
)
...
@@ -4309,6 +4314,17 @@ static int opt_video_filters(OptionsContext *o, const char *opt, const char *arg
...
@@ -4309,6 +4314,17 @@ static int opt_video_filters(OptionsContext *o, const char *opt, const char *arg
return
parse_option
(
o
,
"filter:v"
,
arg
,
options
);
return
parse_option
(
o
,
"filter:v"
,
arg
,
options
);
}
}
static
int
opt_vsync
(
const
char
*
opt
,
const
char
*
arg
)
{
if
(
!
av_strcasecmp
(
arg
,
"cfr"
))
video_sync_method
=
VSYNC_CFR
;
else
if
(
!
av_strcasecmp
(
arg
,
"vfr"
))
video_sync_method
=
VSYNC_VFR
;
else
if
(
!
av_strcasecmp
(
arg
,
"passthrough"
))
video_sync_method
=
VSYNC_PASSTHROUGH
;
if
(
video_sync_method
==
VSYNC_AUTO
)
video_sync_method
=
parse_number_or_die
(
"vsync"
,
arg
,
OPT_INT
,
VSYNC_AUTO
,
VSYNC_VFR
);
return
0
;
}
#define OFFSET(x) offsetof(OptionsContext, x)
#define OFFSET(x) offsetof(OptionsContext, x)
static
const
OptionDef
options
[]
=
{
static
const
OptionDef
options
[]
=
{
/* main options */
/* main options */
...
@@ -4339,7 +4355,7 @@ static const OptionDef options[] = {
...
@@ -4339,7 +4355,7 @@ static const OptionDef options[] = {
"when dumping packets, also dump the payload"
},
"when dumping packets, also dump the payload"
},
{
"re"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
,
{.
off
=
OFFSET
(
rate_emu
)},
"read input at native frame rate"
,
""
},
{
"re"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
,
{.
off
=
OFFSET
(
rate_emu
)},
"read input at native frame rate"
,
""
},
{
"target"
,
HAS_ARG
|
OPT_FUNC2
,
{(
void
*
)
opt_target
},
"specify target file type (
\"
vcd
\"
,
\"
svcd
\"
,
\"
dvd
\"
,
\"
dv
\"
,
\"
dv50
\"
,
\"
pal-vcd
\"
,
\"
ntsc-svcd
\"
, ...)"
,
"type"
},
{
"target"
,
HAS_ARG
|
OPT_FUNC2
,
{(
void
*
)
opt_target
},
"specify target file type (
\"
vcd
\"
,
\"
svcd
\"
,
\"
dvd
\"
,
\"
dv
\"
,
\"
dv50
\"
,
\"
pal-vcd
\"
,
\"
ntsc-svcd
\"
, ...)"
,
"type"
},
{
"vsync"
,
HAS_ARG
|
OPT_
INT
|
OPT_EXPERT
,
{(
void
*
)
&
video_sync_method
},
"video sync method"
,
""
},
{
"vsync"
,
HAS_ARG
|
OPT_
EXPERT
,
{(
void
*
)
opt_vsync
},
"video sync method"
,
""
},
{
"async"
,
HAS_ARG
|
OPT_INT
|
OPT_EXPERT
,
{(
void
*
)
&
audio_sync_method
},
"audio sync method"
,
""
},
{
"async"
,
HAS_ARG
|
OPT_INT
|
OPT_EXPERT
,
{(
void
*
)
&
audio_sync_method
},
"audio sync method"
,
""
},
{
"adrift_threshold"
,
HAS_ARG
|
OPT_FLOAT
|
OPT_EXPERT
,
{(
void
*
)
&
audio_drift_threshold
},
"audio drift threshold"
,
"threshold"
},
{
"adrift_threshold"
,
HAS_ARG
|
OPT_FLOAT
|
OPT_EXPERT
,
{(
void
*
)
&
audio_drift_threshold
},
"audio drift threshold"
,
"threshold"
},
{
"copyts"
,
OPT_BOOL
|
OPT_EXPERT
,
{(
void
*
)
&
copy_ts
},
"copy timestamps"
},
{
"copyts"
,
OPT_BOOL
|
OPT_EXPERT
,
{(
void
*
)
&
copy_ts
},
"copy timestamps"
},
...
...
doc/avconv.texi
View file @
e8c04f62
...
@@ -746,15 +746,15 @@ Thread count.
...
@@ -746,15 +746,15 @@ Thread count.
Video sync method.
Video sync method.
@table @option
@table @option
@item
0
@item
passthrough
Each frame is passed with its timestamp from the demuxer to the muxer.
Each frame is passed with its timestamp from the demuxer to the muxer.
@item
1
@item
cfr
Frames will be duplicated and dropped to achieve exactly the requested
Frames will be duplicated and dropped to achieve exactly the requested
constant framerate.
constant framerate.
@item
2
@item
vfr
Frames are passed through with their timestamp or dropped so as to
Frames are passed through with their timestamp or dropped so as to
prevent 2 frames from having the same timestamp.
prevent 2 frames from having the same timestamp.
@item
-1
@item
auto
Chooses between 1 and 2 depending on muxer capabilities. This is the
Chooses between 1 and 2 depending on muxer capabilities. This is the
default method.
default method.
@end table
@end table
...
...
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