lavfi: move movie and amovie to a "multimedia sources" section

Since the recent changes, movie and amovie are able to deal with more
than one type of stream, so they should be categorized as "multimedia
sources" rather than audio/video sources.
This commit is contained in:
Stefano Sabatini 2012-07-23 23:21:33 +02:00
parent 7cf9aaddcd
commit 32390d6767
4 changed files with 98 additions and 87 deletions

View File

@ -958,11 +958,6 @@ aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) : 0.1*sin(2*PI*(360+2.5/2)*t)"
@end itemize
@section amovie
This is the same as @ref{src_movie} source, except it selects an audio
stream by default.
@section anullsrc
Null audio source, return unprocessed audio frames. It is mainly useful
@ -3612,82 +3607,6 @@ to the pad with identifier "in".
"color=c=red@@0.2:s=qcif:r=10 [color]; [in][color] overlay [out]"
@end example
@anchor{src_movie}
@section movie
Read audio and/or video stream(s) from a movie container.
It accepts the syntax: @var{movie_name}[:@var{options}] where
@var{movie_name} is the name of the resource to read (not necessarily
a file but also a device or a stream accessed through some protocol),
and @var{options} is an optional sequence of @var{key}=@var{value}
pairs, separated by ":".
The description of the accepted options follows.
@table @option
@item format_name, f
Specifies the format assumed for the movie to read, and can be either
the name of a container or an input device. If not specified the
format is guessed from @var{movie_name} or by probing.
@item seek_point, sp
Specifies the seek point in seconds, the frames will be output
starting from this seek point, the parameter is evaluated with
@code{av_strtod} so the numerical value may be suffixed by an IS
postfix. Default value is "0".
@item streams, s
Specifies the streams to read. Several streams can be specified, separated
by "+". The source will then have as many outputs, in the same order. The
syntax is explained in the @ref{Stream specifiers} chapter. Two special
names, "dv" and "da" specify respectively the default (best suited) video
and audio stream. Default is "dv", or "da" if the filter is called as
"amovie".
@item stream_index, si
Specifies the index of the video stream to read. If the value is -1,
the best suited video stream will be automatically selected. Default
value is "-1". Deprecated. If the filter is called "amovie", it will select
audio instead of video.
@item loop
Specifies how many times to read the stream in sequence.
If the value is less than 1, the stream will be read again and again.
Default value is "1".
Note that when the movie is looped the source timestamps are not
changed, so it will generate non monotonically increasing timestamps.
@end table
This filter allows to overlay a second video on top of main input of
a filtergraph as shown in this graph:
@example
input -----------> deltapts0 --> overlay --> output
^
|
movie --> scale--> deltapts1 -------+
@end example
Some examples follow:
@example
# skip 3.2 seconds from the start of the avi file in.avi, and overlay it
# on top of the input labelled as "in".
movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
# read from a video4linux2 device, and overlay it on top of the input
# labelled as "in"
movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
# read the first video stream and the audio stream with id 0x81 from
# dvd.vob; the video is connected to the pad named "video" and the audio is
# connected to the pad named "audio":
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
@end example
@section mptestsrc
Generate various test patterns, as generated by the MPlayer test filter.
@ -4114,3 +4033,91 @@ aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=
@end itemize
@c man end MULTIMEDIA FILTERS
@chapter Multimedia Sources
@c man begin MULTIMEDIA SOURCES
Below is a description of the currently available multimedia sources.
@section amovie
This is the same as @ref{src_movie} source, except it selects an audio
stream by default.
@anchor{src_movie}
@section movie
Read audio and/or video stream(s) from a movie container.
It accepts the syntax: @var{movie_name}[:@var{options}] where
@var{movie_name} is the name of the resource to read (not necessarily
a file but also a device or a stream accessed through some protocol),
and @var{options} is an optional sequence of @var{key}=@var{value}
pairs, separated by ":".
The description of the accepted options follows.
@table @option
@item format_name, f
Specifies the format assumed for the movie to read, and can be either
the name of a container or an input device. If not specified the
format is guessed from @var{movie_name} or by probing.
@item seek_point, sp
Specifies the seek point in seconds, the frames will be output
starting from this seek point, the parameter is evaluated with
@code{av_strtod} so the numerical value may be suffixed by an IS
postfix. Default value is "0".
@item streams, s
Specifies the streams to read. Several streams can be specified, separated
by "+". The source will then have as many outputs, in the same order. The
syntax is explained in the @ref{Stream specifiers} chapter. Two special
names, "dv" and "da" specify respectively the default (best suited) video
and audio stream. Default is "dv", or "da" if the filter is called as
"amovie".
@item stream_index, si
Specifies the index of the video stream to read. If the value is -1,
the best suited video stream will be automatically selected. Default
value is "-1". Deprecated. If the filter is called "amovie", it will select
audio instead of video.
@item loop
Specifies how many times to read the stream in sequence.
If the value is less than 1, the stream will be read again and again.
Default value is "1".
Note that when the movie is looped the source timestamps are not
changed, so it will generate non monotonically increasing timestamps.
@end table
This filter allows to overlay a second video on top of main input of
a filtergraph as shown in this graph:
@example
input -----------> deltapts0 --> overlay --> output
^
|
movie --> scale--> deltapts1 -------+
@end example
Some examples follow:
@example
# skip 3.2 seconds from the start of the avi file in.avi, and overlay it
# on top of the input labelled as "in".
movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
# read from a video4linux2 device, and overlay it on top of the input
# labelled as "in"
movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
# read the first video stream and the audio stream with id 0x81 from
# dvd.vob; the video is connected to the pad named "video" and the audio is
# connected to the pad named "audio":
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
@end example
@c man end MULTIMEDIA SOURCES

View File

@ -69,7 +69,6 @@ OBJS-$(CONFIG_SILENCEDETECT_FILTER) += af_silencedetect.o
OBJS-$(CONFIG_VOLUME_FILTER) += af_volume.o
OBJS-$(CONFIG_AEVALSRC_FILTER) += asrc_aevalsrc.o
OBJS-$(CONFIG_AMOVIE_FILTER) += src_movie.o
OBJS-$(CONFIG_ANULLSRC_FILTER) += asrc_anullsrc.o
OBJS-$(CONFIG_ABUFFERSINK_FILTER) += sink_buffer.o
@ -137,7 +136,6 @@ OBJS-$(CONFIG_COLOR_FILTER) += vsrc_color.o
OBJS-$(CONFIG_FREI0R_SRC_FILTER) += vf_frei0r.o
OBJS-$(CONFIG_LIFE_FILTER) += vsrc_life.o
OBJS-$(CONFIG_MANDELBROT_FILTER) += vsrc_mandelbrot.o
OBJS-$(CONFIG_MOVIE_FILTER) += src_movie.o
OBJS-$(CONFIG_MPTESTSRC_FILTER) += vsrc_mptestsrc.o
OBJS-$(CONFIG_NULLSRC_FILTER) += vsrc_testsrc.o
OBJS-$(CONFIG_RGBTESTSRC_FILTER) += vsrc_testsrc.o
@ -202,5 +200,9 @@ OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/pullup.o
OBJS-$(CONFIG_CONCAT_FILTER) += avf_concat.o
OBJS-$(CONFIG_SHOWWAVES_FILTER) += avf_showwaves.o
# multimedia sources
OBJS-$(CONFIG_AMOVIE_FILTER) += src_movie.o
OBJS-$(CONFIG_MOVIE_FILTER) += src_movie.o
TOOLS = graph2dot
TESTPROGS = drawutils filtfmts formats

View File

@ -58,7 +58,6 @@ void avfilter_register_all(void)
REGISTER_FILTER (RESAMPLE, resample, af);
REGISTER_FILTER (AEVALSRC, aevalsrc, asrc);
REGISTER_FILTER (AMOVIE, amovie, asrc);
REGISTER_FILTER (ANULLSRC, anullsrc, asrc);
REGISTER_FILTER (ABUFFERSINK, abuffersink, asink);
@ -126,7 +125,6 @@ void avfilter_register_all(void)
REGISTER_FILTER (FREI0R, frei0r_src, vsrc);
REGISTER_FILTER (LIFE, life, vsrc);
REGISTER_FILTER (MANDELBROT, mandelbrot, vsrc);
REGISTER_FILTER (MOVIE, movie, vsrc);
REGISTER_FILTER (MPTESTSRC, mptestsrc, vsrc);
REGISTER_FILTER (NULLSRC, nullsrc, vsrc);
REGISTER_FILTER (RGBTESTSRC, rgbtestsrc, vsrc);
@ -139,6 +137,10 @@ void avfilter_register_all(void)
REGISTER_FILTER (CONCAT, concat, avf);
REGISTER_FILTER (SHOWWAVES, showwaves, avf);
/* multimedia sources */
REGISTER_FILTER (AMOVIE, amovie, avsrc);
REGISTER_FILTER (MOVIE, movie, avsrc);
/* those filters are part of public or internal API => registered
* unconditionally */
{

View File

@ -566,7 +566,7 @@ static int movie_request_frame(AVFilterLink *outlink)
#if CONFIG_MOVIE_FILTER
AVFilter avfilter_vsrc_movie = {
AVFilter avfilter_avsrc_movie = {
.name = "movie",
.description = NULL_IF_CONFIG_SMALL("Read from a movie source."),
.priv_size = sizeof(MovieContext),
@ -582,7 +582,7 @@ AVFilter avfilter_vsrc_movie = {
#if CONFIG_AMOVIE_FILTER
AVFilter avfilter_asrc_amovie = {
AVFilter avfilter_avsrc_amovie = {
.name = "amovie",
.description = NULL_IF_CONFIG_SMALL("Read audio from a movie source."),
.priv_size = sizeof(MovieContext),