Currently ff_interleave_packet_per_dts() waits until it gets a frame for
each stream before outputting packets in interleaved order.
Sparse streams (i.e. streams with much fewer packets than the other
streams, like subtitles or audio with DTX) tend to add up latency and in
specific cases end up allocating a large amount of memory.
Emit the top packet from the packet_buffer if it has a time delta
larger than a specified threshold.
Original report of the issue and initial proposed solution by
mus.svz@gmail.com.
Bug-id: 31
Signed-off-by: Anton Khirnov <anton@khirnov.net>
The flag was and is intended to be a sane default and thus does not enable
time consuming checks. This also matches how the flag is used in decoders and
demuxers.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '596e5d4783ca951258a7c580951fd161f1785ec1':
lavf: Add a flag to enable/disable per-packet flushing
Conflicts:
libavformat/avformat.h
libavformat/mux.c
libavformat/version.h
This adds a 2nd API to set per packet flushing
If the user application indicates through either a non default then this non default takes
precedence over the other still default value
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This is enabled by default and can be disabled with
"-fflags -flush_packets".
Inspired by a patch from Nicolas George <nicolas.george@normalesup.org>.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'b5a138652ff8a5b987d3e1191e67fd9f6575527e':
Give less generic names to global library option arrays
Conflicts:
libavcodec/options_table.h
libavfilter/avfilter.c
libavformat/options_table.h
libswscale/options.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
"analyzeduration" is not used to detect the input duration, but to
specify the max probe data duration. Fix option description and related
doc entry accordingly.
* commit 'c35f0e8495e34c2082dcde805e9323c9f6a4cb0a':
au: Reorder code so that both muxer and demuxer are under #ifdefs
fate: Move RALF test into lossless audio group
cosmetics: Use consistent names for multiple inclusion guards.
Conflicts:
libavformat/au.c
tests/fate/lossless-audio.mak
tests/fate/real.mak
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd58dd4b5b5d31cfd4092e38a5f2c894eee2ab078':
avopt: Store defaults for AV_OPT_TYPE_FLAGS in the i64 union member
Conflicts:
libavcodec/libvpxenc.c
libavcodec/options_table.h
libavfilter/vf_drawtext.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '124134e42455763b28cc346fed1d07017a76e84e':
avopt: Store defaults for AV_OPT_TYPE_CONST in the i64 union member
Conflicts:
libavcodec/aacenc.c
libavcodec/libopenjpegenc.c
libavcodec/options_table.h
libavdevice/bktr.c
libavdevice/v4l2.c
libavdevice/x11grab.c
libavfilter/af_amix.c
libavfilter/vf_drawtext.c
libavformat/movenc.c
libavformat/options_table.h
libavutil/opt.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'fe1c1198e670242f3cf9e3e1eef27cff77f3ee23':
lavf: use dts difference instead of AVPacket.duration in find_stream_info()
avf: introduce nobuffer option
fate: make yadif tests consistent across systems
vf_hqdn3d: support 9 and 10bit colordepth
vf_hqdn3d: reduce intermediate precision
vf_hqdn3d: simplify and optimize
factor identical ff_inplace_start_frame out of two filters
vf_hqdn3d: cosmetics
avprobe/avconv: fix tentative declaration compile errors on MSVS.
Conflicts:
doc/APIchanges
ffmpeg.c
ffprobe.c
libavformat/avformat.h
libavformat/options_table.h
libavformat/utils.c
libavformat/version.h
tests/fate/filter.mak
tests/ref/fate/filter-yadif-mode0
tests/ref/fate/filter-yadif-mode1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Useful in cases where a significant analyzeduration is
still needed, while minimizing buffering before output.
An example is processing low-latency streams where all
media types won't necessarily come in if the
analyzeduration is small.
Additional changes by Josh Allmann <joshua.allmann@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
* qatar/master: (27 commits)
libxvid: Give more suitable names to libxvid-related files.
libxvid: Separate libxvid encoder from libxvid rate control code.
jpeglsdec: Remove write-only variable in ff_jpegls_decode_lse().
fate: cosmetics: lowercase some comments
fate: Give more consistent names to some RealVideo/RealAudio tests.
lavfi: add avfilter_get_audio_buffer_ref_from_arrays().
lavfi: add extended_data to AVFilterBuffer.
lavc: check that extended_data is properly set in avcodec_encode_audio2().
lavc: pad last audio frame with silence when needed.
samplefmt: add a function for filling a buffer with silence.
samplefmt: add a function for copying audio samples.
lavr: do not try to copy to uninitialized output audio data.
lavr: make avresample_read() with NULL output discard samples.
fate: split idroq audio and video into separate tests
fate: improve dependencies
fate: add convenient shorthands for ea-vp6, libavcodec, libavutil tests
fate: split some combined tests into separate audio and video tests
fate: fix dependencies for probe tests
mips: intreadwrite: fix inline asm for gcc 4.8
mips: intreadwrite: remove unnecessary inline asm
...
Conflicts:
cmdutils.h
configure
doc/APIchanges
doc/filters.texi
ffmpeg.c
ffplay.c
libavcodec/internal.h
libavcodec/jpeglsdec.c
libavcodec/libschroedingerdec.c
libavcodec/libxvid.c
libavcodec/libxvid_rc.c
libavcodec/utils.c
libavcodec/version.h
libavfilter/avfilter.c
libavfilter/avfilter.h
libavfilter/buffersink.h
tests/Makefile
tests/fate/aac.mak
tests/fate/audio.mak
tests/fate/demux.mak
tests/fate/ea.mak
tests/fate/image.mak
tests/fate/libavutil.mak
tests/fate/lossless-audio.mak
tests/fate/lossless-video.mak
tests/fate/microsoft.mak
tests/fate/qt.mak
tests/fate/real.mak
tests/fate/screen.mak
tests/fate/video.mak
tests/fate/voice.mak
tests/fate/vqf.mak
tests/ref/fate/ea-mad
tests/ref/fate/ea-tqi
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Allows avoiding the buffer when using avio read, write and seek functions.
When using the ffmpeg executable -avioflags direct can be used to enable
this mode for input files, but has no effect on output files.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* qatar/master: (27 commits)
avconv: free packet in write_frame() when discarding due to frame number limit
FATE: use +/- flag option syntax for vp8 emu-edge tests
lavf: make av_interleave_packet_per_dts() private.
lavf: deprecate av_read_packet().
oggdec: output correct timestamps for Vorbis
avconv: pass input stream timestamps to audio encoders
lavc: shrink encoded audio packet size after encoding.
xa: set correct bit rate
xa: do not set bit_rate, block_align, or bits_per_coded_sample
xa: fix end-of-file handling
xa: fix timestamp calculation
bink: fix typo in FFALIGN() argument
bink: align plane width to 8 when calculating bundle sizes
doc: pass -Idoc texi2html and texi2pod
doc: texi2pod: add -I flag
movenc: Add a min_frag_duration option
rtsp: Set the default delay to 0.1 s for the RTSP/SDP/RTP demuxers
libavformat: Set the default for the max_delay option to -1
Generate manpages for AV{Format,Codec}Context AVOptions.
doc/avconv: remove entries for AVOptions.
...
Conflicts:
doc/Makefile
doc/ffmpeg.texi
doc/muxers.texi
ffmpeg.c
libavcodec/Makefile
libavcodec/options.c
libavcodec/vp8.c
libavformat/options.c
tests/fate/demux.mak
tests/ref/fate/truemotion1-15
tests/ref/fate/truemotion1-24
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Make the muxers/demuxers that use the field handle the default
-1 in the same way as 0.
This allows distinguishing an intentionally set 0 from the default
value where the user hasn't set it.
Signed-off-by: Martin Storsjö <martin@martin.st>