diff --git a/doc/filters.texi b/doc/filters.texi index d328f39687..1d40db7cdb 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -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 diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 15ca959c6e..d6299485bc 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -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 diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index 58a3c14283..d79218e194 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -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 */ { diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index d49287bb2b..a4a12939e2 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -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),