Filters can change the timings, so input files must not
necessarily be read at the same rythm. This patch select
the input file to read based on the timestamp at output
instead of input. With complex filter graphs, finding the
input for a given output is done by making a request and
checking to what buffer source it has been forwarded.
Reap buffers stored in the buffer sinks even when
the avfilter_graph_request_oldest() loop only returns EOF.
avfilter_graph_request_oldest() can cause frames to arrive
to the sinks even when it returns EOF.
This reverts commit 744bd8d08c.
pkt_timebase is now set by av_codec_set_pkt_timebase.
If some demuxer set AVStream.time_base directly,
it need to be fixed. There is a warning to detect it.
Allows to disable interaction from standard input.
Useful, for example, if ffmpeg is in the background process group.
Roughly the same result can be achieved with "ffmpeg ... < /dev/null"
but it requires a shell.
Fixes Ticket1432
Thanks-to: Mike Scheutzow <mike.scheutzow@alcatel-lucent.com> for some of the bug analysis
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is based on libav's implementation and
makes sure to compare output timestamps together.
It also reduces the differences with avconv.
The changes to the test reference files are caused
by an additional packet at the end, the timestamp
of the frame encoded by this packet is always
strictly below the limit stated by the -t option.
Using -t on an input already have surprising results.
Furthermore, using it on an input or an output makes
a real difference if there are speed-altering filters.
Implementing -t for inputs will probably result in some
behavour changes.
Deprecate functions:
avfilter_fill_frame_from_buffer_ref
avfilter_fill_frame_from_audio_buffer_ref
avfilter_fill_frame_from_video_buffer_ref
and schedule to drop them at the next API major bump.
The function avfilter_copy_buf_props() should be used instead.
With complex filters, an output can come from any input,
or several inputs, including inputs of a different type.
Copying the codec parameters from the first input with
the same type does not make any sense.
This does not change anything for simple 1->1 filters,
as source_index is set in that case.
This message is printed whenever the RAWVIDEO codec is used, whether the
output file contains any frames or not. Test command:
./ffmpeg -i infile.y4m outfile.y4m
Signed-off-by: Mike Scheutzow <mjs973@optonline.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Currently, we don't set the duration on the packet of a newly
encoded subtitle. This information may be required by the
muxer.
Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This fixes terminal messup in case of crashes (like in make fate)
Reviewed-by: François Revol <revol@free.fr>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Some demuxers set a timecode in the format or streams metadata. The
muxers now make use of this metadata instead of a duplicated private
option.
This makes possible transparent copy of the timecode when transmuxing
and transcoding.
-timecode option for MPEG1/2 codec is also renamed to -gop_timecode. The
global ffmpeg -timecode option will set it anyway so no option change
visible for the user.