Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
9d3009c6
Commit
9d3009c6
authored
Feb 20, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avconv: print an error on applying options of the wrong type.
I.e. input options to output files or vice versa.
parent
e460aa32
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
119 additions
and
63 deletions
+119
-63
avconv_opt.c
avconv_opt.c
+102
-63
cmdutils.c
cmdutils.c
+10
-0
cmdutils.h
cmdutils.h
+7
-0
No files found.
avconv_opt.c
View file @
9d3009c6
...
...
@@ -1864,8 +1864,8 @@ enum OptGroup {
};
static
const
OptionGroupDef
groups
[]
=
{
[
GROUP_OUTFILE
]
=
{
"output file"
,
NULL
},
[
GROUP_INFILE
]
=
{
"input file"
,
"i"
},
[
GROUP_OUTFILE
]
=
{
"output file"
,
NULL
,
OPT_OUTPUT
},
[
GROUP_INFILE
]
=
{
"input file"
,
"i"
,
OPT_INPUT
},
};
static
int
open_files
(
OptionGroupList
*
l
,
const
char
*
inout
,
...
...
@@ -1951,38 +1951,49 @@ fail:
const
OptionDef
options
[]
=
{
/* main options */
#include "cmdutils_common_opts.h"
{
"f"
,
HAS_ARG
|
OPT_STRING
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
format
)
},
{
"f"
,
HAS_ARG
|
OPT_STRING
|
OPT_OFFSET
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
format
)
},
"force format"
,
"fmt"
},
{
"y"
,
OPT_BOOL
,
{
&
file_overwrite
},
"overwrite output files"
},
{
"c"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
codec_names
)
},
{
"c"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
codec_names
)
},
"codec name"
,
"codec"
},
{
"codec"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
codec_names
)
},
{
"codec"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
codec_names
)
},
"codec name"
,
"codec"
},
{
"pre"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
presets
)
},
{
"pre"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
presets
)
},
"preset name"
,
"preset"
},
{
"map"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_map
},
{
"map"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_map
},
"set input stream mapping"
,
"[-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]"
},
{
"map_metadata"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
metadata_map
)
},
{
"map_metadata"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
metadata_map
)
},
"set metadata information of outfile from infile"
,
"outfile[,metadata]:infile[,metadata]"
},
{
"map_chapters"
,
HAS_ARG
|
OPT_INT
|
OPT_EXPERT
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
chapters_input_file
)
},
{
"map_chapters"
,
HAS_ARG
|
OPT_INT
|
OPT_EXPERT
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
chapters_input_file
)
},
"set chapters mapping"
,
"input_file_index"
},
{
"t"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
recording_time
)
},
{
"t"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
recording_time
)
},
"record or transcode
\"
duration
\"
seconds of audio/video"
,
"duration"
},
{
"fs"
,
HAS_ARG
|
OPT_INT64
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
limit_filesize
)
},
{
"fs"
,
HAS_ARG
|
OPT_INT64
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
limit_filesize
)
},
"set the limit file size in bytes"
,
"limit_size"
},
{
"ss"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
start_time
)
},
{
"ss"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
start_time
)
},
"set the start time offset"
,
"time_off"
},
{
"itsoffset"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
|
OPT_EXPERT
,{
.
off
=
OFFSET
(
input_ts_offset
)
},
{
"itsoffset"
,
HAS_ARG
|
OPT_TIME
|
OPT_OFFSET
|
OPT_EXPERT
|
OPT_INPUT
,
{
.
off
=
OFFSET
(
input_ts_offset
)
},
"set the input ts offset"
,
"time_off"
},
{
"itsscale"
,
HAS_ARG
|
OPT_DOUBLE
|
OPT_SPEC
|
OPT_EXPERT
,{
.
off
=
OFFSET
(
ts_scale
)
},
{
"itsscale"
,
HAS_ARG
|
OPT_DOUBLE
|
OPT_SPEC
|
OPT_EXPERT
|
OPT_INPUT
,
{
.
off
=
OFFSET
(
ts_scale
)
},
"set the input ts scale"
,
"scale"
},
{
"metadata"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
metadata
)
},
{
"metadata"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
metadata
)
},
"add metadata"
,
"string=string"
},
{
"dframes"
,
HAS_ARG
|
OPT_PERFILE
|
OPT_EXPERT
,
{
.
func_arg
=
opt_data_frames
},
{
"dframes"
,
HAS_ARG
|
OPT_PERFILE
|
OPT_EXPERT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_data_frames
},
"set the number of data frames to record"
,
"number"
},
{
"benchmark"
,
OPT_BOOL
|
OPT_EXPERT
,
{
&
do_benchmark
},
"add timings for benchmarking"
},
...
...
@@ -1992,9 +2003,10 @@ const OptionDef options[] = {
"dump each input packet"
},
{
"hex"
,
OPT_BOOL
|
OPT_EXPERT
,
{
&
do_hex_dump
},
"when dumping packets, also dump the payload"
},
{
"re"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
rate_emu
)
},
{
"re"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
|
OPT_INPUT
,
{
.
off
=
OFFSET
(
rate_emu
)
},
"read input at native frame rate"
,
""
},
{
"target"
,
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_target
},
{
"target"
,
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_target
},
"specify target file type (
\"
vcd
\"
,
\"
svcd
\"
,
\"
dvd
\"
,"
"
\"
dv
\"
,
\"
dv50
\"
,
\"
pal-vcd
\"
,
\"
ntsc-svcd
\"
, ...)"
,
"type"
},
{
"vsync"
,
HAS_ARG
|
OPT_EXPERT
,
{
opt_vsync
},
...
...
@@ -2007,57 +2019,71 @@ const OptionDef options[] = {
"copy timestamps"
},
{
"copytb"
,
OPT_BOOL
|
OPT_EXPERT
,
{
&
copy_tb
},
"copy input stream time base when stream copying"
},
{
"shortest"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
shortest
)
},
{
"shortest"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
shortest
)
},
"finish encoding within shortest input"
},
{
"dts_delta_threshold"
,
HAS_ARG
|
OPT_FLOAT
|
OPT_EXPERT
,
{
&
dts_delta_threshold
},
"timestamp discontinuity delta threshold"
,
"threshold"
},
{
"xerror"
,
OPT_BOOL
|
OPT_EXPERT
,
{
&
exit_on_error
},
"exit on error"
,
"error"
},
{
"copyinkf"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
copy_initial_nonkeyframes
)
},
{
"copyinkf"
,
OPT_BOOL
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
copy_initial_nonkeyframes
)
},
"copy initial non-keyframes"
},
{
"frames"
,
OPT_INT64
|
HAS_ARG
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
max_frames
)
},
{
"frames"
,
OPT_INT64
|
HAS_ARG
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
max_frames
)
},
"set the number of frames to record"
,
"number"
},
{
"tag"
,
OPT_STRING
|
HAS_ARG
|
OPT_SPEC
|
OPT_EXPERT
,{
.
off
=
OFFSET
(
codec_tags
)
},
{
"tag"
,
OPT_STRING
|
HAS_ARG
|
OPT_SPEC
|
OPT_EXPERT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
codec_tags
)
},
"force codec tag/fourcc"
,
"fourcc/tag"
},
{
"q"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_DOUBLE
|
OPT_SPEC
,{
.
off
=
OFFSET
(
qscale
)
},
{
"q"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_DOUBLE
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
qscale
)
},
"use fixed quality scale (VBR)"
,
"q"
},
{
"qscale"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_DOUBLE
|
OPT_SPEC
,{
.
off
=
OFFSET
(
qscale
)
},
{
"qscale"
,
HAS_ARG
|
OPT_EXPERT
|
OPT_DOUBLE
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
qscale
)
},
"use fixed quality scale (VBR)"
,
"q"
},
{
"filter"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
filters
)
},
{
"filter"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
filters
)
},
"set stream filterchain"
,
"filter_list"
},
{
"filter_complex"
,
HAS_ARG
|
OPT_EXPERT
,
{
.
func_arg
=
opt_filter_complex
},
"create a complex filtergraph"
,
"graph_description"
},
{
"stats"
,
OPT_BOOL
,
{
&
print_stats
},
"print progress report during encoding"
,
},
{
"attach"
,
HAS_ARG
|
OPT_PERFILE
|
OPT_EXPERT
,
{
.
func_arg
=
opt_attach
},
{
"attach"
,
HAS_ARG
|
OPT_PERFILE
|
OPT_EXPERT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_attach
},
"add an attachment to the output file"
,
"filename"
},
{
"dump_attachment"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_EXPERT
,{
.
off
=
OFFSET
(
dump_attachment
)
},
{
"dump_attachment"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_EXPERT
|
OPT_INPUT
,
{
.
off
=
OFFSET
(
dump_attachment
)
},
"extract an attachment into a file"
,
"filename"
},
{
"cpuflags"
,
HAS_ARG
|
OPT_EXPERT
,
{
.
func_arg
=
opt_cpuflags
},
"set CPU flags mask"
,
"mask"
},
/* video options */
{
"vframes"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_video_frames
},
{
"vframes"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_video_frames
},
"set the number of video frames to record"
,
"number"
},
{
"r"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
frame_rates
)
},
{
"r"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
frame_rates
)
},
"set frame rate (Hz value, fraction or abbreviation)"
,
"rate"
},
{
"s"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
frame_sizes
)
},
{
"s"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
frame_sizes
)
},
"set frame size (WxH or abbreviation)"
,
"size"
},
{
"aspect"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
frame_aspect_ratios
)
},
{
"aspect"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
frame_aspect_ratios
)
},
"set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)"
,
"aspect"
},
{
"pix_fmt"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
frame_pix_fmts
)
},
{
"pix_fmt"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
frame_pix_fmts
)
},
"set pixel format"
,
"format"
},
{
"vn"
,
OPT_VIDEO
|
OPT_BOOL
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
video_disable
)
},
{
"vn"
,
OPT_VIDEO
|
OPT_BOOL
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
video_disable
)
},
"disable video"
},
{
"vdt"
,
OPT_VIDEO
|
OPT_INT
|
HAS_ARG
|
OPT_EXPERT
,
{
&
video_discard
},
"discard threshold"
,
"n"
},
{
"rc_override"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
rc_overrides
)
},
{
"rc_override"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
rc_overrides
)
},
"rate control override for specific intervals"
,
"override"
},
{
"vcodec"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_video_codec
},
{
"vcodec"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_video_codec
},
"force video codec ('copy' to copy stream)"
,
"codec"
},
{
"pass"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_SPEC
|
OPT_INT
,
{
.
off
=
OFFSET
(
pass
)
},
{
"pass"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_SPEC
|
OPT_INT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
pass
)
},
"select the pass number (1 or 2)"
,
"n"
},
{
"passlogfile"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_EXPERT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
passlogfiles
)
},
{
"passlogfile"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_STRING
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
passlogfiles
)
},
"select two pass log file name prefix"
,
"prefix"
},
#if FF_API_DEINTERLACE
{
"deinterlace"
,
OPT_VIDEO
|
OPT_EXPERT
,
{
.
func_arg
=
opt_deinterlace
},
...
...
@@ -2067,73 +2093,86 @@ const OptionDef options[] = {
"dump video coding statistics to file"
},
{
"vstats_file"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
,
{
opt_vstats_file
},
"dump video coding statistics to file"
,
"file"
},
{
"vf"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_video_filters
},
{
"vf"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_video_filters
},
"video filters"
,
"filter list"
},
{
"intra_matrix"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
intra_matrices
)
},
{
"intra_matrix"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
intra_matrices
)
},
"specify intra matrix coeffs"
,
"matrix"
},
{
"inter_matrix"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
inter_matrices
)
},
{
"inter_matrix"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_STRING
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
inter_matrices
)
},
"specify inter matrix coeffs"
,
"matrix"
},
{
"top"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_INT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
top_field_first
)
},
{
"top"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_INT
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
top_field_first
)
},
"top=1/bottom=0/auto=-1 field first"
,
""
},
{
"dc"
,
OPT_VIDEO
|
OPT_INT
|
HAS_ARG
|
OPT_EXPERT
,
{
&
intra_dc_precision
},
"intra_dc_precision"
,
"precision"
},
{
"vtag"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_video_tag
},
{
"vtag"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_video_tag
},
"force video tag/fourcc"
,
"fourcc/tag"
},
{
"qphist"
,
OPT_VIDEO
|
OPT_BOOL
|
OPT_EXPERT
,
{
&
qp_hist
},
"show QP histogram"
},
{
"force_fps"
,
OPT_VIDEO
|
OPT_BOOL
|
OPT_EXPERT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
force_fps
)
},
{
"force_fps"
,
OPT_VIDEO
|
OPT_BOOL
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
force_fps
)
},
"force the selected framerate, disable the best supported framerate selection"
},
{
"streamid"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_streamid
},
{
"streamid"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_streamid
},
"set the value of an outfile streamid"
,
"streamIndex:value"
},
{
"force_key_frames"
,
OPT_VIDEO
|
OPT_STRING
|
HAS_ARG
|
OPT_EXPERT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
forced_key_frames
)
},
"force key frames at specified timestamps"
,
"timestamps"
},
{
"force_key_frames"
,
OPT_VIDEO
|
OPT_STRING
|
HAS_ARG
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
forced_key_frames
)
},
"force key frames at specified timestamps"
,
"timestamps"
},
/* audio options */
{
"aframes"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_audio_frames
},
{
"aframes"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_audio_frames
},
"set the number of audio frames to record"
,
"number"
},
{
"aq"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_audio_qscale
},
{
"aq"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_audio_qscale
},
"set audio quality (codec-specific)"
,
"quality"
,
},
{
"ar"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_INT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
audio_sample_rate
)
},
{
"ar"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_INT
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
audio_sample_rate
)
},
"set audio sampling rate (in Hz)"
,
"rate"
},
{
"ac"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_INT
|
OPT_SPEC
,
{
.
off
=
OFFSET
(
audio_channels
)
},
{
"ac"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_INT
|
OPT_SPEC
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
audio_channels
)
},
"set number of audio channels"
,
"channels"
},
{
"an"
,
OPT_AUDIO
|
OPT_BOOL
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
audio_disable
)
},
{
"an"
,
OPT_AUDIO
|
OPT_BOOL
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
audio_disable
)
},
"disable audio"
},
{
"acodec"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_audio_codec
},
{
"acodec"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_audio_codec
},
"force audio codec ('copy' to copy stream)"
,
"codec"
},
{
"atag"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_audio_tag
},
{
"atag"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_audio_tag
},
"force audio tag/fourcc"
,
"fourcc/tag"
},
{
"vol"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_INT
,
{
&
audio_volume
},
"change audio volume (256=normal)"
,
"volume"
},
{
"sample_fmt"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_STRING
,
{
.
off
=
OFFSET
(
sample_fmts
)
},
{
"sample_fmt"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_SPEC
|
OPT_STRING
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
sample_fmts
)
},
"set sample format"
,
"format"
},
{
"channel_layout"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_channel_layout
},
{
"channel_layout"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_channel_layout
},
"set channel layout"
,
"layout"
},
{
"af"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_audio_filters
},
{
"af"
,
OPT_AUDIO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_audio_filters
},
"audio filters"
,
"filter list"
},
/* subtitle options */
{
"sn"
,
OPT_SUBTITLE
|
OPT_BOOL
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
subtitle_disable
)
},
{
"sn"
,
OPT_SUBTITLE
|
OPT_BOOL
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
subtitle_disable
)
},
"disable subtitle"
},
{
"scodec"
,
OPT_SUBTITLE
|
HAS_ARG
|
OPT_PERFILE
,
{
.
func_arg
=
opt_subtitle_codec
},
{
"scodec"
,
OPT_SUBTITLE
|
HAS_ARG
|
OPT_PERFILE
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_subtitle_codec
},
"force subtitle codec ('copy' to copy stream)"
,
"codec"
},
{
"stag"
,
OPT_SUBTITLE
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
,
{
.
func_arg
=
opt_subtitle_tag
}
{
"stag"
,
OPT_SUBTITLE
|
HAS_ARG
|
OPT_EXPERT
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_subtitle_tag
}
,
"force subtitle tag/fourcc"
,
"fourcc/tag"
},
/* grab options */
{
"isync"
,
OPT_BOOL
|
OPT_EXPERT
,
{
&
input_sync
},
"this option is deprecated and does nothing"
,
""
},
/* muxer options */
{
"muxdelay"
,
OPT_FLOAT
|
HAS_ARG
|
OPT_EXPERT
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
mux_max_delay
)
},
{
"muxdelay"
,
OPT_FLOAT
|
HAS_ARG
|
OPT_EXPERT
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
mux_max_delay
)
},
"set the maximum demux-decode delay"
,
"seconds"
},
{
"muxpreload"
,
OPT_FLOAT
|
HAS_ARG
|
OPT_EXPERT
|
OPT_OFFSET
,
{
.
off
=
OFFSET
(
mux_preload
)
},
{
"muxpreload"
,
OPT_FLOAT
|
HAS_ARG
|
OPT_EXPERT
|
OPT_OFFSET
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
mux_preload
)
},
"set the initial demux-decode delay"
,
"seconds"
},
{
"bsf"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_EXPERT
,
{
.
off
=
OFFSET
(
bitstream_filters
)
},
{
"bsf"
,
HAS_ARG
|
OPT_STRING
|
OPT_SPEC
|
OPT_EXPERT
|
OPT_OUTPUT
,
{
.
off
=
OFFSET
(
bitstream_filters
)
},
"A comma-separated list of bitstream filters"
,
"bitstream_filters"
},
/* data codec support */
{
"dcodec"
,
HAS_ARG
|
OPT_DATA
|
OPT_PERFILE
|
OPT_EXPERT
,
{
.
func_arg
=
opt_data_codec
},
{
"dcodec"
,
HAS_ARG
|
OPT_DATA
|
OPT_PERFILE
|
OPT_EXPERT
|
OPT_INPUT
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_data_codec
},
"force data codec ('copy' to copy stream)"
,
"codec"
},
{
NULL
,
},
...
...
cmdutils.c
View file @
9d3009c6
...
...
@@ -351,6 +351,16 @@ int parse_optgroup(void *optctx, OptionGroup *g)
for
(
i
=
0
;
i
<
g
->
nb_opts
;
i
++
)
{
Option
*
o
=
&
g
->
opts
[
i
];
if
(
g
->
group_def
->
flags
&&
!
(
g
->
group_def
->
flags
&
o
->
opt
->
flags
))
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Option %s (%s) cannot be applied to "
"%s %s -- you are trying to apply an input option to an "
"output file or vice versa. Move this option before the "
"file it belongs to.
\n
"
,
o
->
key
,
o
->
opt
->
help
,
g
->
group_def
->
name
,
g
->
arg
);
return
AVERROR
(
EINVAL
);
}
av_log
(
NULL
,
AV_LOG_DEBUG
,
"Applying option %s (%s) with argument %s.
\n
"
,
o
->
key
,
o
->
opt
->
help
,
o
->
val
);
...
...
cmdutils.h
View file @
9d3009c6
...
...
@@ -144,6 +144,8 @@ typedef struct OptionDef {
an int containing element count in the array. */
#define OPT_TIME 0x10000
#define OPT_DOUBLE 0x20000
#define OPT_INPUT 0x40000
#define OPT_OUTPUT 0x80000
union
{
void
*
dst_ptr
;
int
(
*
func_arg
)(
void
*
,
const
char
*
,
const
char
*
);
...
...
@@ -224,6 +226,11 @@ typedef struct OptionGroupDef {
* are terminated by a non-option argument (e.g. avconv output files)
*/
const
char
*
sep
;
/**
* Option flags that must be set on each option that is
* applied to this group
*/
int
flags
;
}
OptionGroupDef
;
typedef
struct
OptionGroup
{
...
...
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