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
01ef127b
Commit
01ef127b
authored
May 31, 2014
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffmpeg: support setting AVStream.discard
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
5affab96
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
2 deletions
+42
-2
ffmpeg.texi
doc/ffmpeg.texi
+24
-0
ffmpeg.h
ffmpeg.h
+3
-0
ffmpeg_opt.c
ffmpeg_opt.c
+15
-2
No files found.
doc/ffmpeg.texi
View file @
01ef127b
...
...
@@ -1146,6 +1146,30 @@ requested by @command{ffserver}.
The option is intended for cases where features are needed that cannot be
specified to @command
{
ffserver
}
but can be to @command
{
ffmpeg
}
.
@item -discard (@emph
{
input
}
)
Allows discarding specific streams or frames of streams at the demuxer.
Not all demuxers support this.
@table @option
@item none
Discard no frame.
@item default
Default, which discards no frames.
@item noref
Discard all non-reference frames.
@item bidir
Discard all bidirectional frames.
@item nokey
Discard all frames excepts keyframes.
@item all
Discard all frames.
@end table
@end table
As a special exception, you can use a bitmap subtitle stream as input: it
...
...
ffmpeg.h
View file @
01ef127b
...
...
@@ -204,6 +204,8 @@ typedef struct OptionsContext {
int
nb_guess_layout_max
;
SpecifierOpt
*
apad
;
int
nb_apad
;
SpecifierOpt
*
discard
;
int
nb_discard
;
}
OptionsContext
;
typedef
struct
InputFilter
{
...
...
@@ -240,6 +242,7 @@ typedef struct InputStream {
int
file_index
;
AVStream
*
st
;
int
discard
;
/* true if stream data should be discarded */
int
user_set_discard
;
int
decoding_needed
;
/* true if the packets must be decoded in 'raw_fifo' */
AVCodecContext
*
dec_ctx
;
AVCodec
*
dec
;
...
...
ffmpeg_opt.c
View file @
01ef127b
...
...
@@ -572,6 +572,8 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
char
*
framerate
=
NULL
,
*
hwaccel
=
NULL
,
*
hwaccel_device
=
NULL
;
char
*
codec_tag
=
NULL
;
char
*
next
;
char
*
discard_str
=
NULL
;
const
AVOption
*
discard_opt
=
av_opt_find
(
dec
,
"skip_frame"
,
NULL
,
0
,
0
);
if
(
!
ist
)
exit_program
(
1
);
...
...
@@ -601,6 +603,14 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
ist
->
reinit_filters
=
-
1
;
MATCH_PER_STREAM_OPT
(
reinit_filters
,
i
,
ist
->
reinit_filters
,
ic
,
st
);
MATCH_PER_STREAM_OPT
(
discard
,
str
,
discard_str
,
ic
,
st
);
ist
->
user_set_discard
=
AVDISCARD_NONE
;
if
(
discard_str
&&
av_opt_eval_int
(
dec
,
discard_opt
,
discard_str
,
&
ist
->
user_set_discard
)
<
0
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Error parsing discard %s.
\n
"
,
discard_str
);
exit_program
(
1
);
}
ist
->
filter_in_rescale_delta_last
=
AV_NOPTS_VALUE
;
ist
->
dec_ctx
=
avcodec_alloc_context3
(
ist
->
dec
);
...
...
@@ -1165,7 +1175,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
if
(
source_index
>=
0
)
{
ost
->
sync_ist
=
input_streams
[
source_index
];
input_streams
[
source_index
]
->
discard
=
0
;
input_streams
[
source_index
]
->
st
->
discard
=
AVDISCARD_NONE
;
input_streams
[
source_index
]
->
st
->
discard
=
input_streams
[
source_index
]
->
user_set_discard
;
}
ost
->
last_mux_dts
=
AV_NOPTS_VALUE
;
...
...
@@ -1804,7 +1814,7 @@ static int open_output_file(OptionsContext *o, const char *filename)
if
(
ost
->
st
->
codec
->
codec_type
==
AVMEDIA_TYPE_AUDIO
)
ost
->
avfilter
=
av_strdup
(
"anull"
);
if
(
ost
->
st
->
codec
->
codec_type
==
AVMEDIA_TYPE_VIDEO
)
ost
->
avfilter
=
av_strdup
(
"null"
);
ist
->
discard
=
0
;
ist
->
st
->
discard
=
AVDISCARD_NONE
;
ist
->
st
->
discard
=
ist
->
user_set_discard
;
break
;
}
}
...
...
@@ -2852,6 +2862,9 @@ const OptionDef options[] = {
"print timestamp debugging info"
},
{
"max_error_rate"
,
HAS_ARG
|
OPT_FLOAT
,
{
&
max_error_rate
},
"maximum error rate"
,
"ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success."
},
{
"discard"
,
OPT_STRING
|
HAS_ARG
|
OPT_SPEC
|
OPT_INPUT
,
{
.
off
=
OFFSET
(
discard
)
},
"discard"
,
""
},
/* video options */
{
"vframes"
,
OPT_VIDEO
|
HAS_ARG
|
OPT_PERFILE
|
OPT_OUTPUT
,
{
.
func_arg
=
opt_video_frames
},
...
...
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